
if(typeof GetXMLHttp == 'undefined') {
	GetXMLHttp = function ()
	{
	    var xmlhttp=false;
	    
	    try 
	    {
	        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	    } 
	    catch (e) 
	    {
	        try 
	        {
	            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	        }
	        catch (E)
	        {
	            xmlhttp = false;
	        }
	    }
	
	    // Mozilla then?
	    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	       xmlhttp = new XMLHttpRequest();
	    }
	    
	    return xmlhttp;
	}
}


if(typeof getHost == 'undefined') {
	getHost = function()
	{
		if(self.location.host)
		{
			if(self.location.host.indexOf(":")<0) {
				return "http://"+self.location.host+":"+isycat.port.value;
			}
			else
				return "http://"+self.location.host;
		}
		else
		{
			return "http://localhost:"+isycat.port.value;
		}
	}
}


if(typeof docEl == 'undefined') {
	docEl = function(id)
	{
		return document.getElementById(id);
	}
}


function myWaitCursorOn(el)
{
	if(typeof el == "undefined")
		el= docEl("IsyDisable_CONTAINER") ? docEl("GUI_DISABLE") : docEl("IsyDisable_CONTAINER");
		
	if(el) {
		el.style.visibility = 'visible';
		el.style.cursor = 'wait';
	}
}

function myWaitCursorOff(el)
{
	if(typeof el == "undefined")
		el= docEl("IsyDisable_CONTAINER") ? docEl("GUI_DISABLE") : docEl("IsyDisable_CONTAINER");
		
	if(el) {
		el.style.visibility = 'hidden';
		el.style.cursor = 'default';
	}
}



function easyguiMode()
{
	return parent.document.getElementById('GUI_DISABLE')!=null;
}



function mySubmit(element)
{
	if (typeof(element) == "string") {
		parent.document.isycat.EKSUBMITEVENT.value = element;
	}
	else
	{
		element.style.cursor = 'wait';
		if (element.id == null)
		{
			if ((element = getElement(element)) == null)
				return;
		}
		parent.document.isycat.EKSUBMITEVENT.value = element.getAttribute('id');
	}
    
	if(easyguiMode)
 		waitElement = parent.document.getElementById('GUI_DISABLE');
	else
 		waitElement = parent.document.getElementById('IsyDisable_CONTAINER');
	
	waitElement.style.visibility = 'visible';
	waitElement.style.cursor = 'wait';
	mySubmitUtf8();
	//setTimeout("mySubmitUtf8()",20);
}



function mySubmitNoWait(element)
{
	if (typeof(element) == "string") {
		parent.document.isycat.EKSUBMITEVENT.value = element;
	}
	else
	{
		if (element.id == null)
		{
			if ((element = getElement(element)) == null)
				return;
		}
		parent.document.isycat.EKSUBMITEVENT.value = element.getAttribute('id');
	}
    
	mySubmitUtf8();
}




function hexnib(d) {
   if(d<10) return d; else return String.fromCharCode(65+d-10);
}

function hexbyte(d) {
        // return "%"+hexnib((d&240)>>4)+""+hexnib(d&15);
	return hexnib((d&240)>>4)+""+hexnib(d&15);
}

function ekEncode(inStr)
{
	return encodeURIComponent(inStr);
    /*var result="";
    var hex="";
     for(var i=0;i<inStr.length; i++) {
             var cc=inStr.charCodeAt(i);
             if (cc<128) {
                 result+=hexbyte(cc);
             } else if((cc>127) && (cc<2048)) {
                result+=  hexbyte((cc>>6)|192)
                        + hexbyte((cc&63)|128);
             } else {
                result+=  hexbyte((cc>>12)|224)
                        + hexbyte(((cc>>6)&63)|128)
                        + hexbyte((cc&63)|128);
             }
     }
    return result;*/
}


function myCreateHiddenFormField(id, fieldname, value) {
	var formField = document.createElement('input');
	formField.type = 'hidden';
	formField.id = id;
	formField.name = fieldname;
	formField.value = value;
	return formField;
}



if(typeof getEKSubmitValuesUtf8 == 'undefined') {
	getEKSubmitValuesUtf8 = function ()
	{
		var nElements=document.isycat.length;
		var obj,id;
		
		var specialSubmitValues="";
		
		for(var i=0;i<nElements;i++)
		{
			obj=document.isycat[i];
			
			if(!obj.type)
			{
				continue;
			}
			
			if(!obj.id)
			{
				if(!obj.name)
				{
					continue;
				}
				else
				{
					id=obj.name;
				}
			}
			else
			{
				id=obj.id
			}
			
			if(obj.type=="text" || obj.type=="hidden" || obj.type=="textarea" || obj.type=="password")
			{
				specialSubmitValues+=ekEncode(id)+"="+ekEncode(obj.value)+"&";
			}
			else if(obj.type=="checkbox")
			{
				if (obj.checked)
				{
					specialSubmitValues+=ekEncode(id)+"="+ekEncode("true")+"&";
				}
				else
				{
					specialSubmitValues+=ekEncode(id)+"="+ekEncode("false")+"&";
				}
			}
			else if(obj.type == "radio")
			{
				if (obj.checked)
				{
					specialSubmitValues+=ekEncode(obj.name)+"="+ekEncode(obj.value)+"&";
				}
			}
			else if(obj.type=="select-one")
			{
				if(obj.selectedIndex>=0)
					specialSubmitValues+=ekEncode(id)+"="+ekEncode(obj[obj.selectedIndex].value)+"&";
				else
					specialSubmitValues+=ekEncode(id)+"=&";
			}
			else if (obj.type=="select-multiple")
			{
				var selectedItems="";
				for (var j=0; j < obj.length;j++)
				{
					if(obj.options[j].selected)
					{
						selectedItems+=obj.options[j].value+"|";
					}
				}
				
				if(selectedItems!="")
					selectedItems=selectedItems.substring(0,selectedItems.length-1);
					
				specialSubmitValues+=ekEncode(id)+"="+ekEncode(selectedItems)+"&";
			}
			else if(obj.type=="button")
			{
				; // nix
			}
			else
			{
				// alert(obj.type);
			}
			
		}
	
		return specialSubmitValues;
	}
}



var subForm;


function mySubmitUtf8()
{
	subForm = document.createElement('form');
	subForm.name 	= 'isycat_submit';
	subForm.method 	= 'post';
	subForm.action 	= document.isycat.action;
	subForm.target	= document.isycat.target;
	
	
	subForm.appendChild(myCreateHiddenFormField("port","port",isycat.port.value));
	subForm.appendChild(myCreateHiddenFormField("__eksubmit_values__","__eksubmit_values__",
				getEKSubmitValuesUtf8() ));
	
	document.body.appendChild(subForm);
	//setTimeout("mySubmitValuesSubmit()",100);
	mySubmitValuesSubmit();
}


function mySubmitValuesSubmit()	
{
	subForm.submit();
	EKSubmitLocked=false; // Wo wird das nochmal gesetzt?!? 
	subForm.removeNode();
	document.isycat.target="_self";
}


function showMessage(id)
{
	var obj=document.getElementById(id);
	if(obj.value!='' && obj.value!=id)
		alert(obj.value);
	obj.value='';
}



function addPostParam(sParams, sParamName, sParamValue)
{
	if (sParams.length > 0) {
		sParams += "&";
	}
	return sParams + encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
}


function ajaxOpenDocument(eventId,urlInfo)
{
    var oRequest = GetXMLHttp();
    var sAjaxURL = getHost() + "/ajax/open_document/" + urlInfo;
    var sURL = document.isycat.action;
    var sParams = "";
    
	myWaitCursorOn();

	// ekSubmit simulieren...
	document.isycat.EKSUBMITEVENT.value=eventId;
	
	sParams=addPostParam(sParams, "__eksubmit_values__",
		getEKSubmitValuesUtf8()+ekEncode("ek_ajax_url")+"="+ekEncode(sAjaxURL));

	oRequest.open("post", sURL, false);
	oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oRequest.send(sParams);

	if(oRequest.status==200 && oRequest.responseText!="")
	{
		//alert(oRequest.responseText);
		open(oRequest.responseText);
	}
	
	myWaitCursorOff();
}


function ajaxOpenCADOnline(eventId)
{
    var oRequest = GetXMLHttp();
    var sAjaxURL = getHost() + "/ajax/open_cad_online/";
    var sURL = document.isycat.action;
    var sParams = "";
    
	myWaitCursorOn();

	// ekSubmit simulieren...
	document.isycat.EKSUBMITEVENT.value=eventId;
	
	sParams=addPostParam(sParams, "__eksubmit_values__",
		getEKSubmitValuesUtf8()+ekEncode("ek_ajax_url")+"="+ekEncode(sAjaxURL));

	oRequest.open("post", sURL, false);
	oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oRequest.send(sParams);

	if(oRequest.status==200 && oRequest.responseText!="")
	{
		//alert(oRequest.responseText);
		window.open(oRequest.responseText, "", 'location=1,status=1,scrollbars=1,resizable=1,width=1010,height=700');
	}
	
	myWaitCursorOff();
}



function OpenDocument()
{
	filename=document.getElementById('OPEN_THIS').value;
	if(filename){ self.open(filename,"",'width=800,height=600'); }
	document.getElementById('OPEN_THIS').value='';
}


