var DOMtype = '';
if (document.getElementById) {
	DOMtype = "std";
} else if (document.all) {
	DOMtype = "ie4";
} else if (document.layers) {
	DOMtype = "ns4";
}
var objects = new Array();
function fetch_obj(idname, forcefetch) {
 if (forcefetch || typeof(objects[idname]) == "undefined") {
	switch ( DOMtype ) {
    case "std":
	    objects[idname] = document.getElementById(idname);
		  break;
	  case "ie4":
		  objects[idname] = document.all[idname];
		  break;
	  case "ns4":
		  objects[idname] = document.layers[idname];
		  break;
	}
 }
 return objects[idname];
}

/*******************************************************/

function set_cookie(name, value, expires) {
	if (!expires) 	{
		expires = new Date();
	}
	document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() +  "; path=/";
}

function fetch_cookie(name) {
	cookie_name = name + "=";
	cookie_length = document.cookie.length;
	cookie_begin = 0;
	while (cookie_begin < cookie_length) {
		value_begin = cookie_begin + cookie_name.length;
		if (document.cookie.substring(cookie_begin, value_begin) == cookie_name) {
			var value_end = document.cookie.indexOf (";", value_begin);
			if (value_end == -1) {
				value_end = cookie_length;
			}
			return unescape(document.cookie.substring(value_begin, value_end));
		}
		cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
		if (cookie_begin == 0) {
			break;
		}
	}
	return null;
}

function delete_cookie(name) {
	var expireNow = new Date();
	document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT" +  "; path=/";
}
/*******************************************************/
function check_all_group(checkobj, value)
{
  formobj = checkobj.form;
  for (var i = 0; i < formobj.elements.length; i++){
    elm = formobj.elements[i];
    if (elm.type == "checkbox" && elm.value == value){
      elm.checked = checkobj.checked;
    }
  }
}


/*************************************************************/
/* edytor regul dla zmiennych w tablicach globalnych         */
/*************************************************************/
function get_rule_editor(_mode, _id, _source, _name, _type, _value)
{
  // sprawdzanie czy edytor jest wyswietlony
  ruleDiv = fetch_obj('rule_editor');
  if(ruleDiv.style.display == "block"){
    ruleDiv.style.display = "none";
    return;
  }

  // tryb: dodawanie lub edytowanie
  rule_mode = fetch_obj('rule_mode');
  if(rule_mode == null) return;
  rule_mode.value = 'insert';  

  // ustawienie danych do edycji
  switch(_mode){
    case 'insert':
      rule_mode.value = _mode;  
      rule_form = fetch_obj('rule_form');
      with(rule_form){
        var_source.value = '';
        var_name.value = '';
        unCheckAll(var_type);
        var_value.value = '';
        switch_DE('STRING', 'var_value');
      }
      break;
    case 'update':
      rule_mode.value = _mode;  
      rule_form = fetch_obj('rule_form');
      with(rule_form){
        var_source.value = _source;
        var_name.value = _name;
        setCheckedValue(var_type, _type);
        var_value.value = _value;
        switch_DE(_type, 'var_value');
      }
      break;
  }

  // ustawienie id dla operowanej reguly 
  priv_parent = fetch_obj('priv_parent');
  priv_parent.value = _id;
  
  // wyswietlenie edytora
  button_name = 'b' + _id;
  button_pos = getAnchorPosition(button_name)
  with(ruleDiv.style){
  	top = button_pos.y + 15 + 'px';
  	left = button_pos.x + 'px';
  	display = "block";
  }
}

function del_rule(_id)
{
 
  // tryb: dodawanie lub edytowanie
  rule_mode = fetch_obj('rule_mode');
  if(rule_mode == null) return;
  rule_mode.value = 'delete';  

  // ustawienie id reguly
  priv_parent = fetch_obj('priv_parent');
  priv_parent.value = _id;
  
  // przeslanie formularza
  rule_form = fetch_obj('rule_form');
  rule_form.submit();
  
  return true;
}

function close_rule_editor()
{
  ruleDiv = fetch_obj('rule_editor');
  ruleDiv.style.display = "none";
}

