 
function getEventObject() {
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
	return targ;
}


function getObject(objectId) {
	   // cross-browser function to get an object's style object given its id
	   if(document.getElementById && document.getElementById(objectId)) {
	   // W3C DOM
	   return document.getElementById(objectId);
	   } else if (document.all && document.all(objectId)) {
	   // MSIE 4 DOM
	   return document.all(objectId);
	   } else if (document.layers && document.layers[objectId]) {
	   // NN 4 DOM.. note: this won't find nested layers
	   return false;
	   } else {
	   return false;
	   }
} // getStyleObject

function getStyleObject(objectId) {
	   // cross-browser function to get an object's style object given its id
	   if(document.getElementById && document.getElementById(objectId)) {
	   // W3C DOM
	   return document.getElementById(objectId).style;
	   } else if (document.all && document.all(objectId)) {
	   // MSIE 4 DOM
	   return document.all(objectId).style;
	   } else if (document.layers && document.layers[objectId]) {
	   // NN 4 DOM.. note: this won't find nested layers
	   return document.layers[objectId];
	   } else {
	   return false;
	   }
} // getStyleObject


var mousex = 0;
var mousey = 0;
var grabx = 0;
var graby = 0;
var orix = 0;
var oriy = 0;
var elex = 0;
var eley = 0;
var algor = 0;
var newNodePlacerHolder = null;
var dragobj = null;
var dragobjcopy = null;
var req;
var req2;
var reloadonce = new Array();
var weditors = new Array();
var loadingprod = 0;

function debugweditor($editfield) {
	alert();
}

function cleantext($editfield) {
	var tmpdata1 = weditors[$editfield].theIframe.contentWindow.document.getElementsByTagName("body")[0].innerHTML;
	tmpdata2 = tmpdata1.replace(/<br>/gi,"0xGGHH");
	tmpdata3 = tmpdata2.replace(/<\/?[^>]+(>|$)/g, "");
	weditors[$editfield].theIframe.contentWindow.document.getElementsByTagName("body")[0].innerHTML = tmpdata3.replace(/0xGGHH/g,"<br>");

}

function alredyreloaded (key) {

	for (i=0;i<reloadonce.length;i++) {
		if (reloadonce[i] == key) {
	 		return 1;
		}
	}
	
	return 0;
}

function markloaded (key) {
	reloadonce.push(key);
}

// onkeypress="return handleEnter(this, event)"

function handleEnter (field, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
		i = (i + 1) % field.form.elements.length;
		field.form.elements[i].focus();
		field.form.elements[i].select();
		return false;
	} 
	else
	return true;
}      


function falsefunc() { return false; } // used to block cascading events




function gdebug(theobj) {
if (!theobj) {
	theobj = dragobjcopy.parentNode;
}
	getObject('gdebug').innerHTML += theobj.parentNode.id + "->" + theobj.id + " ol:" + theobj.parentNode.offsetLeft + " ot:" + theobj.parentNode.offsetTop + " z:" + theobj.style.zindex +"</br>";
}

function cmsldebug(idname) {
	
	var newtop = 0;
	var info = 'info\n';
	parentnode = getObject(idname).parentNode;
	if (parentnode.childNodes[0].style.top == '') {
		var coloffcet = parseInt(parentnode.childNodes[0].offsetTop);
		alert('coloffcet: ' + coloffcet);
	}

	for (i = 0; i < parentnode.childNodes.length; i++) {
		info = info + parentnode.childNodes[i].id + ' t: ' + parentnode.childNodes[i].style.top + ' ot: ' + parentnode.childNodes[i].offsetTop + '\n';
		newtop = parseInt(parentnode.childNodes[i].offsetTop - coloffcet);
		parentnode.childNodes[i].style.top = newtop + 'px';
		parentnode.childNodes[i].style.left = '0px';
	}
	alert(info);
}

function createplacerholder(o) {
	newNodePlacerHolder = o.cloneNode(true);
	newNodePlacerHolder.style.backgroundColor = "#00000";
  	newNodePlacerHolder.style.zindex = 9; // not on to the top
  	newNodePlacerHolder.style.visibility = 'collapse'; // not on to the top
// 	newNode.innerHTML = "<div style=\" background-color: #000000;\">1</div>";
 
	o.parentNode.insertBefore(newNodePlacerHolder,o.nextSibling);
}



function obectsbeforeHeight(theobj) {
	var parentnode = theobj.parentNode;
	var accvalue = 0;
	for (i = 0; i < parentnode.childNodes.length; i++) {
		if (parentnode.childNodes[i].offsetTop + parentnode.childNodes[i].clientHeight <  theobj.offsetTop) {
			if (parentnode.childNodes[i].offsetTop != theobj.offsetTop) {
				accvalue += parentnode.childNodes[i].clientHeight;
			}
		}
	}
	alert('accuvalue: ' + accvalue);
	return accvalue;
}
function CMloadXMLDoc(url,data,processReqChange) 
{
   
   // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("POST", url, true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//		req.setRequestHeader("Content-length", data.length);
		req.send(data);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("POST", url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//			req.setRequestHeader("Content-length", data.length);
			req.send(data);
        }
    }
}
function CMloadXMLDocSync(url,data,processReqChange) 
{
   
   // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("POST", url, false);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//		req.setRequestHeader("Content-length", data.length);
		req.send(data);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("POST", url, false);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//			req.setRequestHeader("Content-length", data.length);
			req.send(data);
        }
    }
}

