/* common scripts */// make editfields ajaxyfunction startEditable(editID) {	// orange for not saved then submit	$('#input'+editID).change(function(){		$('#input'+editID).animate({backgroundColor: "#fff0d8"},10);		$('#form'+editID).submit();	});	// setup ajax form	$('#form'+editID).ajaxForm(function(data) {		if (data=='OK') {			// green for saved then white			$('#input'+editID).animate({backgroundColor: "#9f9"},10).animate({backgroundColor: "#fff"},2000);		} else {			// red for error			$('#input'+editID).animate({backgroundColor: "#f99"},10);		}	});	return false;}// return number as string in x.xx format.function dollarPad(anynum) {	tempnum = "" + eval(anynum);	intstr = "" + parseInt(tempnum);	decstr = "" + parseInt((100*Math.abs(parseFloat(tempnum)-parseInt(tempnum))) + 0.5);	while (decstr.length < 2) {		decstr += "0";	}	retval = intstr + "." + decstr;	return retval;}// put something somewhere with classfunction nodeMsg(elid, msgtext, msgclass) {	if (document.getElementById) {		var elem = document.getElementById(elid);		if (elem.firstChild && (elem.firstChild.nodeType == 1))			elem.firstChild.nodeValue = msgtext;  // DOM method		else 			elem.innerHTML = msgtext; // IE/Opera method		elem.className = msgclass;	}}// put something somewhere without classfunction nodeMsg(elid, msgtext) {	if (document.getElementById) {		var elem = document.getElementById(elid);		if (elem.firstChild && (elem.firstChild.nodeType == 1))			elem.firstChild.nodeValue = msgtext;  // DOM method		else 			elem.innerHTML = msgtext; // IE/Opera method	}}// change the style of a nodefunction changeStyle(id, newClass) {	if (!document.styleSheets) return; 	identity=document.getElementById(id);	identity.className=newClass; }// why does this have to be so complex?function newImage(arg) {	if (document.images) {		rslt = new Image();		rslt.src = arg;		return rslt;	}}// ---------------------------------------//             Array.clean //           prototype function// // by Davide Beltrame (Broly)// e-mail: davb86@libero.it// // This function remove the empty element // from an array//// Syntax//// arrayname.clean(to_delete)//// Parameter: to_delete <- element to delete from the array// // ----------------------------------------Array.prototype.clean = function(to_delete) {	var a;	for (a = 0; a < this.length; a++) {		if (this[a] == to_delete) {         			this.splice(a, 1);			a--;		}	}	return this;};/** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08        ** ** Code licensed under Creative Commons Attribution-ShareAlike License      ** ** http://creativecommons.org/licenses/by-sa/2.0/                           **/function XHConn() {	var xmlhttp, bComplete = false;	try { xmlhttp = new XMLHttpRequest(); }	catch (e) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }	catch (e) { xmlhttp = false; }}}	if (!xmlhttp) return null;	this.connect = function(sURL, sMethod, sVars, fnDone) {		if (!xmlhttp) return false;		bComplete = false;		sMethod = sMethod.toUpperCase();		try {			if (sMethod == "GET") {				xmlhttp.open(sMethod, sURL+"?"+sVars, true);				sVars = "";			}			else {				xmlhttp.open(sMethod, sURL, true);				xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");				xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");			}			xmlhttp.onreadystatechange = function(){				if (xmlhttp.readyState == 4 && !bComplete) {					bComplete = true;					fnDone(xmlhttp);				}			}			xmlhttp.send(sVars);		}		catch(z) { return false; }		return true;	};	return this;}