function InitRalTable(tab_id)
{
	var Table=document.getElementById(tab_id);
	var aTab = Table.getElementsByTagName('td');
	if(!aTab.length)
			return;

	var spalten=aTab[0].parentNode.getElementsByTagName('td').length;
	var fixedLines = Table.getAttribute('fixedLines'); //ISYCAT2
	var TabStart=fixedLines*spalten;
	var nRows = (aTab.length-TabStart) / spalten;

	nBase = TabStart;
	for (i=0; i < nRows; i++, nBase += spalten)
	{
		var row_id=aTab[nBase].parentNode.id;
		var RGB_HEX_Obj=document.getElementById(row_id+"_2_ET");
		if(!RGB_HEX_Obj) { // Neue Version
			RGB_HEX_Obj=document.getElementById(row_id).childNodes[1];
			if(RGB_HEX_Obj) {
					var Color=RGB_HEX_Obj.innerHTML.substr(1,6);
					RGB_HEX_Obj.style.backgroundColor=Color;
					RGB_HEX_Obj.style.color=Color;
			}
		}
		else {
			// Alte Version mit Edit-Feldern
			RGB_HEX_Obj.style.backgroundColor=RGB_HEX_Obj.value;
			RGB_HEX_Obj.style.color=RGB_HEX_Obj.value;
		}
	}
}


function PreviewGetriebe()
{
	var row_id=document.isycat["IDC_RAL_TAB"].value;
	var last_row_id=document.getElementById("LAST_RAL_TAB_ROW").value;
	
	if(row_id!="" && (row_id != last_row_id) )
	{
		var oTR=document.getElementById(row_id);
		var oTDs=oTR.getElementsByTagName("TD");
		if(oTDs[1])
		{
			var Color=oTDs[1].innerHTML.substr(1,6);
			var image=document.getElementById("IDC_PREVIEW");
			image.style.backgroundColor=Color;
			oTDs[1].style.backgroundColor=Color;
			oTDs[1].style.color=Color;
			document.getElementById("LAST_RAL_TAB_ROW").value=row_id;
		}
		setTimeout("PreviewGetriebe()",100);
	}
	else
	{
		setTimeout("PreviewGetriebe()",500);
	}
}


function Sondereinbaulage(obj)
{
	if(obj.checked)
	{
		document.getElementById("IDC_GRAD_EDIT").style.visibility="visible";
		document.getElementById("IDC_GEDREHT_LABEL").style.visibility="visible";
		document.getElementById("IDC_EINBAULAGE_ZU_COMBO").style.visibility="visible";
	}
	else
	{
		document.getElementById("IDC_GRAD_EDIT").style.visibility="hidden";
		document.getElementById("IDC_GEDREHT_LABEL").style.visibility="hidden";
		document.getElementById("IDC_EINBAULAGE_ZU_COMBO").style.visibility="hidden";
	}
}


function OnlySelectMe(obj)
{
	if(document.getElementById('change_done').value=="1")
		return;

	document.getElementById('change_done').value="1";

	document.getElementById('IDC_STRIRNRAD_CHECK').checked=false;
	document.getElementById('IDC_FLACHGETRIEBE_CHECK').checked=false;
	document.getElementById('IDC_KEGELRAD_CHECK').checked=false;
	document.getElementById('IDC_SCHNECKENGETRIEBE_CHECK').checked=false;
	document.getElementById('IDC_HAENGEBAHN_CHECK').checked=false;

	obj.checked=true;

	//ekSubmit(obj);
}



function InitGeber(idx)
{
	if(idx==1)
	{
		style_impulse="hidden";
		document.getElementById("IDC_IMPULSE_PRO_UMDREHUNG_COMBO").style.visibility=style_impulse;
		document.getElementById("IDC_AUSGAENGE_COMBO").style.visibility=style_impulse;
		document.getElementById("IDC_AUSGANGSSIGNAL_COMBO").style.visibility=style_impulse;
		document.getElementById("IDC_AUSGAENGE_LABEL").style.visibility=style_impulse;
		document.getElementById("IDC_STANDARD_1024_LABEL").style.visibility=style_impulse;
	}
}

function checkCalc(obj)
{
	var P=document.getElementById('IDC_ERF_LEISTUNG').value;
	var n=document.getElementById('IDC_EINTRIEBSDREHZAHL').value;
	var IG=document.getElementById('IDC_UNTERSETZUNG').value;

	if(P != "" && n != "" && IG != "")
	{
		ekSubmit(obj);
	}
	else
	{
		return false;
	}
}


function InitAufstellung()
{
	var element;
	
	if(document.getElementById('ZUSATZKLEMMENKASTEN').value!="1")
	{
		element=document.getElementById('IDC_LAGE_ZUSKK_LABEL');
		if(element)
			element.style.visibility="hidden";
		
		element=document.getElementById('IDC_LAGE_ZUSKK_COMBO');
		if(element)
			element.style.visibility="hidden";
	}

	/*
	DOPPELTE_WELLENDICHTUNG_QUESTION=document.getElementById('DOPPELTE_WELLENDICHTUNG_QUESTION').value;
	document.getElementById('DOPPELTE_WELLENDICHTUNG_QUESTION').value='';
	if(DOPPELTE_WELLENDICHTUNG_QUESTION!="" && DOPPELTE_WELLENDICHTUNG_QUESTION!="DOPPELTE_WELLENDICHTUNG_QUESTION")
	{	// OK-Abbrechen Box wegen doppelter Wellendichtung
		if(confirm(DOPPELTE_WELLENDICHTUNG_QUESTION)==true)
		{
			document.getElementById('DOPPELTE_WELLENDICHTUNG_RESULT').value="1";
			ekSubmit("DOPPELTE_WELLENDICHTUNG_RESULT");
		}
	}
	*/

	DOPPELTE_WELLENDICHTUNG_QUESTION=document.getElementById('DOPPELTE_WELLENDICHTUNG_QUESTION').value;
	document.getElementById('DOPPELTE_WELLENDICHTUNG_QUESTION').value='';
	if(DOPPELTE_WELLENDICHTUNG_QUESTION!="" && DOPPELTE_WELLENDICHTUNG_QUESTION!="DOPPELTE_WELLENDICHTUNG_QUESTION")
	{	// Yes/No Message Box
		EKMessageBox('SHOW_DOPPELTE_WELLENDICHTUNG_MSGBOX','SetDoppelteWellendichtung()');
	}


	if(document.getElementById('AUSWAHLWEG').value!="EW")
		return false;

	// Wenn keine Motor, dann auch kein Klemmenkasten!
	document.getElementById('IDC_KABELEINFUEHRUNG_LABEL').style.visibility="hidden";
	document.getElementById('IDC_KABELEINFUEHRUNG_COMBO').style.visibility="hidden";
	document.getElementById('IDC_KLEMMKASTENLAGE_COMBO').style.visibility="hidden";
	document.getElementById('IDC_KLEMMKASTENLAGE_LABEL').style.visibility="hidden";
	document.getElementById('IDC_KLEMMKASTENLAGE_IMG').style.visibility="hidden";

}


function SetDoppelteWellendichtung()
{
	document.getElementById('DOPPELTE_WELLENDICHTUNG_RESULT').value="1";
	ekSubmit("DOPPELTE_WELLENDICHTUNG_RESULT");
}

// Graphical Functions
function StartCatchEinbaulageCoordinates(element)
{
	addEvent(element, "mousemove", CatchEinbaulageCoordinates, false);
}

function StopCatchEinbaulageCoordinates(element)
{
	removeEvent(element, "mousemove", CatchEinbaulageCoordinates, false);
	makeDefaultcursor(element);
}


function CatchEinbaulageCoordinates(evt)
{
	var element= easyguiMode() ? getElement(evt) : getElementFrom(evt);

	var elxPos = parseInt(element.style.left);
	var elyPos = parseInt(element.style.top);

	var xPos = evt.clientX - elxPos - 2;
	var yPos = evt.clientY - elyPos - 2;

	document.getElementById('X_POS').value=xPos;
	document.getElementById('Y_POS').value=yPos;

	if(GetComboItemEinbaulage()>=0)
	{
		makeHandcursor(element);
	}
	else
	{
		makeDefaultcursor(element);
	}

}

function GetComboItemEinbaulage()
{
	var x=document.getElementById('X_POS').value;
	var y=document.getElementById('Y_POS').value;

	var EINBAULAGE_IMG=document.getElementById('EINBAULAGE_IMG').value;
	//alert(EINBAULAGE_IMG+" "+x);
	var ComboElement=-1;

	if(EINBAULAGE_IMG=="auf_bg1.png")
	{
		if(x<130) ComboElement=0;
		if(x>144 && x<211) ComboElement=1;
		if(x>220 && x<285) ComboElement=2;
		if(x>310 && x<360) ComboElement=3;
		if(x>385 && x<450) ComboElement=4;
		if(x>470 && x<540) ComboElement=5;
	}
	else if(EINBAULAGE_IMG=="auf_bg1b.png")
	{
		if(x<94) ComboElement=0;
		if(x>107 && x<150) ComboElement=1;
		if(x>160 && x<203) ComboElement=2;
		if(x>218 && x<255) ComboElement=3;
		if(x>270 && x<315) ComboElement=4;
		if(x>330 && x<380) ComboElement=5;
		if(x>390 && x<450) ComboElement=6;
		if(x>470 && x<510) ComboElement=7;
		if(x>530 && x<570) ComboElement=8;
	}
	else if(EINBAULAGE_IMG=="auf_bg1c.png")
	{
		if(x<65) ComboElement=0;
		if(x>114 && x<164) ComboElement=1;
		if(x>226 && x<275) ComboElement=2;
		if(x>316 && x<367) ComboElement=3;
		if(x>407 && x<460) ComboElement=4;
		if(x>505 && x<554) ComboElement=5;
	}
	else if(EINBAULAGE_IMG=="auf_bk1.png")
	{
		if(x<115) ComboElement=0;
		if(x>127 && x<237) ComboElement=1;
		if(x>260 && x<310) ComboElement=2;
		if(x>345 && x<400) ComboElement=3;
		if(x>437 && x<490) ComboElement=4;
		if(x>520 && x<570) ComboElement=5;
	}
	else if(EINBAULAGE_IMG=="auf_bf1.png")
	{
		if(x<92) ComboElement=0;
		if(x>115 && x<202) ComboElement=1;
		if(x>217 && x<285) ComboElement=2;
		if(x>310 && x<370) ComboElement=3;
		if(x>390 && x<480) ComboElement=4;
		if(x>500 && x<590) ComboElement=5;
	}
	else if(EINBAULAGE_IMG=="auf_bs1.png")
	{
		if(x<111) ComboElement=0;
		if(x>120 && x<230) ComboElement=1;
		if(x>250 && x<320) ComboElement=2;
		if(x>350 && x<410) ComboElement=3;
		if(x>440 && x<500) ComboElement=4;
		if(x>530 && x<590) ComboElement=5;
	}

	return ComboElement;
}