function CMloadXMLDoc2(url,data,processReqChange) 
{
    if (window.XMLHttpRequest) {

        req2 = new XMLHttpRequest();
        req2.open('get', url, true);
        req2.onreadystatechange = processReqChange;
//		req2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req2.send(data);
    } else if (window.ActiveXObject) {
        req2 = new ActiveXObject("Microsoft.XMLHTTP");
        if (req2) {
            req2.open('get', url, true);
            req2.onreadystatechange = processReqChange;
//			req2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req2.send(data);
        } else {
			alert('Windows E Error: no req object');
        }
    } else {
		alert('Windows E Error: no req object at all');
    }
}

function CMloadXMLDocPost(url,data,processReqChange) 
{
    if (window.XMLHttpRequest) {

        req2 = new XMLHttpRequest();
        req2.open('POST', url, true);
        req2.onreadystatechange = processReqChange;
		req2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//		req2.setRequestHeader("Content-length", data.length);
		req2.send(data);
    } else if (window.ActiveXObject) {
        req2 = new ActiveXObject("Microsoft.XMLHTTP");
        if (req2) {
            req2.open('POST', url, true);
            req2.onreadystatechange = processReqChange;
			req2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//			req2.setRequestHeader("Content-length", data.length);
			req2.send(data);
        } else {
			alert('Windows E Error: no req object');
        }
    } else {
		alert('Windows E Error: no req object at all');
    }
}


function loadurlindiv(dnode,divid,template,extraurl) {
		targetdiv = document.getElementById(divid);
		targetdiv.innerHTML = "<center><img style=\"\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/></center>";
		prot = document.location.protocol;
		data = "depcmd=loadsitetemplateindiv&dnode=" + dnode + "&template=" + template + "&targetdiv=" + divid + "&" + extraurl;
		url = prot + "//" + window.location.hostname + "/disco/cmds.php";
		href = url+"?"+data;
//		alert(data);
		if (loadingprod == 0) {
			loadingprod = 1;
			CMloadXMLDoc2(href,null,loadurlindivcb2);
		} else {
			alert("req2 inuse");
		}
};


function loadurlindivcb2() {
 //       	alert('respons: ' + req2.readyState);
    if (req2.readyState == 4) {
        //	alert('respons: ' + req2.readyState);
        // only if "OK"
       if ((req2.status == 200) || (req2.status == 500)) {
			if (req2.responseXML.documentElement) {
				var xmlDoc=req2.responseXML.documentElement;

				targetdivvalue = xmlDoc.getElementsByTagName("targetdiv")[0].childNodes[0].nodeValue;
				divobj = document.getElementById(targetdivvalue);
				if (divobj) {
//					alert("Found target obj id: " + targetdivvalue);
					targetdatavalue = xmlDoc.getElementsByTagName("data")[0].childNodes[0].nodeValue;
					if (targetdatavalue) {
						response = req2.responseText;
					
						start = response.search("<data>") + 6;
						end = response.search("</data>");
						inserttext = response.substring(start,end);

//						alert("Klicka ok: "+ inserttext.length+" "+xmlDoc.getElementsByTagName("data")[0].childNodes[0].nodeValue.length + " " +targetdatavalue.length+ " " + Base64.decode(targetdatavalue).length);
//						alert(xmlDoc.getElementsByTagName("data")[0].childNodes[0].nodeValue);
						divobj.innerHTML = Base64.decode(inserttext);
					} else {
					alert("Cant find target obj data");
					}
				} else {
					alert("Cant find target obj id");
				}


//				alert("status: " + req2.status + " div: " + div[0].textContent + " data: " + Base64.decode(data[0].textContent));
				
//				dvat = req2.responseXML.documentElement.getElementsByTagName("post");
//				savedata = datalistfromxmlblock(dvat[0],new Array());
//				setpostvalues('postform',savedata);

//				alert("album loaded: "+req2.status);
			}
		}
 		loadingprod = 0;
	}
}

function getgetstringfromform (aform) {
	var getstring = "";
	for (var s = 0;s < aform.elements.length;s++) {
		if (s > 0) { getstring += '&'; }
		if ((aform.elements[s].type == 'radio') || (aform.elements[s].type == 'checkbox')){
			if (aform.elements[s].value) {
				if (aform.elements[s].checked) {
					getstring += aform.elements[s].name + '=' + aform.elements[s].value;
				} else {
					getstring += aform.elements[s].name + '=';
				}
			}
		} else {
			getstring += aform.elements[s].name + '=' + DCMencodeURIComponent(aform.elements[s].value);
		}
	}
	return getstring;
}

