
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 ajaxnullhandler() {
    if (req.readyState == 4) {
		document.body.style.cursor = "auto";
	}
}

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 reloadonce = new Array();
var weditors = new Array();

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

init();

function init()
{
  document.onmousemove = update; // update(event) implied on NS, update(null) implied on IE
  update();
}

function getMouseXY(e) // works on IE6,FF,Moz,Opera7
{ 
  if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event)

  if (e)
  { 
    if (e.pageX || e.pageY)
    { // this doesn't work on IE6!! (works on FF,Moz,Opera7)
      mousex = e.pageX;
      mousey = e.pageY;
      algor = '[e.pageX]';
      if (e.clientX || e.clientY) algor += ' [e.clientX] '
    }
    else if (e.clientX || e.clientY)
    { // works on IE6,FF,Moz,Opera7
      mousex = e.clientX + document.body.scrollLeft;
      mousey = e.clientY + document.body.scrollTop;
      algor = '[e.clientX]';
      if (e.pageX || e.pageY) algor += ' [e.pageX] '
    }  
  }
}

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 update(e)
{
  getMouseXY(e); // NS is passing (event), while IE is passing (null)
/*  getObject('gdebug').innerHTML += 'na:  ' + navigator.appName;
  getObject('gdebug').innerHTML += 'wi:  ' + window.event ? window.event.type : '(na)';
  getObject('gdebug').innerHTML += 'et:  ' + e ? e.type : '(na)';
  getObject('gdebug').innerHTML += 'mx:  ' + mousex;
  getObject('gdebug').innerHTML += 'my:  ' + mousey;
  getObject('gdebug').innerHTML += 'gx:  ' + grabx;
  getObject('gdebug').innerHTML += 'gy:  ' + graby;
  getObject('gdebug').innerHTML += 'ox:  ' + orix;
  getObject('gdebug').innerHTML += 'oi:  ' + oriy;
  getObject('gdebug').innerHTML += 'ex:  ' + elex;
  getObject('gdebug').innerHTML += 'ey  ' + eley;
  getObject('gdebug').innerHTML += 'al  ' + algor;
  getObject('gdebug').innerHTML += 'do:  ' + dragobj ? (dragobj.id ? dragobj.id : 'unnamed object') : '(null)';
*/
}

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 grab(context)
{
  document.onmousedown = falsefunc; // in NS this prevents cascading of events, thus disabling text selection
  dragobj = context;
  gdebug(dragobj);
  dragobjcopy = context;
  document.onmousemove = drag;
  document.onmouseup = drop;
  grabx = mousex;
  graby = mousey;
  elex = orix = dragobj.offsetLeft;
  eley = oriy = dragobj.offsetTop;
  dragobj.style.opacity = 0.8;
  getObject(dragobj.id + "_dbg").innerHTML = "T:" + dragobj.offsetTop + " L:" + dragobj.offsetLeft;
  if (!newNodePlacerHolder) {
  	createplacerholder(dragobj);
  }
  dragobj.style.zindex = 99; // move it to the top
  gdebug(dragobj);
  update();
}

function drag(e) // parameter passing is important for NS family 
{
  if (dragobj)
  {
//    elex = orix + (mousex-grabx);
    eley = oriy + (mousey-graby);
    dragobj.style.position = "absolute";
    dragobj.style.left = (elex).toString(10) + 'px';
    dragobj.style.top  = (eley).toString(10) + 'px';
  	getObject(dragobj.id + "_dbg").innerHTML = "T:" + dragobj.offsetTop + " T:" + dragobj.offsetLeft;
  	if (newNodePlacerHolder.style.visibility != 'visible') {
  		newNodePlacerHolder.style.visibility = 'visible';
  	}
  }
  update(e);
  return false; // in IE this prevents cascading of events, thus text selection is disabled
}

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 drop()
{
  var parentoffcet = 0;
  var objheightbefore = 0;
  if (dragobj)
  {
//	alert('DROP styletop:' + dragobj.style.top + ' top:' + dragobj.offsetTop + ' p_styletop:' + dragobj.parentNode.style.top + ' p_top:' + dragobj.parentNode.offsetTop );
    dragobj.style.zindex = 0;
    dragobj.style.opacity = 1;
	dragobj.style.left = '0px';
    dragobj.parentNode.style.position = "absolute";
	getObject(dragobj.id + "_dbg").innerHTML = 'parenttop:' + dragobj.parentNode.offsetTop + ' drop:' + dragobj.offsetTop + 'height: ' + dragobj.clientHeight;
	objheightbefore = obectsbeforeHeight(dragobj);
	parentoffcet = dragobj.parentNode.offsetTop;
    dragobj.parentNode.style.position = "relative";
    dragobj.parentNode.removeChild(newNodePlacerHolder);
	dragobj.offsetTop = dragobj.offsetTop - parentoffcet - objheightbefore;
	dragobj.style.top = (dragobj.offsetTop - parentoffcet - objheightbefore) + 'px';
    gdebug(dragobj);
    dragobj.style.position = "relative";
    dragobj = null;
    newNodePlacerHolder = null;
  }
  
  update();
  document.onmousemove = update;
  document.onmouseup = null;
  document.onmousedown = null;   // re-enables text selection on NS
}

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.setRequestHeader("Connection", "close");
		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.setRequestHeader("Connection", "close");
			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.setRequestHeader("Connection", "close");
		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.setRequestHeader("Connection", "close");
			req.send(data);
        }
    }
}

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);
	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>";
	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;