function SetEinbaulage(obj)
{
	ComboElement=GetComboItemEinbaulage();


	if(ComboElement>=0)
	{
		document.getElementById('IDC_EINBAULAGE_COMBO').selectedIndex=ComboElement;
	}
}



function StartCatchKKLage(element)
{
	addEvent(element, "mousemove", CatchKKLageCoordinates, false);
}

function StopCatchKKLage(element)
{
	removeEvent(element, "mousemove", CatchKKLageCoordinates, false);
	makeDefaultcursor(element);
}


function CatchKKLageCoordinates(evt)
{
	var element= easyguiMode() ? getElement(evt) : getElementFrom(evt);

	var elxPos = parseInt(element.style.left);
	var elyPos = parseInt(element.style.top);

	var xPos = evt.clientX - elxPos - 2;
	var yPos = evt.clientY - elyPos - 2;

	document.getElementById('X_POS').value=xPos;
	document.getElementById('Y_POS').value=yPos;

	if(GetComboItemKKLage()>=0)
	{
		makeHandcursor(element);
	}
	else
	{
		makeDefaultcursor(element);
	}
}

function WKWaitCursorOff()
{
	document.getElementById('IsyDisable_CONTAINER').style.visibility = 'hidden';
	waitElement = parent.document.getElementById('IsyDisable_CONTAINER');
	makeDefaultcursor(waitElement);

}

function PtInRect(x,y,x1,y1,x2,y2)
{
	var buf;

	if(x1>x2)
	{
		buf=x1;
		x1=x2;
		x2=buf;
	}

	if(y1>y2)
	{
		buf=y1;
		y1=y2;
		y2=buf;
	}

	// Feld vergrößern
	x1-=4;
	x2+=4;
	y1-=4;
	y2+=4;


	if( x>=x1 && x<=x2 && y>=y1 && y<=y2)
	{
		return true;
	}
	else
	{
		return false;
	}
}


function GetComboItemKKLage()
{
	var x=document.getElementById('X_POS').value;
	var y=document.getElementById('Y_POS').value;
	var BAUART=document.getElementById('BAUART').value;
	var KKLAGE_IMG=document.getElementById('KKLAGE_IMG').value;
	// alert(BAUART+" x="+x+" y="+y);

	var ComboElement=-1;


	if(KKLAGE_IMG=="auf_bg2c.png")
	{
		if(PtInRect(x,y,272,48,306,29)) ComboElement=2;
		if(PtInRect(x,y,318,90,333,58)) ComboElement=1;
		if(PtInRect(x,y,244,90,260,58)) ComboElement=3;
		if(PtInRect(x,y,272,118,306,102)) ComboElement=0;
	}
	else if(BAUART=="BG")
	{
		if(PtInRect(x,y,272,48,306,29)) ComboElement=1;
		if(PtInRect(x,y,318,90,333,58)) ComboElement=0;
		if(PtInRect(x,y,244,90,260,58)) ComboElement=2;
		if(PtInRect(x,y,272,118,306,102)) ComboElement=3;
	}
	else if(BAUART=="BK")
	{
		if(PtInRect(x,y,268,49,300,35)) ComboElement=1;
		if(PtInRect(x,y,310,91,324,60)) ComboElement=0;
		if(PtInRect(x,y,243,90,260,58)) ComboElement=2;
		if(PtInRect(x,y,270,115,300,100)) ComboElement=3;
	}
	else if(BAUART=="BF")
	{
		if(PtInRect(x,y,268,41,300,25)) ComboElement=1;
		if(PtInRect(x,y,308,81,324,51)) ComboElement=0;
		if(PtInRect(x,y,244,81,260,49)) ComboElement=2;
		if(PtInRect(x,y,270,104,300,91)) ComboElement=3;
	}
	else if(BAUART=="BS")
	{
		if(PtInRect(x,y,268,49,300,35)) ComboElement=1;
		if(PtInRect(x,y,310,91,324,60)) ComboElement=0;
		if(PtInRect(x,y,243,83,266,57)) ComboElement=2;
		if(PtInRect(x,y,270,104,300,58)) ComboElement=3;
	}

	return ComboElement;
}


function SetKKLage(obj)
{

	ComboElement=GetComboItemKKLage();
	if(ComboElement>=0)
	{
		document.getElementById('IDC_KLEMMKASTENLAGE_COMBO').selectedIndex=ComboElement;
	}
}

function ResetCombo(id)
{
	document.getElementById(id).selectedIndex=0;
}



function BACalc(obj)
{
	if(obj.id=="IDC_ZAEHNEZAHL")
	{
		var IDC_TEILKREIS=parseFloat(document.getElementById("IDC_TEILKREIS").value);
		var IDC_ZAEHNEZAHL=parseFloat(obj.value);
		if(IDC_TEILKREIS!=0)
		{
			IDC_MODUL=IDC_TEILKREIS/IDC_ZAEHNEZAHL;
			document.getElementById("IDC_MODUL").value=IDC_MODUL;
		}
	}
	else if(obj.id=="IDC_MODUL")
	{
		var IDC_TEILKREIS=parseFloat(document.getElementById("IDC_TEILKREIS").value);
		var IDC_MODUL=parseFloat(obj.value);
		if(IDC_TEILKREIS!=0)
		{
			IDC_ZAEHNEZAHL=IDC_TEILKREIS/IDC_MODUL;
			document.getElementById("IDC_ZAEHNEZAHL").value=IDC_ZAEHNEZAHL;
		}
	}
	else if(obj.id=="IDC_TEILKREIS")
	{
		var IDC_ZAEHNEZAHL=parseFloat(document.getElementById("IDC_ZAEHNEZAHL").value);
		var IDC_TEILKREIS=parseFloat(obj.value);
		if(IDC_TEILKREIS!=0)
		{
			IDC_MODUL=IDC_TEILKREIS/IDC_ZAEHNEZAHL;
			document.getElementById("IDC_MODUL").value=IDC_MODUL;
		}
	}
}


function InitRadialkraft()
{
	var Edit1_Label=document.getElementById("IDC_EDIT1_LABEL").innerHTML;
	var Edit2_Label=document.getElementById("IDC_EDIT2_LABEL").innerHTML;

	if(Edit1_Label=="")
	{
		document.getElementById("IDC_EDIT1_LABEL").style.visibility="hidden";
		document.getElementById("IDC_EDIT1").style.visibility="hidden";
		document.getElementById("IDC_EDIT1_UNIT").style.visibility="hidden";
	}

	if(Edit2_Label=="")
	{
		document.getElementById("IDC_EDIT2_LABEL").style.visibility="hidden";
		document.getElementById("IDC_EDIT2").style.visibility="hidden";
		document.getElementById("IDC_EDIT2_UNIT").style.visibility="hidden";
	}
}


function WaitSubmit(obj)
{
	var id=obj.id;
	setTimeout("ekSubmit('"+id+"')", 100);
}


function InitKraftuebertragungTab(evt)
{
	var tab = document.getElementById(getTabFrom(getElement(evt)));
	document.getElementById("IDC_BA_TAB").setAttribute("selected",tab.id);
	InitKraftuebertragung(tab.id);
}


function InitKraftuebertragung(TabId)
{
	var mit_Polygon="";
	var ohne_Polygon="";

	if(TabId=="")
	{
		TabId=document.getElementById("IDC_BA_TAB").getAttribute("selected");
	}

	if(TabId=="IDC_FORMSCHLUSS_HEADER")
	{
		if(document.getElementById("IDC_ZUGMITTEL_MIT_POLYGON_RADIO").checked)
		{
			mit_Polygon="visible";
		}
		else
		{
			mit_Polygon="hidden";
		}


		if(document.getElementById("IDC_ZUGMITTEL_OHNE_POLYGON_RADIO").checked)
		{
			ohne_Polygon="visible";
		}
		else
		{
			ohne_Polygon="hidden";
		}
	}
	else
	{
		mit_Polygon="hidden";
		ohne_Polygon="hidden";
	}

	document.getElementById('IDC_ZAEHNEZAHL_EINGABEPFLICHT_LABEL').style.visibility=mit_Polygon;
	document.getElementById('IDC_ZAEHNEZAHL_EINGABEPFLICHT').style.visibility=mit_Polygon;
	document.getElementById('IDC_TEILKREISDURCHMESSER_KETTENRITZEL_LABEL').style.visibility=mit_Polygon;
	document.getElementById('IDC_TEILKREISDURCHMESSER_KETTENRITZEL').style.visibility=mit_Polygon;
	document.getElementById('IDC_KETTENTEILUNG_LABEL').style.visibility=mit_Polygon;
	document.getElementById('IDC_KETTENTEILUNG').style.visibility=mit_Polygon;


	document.getElementById('IDC_ZAEHNEZAHL_SCHEIBE_LABEL').style.visibility=ohne_Polygon;
	document.getElementById('IDC_ZAEHNEZAHL_SCHEIBE').style.visibility=ohne_Polygon;
	document.getElementById('IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE_LABEL').style.visibility=ohne_Polygon;
	document.getElementById('IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE').style.visibility=ohne_Polygon;
	document.getElementById('IDC_ZAHNTEILUNG_LABEL').style.visibility=ohne_Polygon;
	document.getElementById('IDC_ZAHNTEILUNG').style.visibility=ohne_Polygon;
	document.getElementById('IDC_MODUL_VERZAHNUNG_LABEL').style.visibility=ohne_Polygon;
	document.getElementById('IDC_MODUL_VERZAHNUNG').style.visibility=ohne_Polygon;
	document.getElementById('IDC_MODUL_VERZAHNUNG_EINHEIT_LABEL').style.visibility=ohne_Polygon;
	document.getElementById('IDC_TEILKREIS_DURCHMESSER_LABEL').style.visibility=ohne_Polygon;


}