function DCMencodeURIComponent(data) {
			return encodeURIComponent(data);
}
function jcdloaded () {
    if (req.readyState == 4) {
        // only if "OK"
        if ((req.status == 200) || (req.status == 500)) {
			response = req.responseText;
//			alert("respons: " + response);
			var cmdiv = req.responseXML.getElementsByTagName('cmdiv');
			var data = req.responseXML.getElementsByTagName('data');
						
			cmobj = getObject(cmdiv[0].childNodes[0].nodeValue);
//			alert("div: " + cmdiv[0].childNodes[0].nodeValue );
			
		// serialize
	//		var xmlSerializer = new XMLSerializer();
	//		cmobj.innerHTML = xmlSerializer.serializeToString(data[0]);
			start = response.search("<data>") + 6;
			end = response.search("</data>");
			inserttext = response.substring(start,end);
			inserttext.replace(/&amp;/g,"&");
//			inserttext.replace(/&lt;/g,"<");
//			inserttext.replace(/&gt;/g,">");
			cmobj.innerHTML = inserttext;
			opacity(cmdiv[0].childNodes[0].nodeValue,60,100,100);
        } else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText + " ERROR: 001" + "\n");
        }
    }
}
function jcdloadedbase64 () {
    if (req.readyState == 4) {
        // only if "OK"
        if ((req.status == 200) || (req.status == 500)) {
			response = req.responseText;
//			alert("respons: " + response);
			var cmdiv = req.responseXML.getElementsByTagName('cmdiv');
			var data = req.responseXML.getElementsByTagName('data');
						
			cmobj = getObject(cmdiv[0].childNodes[0].nodeValue);
//			alert("div: " + cmdiv[0].childNodes[0].nodeValue );
			
		// serialize
	//		var xmlSerializer = new XMLSerializer();
	//		cmobj.innerHTML = xmlSerializer.serializeToString(data[0]);
			start = response.search("<data>") + 6;
			end = response.search("</data>");
			inserttext = response.substring(start,end);
			cmobj.innerHTML = Base64.decode(inserttext);
			opacity(cmdiv[0].childNodes[0].nodeValue,60,100,100);
        } else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText + " ERROR: 001" + "\n");
        }
    }
}

function jcdloadededitorbase64 () {
    if (req.readyState == 4) {
        // only if "OK"
        if ((req.status == 200) || (req.status == 500)) {
			response = req.responseText;
//			alert("respons: " + response);
			var cmdiv = req.responseXML.getElementsByTagName('cmdiv');
			var data = req.responseXML.getElementsByTagName('data');
						
			cmobj = getObject(cmdiv[0].childNodes[0].nodeValue);
//			alert("div: " + cmdiv[0].childNodes[0].nodeValue );
			
		// serialize
	//		var xmlSerializer = new XMLSerializer();
	//		cmobj.innerHTML = xmlSerializer.serializeToString(data[0]);
			start = response.search("<data>") + 6;
			end = response.search("</data>");
			inserttext = response.substring(start,end);
			cmobj.innerHTML = Base64.decode(inserttext);
			opacity(cmdiv[0].childNodes[0].nodeValue,60,100,100);
			widgInit();
        } else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText + " ERROR: 002");
        }
    }
}
/*
function iframetocmdiv(theiframe, thecmdiv) {
	theiframeobj = getObject(theiframe);
	thecmdivobj = getObject(thecmdiv);
	theiframeobj.getElementsByTagName('cmdiv');
	var cmdiv  = getObject(cmdiv[0].childNodes[0].nodeValue);
	cmobj = getObject(cmdiv[0].childNodes[0].nodeValue);
	response = theiframeobj.innerHTML;
	start = response.search("<data>") + 6;
	end = response.search("</data>");
	inserttext = response.substring(start,end);
	inserttext.replace(/&amp;/g,"&");
	inserttext.replace(/&lt;/g,"<");
	cmobj.innerHTML = inserttext;
}


createiframe(frameid,cmdiv) {
        var d = document.createElement('DIV');
        d.innerHTML = '<iframe style=\"display:none\" src=\"about:blank\" id=\"'+frameid+'\" name=\"'+frameid+'\" onload=\"javascript:iframetocmdiv(\'$dep_ident_value_$dep_tablename._formframe\',\''+cmdiv+'\');\"></iframe>';
        document.body.appendChild(d);

}
*/
function checkcode(formname) {
	alert(formname);
	formobj = getObject(formname);
	if (formobj) {
		for (var j = 0; j < formobj.elements.length; j++) {
			alert(formobj.elements[j].id + "=" + DCMencodeURIComponent(formobj.elements[j].value));
		}
	}

}