//	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,jcdloadededitorbase64);
	
}

function loaddataindiv(divname,fromdnode,moredata) {
//	slideup('bokningsinfo');
	data  = "&dnode=" + fromdnode + "&divname=" + divname + moredata;

	opacity(divname,100,30,200);
	object = document.getElementById(divname);
//	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>";

	document.getElementById('onlineprog').style.display = "inline";
	CMloadXMLDoc("/disco/cmds_dev.php?depcmd=loadxmld"+data,"",loaddataindivcallback);
	
}

function loaddataindivcallback () {
    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);
			dvat = req.responseXML.getElementsByTagName('depresult');

			cmdivvalue = getvaluefromXMLrespons(dvat[0],'cmdiv');
//			alert(cmdivvalue);
			cmobj = getObject(cmdivvalue);
//			alert("div: " + cmdiv[0].childNodes[0].nodeValue );

			divarr = cmobj.id.split("__");

			dyndivname = getElementsByName_iefix('div',divarr[0]);
//			alert(divarr[0]);
			for (ij = 0; ij < dyndivname.length; ij++) {
				dyndivname[ij].innerHTML = "";
			}

		// 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);
			document.getElementById('onlineprog').style.display = "none";
			cmobj.innerHTML = Base64.decode(inserttext);
			opacity(cmdivvalue,30,100,100);
			widgInit();
        } else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText + " ERROR: 002");
        }
    }
}
function hideshowdiv(divid) {
//	alert("hide/show " + divid);
	dividobj = getObject(divid);
	divarr = dividobj.id.split("__");
	dyndivname = getElementsByName_iefix('div',divarr[0]);
	if (dyndivname) {
//		alert("antal " + dyndivname.length);
		for (ik = 0; ik < dyndivname.length; ik++) {
			if (dyndivname[ik].id == dividobj.id) {
//				alert("show " + dyndivname[ik].id);
				slidedown(dyndivname[ik].id);
//				dyndivname[ik].style.display = "block";
			} else {
//				alert("hide " + dyndivname[ik].id);
				slideup(dyndivname[ik].id);
//				dyndivname[ik].style.display = "none";
			}
		}
	} else {
		alert("notfound " + divarr[0]);
	}
}

function getElementsByName_iefix(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

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 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 = 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('/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);
	
}

/*

			dvat = req.responseXML.documentElement.getElementsByTagName("dvalues");
			savedata = getdatalistfromxmlblock(dvat[0],new Array());
			for (var a = 0; a < savedata.length; a = a + 2) {
				if (savedata[a] == "identifier") {
					aa = a + 1;
					identifierv = savedata[aa];
				}
				if (savedata[a] == "identvalue") {
					aa = a + 1;
					identvaluev = savedata[aa];
				}
			}

*/


/*  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);
	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);
			CMloadXMLDoc(url,valuestring,discosubmitformhandler);	
			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);
	}
}

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 nullfunc () {

}

function discosubmitformhandler() {
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
			response = req.responseText;
			prot = document.location.protocol;
			location.href = prot + "//" + window.location.hostname + "/?dnode=" + response;
        } 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;
}