function KraftuebertragungCalc(obj)
{
	var PI=3.14159265358979323846;

	if(obj.id=="IDC_ZAEHNEZAHL_EINGABEPFLICHT")
	{
		IDC_ZAEHNEZAHL_EINGABEPFLICHT=parseFloat(obj.value);
		IDC_TEILKREISDURCHMESSER_KETTENRITZEL=parseFloat(document.getElementById('IDC_TEILKREISDURCHMESSER_KETTENRITZEL').value);
		IDC_KETTENTEILUNG=IDC_TEILKREISDURCHMESSER_KETTENRITZEL*Math.sin(PI/IDC_ZAEHNEZAHL_EINGABEPFLICHT);
		document.getElementById('IDC_KETTENTEILUNG').value=IDC_KETTENTEILUNG.toFixed(3);
	}
	else if(obj.id=="IDC_TEILKREISDURCHMESSER_KETTENRITZEL")
	{
		IDC_ZAEHNEZAHL_EINGABEPFLICHT=parseFloat(document.getElementById('IDC_ZAEHNEZAHL_EINGABEPFLICHT').value);
		IDC_TEILKREISDURCHMESSER_KETTENRITZEL=parseFloat(obj.value);
		IDC_KETTENTEILUNG=IDC_TEILKREISDURCHMESSER_KETTENRITZEL*Math.sin(PI/IDC_ZAEHNEZAHL_EINGABEPFLICHT);
		document.getElementById('IDC_KETTENTEILUNG').value=IDC_KETTENTEILUNG.toFixed(3);
	}
	else if(obj.id=="IDC_KETTENTEILUNG")
	{
		IDC_KETTENTEILUNG=parseFloat(obj.value);
		IDC_ZAEHNEZAHL_EINGABEPFLICHT=parseFloat(document.getElementById('IDC_ZAEHNEZAHL_EINGABEPFLICHT').value);
		IDC_TEILKREISDURCHMESSER_KETTENRITZEL=IDC_KETTENTEILUNG/(Math.sin(PI/IDC_ZAEHNEZAHL_EINGABEPFLICHT));
		document.getElementById('IDC_TEILKREISDURCHMESSER_KETTENRITZEL').value=IDC_TEILKREISDURCHMESSER_KETTENRITZEL.toFixed(2);
	}
	else if(obj.id=="IDC_MODUL_VERZAHNUNG")
	{
		document.getElementById('IDC_ZAHNTEILUNG').value="";
		IDC_MODUL_VERZAHNUNG=parseFloat(obj.value);
		IDC_ZAEHNEZAHL_SCHEIBE=parseFloat(document.getElementById('IDC_ZAEHNEZAHL_SCHEIBE').value);
		IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE=IDC_MODUL_VERZAHNUNG*IDC_ZAEHNEZAHL_SCHEIBE;
		document.getElementById('IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE').value=IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE.toFixed(1);
	}
	else if(obj.id=="IDC_ZAEHNEZAHL_SCHEIBE")
	{
		IDC_MODUL_VERZAHNUNG=parseFloat(document.getElementById('IDC_MODUL_VERZAHNUNG').value);
		IDC_ZAHNTEILUNG=parseFloat(document.getElementById('IDC_ZAHNTEILUNG').value);
		IDC_ZAEHNEZAHL_SCHEIBE=parseFloat(obj.value);
		if(IDC_MODUL_VERZAHNUNG)
		{
			IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE=IDC_MODUL_VERZAHNUNG*IDC_ZAEHNEZAHL_SCHEIBE;
			document.getElementById('IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE').value=IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE.toFixed(1);
		}
		else if(IDC_ZAHNTEILUNG)
		{
			IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE=IDC_ZAHNTEILUNG*IDC_ZAEHNEZAHL_SCHEIBE/PI;
			document.getElementById('IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE').value=IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE.toFixed(1);
		}
	}
	else if(obj.id=="IDC_ZAHNTEILUNG")
	{
		document.getElementById('IDC_MODUL_VERZAHNUNG').value="";
		IDC_ZAHNTEILUNG=parseFloat(obj.value);
		IDC_MODUL_VERZAHNUNG=parseFloat(document.getElementById('IDC_MODUL_VERZAHNUNG').value);
		IDC_ZAEHNEZAHL_SCHEIBE=parseFloat(document.getElementById('IDC_ZAEHNEZAHL_SCHEIBE').value);
		IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE=IDC_ZAHNTEILUNG*IDC_ZAEHNEZAHL_SCHEIBE/PI;
		document.getElementById('IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE').value=IDC_TEILKREISDURCHMESSER_ZAHNSCHEIBE.toFixed(1);
	}
	else if(obj.id=="IDC_ZUGMITTEL_FLACHRIEMEN")
	{
		if(obj.checked)
		{
			document.getElementById('IDC_NUTZBARER_RIEMENZUG').value="3";
		}
		else
		{
			document.getElementById('IDC_NUTZBARER_RIEMENZUG').value="2.5";
		}
	}
	else if(obj.id=="IDC_AUSSENDURCHMESSER_REIBRAD")
	{
		IDC_AUSSENDURCHMESSER_REIBRAD=parseFloat(obj.value);
		IDC_REIBZIFFER=parseFloat(document.getElementById('IDC_REIBZIFFER').value);
		M2NEN=parseFloat(document.getElementById('M2NEN').value);
		IDC_MINDESTANPASSKRAFT=(M2NEN*2000.0)/(IDC_AUSSENDURCHMESSER_REIBRAD*IDC_REIBZIFFER);
		document.getElementById('IDC_MINDESTANPASSKRAFT').value=IDC_MINDESTANPASSKRAFT.toFixed(1);
	}
	else if(obj.id=="IDC_REIBZIFFER")
	{
		IDC_AUSSENDURCHMESSER_REIBRAD=parseFloat(document.getElementById('IDC_AUSSENDURCHMESSER_REIBRAD').value);
		IDC_REIBZIFFER=parseFloat(obj.value);
		M2NEN=parseFloat(document.getElementById('M2NEN').value);
		if(IDC_AUSSENDURCHMESSER_REIBRAD!=0.0 && IDC_REIBZIFFER!=0.0)
		{
			IDC_MINDESTANPASSKRAFT=(M2NEN*2000.0)/(IDC_AUSSENDURCHMESSER_REIBRAD*IDC_REIBZIFFER);
			document.getElementById('IDC_MINDESTANPASSKRAFT').value=IDC_MINDESTANPASSKRAFT.toFixed(1);
		}
	}
	else if(obj.id=="IDC_GEWICHTSKRAFT_MASSE")
	{
		IDC_GEWICHTSKRAFT_MASSE=parseFloat(obj.value);
		//IDC_DURCHMESSER_SEILTROMMEL=parseFloat(document.getElementById('IDC_DURCHMESSER_SEILTROMMEL').value);
		M2NEN=parseFloat(document.getElementById('M2NEN').value);
		if(IDC_GEWICHTSKRAFT_MASSE!=0)
		{
			IDC_DURCHMESSER_SEILTROMMEL=(M2NEN*2000)/IDC_GEWICHTSKRAFT_MASSE;
			document.getElementById('IDC_DURCHMESSER_SEILTROMMEL').value=IDC_DURCHMESSER_SEILTROMMEL.toFixed(1);
		}
	}
	else if(obj.id=="IDC_DURCHMESSER_SEILTROMMEL")
	{
		// IDC_GEWICHTSKRAFT_MASSE=parseFloat(document.getElementById('IDC_GEWICHTSKRAFT_MASSE').value);
		IDC_DURCHMESSER_SEILTROMMEL=parseFloat(obj.value);
		M2NEN=parseFloat(document.getElementById('M2NEN').value);
		if(IDC_DURCHMESSER_SEILTROMMEL!=0)
		{
			IDC_GEWICHTSKRAFT_MASSE=(M2NEN*2000)/IDC_DURCHMESSER_SEILTROMMEL;
			document.getElementById('IDC_GEWICHTSKRAFT_MASSE').value=IDC_GEWICHTSKRAFT_MASSE.toFixed(1);
		}
	}

}

function ShowTableRowContent(obj)
{
	var TabLine=obj.parentNode.getElementsByTagName('td');

	for(i=0;i<TabLine.length;i++)
	{
		alert(TabLine[i].text);
	}
}