function reloadcontainer(divname,containers,enccvalues,orginalget,theform) {
	var formdata = "";
	if (theform) {
		formdata = formtostring(theform);
//		alert("theform: " + theform + " data: " + formdata);
	}
	fixadget = orginalget.substr(1);
//	alert("get: " + fixadget);
	if (formdata) {
		fixadget += "&" + formdata;
	}
	enccvaluesfiller = "..."
	prot = document.location.protocol;
	url = prot + "//" + window.location.hostname + "/disco/cmds.php";
	data  = "depcmd=cmloadcontainerbase64&containers=" + containers + "&cmblock=" + divname + "&" +fixadget + "&enccvalues=" + enccvalues;
	deugbdata  = "depcmd=cmloadcontainerbase64&containers=" + containers + "&cmblock=" + divname + "&" +fixadget;
//	alert("DATA:" + " " + url + deugbdata);
//	alert(url + " " + data);
//	alert('FORM: ' + theform + ' POST:' + fixadget);
//	alert(url + " divname:" + divname);
	opacity(divname,100,60,200);
	object = document.getElementById(divname);
//	alert("info: " + object.style.width + " x " + object.clientHeight);
	object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
	procstatus(3);
	CMloadXMLDoc(url,data,jcdloadedbase64);	
}

function procstatus(tottime) {
    setTimeout("updateprocstatus()",tottime); 
}

function updateprocstatus() {
	object = document.getElementById("procstatus");
	if (object) {
		object.innerHTML = "Please wait a moment.";
	}
}

function rungroupcontroller (objectclicked,objgroupname,objdocform) {
	objects = document.getElementsByName(objgroupname);
	if (objects) {
		for (var j = 0; j < objects.length; j++) {
			valuecont = document.getElementById(objects[j].id.slice(0,-10));
			if (objects[j] == objectclicked) {
				valuecont.value = 1;
			} else {
				valuecont.value = 0;
			}
		}
	}

}
function reloadeditorcontainer(divname,containers,enccvalues,orginalget,theform) {
	var formdata = "";
	if (theform)
		formdata = formtostring(theform);
	fixadget = orginalget.substr(1);
//	alert("get: " + orginalget);
	if (formdata) {
		fixadget += "&" + formdata;
	}
	enccvaluesfiller = "..."
	prot = document.location.protocol;
	url = prot + "//" + window.location.hostname + "/disco/cmds.php";
	data  = "depcmd=cmloadcontainerbase64&containers=" + containers + "&cmblock=" + divname + "&" +fixadget + "&enccvalues=" + enccvalues;
	debugdata  = "depcmd=cmloadcontainerbase64&containers=" + containers + "&cmblock=" + divname + "&" +fixadget + "&enccvalues=";
//	alert(url + " " + debugdata);
//	alert('FORM: ' + theform + ' POST:' + fixadget);
//	alert(url + " divname:" + divname);
	opacity(divname,100,60,200);
	object = document.getElementById(divname);
//	alert("info: " + object.style.width + " x " + object.clientHeight);
	object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
	CMloadXMLDoc(url,data,jcdloadededitorbase64);
	
}

function reloadcontaineronce(divname,containers,enccvalues,orginalget,theform) {
	if (alredyreloaded(divname)) {
		return 0;
	}
	markloaded(divname);
	var formdata = "";
	if (theform)
		formdata = formtostring(theform);
	fixadget = orginalget.substr(1);
//	alert("get: " + orginalget);
	if (formdata) {
		fixadget += "&" + formdata;
	}
	enccvaluesfiller = "..."
	prot = document.location.protocol;
	url = prot + "//" + window.location.hostname + "/disco/cmds.php";
	data  = "depcmd=cmloadcontainerbase64&containers=" + containers + "&cmblock=" + divname + "&" +fixadget + "&enccvalues=" + enccvalues;
//	alert(url + " " + data);
//	alert('FORM: ' + theform + ' POST:' + fixadget);
//	alert(url + " divname:" + divname);
	opacity(divname,100,60,200);
	object = document.getElementById(divname);
//	alert("info: " + object.style.width + " x " + object.clientHeight);
	object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
	CMloadXMLDoc(url,data,jcdloadedbase64);
}



function cmloadpart(divname,enccvalues,orginalget) {
	fixadget = orginalget.substr(1);
//	alert("get: " + orginalget);
	prot = document.location.protocol;
	url = prot + "//" + window.location.hostname + "/disco/cmds.php";
	data  = "depcmd=cmloadpartbase64&cmblock=" + divname + "&" +fixadget + "&enccvalues=" + enccvalues;
//	alert(url + " " + data);
	CMloadXMLDoc(url,data,jcdloadedbase64);
	
}

function aopacity(id, opacStart, opacEnd, millisec) {
	opacity(id, opacStart, opacEnd, millisec);
	object = document.getElementById(id);
	object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
} 