function switch_DE(val, field_name)
{

  field_obj = fetch_obj(field_name);
  field_obj.value = '';
  switch(val){
  	case 'STRING': case 'NUMBER':
  		field_obj.disabled = true;
  		break;
  	case 'VALUE':
  		field_obj.disabled = false;
      field_obj.focus();
  		field_obj.select();
  		break;
  }
}

function setCheckedValue(radioObj, newValue) 
{
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}

function unCheckAll(radioObj) 
{
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	for(var i = 0; i < radioLength; i++)
		radioObj[i].checked = false;
}


Array.prototype.in_array = function(obj) 
{
	var len = this.length;
	for ( var x = 0 ; x <= len ; x++ ) {
		if ( this[x] == obj ) return true;
	}
	return false;
}

function is_numeric(x) {
  var RegExp = /^(-)?(\d*)(\.?)(\d*)$/; // Note: this WILL allow a number that ends in a decimal: -452.
  var result = x.match(RegExp);
  return result;
}

function changePrivView(radioObjOn, class_name_off)
{
	if(!radioObjOn)
		return;
	var class_name_on = radioObjOn.value;
  formobj = radioObjOn.form;

  for (var i = 0; i < formobj.elements.length; i++){
    elm = formobj.elements[i];
    if (elm.type == "text" && elm.className == class_name_on){
      elm.style.display = "inline";
    }
    if (elm.type == "text" && elm.className == class_name_off){
      elm.style.display = "none";
    }
  }
}
function changeMode(radioobj, value_off)
{
  formobj = radioobj.form;
  value_on = radioobj.value;
  for (var i = 0; i < formobj.elements.length; i++){
    elm = formobj.elements[i];
    if (elm.type == "radio" && elm.value == value_on){
      elm.checked = true;
    }
    if (elm.type == "radio" && elm.value == value_off){
      elm.checked = false;
    }
  }
}

function changeBackground(obj, bgcol)
{
  obj.style.background = bgcol;
}

function showBookmark(group, len, curr)
{
  /*var argv = showBookmark.arguments;
  var argc = argv.length;*/
  for (var i = 0; i < len; i++) {
    obj = fetch_obj(group+''+i);
    if(obj!=null)
      obj.style.display = 'none';
  }
  obj = fetch_obj(group+''+curr);
  obj.style.display = 'block';
}


var inputs = new Array();
var inputs_list = new Array();
var inputvals = new Array();
function get_content(div_name, get_file)//, field)
{
  someDiv = fetch_obj(div_name);
  tempDiv = '';
  advAJAX.get({
    url: get_file,
    onInitialization : function() {
        someDiv.style.overflow="auto";
        /*for(i=0; i<someDiv.childNodes.length; i++){
          //if (someDiv.childNodes[i].tagName == 'SELECT' && someDiv.childNodes[i].id == field)
          //  
          //alert(someDiv.childNodes[i].data); 
          inputvals[field] = gup('val', get_file);
        }*/
        /*if (typeof(inputs[field]) == 'undefined'){
          inputs[field] = someDiv.innerHTML;
        }*/
        if (typeof(inputs_list[div_name]) == 'undefined' && !inputs_list.in_array(div_name)){
          inputs_list.push(div_name);
        }
        someDiv.innerHTML = 'Trwa wczytywanie danych ...';
    },
    onSuccess : function(obj) {
        someDiv.innerHTML = obj.responseText;
    },
    onError : function(obj) {
        alert("Error: " + obj.status);
    },
    onFinalization : function() {
        _display = true;
        for(i=0; i<inputs_list.length; i++){
          if (!_display){
            someDiv = fetch_obj(inputs_list[i]);
            //alert(inputs_list[i]);
            someDiv.innerHTML = '';
          }
          if (inputs_list[i] == div_name)
            _display = false;
          //someDiv.value = inputvals[val];
        }
        /* Ponowne pokazanie warstwy po zako�czeniu wszystkich operacji */
    }
  });
}

function gup( name, url )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec(url);
  if( results == null )
    return "";
  else
    return results[1];
}

function set_focus(field_id)
{
  obj = fetch_obj(field_id);
  obj.focus();
  obj.select();
}

function displayLayer(id, mode)
{
  obj = fetch_obj(id);
  obj.style.display = mode;
}

function switchDisplayLayer(id)
{
  obj = fetch_obj(id);
  obj.style.display = obj.style.display=='none' ? '' : 'none';
  return obj.style.display;
}