function InitGmFUConfig()
{
	if(document.getElementById('ETAK').value!="1")
	{
		document.getElementById('IDC_PROFIBUS_LABEL').style.visibility="hidden";
		document.getElementById('IDC_PROFIBUS_CHECK').style.visibility="hidden";
		document.getElementById('IDC_FUK_TYP_LABEL').style.visibility="hidden";
		document.getElementById('IDC_FUK_TYP').style.visibility="hidden";
	}
}


function SubmitWithAtexWarning(obj)
{
	var AtexIndex=document.getElementById('IDC_AUSFUEHRUNG_COMBO').selectedIndex;
	if(AtexIndex!=0)
	{
		if(confirm(document.getElementById('ATEX_WARNING_MSG').value)==true)
		{
			ekSubmit(obj);
		}
		else
		{
			return false;
		}
	}
	else
	{
		ekSubmit(obj);
	}
}



function SubmitAndClose()
{
	/*
	if (window.innerWidth) width=window.innerWidth;
	else if (document.body && document.body.offsetWidth) width=document.body.offsetWidth;

	 if (window.innerHeight) height=window.innerWidth;
	 else if (document.body && document.body.offsetHeight) height=document.body.offsetHeight;

	document.getElementById('INNER_WIDTH').value=width;
	document.getElementById('INNER_HEIGHT').value=height;
	*/

	var yPos=parseInt((screen.availHeight-600)/2);
	var xPos=parseInt((screen.availWidth-800)/2);

	if(xPos<0)
	{
		xPos=0;
	}

	if(yPos<0)
	{
		yPos=0;
	}

	// resizeTo(400,200);
	whnd=open('about:blank','EasyKatCatalog','toolbar=no,scrollbars=no,width=800,height=600,left='+xPos+',top='+yPos);
	document.isycat.target = 'EasyKatCatalog';
	document.isycat.submit();
	// parent.close();
	//opener.opener = top;
	//opener.close();
	// close();
}



function InitLoesungenTyp()
{
	if(document.getElementById('BAUART').value!="BM")
	{
		document.getElementById('IDC_LAUFRADDURCHMESSER_LABEL').style.visibility="hidden";
		document.getElementById('IDC_LAUFRADDURCHMESSER_COMBO').style.visibility="hidden";
	}
}


var EKMessageBox_WindowObj;
var EKMessageBox_ActionButton1;
var EKMessageBox_ActionButton2;
var EKMessageBox_ActionButton3;

function EKMessageBox(MSG_ID,ActionButton1,ActionButton2,ActionButton3)
{
	//var win_id="win_"+Math.ceil(Math.random()*10000);
	document.getElementById('MSGBOX_RESULT').value="";
	EKMessageBox_ActionButton1=ActionButton1;
	EKMessageBox_ActionButton2=ActionButton2;
	EKMessageBox_ActionButton3=ActionButton3;
	win_id="EasyKatMessageBox";
	var yPos=parseInt((screen.availHeight-600)/2);
	var xPos=parseInt((screen.availWidth-800)/2);

	EKMessageBox_WindowObj=window.open("about:blank ",win_id ,"left="+xPos+",top="+yPos+",width=600,height=200,toolbar=no,dependent=yes");
	document.isycat.target = win_id;
	ekSubmit(MSG_ID);
	document.isycat.target = '_self';
	setTimeout("EKMessageBox2()", 2000);
	return false;
}


function EKMessageBox2()
{
	var res=document.getElementById('MSGBOX_RESULT').value;

	if(res=="")
	{
		setTimeout("EKMessageBox2()", 500);
	}
	else
	{
		document.getElementById('IsyDisable_CONTAINER').style.visibility = 'hidden';

		if(res=="IDC_BUTTON1_BUT")
		{
			eval(EKMessageBox_ActionButton1);
		}
		else if(res=="IDC_BUTTON2_BUT")
		{
			eval(EKMessageBox_ActionButton2);
		}
		else if(res=="IDC_BUTTON3_BUT")
		{
			eval(EKMessageBox_ActionButton3);
		}
	}
	return false;
}


function MyInitTextarea(CtrlID)
{	// Wegen Problem mit dem Tabulator \\t -> \t
	var textarea = document.getElementById(CtrlID);
	if(textarea)
	{
		message=textarea.value; //getAttribute('text');
		message = message.replace(/\\t/g,'\t');
		message = message.replace(/\\r\\n/g,'\r\n');
		textarea.value = message;
	}
}


function InitProjectListSales()
{
	var MM_MODE=parseInt(document.getElementById('MM_MODE').value);
	var MM_DUMMY_CUSTOMER=docEl('MM_DUMMY_CUSTOMER') ? parseInt(docEl('MM_DUMMY_CUSTOMER').value) : 0;
	
	if(MM_MODE)
	{
		docEl('IDC_RFQ_NO_EDIT').disabled=true;
		docEl('IDC_SALES_QUOTATION_NO_EDIT').disabled=true;
		// docEl('IDC_ABWEICHEND_ANFRAGE_CHECK').disabled=true;
		docEl('IDC_RAHMENVERTRAG_CHECK').disabled=true;
		docEl('IDC_OBJECT_EDIT').disabled=true;
		docEl('IDC_OBJECT_STATNR_EDIT').disabled=true;
		docEl('IDC_OBJECT_NR_EDIT').disabled=true;
		docEl('IDC_WV_DATUM_EDIT').disabled=true;
		docEl('IDC_GB_EDIT').disabled=true;
		docEl('IDC_DELIVERY_TIME_EDIT').disabled=true;
		docEl('IDC_DELIVERY_TIME_UNIT_EDIT').disabled=true;
		docEl('IDC_VALID_TO_EDIT').disabled=true;
		docEl('IDC_TVS_CHECK').disabled=true;
		//docEl('IDC_ADM_EDIT').disabled=true;
		docEl('IDC_ERFASSER_EDIT').disabled=true;

		docEl('IDC_SALES_ZAHLUNGSBEDINGUNGEN_EDIT').disabled=true;
		docEl('IDC_SALES_LIEFERKONDITIONEN_EDIT').disabled=true;
		docEl('IDC_SALES_GM_LIEFERKONDITIONEN_EDIT').disabled=true;
		docEl('IDC_SALES_GEWAEHRLEISTUNG_EDIT').disabled=true;
		
		if(!MM_DUMMY_CUSTOMER)
		{	// Kein externer MM Kunde, also Kundendaten sperren (ausser FAX)
			docEl('IDC_CUSTOMER_NO_EDIT').disabled=true;
			docEl('IDC_FIRMENNAME_CUSTOMER').disabled=true;
			docEl('IDC_STRASSE_CUSTOMER').disabled=true;
			docEl('IDC_PLZ_CUSTOMER').disabled=true;
			docEl('IDC_ORT_CUSTOMER').disabled=true;
			docEl('IDC_AREACODE_CUSTOMER').disabled=true;
			docEl('IDC_TELEFON_CUSTOMER').disabled=true;
			docEl('IDC_MAIL_CUSTOMER').disabled=true;
			docEl('IDC_LAND_CUSTOMER').disabled=true;
			docEl('IDC_ANSPRECHPARTNER_CUSTOMER_ANREDE').disabled=true;
			docEl('IDC_ANSPRECHPARTNER_CUSTOMER').disabled=true;
			docEl('IDC_ANSPRECHPARTNER_ABTEILUNG').disabled=true;
			docEl('IDC_ANSPRECHPARTNER_POSITION').disabled=true;
			docEl('IDC_ANSPRECHPARTNER_TEL').disabled=true;
			docEl('IDC_ANSPRECHPARTNER_EMAIL').disabled=true;
			//docEl('*.PROJECT.SETTINGS.CLIENT.TITEL').disabled=true;
		}
	}
}


function SubmitOnEnter(obj)
{
	if(window.event.keyCode != 13) return false;

	ekSubmit(obj);
}


function storeCaret(textEl)
{
	if(textEl.createTextRange)
 		textEl.caretPos = document.selection.createRange().duplicate();
}

function removeCaret(textEl)
{
	if(textEl.caretPos)
 		textEl.caretPos = null;
}

function insertAtCaret(textEl, text)
{
	if(textEl.createTextRange && textEl.caretPos)
	{
		var caretPos = textEl.caretPos;
	 	caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
	}
	else
	{
		textEl.value = text;
	}
}

function handleKeys(obj,enterEventId,tabEventId)
{
	var keyNum=window.event.keyCode;
	var enterObj= enterEventId!= '' ? document.getElementById(enterEventId) : false;
	var tabObj= tabEventId!= '' ? document.getElementById(tabEventId) : false;

	if(obj.type=='textarea')
	{
		if(keyNum==9)
		{
			insertAtCaret(obj, "\t");
			return false;
		}
	}
	else
	{
		if(enterObj && keyNum == 13) return ekSubmit(enterObj);
		else if(tabObj && keyNum == 9) return ekSubmit(tabObj);
	}
	return true;
}


function saveKeyCode(obj)
{
	var keyNum=window.event.keyCode;
	obj.setAttribute('lastKeyCode',keyNum);
}

function handleChanged(obj)
{
	obj.setAttribute('changed','true');
	
	var lastKey= obj.getAttribute('lastKeyCode') ? obj.getAttribute('lastKeyCode') : 0;
	if(lastKey==40 || lastKey==38)
	{
		return false;
	}
	else
	{
		obj.setAttribute('changed','');
		return ekSubmit(obj);
	}
}

function checkChanged(obj)
{
	var changed= obj.getAttribute('changed') ? obj.getAttribute('changed') : 'false';
	
	if(changed=='true')
	{
		obj.setAttribute('changed','');
		ekSubmit(obj);
	}
}
	