function opacity(id, opacStart, opacEnd, millisec) { 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if(opacStart > opacEnd) { 
        for(i = opacStart; i >= opacEnd; i--) { 
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } else if(opacStart < opacEnd) { 
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } 
} 

//change the opacity for different browsers 
function changeOpac(opacity, id) { 
    var object = document.getElementById(id).style; 
    object.opacity = (opacity / 100); 
    object.MozOpacity = (opacity / 100); 
    object.KhtmlOpacity = (opacity / 100); 
    object.filter = "alpha(opacity=" + opacity + ")"; 
}

var valuearra=new Array();
function urlstringtovalues (urlstring) {
	uarr = urlstring.split("&");
	for (i = 0;i < uarr.length; i++) {
		apar = uarr[i].split("=");
		valuearra.push(apar[0],apar[1]);
	}
	return valuearra;
}
function formtostring(theform) {
	var str = "";
	formobj = getObject(theform);
	if (formobj) {
		for (var j = 0; j < formobj.elements.length; j++) {
//			13_disco_text_textareaWidgEditor=true
//			alert();
			if (formobj.elements[j].name) {
				if (formobj.elements[j].name.match("WidgEditor")) {
					for (var k = 0; k < formobj.elements.length; k++) {
						if (formobj.elements[j].name.substring(0,formobj.elements[j].name.length - 10) == formobj.elements[k].name) {
							formobj.elements[k].value = weditors[formobj.elements[k].name].theIframe.contentWindow.document.getElementsByTagName("body")[0].innerHTML;
						}
					}
				}
			}
		}

		for (var j = 0; j < formobj.elements.length; j++) {
			if (j != 0) {
				str += "&";
			}
			if (formobj.elements[j].name) {
				if (!formobj.elements[j].name.match("WidgEditor")) {
					str +=  formobj.elements[j].name + "=" + DCMencodeURIComponent(formobj.elements[j].value);
				}
			}
		}
	}
	return str;
}

function discovalidateandsubmitform(theform) {
	if (formtostringstdalarm(theform).length) {
		getObject(theform).submit();
	}
}

function newformsubmit(theform,dnode) {
	formdata = newformtostringstdalarm(theform);
	if (formdata.length) {
		if (confirm("Är alla uppgifter rätt ifylda tryck OK.")) {
//			alert("CHECK D submit to ->" + dnode);
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + "/disco/cmds.php";
			data  = "depcmd=newsaveform&dnode=" + dnode + "&" + formdata;
//			alert(url + " " + data);
			CMloadXMLDoc(url,data,nullfuncgotodnode);
		}
	} else {
		alert("Kontrollera formuläret vid de fält som är markerade med en röd pil!");
	}
}

function newformsubmithybrid(theform,dnode) {
	formdata = formtostringstdalarm(theform);
	if (formdata.length) {
		if (confirm("Är alla uppgifter rätt ifylda tryck OK.")) {
//			alert("CHECK D submit to ->" + dnode);
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + "/disco/cmds.php";
			data  = "depcmd=newsaveform&dnode=" + dnode + "&" + formdata;
//			alert(url + " " + data);
			CMloadXMLDoc(url,data,nullfuncgotodnode);
		}
	} else {
		alert("Kontrollera formuläret vid de fält som är markerade med en röd pil!");
	}
}

function logininusertable(theform,dnode,paramsdonde,targetdiv,sucesstemplate,errortemplate) {
// EX PARAMS logininusertable('loginform','425','425','targetdiv2','/login/loginedit.xml','/login/form1.xml');"
	formdata = formtostringstdalarm(theform);
	if (formdata.length) {
//			alert("CHECK D submit to ->" + dnode);
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + "/disco/cmds2.php";
			data  = "depcmd=loginintable&dnode=" + dnode + "&paramsdonde=" + paramsdonde + "&sucesstemplate=" + sucesstemplate + "&targetdiv=" + targetdiv + "&errortemplate=" + errortemplate + "&" + formdata;
//			alert(url + " " + data);
//			alert("TDIV:" + targetdiv);
			object = document.getElementById(targetdiv);
//			object.innerHTML = url + " " + data;
			object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
			CMloadXMLDocPost(url,data,loadurlindivcb2);
	} else {
		alert("Kontrollera formuläret vid de fält som är markerade med en röd pil!");
	}
}

function saveusertable(theform,dnode,paramsdonde,targetdiv,sucesstemplate) {
//saveusertable('userform','425','425','targetdiv2','/login/form1.xml');
	formdata = formtostringstdalarm(theform);
	if (formdata.length) {
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + "/disco/cmds2.php";
			data  = "depcmd=saveusertable&dnode=" + dnode + "&paramsdonde=" + paramsdonde + "&sucesstemplate=" + sucesstemplate + "&targetdiv=" + targetdiv + "&" + formdata;
			object = document.getElementById(targetdiv);
//			object.innerHTML = url + " " + data;
			object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
			CMloadXMLDocPost(url,data,loadurlindivcb2);
	}
}


function getpasswordtempus(theform,dnode,paramsdonde,targetdiv,template) {
// '425','425','targetdiv2','/login/form3passwd.xml'
	formdata = formtostringstdalarm(theform);
	if (formdata.length) {
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + "/disco/cmds2.php";
			data  = "depcmd=sendpasswdtempus&dnode=" + dnode + "&paramsdonde=" + paramsdonde + "&template=" + template + "&targetdiv=" + targetdiv + "&" + formdata;
			object = document.getElementById(targetdiv);
//			object.innerHTML = url + " " + data;
			object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
			CMloadXMLDocPost(url,data,loadurlindivcb2);
	}

}


function newformtostringstdalarm(theform) {
	var str = "";
	var stdalarmstring = "<img style=\"margin-left: 4px; margin-top: 4px; display: inline; float:left;\" vspace=\"0\" src=\"/images/invaliddata.gif\" alt=\"invaliddata\" width=\"12\" height=\"12\"/>";
	var alarmed = 0;
	formobj = getObject(theform);
	if (formobj) {
		for (var j = 0; j < formobj.elements.length; j++) {
			if (j != 0) {
				str += "&";
			}
			if ((formobj.elements[j].type == 'radio') || (formobj.elements[j].type == 'checkbox')){
				if (formobj.elements[j].checked) {
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					formobjalarm.innerHTML = '';
				} else {
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					if (formobjalarm) {
						for (i = 0;i < formobjalarm.parentNode.childNodes.length; i++) {
							if ( (formobjalarm.parentNode.childNodes[i].className == 'alarm') && (formobjalarm.parentNode.childNodes[i].innerHTML.search('/images/invaliddata.gif'))) {
								formobjalarm.parentNode.childNodes[i].innerHTML = "";
							}
						}
						formobjalarm.innerHTML = stdalarmstring;
						alarmed = 1;
					}
				}
				str += formobj.elements[j].name + '=' + "1";
			} else {
//				alert('type: ' + formobj.elements[j].type + ' value: ' + formobj.elements[j].value);
				if ((formobj.elements[j].value == '') || (formobj.elements[j].value == '- -') || (!formfilter(formobj.elements[j],formobj))){
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					if (formobjalarm) {
						for (i = 0;i < formobjalarm.parentNode.childNodes.length; i++) {
							if ( (formobjalarm.parentNode.childNodes[i].className == 'alarm') && (formobjalarm.parentNode.childNodes[i].innerHTML.search('/images/invaliddata.gif'))) {
								formobjalarm.parentNode.childNodes[i].innerHTML = "";
							}
						}
						formobjalarm.innerHTML = stdalarmstring;
						alarmed = 1;
					}
				} else {
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					formobjalarm.innerHTML = '';
				}
				str +=  formobj.elements[j].name + "=" + DCMencodeURIComponent(formobj.elements[j].value);
			}
		}
	}
	
	if (alarmed == 0) {
		return str;
	} else {
		return '';
	}
}

function formtostringstdalarm(theform) {
	var str = "";
	var stdalarmstring = "<img style=\"vertical-align: bottom; margin-left: 4px; margin-right: 4px; margin-bottom: 2px;\" vspace=\"0\" src=\"/disco/intranet/grafik/invaliddata.gif\" alt=\"invaliddata\" width=\"18\" height=\"18\"/>";
	var alarmed = 0;
	formobj = document.getElementById(theform);
	if (formobj) {
		for (var j = 0; j < formobj.elements.length; j++) {
			if (j != 0) {
				str += "&";
			}
			if ((formobj.elements[j].type == 'radio') || (formobj.elements[j].type == 'checkbox')){
				if (formobj.elements[j].checked) {
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					formobjalarm.innerHTML = '';
				} else {
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					if (formobjalarm) {
						for (i = 0;i < formobjalarm.parentNode.childNodes.length; i++) {
							if ( (formobjalarm.parentNode.childNodes[i].className == 'alarm') && (formobjalarm.parentNode.childNodes[i].innerHTML.search('/disco/intranet/grafik/invaliddata.gif'))) {
								formobjalarm.parentNode.childNodes[i].innerHTML = "";
							}
						}
						formobjalarm.innerHTML = stdalarmstring;
						alarmed = 1;
					}
				}
				str += formobj.elements[j].name + '=' + "1";
			} else {
//				alert('type: ' + formobj.elements[j].type + ' value: ' + formobj.elements[j].value);
				if ((formobj.elements[j].value == '') || (formobj.elements[j].value == '- -') || (!formfilter(formobj.elements[j],formobj))){
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					if (formobjalarm) {
						for (i = 0;i < formobjalarm.parentNode.childNodes.length; i++) {
							if ( (formobjalarm.parentNode.childNodes[i].className == 'alarm') && (formobjalarm.parentNode.childNodes[i].innerHTML.search('/disco/intranet/grafik/invaliddata.gif'))) {
								formobjalarm.parentNode.childNodes[i].innerHTML = "";
							}
						}
						formobjalarm.innerHTML = stdalarmstring;
						alarmed = 1;
					}
				} else {
					formobjalarm = getObject("alarm" + formobj.elements[j].name);
					formobjalarm.innerHTML = '';
				}
				str +=  formobj.elements[j].name + "=" + DCMencodeURIComponent(formobj.elements[j].value);
			}
		}
	}
	if (alarmed == 0) {
		return str;
	} else {
		return '';
	}
}

function formfilter(inputobj,formobj) {

	var value = inputobj.value;
	var name = inputobj.name;
	
	if (name == 'email') {
		validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
    	if (value.search(validRegExp) == -1) 
			return 0;
	}
	if (name == 'birthdatestr') {
    	if (!new personnummer(value).valid) {
			return 0;
		}
	}
	if (name == 'Cardnum') {
		for (var j = 0; j < formobj.elements.length; j++) {
			if (formobj.elements[j].name == 'Cardtype') {
				if (!checkCreditCard(value,formobj.elements[j].value)) {
					return 0;
				}
			}
		}
	}
	return 1;
}

function convertxmlldatatoArlist(block,myDataarray) {
	var data = "";
	for (var h = 0; h < myDataarray.length; h++ ) {
		myDataarray.pop();
	}
	if (block) {
		for (var i = 0; i < block.childNodes.length; i++)  {
			if (block.childNodes[i].nodeType == 1){
	//			ddebug("parsing xml respons: " + block.childNodes[i].nodeName + "->"+block.childNodes[i].firstChild.nodeValue);
				if (block.childNodes[i].firstChild) {
					myDataarray.push(block.childNodes[i].nodeName,block.childNodes[i].firstChild.nodeValue);
				} else {
					myDataarray.push(block.childNodes[i].nodeName,"");			
				}
			}
		}
	}
	return myDataarray;
}

function getvaluefromdataArlist(ArList,tagname) {
	for (var a = 0; a < ArList.length; a = a + 2) {
		if (ArList[a] == tagname) {
			aa = a + 1;
			identifierv = ArList[aa];
			return identifierv;
		}
	}
	return null;
}

function getvaluefromXMLrespons(xmlresponspart,tag) {
	dataarray = convertxmlldatatoArlist(xmlresponspart,new Array());
	return getvaluefromdataArlist(dataarray,tag);
	
}

/*  The code contained in this  file is copyrighted by www.jojoxx.net
The file may be used for none commercial applications and distributed
as long as these lines remain intact.  The file or part of it may not
be sold  or  included  in any  other commercial  application  without
agreement from the author. If you have questions or comments, contact
the author at http://www.jojoxx.net

� Copyright - www.jojoxx.net - 2004                                */

function personnummer(nr) {
	this.valid=false;
	if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
	this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); this.nowShortYear=this.nowFullYear.substring(2,4);
	this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
	this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
	var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){ months[1]=29; }
	if(this.month*1<1||this.month*1>12||this.day*1<1||this.day*1>months[this.month*1-1]){ return false; }
	this.alldigits=this.year+this.month+this.day+this.controldigits;
	var nn="";
	for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
	this.checksum=0;
	for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
	this.valid=(this.checksum%10==0)?true:false;
	this.sex=parseInt(this.controldigits.substring(2,3))%2;
}


