function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);

    if(begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

var sids = new Object;
var hids = new Object;

function show_set(catset){
	if(!catset){
		catset = 'default';
	}

	for(i in hids[catset]){
		show(i, catset, 1);
	}
}

function hide_set(catset, except){
	if(!catset){
		catset = 'default';
	}

	for(i in sids[catset]){
		if(!except || (except && except != i)){
			hide(i, catset);
		}
	}
}

function hide(id, catset){
	obj = $(id);

	if(!catset){
		catset = 'default';
	}

	if(!hids[catset]){
		hids[catset] = new Array();
	}

	hids[catset][id] = 1;

	if(obj){
		Element.hide(obj);
	}

	return true;
}

function show(id, catset, skipall){

	if(!catset){
		catset = 'default';
	}

	if(!sids[catset]){
		sids[catset] = new Array();
	}

	sids[catset][id] = 1;

	if(!skipall){
		hide_set(catset, id);
	}

	obj = $(id);

	if(obj){
		obj.style.display = 'block';
	}

	return true;
}


function show_hide(id, catset) {
	if($(id).getStyle('display') == "none"){
		show(id, catset);
	} else {
		hide(id, catset);
	}

	return true;
}

function switch_visibility(id, e, s1, s2) {
	var sender;

	if(e){
		sender = (typeof( window.event ) != "undefined" ) ? e.srcElement : e.target;
		if(sender.innerHTML == s1){
			sender.innerHTML = s2;
		} else {
			sender.innerHTML = s1;
		}
	}

	Element.toggle(id);
	return false;
}

function ajax(page, func, meth, postdata) {
	if(!meth) meth='GET';
	if(!postdata) postdata=null;

	if(window.XMLHttpRequest) {
		theRequest = new XMLHttpRequest();
		if(theRequest.overrideMimeType){
			theRequest.overrideMimeType('text/xml');
		}
		//theRequest.setRequestHeader("Content-Type", "text/xml;charset=windows-1251")
	} else if(window.ActiveXObject) {
		try {
			theRequest =new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try	{
				theRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if(!theRequest) {
		alert('Error: could not create XMLHTTP object.');
		return false;
	}

	theRequest.onreadystatechange = func;
	theRequest.open(meth, page, true);
	//theRequest.setRequestHeader("Content-type", "text/xml; charset=utf-8");
	//theRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=windows-1251');
	if(postdata)
		theRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

	theRequest.send(postdata);

	return false;
}

var qs = new Array();
function readqs() {
	var query = window.location.search.substring(1);
	var p = query.split('&');
	for (var i=0; i<p.length; i++) {
   	var pos = p[i].indexOf('=');
   	if (pos > 0) {
      	var k = p[i].substring(0,pos);
      	var v = p[i].substring(pos+1);
      	qs[k] = v;
      }
   }
}

function addEvent( node, evtType, func ) {
	if( node.addEventListener ) {
		node.addEventListener( evtType, func, false );
		return true;
	} else if( node.attachEvent )
		return node.attachEvent( "on" + evtType, func );
	else
		return false;
}

function number_format(number, decimals, dec_point, thousands_sep){
  var exponent = "";
  var numberstr = number.toString ();
  var eindex = numberstr.indexOf ("e");
 var i, z;
  if(eindex > -1){
    exponent = numberstr.substring (eindex);
    number = parseFloat (numberstr.substring (0, eindex));
  }

  if(decimals != null){
    var temp = Math.pow (10, decimals);
    number = Math.round (number * temp) / temp;
  }
  var sign = number < 0 ? "-" : "";
  var integer = (number > 0 ?
      Math.floor (number) : Math.abs (Math.ceil (number))).toString ();

  var fractional = number.toString ().substring (integer.length + sign.length);
  dec_point = dec_point != null ? dec_point : ".";
  fractional = decimals != null && decimals > 0 || fractional.length > 1 ? (dec_point + fractional.substring (1)) : "";
  if(decimals != null && decimals > 0){
    for(i = fractional.length - 1, z = decimals; i < z; ++i)
      fractional += "0";
  }

  thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ?
                  thousands_sep : null;
  if(thousands_sep != null && thousands_sep != ""){
  for (i = integer.length - 3; i > 0; i -= 3)
   integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
  }
  return sign + integer + fractional + exponent;
}