function DirectSubmit()
{
	var obj=document.getElementById('DIRECT_SUBMIT_ELEMENT');
	if(!obj)
	{
		return false;
	}

	var submit_id=obj.value;
	obj.value="";

	if(submit_id=="" || submit_id=="DIRECT_SUBMIT_ELEMENT")
	{
		return false;
	}

	submit_obj=document.getElementById(submit_id);
	if(submit_obj)
	{
		ekSubmit(submit_obj);
		return true;
	}

	return false;
}


// Wenn Rabatt geändert den Vorgabepreis löschen und umgekehrt
function PLSubmitOnEnter(obj)
{
	if(window.event.keyCode != 13) return false;

	return PLSubmit(obj);
}

// Wenn Rabatt geändert den Vorgabepreis löschen und umgekehrt
function PLSubmit(obj)
{
	var col_id=obj.id.substr(obj.id.length-5,5);

	/*
	if(col_id=="85_ET")
	{	// Rabatt geändert -> Vorgabepreis löschen
		var id=obj.id.replace(col_id,"90_ET");
		document.getElementById(id).value='';
	}

	if(col_id=="90_ET")
	{	// Vorgabepreis geändert -> Rabatt löschen
		var id=obj.id.replace(col_id,"85_ET");
		document.getElementById(id).value='';
	}
	*/

	return ekSubmit(obj);
}


function ProjectClose(obj)
{
	if(confirm(document.getElementById("IDC_PROJECT_CLOSE_QUESTION").value))
	{
		ekSubmit(obj);
		// self.close();
	}
	return false;
}



// Table-Submit
function tsub(evt)
{
	var rowObj,tableObj,cellObj = getElementFrom(evt);
	if(cellObj.id.match(/HEAD/))
		return false;

	if(cellObj.type) {
		rowObj=cellObj.parentNode.parentNode;
	} else {
		rowObj=cellObj.parentNode;
	}
	
	setTimeout("ekSubmit('"+rowObj.id+"')",100);
	parent.document.getElementById('IsyDisable_CONTAINER').style.visibility = 'visible';
	makeWaitcursor(parent.document.getElementById('IsyDisable_CONTAINER'));
	selectRow(evt);
}



function checkKurztextNew(comboObj,editId,init)
{
	if(comboObj.selectedIndex==comboObj.options.length-1) {
		// letztes Element in der Combobox angewählt -> neuer Eintrag
		comboObj.style.visibility="hidden";
		document.getElementById(editId).className="EDIT_NORMAL_LEFT";
		document.getElementById('IDC_KURZTEXT_BUT').disabled="true";
		document.getElementById('IDC_KURZTEXT_DELETE_BUT').disabled="true";
		document.getElementById(editId).focus();
	}
}



function TestSubmit(obj)
{
	self.open("about:blank","abbelgrutze","width=800,height=600");
}


function SetHasChanged(obj)
{
	obj.setAttribute("has_changed",true);
}

function RemoveUnchangedEditFields()
{
	var nElements=document.isycat.length;
	var obj,id;

	for(var i=nElements-1;i>0;i--)
	{
		obj=document.isycat[i];
		
		if(!obj.type)
		{
			continue;
		}
		
		if(!obj.id)
		{
			if(!obj.name)
			{
				continue;
			}
			else
			{
				id=obj.name;
			}
		}
		else
		{
			id=obj.id
		}
		
		if(obj.type=="text")
		{
			if(!obj.getAttribute("has_changed")) {
				obj.removeNode();
			}
		}
	}
	
}


function SubmitChanged(element)
{
	if (typeof(element) == "string") {
		parent.document.isycat.EKSUBMITEVENT.value = element;
	}
	else
	{
		element.style.cursor = 'wait';
		if (element.id == null)
		{
			if ((element = getElementFrom(element)) == null) {
				return;
			}
		}
		parent.document.isycat.EKSUBMITEVENT.value = element.getAttribute('id');
	}
    
 	waitElement = parent.document.getElementById('IsyDisable_CONTAINER');
	waitElement.style.visibility = 'visible';
	waitElement.style.cursor = 'wait';
	setTimeout("EKSubmitChangedValuesUtf8()",20);
}


function EKSubmitChangedValuesUtf8()
{
	var nElements=document.isycat.length;
	var obj,id;
	
	var specialSubmitValues="";
	
	for(var i=0;i<nElements;i++)
	{
		obj=document.isycat[i];
		
		if(!obj.type)
		{
			continue;
		}
		
		if(!obj.id)
		{
			if(!obj.name)
			{
				continue;
			}
			else
			{
				id=obj.name;
			}
		}
		else
		{
			id=obj.id
		}
		
				
		if( obj.type=="text")
		{
			if(obj.getAttribute("has_changed")) {
				specialSubmitValues+=ekEncode(id)+"="+ekEncode(obj.value)+"&";
			}
		}
		else if(obj.type=="hidden" || obj.type=="textarea" || obj.type=="password")
		{
			specialSubmitValues+=ekEncode(id)+"="+ekEncode(obj.value)+"&";
		}
		else if(obj.type=="checkbox")
		{
			if (obj.checked)
			{
				specialSubmitValues+=ekEncode(id)+"="+ekEncode("true")+"&";
			}
			else
			{
				specialSubmitValues+=ekEncode(id)+"="+ekEncode("false")+"&";
			}
		}
		else if(obj.type == "radio")
		{
			if (obj.checked)
			{
				specialSubmitValues+=ekEncode(obj.name)+"="+ekEncode(obj.value)+"&";
			}
		}
		else if(obj.type=="select-one")
		{
			specialSubmitValues+=ekEncode(id)+"="+ekEncode(obj[obj.selectedIndex].value)+"&";
		}
		else if(obj.type=="button")
		{
			; // nix
		}
		else
		{
			// alert(obj.type);
		}
		
	}

	subForm = document.createElement('form');
	subForm.name 	= 'isycat_submit';
	subForm.method 	= 'post';
	subForm.action 	= document.isycat.action;
	subForm.target	= document.isycat.target;
	
	
	subForm.appendChild(createHiddenFormField("port","port",isycat.port.value));
	subForm.appendChild(createHiddenFormField("__eksubmit_values__","__eksubmit_values__",
				specialSubmitValues));
	
	document.body.appendChild(subForm);
	//setTimeout("EKSubmitValuesSubmit()",100);
	EKSubmitValuesSubmit();
}


function InitMergeCompleteCheck()
{
	var MergeLangCombo=document.getElementById("IDC_MERGE_LANGUAGE_COMBO");
	var MergeCompleteCheck=document.getElementById("IDC_MERGE_COMPLETE_CHECK");
	if(!MergeLangCombo || !MergeCompleteCheck)
		return;
	
	if(MergeLangCombo.selectedIndex<2) {
		// Bei DE und EN keinen kompletten Import erlauben
		MergeCompleteCheck.checked=false;
		MergeCompleteCheck.disabled=true;
	} else {
		MergeCompleteCheck.disabled=false;
	}		
}


function checkMinMaxCombo(currObj)
{
	var minCombo=document.getElementById("*.PRICELIST.MIN_POWER_RATING_COMBO");
	var maxCombo=document.getElementById("*.PRICELIST.MAX_POWER_RATING_COMBO");
	
	var minSelectedIdx=minCombo.selectedIndex;
	var maxSelectedIdx=maxCombo.selectedIndex;

	if(currObj.id=="*.PRICELIST.MIN_POWER_RATING_COMBO")
	{	// Min geändert, Max >= Min
		if(maxSelectedIdx<minSelectedIdx)
			maxCombo.selectedIndex=minSelectedIdx;
	}
	else
	{	// Max geändert, Min <= Max
		if(minSelectedIdx>maxSelectedIdx)
			minCombo.selectedIndex=maxSelectedIdx;
	}
}


/////////////////////////////////////////////////
// dyn. dialog updates

wait_indicator_running = false;
on_update_dialog_element = false;

function updateWaitIndicator() {
	var oCtrl = docEl("wait_indicator_ctrl");
	
	if(wait_indicator_running)
	{
		if(!oCtrl) {
			var sHtml = "<div style='left:500px; top:10px; width:300px;height:28px;font-size:16px;";
			sHtml += "overflow:hidden; z-index:10001;background-color:white' id='wait_indicator_ctrl'>.</div>";
			document.body.insertAdjacentHTML("beforeEnd", sHtml);
			oCtrl = docEl("wait_indicator_ctrl");
		}
		if(oCtrl) {
			if(oCtrl.innerHTML.length>30)
				oCtrl.innerHTML = ".";
			else
				oCtrl.innerHTML += ".";			
		}
		setTimeout("updateWaitIndicator()", 500);
	}
	else
	{
		if(oCtrl) {
			oCtrl.parentNode.removeChild(oCtrl);
		}
	}
}

function startWaitIndicator() {
	wait_indicator_running = true;
	updateWaitIndicator();
}

function stopWaitIndicator() {
	wait_indicator_running = false;
}




function onBuildAltFuPriceList(obj) {
	onUpdateDialogElement(obj, "scriptexec('INIT_FUPRICELIST_ALTERNATIV')", "IDC_FUPRICELIST_TABLE");
}

function onBuildFuPriceList(obj) {
	onUpdateDialogElement(obj, "scriptexec('INIT_FUPRICELIST')", "IDC_FUPRICELIST_TABLE");
}

function onBuildFuPriceList(obj) {
	onUpdateDialogElement(obj, "scriptexec('INIT_FUPRICELIST')", "IDC_FUPRICELIST_TABLE");
}