//
function formsavevalues (theform,key,submitto) {
	valuestring = formtostring(theform);
	Set_Cookie(key,valuestring);

	prot = document.location.protocol;
	url = prot + "//" + window.location.hostname + "/index.php?dnode=" + submitto + "&dep_cmd=mail";
	valuestring = valuestring.substr(1);
//	alert(url + " " + valuestring);
	CMloadXMLDoc(url,valuestring,gbhsubmitorder);	
}

function gbhsubmitorder() {
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
			prot = document.location.protocol;
			location.href = prot + "//" + window.location.hostname + "/bekraft.html";
        } else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText + " ERROR: 003");
        }
    }
}


function discosubmitform(theform,key,submitto) {
//	valuestring = formtostring(theform);
	valuestring = formtostringstdalarm(theform);
//	alert("form: " + theform + " submitto: " + submitto);
	if (valuestring.length) {
		Set_Cookie(key,valuestring);
		
		//	url = "http://" + window.location.hostname + "/index.php?dnode=" + submitto + "&dep_cmd=mailandsave";
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + "/index.php?dnode=" + submitto;
		//	valuestring = valuestring.substr(1);
		//	alert(url + " " + valuestring);
			object = document.getElementById(theform);
		//	alert("info: " + object.style.width + " x " + object.clientHeight);
		//	object.innerHTML = "<div style=\"width:"+object.style.width+"; height:"+object.clientHeight+"px; background-color: FFFFFF;\"><center><div ><img style=\"padding-top: 40px;\" vspace=\"0\" src=\"/disco/intranet/grafik/loading.gif\" alt=\"loading\" width=\"32\" height=\"32\"/><pre id=\"procstatus\"></pre></div></center></div>";
			opacity(theform + "_key",100, 10, 200);
			CMloadXMLDoc(url,valuestring,discosubmitformhandler);	
	}
}

