System = function() {}

System.isDOM=document.getElementById?true:false
System.isOpera=System.isOpera5=window.opera && System.isDOM
System.isOpera6=System.isOpera && window.print
System.isOpera7=System.isOpera && document.readyState
System.isMSIE=System.isIE=document.all && document.all.item && !System.isOpera
System.isStrict=document.compatMode=='CSS1Compat'
System.isNN=System.isNC=navigator.appName=="Netscape"
System.isNN4=System.isNC4=System.isNN && !System.isDOM
System.isMozilla=System.isNN6=System.isNN && System.isDOM

System.getBody = function(w) {
	if(!w) w=window
	if(System.isStrict){
		return w.document.documentElement
	} else {
		return w.document.body
	}
}

System.getAbsolutePos = function(el) {
	var r = { x: el.offsetLeft, y: el.offsetTop };
	if (el.offsetParent) {
		var tmp = System.getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};

System.getWindowLeft = function(w){
	if(!w) w=window
	if(System.isMSIE || System.isOpera7) return w.screenLeft
	if(System.isNN || System.isOpera) return w.screenX
}

System.getWindowTop = function(w){
	if(!w) w=window
	if(System.isMSIE || System.isOpera7) return w.screenTop
	if(System.isNN || System.isOpera) return w.screenY
}

System.getWindowWidth = function(w){
	if(!w) w=window
	if(System.isMSIE) return System.getBody(w).clientWidth
	if(System.isNN || System.isOpera) return w.innerWidth
}

System.getWindowHeight = function(w){
	if(!w) w=window
	if(System.isMSIE) return System.getBody(w).clientHeight
	if(System.isNN || System.isOpera) return w.innerHeight
}

System.getDocumentWidth = function(w){
	if(!w) w=window
	if(System.isMSIE || System.isOpera7) return System.getBody(w).scrollWidth
	if(System.isNN) return w.document.width
	if(System.isOpera) return w.document.body.style.pixelWidth
}

System.getDocumentHeight = function(w){
	if(!w) w=window
	if(System.isMSIE || System.isOpera7) return System.getBody(w).scrollHeight
	if(System.isNN) return w.document.height
	if(System.isOpera) return w.document.body.style.pixelHeight
}

System.getScrollX = function(w){
	if(!w) w=window
	if(System.isMSIE || System.isOpera7) return System.getBody(w).scrollLeft
	if(System.isNN || System.isOpera) return w.pageXOffset
}

System.getScrollY = function(w){
	if(!w) w=window
	if(System.isMSIE || System.isOpera7) return System.getBody(w).scrollTop
	if(System.isNN || System.isOpera) return w.pageYOffset
}

System.dynamicScript = function(scr){
	var script=document.createElement("SCRIPT");
	script.type="text/javascript";
	document.getElementsByTagName('head').item(0).appendChild(script);
	script.text = scr;
}

System.dynamicScriptSrc = function(file){
	var script  = document.createElement('SCRIPT');
	script.src  = file;
	script.type = 'text/javascript';
	document.getElementsByTagName('head').item(0).appendChild(script);
}

System.regexpReplace = function(in_str, reg_exp, replace_str, opts) {
	if (in_str == null)
		return in_str;

	if (typeof(opts) == "undefined")
		opts = 'g';

	var re = new RegExp(reg_exp, opts);
	return in_str.replace(re, replace_str);
}

System.switcher = function(objname, val) {
	var obj = document.getElementById(objname);
	if(obj!=null) {
		obj.style.display = val;
	}
}

System.toggleDisplay = function(srcElement){
	if (srcElement.style.display == "none"){
		srcElement.style.display = "";
	} else {
		srcElement.style.display = "none";
	}
}

System.getElementById = function(id){
	if (document.getElementById) {
		return (document.getElementById(id));
	} else if (document.all) {
		return (document.all[id]);
	} else {
		if (System.isNN4) {
			return (document.layers[id]);
		}
	}
}

System.disableAll = function(formname, elname) {
	var frm = document.forms[formname];
//	var elt = frm.elements[elname];
	var elt = document.getElementsByName(elname);
	if (elt&&elt.length) {
		for (i = 0; i < elt.length; i++) {
			elt.disable = true;
		}
	}
}
System.enableAll = function(formname, elname) {
	var frm = document.forms[formname];
//	var elt = frm.elements[elname];
	var elt = document.getElementsByName(elname);
	if (elt&&elt.length) {
		for (i = 0; i < elt.length; i++) {
			elt.disable = false;
		}
	}
}


System.checkBoxListValue = function(formname, elname) {
	var frm = document.forms[formname];
//	var elt = frm.elements[elname];
	var elt = document.getElementsByName(elname);

	var re = new Array();
	var re_i=0;
	if (elt&&elt.length) {
		for (i = 0; i < elt.length; i++) {
			if (elt[i].checked) {
				re[re_i] = elt[i].value;
				re_i++;
			}
		}
		return re;
	} else {
		if (elt) {
			re[0] = elt.value;
			return re;
		} else {
			return "";
		}
	}
	return "";
}

System.checkSelectValue = function(elt) {
	var val = elt.options[elt.selectedIndex].value;
	return val;
}


// Functions used by text fiels to accept numbers only.
System.isDigit= function( e ) {
	e = e || event ;
	var iCode = ( e.keyCode || e.charCode ) ;

	event.returnValue =
		(
			( iCode >= 48 && iCode <= 57 )		// Numbers
			|| (iCode >= 37 && iCode <= 40)		// Arrows
			|| iCode == 8						// Backspace
			|| iCode == 46						// Delete
		) ;

	return event.returnValue ;
}

//Get form fields values
System.getFromFieldsValues = function(fields, formname) {
	var sendobj = {};
	var frm = document.forms[formname];
	for(fi in fields) {
		elt = frm.elements[fields[fi]];
		if(typeof(elt)=="object") {
			switch(elt.type) {
				case "text":
				sendobj[fields[fi]] = elt.value;
				break;

				case "checkbox":
					if(elt.checked) {
						varr = System.checkBoxListValue(formname, fields[fi]);
						sendobj[fields[fi]] = varr[0];							
					} else {
						sendobj[fields[fi]] = 0;
					}
			
				break;		
				

				case "select-one":
				sendobj[fields[fi]] = elt.value;
				break;							
			}
		}
		if((typeof(System.getElementById(fields[fi]+"[]")) == "object")&&(System.getElementById(fields[fi]+"[]")!=null)) {sendobj[fields[fi]+"[]"] = System.getElementById(fields[fi]+"[]").value;}
		if((typeof(System.getElementById(fields[fi]+"[day]")) == "object")&&(System.getElementById(fields[fi]+"[day]")!=null)) {sendobj[fields[fi]+"[day]"] = System.getElementById(fields[fi]+"[day]").value;}
		if((typeof(System.getElementById(fields[fi]+"[month]")) == "object")&&(System.getElementById(fields[fi]+"[month]")!=null)) {sendobj[fields[fi]+"[month]"] = System.getElementById(fields[fi]+"[month]").value;}
		if((typeof(System.getElementById(fields[fi]+"[year]")) == "object")&&(System.getElementById(fields[fi]+"[year]")!=null)) {sendobj[fields[fi]+"[year]"] = System.getElementById(fields[fi]+"[year]").value;}
		if((typeof(System.getElementById(fields[fi]+"[time]")) == "object")&&(System.getElementById(fields[fi]+"[time]")!=null)) {sendobj[fields[fi]+"[time]"] = System.getElementById(fields[fi]+"[time]").value;}
			
	}
	//trace(sendobj);	
	return sendobj;
}

System.setCookie = function(name, value, expires, path, domain, secure) {
	var exp=new Date();
	var cookieexpire=exp.getTime()+expires;
	exp.setTime(cookieexpire);
	document.cookie = name + "=" + escape(value) +
        ((expires) ? ";expires=" + exp.toGMTString() : "") +
        ((path) ? ";path=" + path : "") +
        ((domain) ? ";domain=" + domain : "") +
        ((secure) ? ";secure" : "");
}

System.getCookie = function(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

System.gotoUrl = function(url) {
	document.location.href=url;
}

System.rebildSelect = function(id,arr) {
	var elt = System.getElementById(id);
	elt.innerHTML = '';
	i = 0;
	for(di in arr) {
		selblock = arr[di];

		var oOption = document.createElement("option");
		oOption.appendChild(document.createTextNode(selblock["name"]));
		oOption.setAttribute("value", selblock["value"]);
		if(selblock["check"]!=0) {
			oOption.selected = true;
		}

		elt.appendChild(oOption);


//		if(selblock["check"]!=0) {
//			elt.options[i] = new Option(selblock["name"],selblock["value"], false, true);
//		} else {
//			elt.options[i] = new Option(selblock["name"],selblock["value"], false, false);			
//		}
		i++;
	}	
}

function trace(str) {
	var res="";
	if(typeof(str) == "string") {
		res = str;
	} else if(typeof(str) == "object") {
		for(elt in str) {
			res += "Object."+elt+" = "+str[elt]+"\n";
		}
	}
	alert(res);	
}

System.preloadImages = function() {
	var d=document;
	if(d.images) {
		if(!d.imageArray) d.imageArray=new Array();
		var i,j=d.imageArray.length,
		a=System.preloadImages.arguments;
		for(i=0; i<a.length; i++) {
			if (a[i].indexOf("#")!=0) {
				d.imageArray[j]=new Image; d.imageArray[j++].src=a[i];
			}
		}
	}
}

System.randomNumber = function(m,n) {
  m = parseInt(m);
  n = parseInt(n);
  return Math.floor( Math.random() * (n - m + 1) ) + m;
}

function markAll(formname,mark,id,strn)
{
  if(strn==null) {
  	strn = "x";
  }
  if(!id) id="";
  for (i = 0; i < document.forms[formname].elements.length; i++)
   {
    var item = document.forms[formname].elements[i];
    var strname = strn+id+"[]";
    if (item.name == strname)
     {
      item.checked = mark;
     };
   }
}