function onChangedPreiscode(obj) {
	var sCode = String(obj.value).toUpperCase();
	
	if(sCode == "PWREMOVE") {
		eraseCookie("usercodes");
		eraseCookie("extra_usercodes");
		if(docEl("*.extra_usercodes"))
			docEl("*.extra_usercodes").value = "";
		ekSubmit(obj);
	}
	else if(sCode != "IMPORTARTIKELNUMMERN" != 0) {
		ekSubmit(obj);
	}
	else {
		obj.value = "";
		onUpdateDialogElement(obj, "artikelnummer_import()", "ALERT_MESSAGE");
		ShowAlertMessage('ALERT_MESSAGE');
	}
}




function onCfgFUCombo(obj)
{
	//ekSubmit(obj); return;
	
	if(!self.location.host) {	// Kein TCP/IP
		ekSubmit(obj);
	}
	else {						// Update via Ajax Request
		var sExec = "specialexec('FU_ConfiguratorStep'); scriptexec('INIT_FUCONFIG')";
		var sItems = "IDC_AUSWAHL_TAB,IDC_TYPECODE,IDC_TYPECODE_COUNT,IDC_FUCONFIG_INFO_TEXT,IDC_PRODUCT_COMPLETE";
		onUpdateDialogElement(obj, sExec, sItems);
	}
}


function menuTableMouseOver(evt)
{
	var oItem = myGetElement(evt);
	
	while(oItem && oItem.nodeName != "TR") {
		oItem = oItem.parentNode;
	}
	
	if(oItem && oItem.nodeName == "TR") {
		var aIMG = oItem.getElementsByTagName("IMG");
		if(aIMG[0] && aIMG[0].src.indexOf("empty") == -1) {
		
			oItem.style.backgroundColor = "#e7e7e7";
		}
	}
}

function menuTableMouseOut(evt)
{
	var oItem = myGetElement(evt);
	
	while(oItem && oItem.nodeName != "TR") {
		oItem = oItem.parentNode;
	}
	
	if(oItem && oItem.nodeName == "TR") {
		var aIMG = oItem.getElementsByTagName("IMG");
		if(aIMG[0]) {
		
			oItem.style.backgroundColor = "transparent";
		}
	}
}


function menuTableInit(id)
{
	var oT = docEl(id);
	var aTR = oT.getElementsByTagName("TD");
	
	for(var i=0; i<aTR.length ; i++) {
		addEvent(aTR[i], "mouseover", menuTableMouseOver, false);
		addEvent(aTR[i], "mouseout", menuTableMouseOut, false);
	}
}



var gmExportRunning = false;
var gmExportMThread = false;
var gmExportHttpReqId = 1;
var gmLastExportHttpReqId = 0;
var gmExportHttpReq = null;

function startGMExport(eventItem)
{
	var action = "scriptexec('GM_EXPORT')";

	if(eventItem == "EXPORT_GETRIEBE" && !gmExportRunning) {
		gmExportRunning = true;
		docEl("*.GMEXPORT.EXPORT_BUT").disabled = true;
	}
	else if(eventItem == "STOP_EXPORT" && gmExportRunning) {
		gmExportRunning = false;
		docEl("*.GMEXPORT.STATE").value == "STOP";
		docEl("*.GMEXPORT.EXPORT_STOP_BUT").disabled = true;
		docEl("*.GMEXPORT.EXPORT_BUT").disabled = false;
		on_update_dialog_element = false;
	}
	
	gmExportHttpReqId++;
	onUpdateDialogElement(eventItem, action, "EXPORT_CONTROLS", false);
}


function changeGroupGMExport(eventItem)
{
	var state = eventItem.checked;
	var oT = null;

	if(eventItem.id == "*.GMEXPORT.GETRIEBEOPTIONEN_ALL_CHECK") {
		docEl("*.GMEXPORT.WELLENDICHTUNG_CHECK").checked = state;
		docEl("*.GMEXPORT.VERSTAERKTE_LAGERUNG_CHECK").checked = state;
		docEl("*.GMEXPORT.SCHRUMPFSCHEIBENABDECKUNG_CHECK").checked = state;
	}
	else if(eventItem.id == "*.GMEXPORT.MOTOROPT1_ALL_CHECK") {
		docEl("*.GMEXPORT.GUSSLUEFTERRAD_CHECK").checked = state;
		docEl("*.GMEXPORT.WELLENENDE_PASSFEDER_CHECK").checked = state;
		docEl("*.GMEXPORT.WELLENENDE_VIERKANT_CHECK").checked = state;
		docEl("*.GMEXPORT.BREMSE_CHECK").checked = state;
		docEl("*.GMEXPORT.RUECKLAUFSPERRE_CHECK").checked = state;
		docEl("*.GMEXPORT.GEBER_CHECK").checked = state;
		docEl("*.GMEXPORT.FREMDLUEFTER_CHECK").checked = state;
		docEl("*.GMEXPORT.SCHUTZHAUBE_CHECK").checked = state;
	}
	else if(eventItem.id == "*.GMEXPORT.GETRIEBE_AUSFUEHRUNGEN_ALL_CHECK") {
		var oT = docEl("IDC_GETRIEBE_AUSFUEHRUNGEN_TABLE");
	}
	else if(eventItem.id == "*.GMEXPORT.GETRIEBE_WELLEN_ALL_CHECK") {
		var oT = docEl("IDC_GETRIEBE_WELLEN_TABLE");
	}
	else if(eventItem.id == "*.GMEXPORT.EXPORT_TABLE1_ALL_CHECK") {
		var oT = docEl("IDC_EXPORT_TABLE1");
	}
	else if(eventItem.id == "*.GMEXPORT.EXPORT_TABLE2_ALL_CHECK") {
		var oT = docEl("IDC_EXPORT_TABLE2");
	}
	else if(eventItem.id == "*.GMEXPORT.EXPORT_TABLE3_ALL_CHECK") {
		var oT = docEl("IDC_EXPORT_TABLE3");
	}
	else if(eventItem.id == "*.GMEXPORT.EXPORT_TABLE4_ALL_CHECK") {
		var oT = docEl("IDC_EXPORT_TABLE4");
	}
	else if(eventItem.id == "*.GMEXPORT.EXPORT_TABLE5_ALL_CHECK") {
		var oT = docEl("IDC_EXPORT_TABLE5");
	}
	
	
	if(oT) {
		var aCheck = oT.getElementsByTagName("INPUT");
		
		for(var i = 0 ; i < aCheck.length ; i++) {
			if(aCheck[i].type == "checkbox")
				aCheck[i].checked = state;
		}
	}
}


function initGMExportDialog()
{
	var bBremse = docEl("*.GMEXPORT.BREMSE_CHECK").checked;
	var oT = docEl("IDC_EXPORT_TABLE1");
	oT.disabled = !bBremse;

	var oGMAusfAll = docEl("*.GMEXPORT.GETRIEBE_AUSFUEHRUNGEN_ALL_CHECK");
	if(oGMAusfAll && oGMAusfAll.checked)
		changeGroupGMExport(oGMAusfAll);

	var oGMWelleAll = docEl("*.GMEXPORT.GETRIEBE_WELLEN_ALL_CHECK");
	if(oGMWelleAll && oGMWelleAll.checked)
		changeGroupGMExport(oGMWelleAll);

	checkExportHttpReq();
}


// Nummer: 9, Wenn CODE .5 gewählt wird bei BF, BK, BS Getriebe, dann
// Messagebox "Wollen Sie ein Schrumpfscheibe auf Grund der Welle setzen?"
function CheckHohlwelleSchrumpfscheibe()
{
	var oAskOnce = docEl('*.DLGDATA.PRODUCT.ATTRIBUTES.SSCHEIBE_QUESTION');
	var oTypecode = docEl('IDC_TYPENSCHLUESSEL_EDIT');
	var oWelleCombo = docEl('IDC_ARBEITSWELLE_COMBO');
	var oSScheibeCheck = docEl('IDC_SCHRUMPFSCHEIBE_CHECK');
	var oQuestion = docEl('SET_SHRINK_DISK_QUESTION');

	if(!oAskOnce || !oTypecode || !oWelleCombo || !oSScheibeCheck || !oQuestion)
		return;
	if(oSScheibeCheck.disabled || oSScheibeCheck.checked || oAskOnce.value == "1")
		return;
		
	var sGetriebetyp = oTypecode.innerHTML.substring(0,2);
	if(sGetriebetyp != "BF" && sGetriebetyp != "BK" && sGetriebetyp != "BS")
		return;
	
	var sWelle = oWelleCombo.options[ oWelleCombo.selectedIndex ].innerHTML;
	if(sWelle.substring(0,2) != ".5")
		return;
		
	oAskOnce.value = "1";
	if(confirm(oQuestion.value)) {
		oSScheibeCheck.checked = true;
		ekSubmit(oSScheibeCheck);
	}
}



function checkExportHttpReq() {
	try {
		if(gmExportHttpReqId == gmLastExportHttpReqId && gmExportHttpReq) {
			var httpReq = gmExportHttpReq;
			gmExportHttpReq = null;
			
			if(httpReq.readyState != 4)
				httpReq.abort();
		}
	}
	catch(e) {
	}
	gmLastExportHttpReqId = gmExportHttpReqId;
	setTimeout("checkExportHttpReq()", 30000);
}