function discosubmitformtourl (theform,key,submitto) {
//	valuestring = formtostring(theform);
	valuestring = formtostringstdalarm(theform);
	if (valuestring.length) {
		Set_Cookie(key,valuestring);
		
		//	url = "http://" + window.location.hostname + "/index.php?dnode=" + submitto + "&dep_cmd=mailandsave";
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + submitto;
		//	valuestring = valuestring.substr(1);
		//	alert(url + " " + valuestring);
			CMloadXMLDocSync(url,valuestring,nullfunc);	
	}

}

function discosubmitformdss2 (theform) {
//	valuestring = formtostring(theform);
	valuestring = formtostringstdalarm(theform);
	if (valuestring.length) {
		
		//	url = "http://" + window.location.hostname + "/index.php?dnode=" + submitto + "&dep_cmd=mailandsave";
			prot = document.location.protocol;
			url = prot + "//" + window.location.hostname + "/disco/cmds.php?depcmd=bgsaveform";
		//	valuestring = valuestring.substr(1);
		//	alert(url + "\n" + valuestring);
			CMloadXMLDoc(url,valuestring,nullfunc);	
	}

}

function nullfunc () {

}
function nullfuncdebug () {
    if (req.readyState == 4) {
        // only if "OK"
        if ((req.status == 200) || (req.status == 500)) {
        	alert("staus: " + req.status + " msg: " + req.responseText);
		}
	}
}
function nullfuncgotodnode () {
    if (req.readyState == 4) {
        // only if "OK"
        if ((req.status == 200) || (req.status == 500)) {
			prot = document.location.protocol;
        	location.href = prot + "//" + window.location.hostname + "/?dnode=" + req.responseText;
		}
	}
}