function onUpdateDialogElement(event, action, items, syncRequest)
{
	if(on_update_dialog_element)
		return false;
	else
		on_update_dialog_element = true;
	
    var oRequest = GetXMLHttp();
    var sAjaxURL = getHost() + "/ajax/update_dialog_element?rnd=" + Math.random();
    var sURL = document.isycat.action;
	var sParams = "";
	
	//startWaitIndicator();
	myWaitCursorOn();

	// ekSubmit simulieren...
	if(typeof event == 'string') {
		document.isycat.EKSUBMITEVENT.value = event;
	}
	else if(typeof event == 'object') {
		document.isycat.EKSUBMITEVENT.value = event.id;
	}
	
	sParams = addPostParam(sParams, "ek_ajax_url", sAjaxURL);
	sParams = addPostParam(sParams, "ajax_event", "update_dialog_element");
	sParams = addPostParam(sParams, "ajax_action", action);
	sParams = addPostParam(sParams, "ajax_items", items);
	
	var sPostData = encodeURIComponent("__eksubmit_values__") + "=" +
		encodeURIComponent(getEKSubmitValuesUtf8() + sParams);

	if( !syncRequest )
	{	// async. request
		oRequest.open("post", sURL, true);
		oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		oRequest.onreadystatechange = function ()
		{
			if(oRequest.readyState == 4) {
				if(oRequest.status == 200)	// Success!
				{
					//alert(oRequest.responseText); //return;
					onUpdateDialogElementExec(oRequest.responseText);
					myWaitCursorOff();
					stopWaitIndicator();
					on_update_dialog_element = false;
					
					if(gmExportRunning && !gmExportMThread) {
						var oState = docEl("*.GMEXPORT.STATE");
						if(oState && oState.value == "CONTINUE") {
							setTimeout("startGMExport('CONTINUE_EXPORT')", 150);
						}
					}
				}
				else {						// Error (z.B. Timeout)
					if(gmExportRunning && !gmExportMThread) {
						on_update_dialog_element = false;
						//alert("XmlHttpRequest - Error, Status: " + oRequest.status);
						setTimeout("startGMExport('CONTINUE_EXPORT')", 500);
					}
				}
			}
		}
		oRequest.send(sPostData);
		
		if(gmExportRunning) {
			gmExportHttpReq = oRequest;
		}
	}
	else
	{
		// synchroner post request
		oRequest.open("post", sURL, false);
		oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		oRequest.send(sPostData);
	
		if(oRequest.status == 200)
		{
			//alert(oRequest.responseText); //return;
			onUpdateDialogElementExec(oRequest.responseText);
			myWaitCursorOff();
			//stopWaitIndicator();
			on_update_dialog_element = false;
		}
	}
}



function onUpdateDialogElementExec(sHTML)
{
	var oFragment = document.createDocumentFragment();
	var oDIV = document.createElement("DIV");
	oFragment.appendChild(oDIV);
	oDIV.innerHTML= sHTML;
	
	if(oDIV.childNodes.length==0)
		return false;
	
	var initFunctions="";
	var aJS=oDIV.getElementsByTagName("SCRIPT");
	for(var i=0 ; i<aJS.length ; i++)
		eval(aJS[i].innerHTML);
		
		
	var n=0;
	while( n<oDIV.childNodes.length )
	{
		var sId, oCurr=oDIV.childNodes[n];
		if( !oCurr || !oCurr.id || (sId=oCurr.id)=="" )
		{
			n++;
			continue;
		}
		
		var oPCE = docEl( sId );	// current element in parent document
		if(!oPCE)
		{
			n++;
			continue;
		}
		
		// Comboboxen ohne Änderung überspringen
		if (oPCE.nodeName == "SELECT" && oPCE.getAttribute("items") == oCurr.getAttribute("items")
			&& oPCE.getAttribute("selected") == oCurr.getAttribute("selected"))	{
			oPCE.setAttribute("norender", true);
			n++;
			continue;
		}
		
		var oParent=oPCE.parentNode;
		//alert("alt:\n"+oPCE.innerHTML);
		//alert("neu:\n"+oCurr.innerHTML);
		oParent.replaceChild(oCurr, oPCE );
		
		if(oPCE=docEl(sId+"_FC_DIV")) {
			oPCE.parentNode.removeChild(oPCE);
			
			if(oPCE=docEl(sId+"_FC"))
				oPCE.parentNode.removeChild(oPCE);
		}
		if(oPCE=docEl(sId+"_FL_DIV")) {
			oPCE.parentNode.removeChild(oPCE);
		}
	}
	
	eval(initFunctions);
}




/**
 * This is the Cookie( ) constructor function.
 *
 * This constructor looks for a cookie with the specified name for the
 * current document. If one exists, it parses its value into a set of
 * name/value pairs and stores those values as properties of the newly created
 * object.
 *
 * To store new data in the cookie, simply set properties of the Cookie
 * object. Avoid properties named "store" and "remove", since these are
 * reserved as method names.
 *
 * To save cookie data in the web browser's local store, call store( ).
 * To remove cookie data from the browser's store, call remove( ).
 *
 * The static method Cookie.enabled( ) returns true if cookies are
 * enabled and returns false otherwise.
 */
function Cookie(name) {
    this.$name = name;  // Remember the name of this cookie

    // First, get a list of all cookies that pertain to this document.
    // We do this by reading the magic Document.cookie property.
    // If there are no cookies, we don't have anything to do.
    var allcookies = document.cookie;
    if (allcookies == "") return;

    // Break the string of all cookies into individual cookie strings
    // Then loop through the cookie strings, looking for our name
    var cookies = allcookies.split(';');
    var cookie = null;
    for(var i = 0; i < cookies.length; i++) {
        // Does this cookie string begin with the name we want?
        if (cookies[i].substring(0, name.length+1) == (name + "=")) {
            cookie = cookies[i];
            break;
        }
    }

    // If we didn't find a matching cookie, quit now
    if (cookie == null) return;

    // The cookie value is the part after the equals sign
    var cookieval = cookie.substring(name.length+1);

    // Now that we've extracted the value of the named cookie, we
    // must break that value down into individual state variable
    // names and values. The name/value pairs are separated from each
    // other by ampersands, and the individual names and values are
    // separated from each other by colons. We use the split( ) method
    // to parse everything.
    var a = cookieval.split('&'); // Break it into an array of name/value pairs
    for(var i=0; i < a.length; i++)  // Break each pair into an array
        a[i] = a[i].split(':');

    // Now that we've parsed the cookie value, set all the names and values
    // as properties of this Cookie object. Note that we decode
    // the property value because the store( ) method encodes it.
    for(var i = 0; i < a.length; i++) {
        this[a[i][0]] = decodeURIComponent(a[i][1]);
    }
}

/**
 * This function is the store( ) method of the Cookie object.
 *
 * Arguments:
 *
 *   daysToLive: the lifetime of the cookie, in days. If you set this
 *     to zero, the cookie will be deleted. If you set it to null, or
 *     omit this argument, the cookie will be a session cookie and will
 *     not be retained when the browser exits. This argument is used to
 *     set the max-age attribute of the cookie.
 *   path: the value of the path attribute of the cookie
 *   domain: the value of the domain attribute of the cookie
 *   secure: if true, the secure attribute of the cookie will be set
 */
Cookie.prototype.store = function(daysToLive, path, domain, secure) {
    // First, loop through the properties of the Cookie object and
    // put together the value of the cookie. Since cookies use the
    // equals sign and semicolons as separators, we'll use colons
    // and ampersands for the individual state variables we store
    // within a single cookie value. Note that we encode the value
    // of each property in case it contains punctuation or other
    // illegal characters.
    var cookieval = "";
    for(var prop in this) {
        // Ignore properties with names that begin with '$' and also methods
        if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function'))
            continue;
        if (cookieval != "") cookieval += '&';
        cookieval += prop + ':' + encodeURIComponent(this[prop]);
    }

    // Now that we have the value of the cookie, put together the
    // complete cookie string, which includes the name and the various
    // attributes specified when the Cookie object was created
    var cookie = this.$name + '=' + cookieval;
    if (daysToLive || daysToLive == 0) {
        cookie += "; max-age=" + (daysToLive*24*60*60);
    }

    if (path) cookie += "; path=" + path;
    if (domain) cookie += "; domain=" + domain;
    if (secure) cookie += "; secure";

    // Now store the cookie by setting the magic Document.cookie property
    document.cookie = cookie;
}

/**
 * This function is the remove( ) method of the Cookie object; it deletes the
 * properties of the object and removes the cookie from the browser's
 * local store.
 *
 * The arguments to this function are all optional, but to remove a cookie
 * you must pass the same values you passed to store( ).
 */
Cookie.prototype.remove = function(path, domain, secure) {
    // Delete the properties of the cookie
    for(var prop in this) {
        if (prop.charAt(0) != '$' && typeof this[prop] != 'function')
            delete this[prop];
    }

    // Then, store the cookie with a lifetime of 0
    this.store(0, path, domain, secure);
}

/**
 * This static method attempts to determine whether cookies are enabled.
 * It returns true if they appear to be enabled and false otherwise.
 * A return value of true does not guarantee that cookies actually persist.
 * Nonpersistent session cookies may still work even if this method
 * returns false.
 */
Cookie.enabled = function( ) {
    // Use navigator.cookieEnabled if this browser defines it
    if (navigator.cookieEnabled != undefined) return navigator.cookieEnabled;

    // If we've already cached a value, use that value
    if (Cookie.enabled.cache != undefined) return Cookie.enabled.cache;

    // Otherwise, create a test cookie with a lifetime
    document.cookie = "testcookie=test; max-age=10000";  // Set cookie

    // Now see if that cookie was saved
    var cookies = document.cookie;
    if (cookies.indexOf("testcookie=test") == -1) {
        // The cookie was not saved
        return Cookie.enabled.cache = false;
    }
    else {
        // Cookie was saved, so we've got to delete it before returning
        document.cookie = "testcookie=test; max-age=0";  // Delete cookie
        return Cookie.enabled.cache = true;
    }
}