function discosubmitformhandler() {
    if (req.readyState == 4) {
        // only if "OK"
        if ((req.status == 200) || (req.status == 500)) {
			response = req.responseText;
			start = response.search("<body>") + 6;
			end = response.search("</body>");
			responsedata = response.substring(start,end);
			prot = document.location.protocol;
			location.href = prot + "//" + window.location.hostname + "/?dnode=" + responsedata;
        } else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText  + " ERROR: 004");
        }
    }
}


function GetParams(strParamName) { 
	var strReturn = "";
	var strHref = location.href;
	aarr = strHref.split("?");
	if (aarr.length > 1) {
		uarr = aarr[1].split("&");
		for (i = 0;i < uarr.length; i++) {
			apar = uarr[i].split("=");
			if (apar[0] == strParamName)
				return apar[1];
		}
	}
	return null;
} 


function formssetvalues (theform,key) {
	uvalue = GetParams('cmpy');
	if (uvalue) {
		valuestring = Get_Cookie(key);
		if (valuestring) {
			formkeyvalues = urlstringtovalues(valuestring);
			formobj = getObject(theform);
			if (formobj) {
				for (var j = 0; j < formobj.elements.length; j++) {
					if (j != 0) {
						if ((formobj.elements[j].name != 'Fornamn') && (formobj.elements[j].name != 'Efternamn') && (formobj.elements[j].name != 'Personnummer')){					
							svalue = getdubblaarrayvalue(formkeyvalues,formobj.elements[j].name);	
//							alert(formobj.elements[j].name+"="+svalue);
							formobj.elements[j].value = svalue;
						}
					}
				}
			}
		}
	}
}

function getdubblaarrayvalue(thedarray,key) {
	for (i = 0; i < thedarray.length; i = i + 2) {
		if (thedarray[i] == key ) {
			return thedarray[i+1];
		}
	}
		return null;
}

function dcmopenwindow(url,name,specs) {
	myWindow = window.open(url,name,specs);
	myWindow.focus();
}

function dcmlogout(dnode) {
	location.href = prot + "//" + window.location.hostname + "/?dnode=" + dnode + "&dep_cmd=logout";
}



/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}


/**
*
*  motion slide up / down div
*
**/

var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}


function datepopformchange(id,part) {	
    thisobj = document.getElementById(id + "_" + part);
	formobj = getObject(thisobj.form.name);
//	alert("change: " + id + " p: " + part + " form: " + thisobj.form.name);
	if ((part == 'month') || (part == 'year')) {
		selectedday = formobj[id+'_day'].value - 1;
		formobj[id+'_day'].length = 0;
        if ((formobj[id+'_month'].value == 4) || (formobj[id+'_month'].value == 6) || (formobj[id+'_month'].value == 9) || (formobj[id+'_month'].value == 11)) {
        	days = 30;
        } else {
        	 if (formobj[id+'_month'].value == 2) {
        	 	if (checkleapyear(formobj[id+'_year'].value)) {
        			days = 29;
        	 	} else {
        			days = 28;
        	 	}
        	 } else {
        	 	days = 31;
        	 }
        }
        for (var n = 0; n < days; n++) {
        	if (selectedday == n) {
				formobj[id+'_day'].options[n]=new Option(n+1, n+1, false, true)
        	} else {
				formobj[id+'_day'].options[n]=new Option(n+1, n+1, false, false)
        	}
		}

//		alert(formobj[id+'_day'].value);
	}
	str +=  formobj.elements[j].name + "=" + DCMencodeURIComponent(formobj.elements[j].value);
	
}

function checkleapyear(datea) {
	datea = parseInt(datea);
	if(datea%4 == 0) {
		if(datea%100 != 0) {
			return true;
		} else {
			if(datea%400 == 0)
				return true;
			else
				return false;
		}
	}
	return false;
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

