var ie = navigator.userAgent.indexOf("MSIE") != -1;
var opera = navigator.userAgent.indexOf("Opera") != -1;
var preloaded = false;
var keepAliveRegistry = new Array();

function errorsuppressor(e){
	return true
}

window.onerror=errorsuppressor;

function changeIntroImage(id) {
	if (preloaded && initComplete) {
		var img_ref = eval(id);
		document.images["rolloverImg"].src 	= img_ref.src;
	}
}

var call_parameters;

function get_args() {
	var param_string = document.location.search;
	call_parameters = new Object();
	if (typeof(param_string) == "string") {
		param_string = param_string.substring(1,param_string.length);
		var params = param_string.split('&');
		var i;
		if (param_string != "") {
			for (i = 0; i < params.length; i++) {
				var s = params[i];
				var x = s.split("=");
				if (x.length == 1) {
					call_parameters[s] = true;
				}
				else {
					call_parameters[x[0]] = x[1];
				}
			}
		}
	}
}

get_args();

function param(feld,init) {
	if(typeof(call_parameters[feld]) != "undefined") {
		return call_parameters[feld];
	}
	else {
		return init;
	}
}


//
// toggle a checkbox; set the view component
//
function toggleView(view){
	var v = toggleViewForm(view);
 	var imgName = view + "_box";
 	var img = document.images[imgName];
 	if(img){
 		var newSrc = v == 0 ? "img/checkbx.gif" :  "img/checkbx_sel.gif";
 		img.src = newSrc;
 	} else {
// 		alert("image " + imgName + " not found");
 	}
}
// toggle view form element "view", return new value
function toggleViewForm(view){
	var v = getView(view,0 );
	v = invert(v); // 0 <-> 1
 	setView(view, v);
	return v;
}

// toggle price/rate; load page
function toggleRate(){
	toggleViewForm("v_rate");
	submitForm();
 	return false;
}

function cBOver(id) {
	if (viewState.v_cb != id) {
		var img_ref= document.getElementById("img"+id);
		var img_src = img_ref.src;
		var new_img = img_src.replace(/off.gif/,"on.gif");
		img_ref.src = new_img;
	}
}

function cBOut(id) {
	if (viewState.v_cb != id) {
		var img_ref= document.getElementById("img"+id);
		var img_src = img_ref.src;
		var new_img = img_src.replace(/on.gif/,"off.gif");
		img_ref.src = new_img;
	}
}

function helperBox(id) {

	options_img = document.getElementById("imgoptions");
	selection_img = document.getElementById("imgselection");
	optionsDivId = document.getElementById("cbDivoptions");
	selectionDivId = document.getElementById("cbDivselection");
	
	/* vypnuti vsech obrazku */
	options_img.setAttribute("className","boxButtonOff");
	options_img.setAttribute("class","boxButtonOff");
	selection_img.setAttribute("className","boxButtonOff");
	selection_img.setAttribute("class","boxButtonOff");
	
	/* vypnuti vsech elementu */
	optionsDivId.style.display = "none";
	selectionDivId.style.display = "none";
	
	if (id == 'options') {
		session.setSubValue("helperBox", "options");
		on_img  = document.getElementById("imgoptions");
		on_div = document.getElementById("cbDivoptions");
	} else {
		session.setSubValue("helperBox", "selection");
		on_img  = document.getElementById("imgselection");
		on_div = document.getElementById("cbDivselection");
	}
	on_div.style.display = "";
	on_img.setAttribute("className","boxButtonOn");
	on_img.setAttribute("class","boxButtonOn");
	
}

function sCbbox(id) {
	var oldDivId = "cbDiv"+viewState.v_cb;
	var newDivId = "cbDiv"+id;
	alert(oldDivId);
	alert(newDivId);
	
	if(oldDivId != newDivId){
		var old_img = document.getElementById("img"+viewState.v_cb)

		if(old_img){
			old_img.setAttribute("className","boxButtonOff");
			old_img.setAttribute("class","boxButtonOff");
		}
		var cb_old = document.getElementById(oldDivId);


		if(cb_old){
			cb_old.style.display = "none";
		}
		var new_img = document.getElementById("img"+id)

		if(new_img){
			new_img.setAttribute("className","boxButtonOn");
			new_img.setAttribute("class","boxButtonOn");
		}
		alert(newDivId);
		var cb_new= document.getElementById(newDivId);
		alert(cb_new);
        
		if(cb_new){
			cb_new.style.display = "block";
			// cBOver(id);
			old_v_cb=viewState.v_cb;
		}
		setView("v_cb",id);
		cBOut(old_v_cb);
	}
	//return false;
}

function openSat(page, name, width, height, scrollable, statusbar, resizable) {

	page = page.replace("&"+"amp;","&");	// fixt einen obskuren bug: der print-satellit wurde nicht ge?ffnet, weil das quoting in der openWindow-Methode nicht de-quoted wurde. keine ahnung, obs ein firefox-bug ist

	if(!scrollable) {scrollable = 0}
	if(!statusbar) {statusbar = 0}
	if(!resizable) {resizable = 0}
//  alert("openSat " + page + ","+ name + ","+ width + ","+ height + ","+ scrollable + ","+ statusbar);
	page = page + "&w="+width+"&h="+height;
// 	parameter for printSat etc.	
	page+='&v_allitems='+viewState.v_allitems;
	page+='&v_serie='+viewState.v_serie;
	page+='&v_extras='+viewState.v_extras;
	page+='&v_accessories='+viewState.v_accessories;
	page+='&v_tech='+viewState.v_tech;
	page+='&v_extras_images='+viewState.v_extras_images;
	page+='&v_basics_images='+viewState.v_basics_images;
	page+='&v_accessories_images='+viewState.v_accessories_images;
	page+='&v_extras_details='+viewState.v_extras_details;
	page+='&v_basics_details='+viewState.v_basics_details;
	page+='&v_accessories_details='+viewState.v_accessories_details;
	
	if (opera) {
		name = width+"V"+height;
	}
	var params = "center,toolbar=0,location=0,directories=0,status="+statusbar+",menubar=0,scrollbars="+scrollable+",resizable="+resizable+",copyhistory=0";
	if(width && height){
		params += ",width="+ width +",height="+ height;
	}
	// alert("open with name: " + name);
	// alert("open with params: " + params);
	window.open(page, name, params);
}

function switchSatContent(sw) {
	if (sw == 1) {
		div1_ref = document.getElementById("standard");
		div2_ref = document.getElementById("technicaldata");
		div3_ref = document.getElementById("standardContent");
		div4_ref = document.getElementById("techdataContent");
	} else {
		div1_ref = document.getElementById("technicaldata");
		div2_ref = document.getElementById("standard");
		div3_ref = document.getElementById("techdataContent");
		div4_ref = document.getElementById("standardContent");
	}
	div1_ref.setAttribute("className","satContentHide");
	div1_ref.setAttribute("class","satContentHide");
	div2_ref.setAttribute("className","satContentShow");
	div2_ref.setAttribute("class","satContentShow");
	div3_ref.style.display = "none";
	div4_ref.style.display = "";
}

colorRollOverOn		= new Image();
colorRollOverOn.src	= "img/ext_col_over.gif";
colorRollOverOff	= new Image();
colorRollOverOff.src= "img/ext_col_none.gif";

function cEOn(pos,selected){
	if (selected != '1') {
		document.images["a"+pos].src = colorRollOverOn.src;
	}
	setTooltipText(pos,35,29);
}

function cEOf(pos,selected){
	if (selected != '1') {
		document.images["a"+pos].src = colorRollOverOff.src;
	}
	hideTooltip();
}

colorRoofRollOverOn		= new Image();
colorRoofRollOverOn.src	= "img/ext_roof_over.gif";
colorRoofRollOverOff	= new Image();
colorRoofRollOverOff.src= "img/ext_roof_none.gif";

function cROn(pos,selected){
	if (selected != '1') {
		document.images["a"+pos].src = colorRoofRollOverOn.src;
	}
	setTooltipText(pos,18,29);
}

function cROf(pos,selected){
	if (selected != '1') {
		document.images["a"+pos].src = colorRoofRollOverOff.src;
	}
	hideTooltip();
}

colorSeatRollOverOn		= new Image();
colorSeatRollOverOn.src	= "img/int_seat_over.gif";
colorSeatRollOverOff	= new Image();
colorSeatRollOverOff.src= "img/int_seat_none.gif";

function cSOn(pos,selected,restricted){
	if (selected != '1') {
		if (restricted != '1') {
			document.images["a"+pos].src = colorSeatRollOverOn.src;
		}
	}
	/*
	if (restricted == '1'){
		document.images["a"+pos].src = "img/int_seat_desel_leasing.gif";
	}
	*/

	setTooltipText(pos,38,41);
}


function cSOf(pos,selected,restricted){
	if (selected != '1') {
		if (restricted != '1') {
			document.images["a"+pos].src = colorSeatRollOverOff.src;
		}
	}
	hideTooltip();
}

// ersatz f�r cSOn: show tooltip, and change url of interior frame
function csOver(pos,url){
	document.images["a"+pos].src = url;

	setTooltipText(pos,38,41);
}

// ersatz f�r cSOf: hide tooltip, and change url of interior frame
function csOut(pos,url){
	document.images["a"+pos].src = url;

	hideTooltip();
}

function setTooltipText(pos,xp,yp) {
	var div_ref = document.getElementById("d"+pos);
	var newX = findPosX(div_ref);
	var newY = findPosY(div_ref);

	var toolTipRef = document.getElementById("toolTip");
	if(toolTipRef){
		toolTipRef.style.top = (newY + yp) + 'px';
		toolTipRef.style.left = (newX + xp) + 'px';
		toolTipRef.style.display = "block";
	}
	if (Tip[pos] != undefined) {
		var toolTipText	= document.getElementById("toolTipText");
		if(toolTipText){
			toolTipText.innerHTML 	= Tip[pos];
		}
	}
}

function setTooltipAbsText(xp,yp,text) {

    var toolTipRef = document.getElementById("toolTipAbs");

    if(toolTipRef){
        toolTipRef.style.top = yp + 'px';
        toolTipRef.style.left = xp + 'px';
        toolTipRef.style.display = "block";
    }

    var toolTipText = document.getElementById("toolTipTextAbs");
    if(toolTipText){
        toolTipText.innerHTML   = text;
    }
}

// show the text in a tooltip relative to an object, with a given dx/dy displacement
function showTooltipRel(rel, dx, dy, text) {

	if (!text || text=="") {
		return;
	}
	var x = findPosX(rel);
	var y = findPosY(rel);
	var xp = x + dx;
	var yp = y + dy;	
    var toolTipRef = document.getElementById("toolTipAbs");

    if(toolTipRef){
        toolTipRef.style.top = yp + 'px';
        toolTipRef.style.left = xp + 'px';
        toolTipRef.style.display = "block";
    }

    var toolTipText = document.getElementById("toolTipTextAbs");
    if(toolTipText){
        toolTipText.innerHTML   = text;
    }
}

function hideTooltipAbsolut(){
    var toolTipRef = document.getElementById("toolTipAbs");
    if(toolTipRef){
        toolTipRef.style.display = "none";
    }
}

function hideTooltipRel(){
	hideTooltipAbsolut();
}


function hideTooltip(){
	var toolTipRef = document.getElementById("toolTip");
	if(toolTipRef){
		toolTipRef.style.display = "none";
	}
}


function doLoginGET(url,redirectUrl) {
	var command = document.forms[0].command.value;
	var next = document.forms[0].pageafterlogin.value;
	
	if ((command == "save") || (command == "list")) {
		next = "carstore";
		document.forms[0].pageafterlogin.value = next;
	}

	document.location.href=url+"&redirect_url="+redirectUrl+"&pageafterlogin="+next+"&command="+command;
}

function doLoginPOST(url,redirectUrl) {
	document.forms[0].action=url;
	var command = document.forms[0].command.value;
	var next = document.forms[0].pageafterlogin.value;

	if ((command == "save") || (command == "list")) {
		next = "carstore";
		document.forms[0].pageafterlogin.value = next;
    }
    
	if (redirectUrl != "") {
		document.forms[0].redirect_url.value = redirectUrl+"&next="+next+"&command="+command;
	} else {
	    var host = window.location.host;
		var path = window.location.pathname;
		document.forms[0].redirect_url.value = "http://"+host+path+"?page=postloginmodule&next="+next+"&command="+command;
	}

	document.forms[0].submit();
}

function setMessageBox(text) {
	var messageBox = document.getElementById("messageBox");
	messageBox.innerHTML = text;
	messageBox.style.display = "";
}

function findPosX(obj) {
	if(obj == null){
		return 0;
	}
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) {
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj) {
	if(obj == null){
		return 0;
	}
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}

function checkLength(node,length) {
	if (node.value.length >= length) {
		return false;
	}
}

function switchDatTable(sw) {
	div_ref = document.getElementById("datTable");
	if (sw == 1) {
		div_ref.style.display = "";
	} else {
		div_ref.style.display = "none";
	}
}

var modalSatOpen = 0;
var modalWin = new Object();
function openModalSat(path){
	modalSatOpen = 1;
	modalWin = window.open(path,"modal_child","width=440,height=299,center,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,copyhistory=0");
	modalWin.top_ref = window.top;	// setze top_ref f?r browser, die den opener nicht setzen
    modalWin.focus();
}

function checkModalSatFocus(){
	if (modalSatOpen) {
		if (typeof(modalWin) != 'undefined') {
			modalWin.focus();
		}
	}
}

function cancelModalSat(nothing) {
	modalSatOpen = 0;
	if (!nothing) {
		setView("next", "");
		setView("page", "");
	}
}

function chooseTransferRemote(){
	document.forms[0].submit();
}

function chooseFreshStartRemote(){
	setView("command", "freshStart");
	document.forms[0].submit();
}

function chooseCarstoreDelete(del){
	set('page','carstore','command','remove','slot',del);
}

function buildSelection() {
	if (comparableCars > 1 ) {
		for (var x=0;x<comparableCars;x++) {
			for (var j=0;j<comparableCars;j++) {
				bSel(bSelList[j],selectionValueCompare+bSelList[j],bSelList[x]);
			}
		}
	}
}

function bSel(pos,value,field) {
	if (field != pos) {
		var newe=new Option(value,pos,false,false);
		document.forms[0]["selectC"+field].options[document.forms[0]["selectC"+field].length]=newe;
	}
}

var tcPageAliasArray = new Array();
var x = "noValue";
var E1 = 0;	// werden beim onload gesetzt
var E2 = 0;
var E3 = 0;
var E4 = 0;
var E5 = 0;
var E6 = 0;
 
var registerPageEventArray = new Array();
// example registerPageEvent("introPage","E6","onload","background");
// registerPageEvent("requestUserDataPage","E1","onload");
// registerPageEvent("printPage","E2","onunload");
// registerPageEvent("carStorePage","E3","onload");
// registerPageEvent("ecardPage","E4","onunload");

function triggerUmfragePopup(triggerEvent){
	if (triggerEvent != 'onload') {
		triggerEvent = "onunload";
	}
	if(tcPageAliasArray["entityType"] != "") { 
		for(var i=0;i<registerPageEventArray.length;i++){
			//alert("PageName="+tcPageAliasArray["entityType"]+" RegisteredPageName:"+registerPageEventArray[i].pageName + " PageEventCode="+registerPageEventArray[i].eventCode+" EventCodeValue="+eval(registerPageEventArray[i].eventCode)+'\nAktTriggerEvent='+triggerEvent+' PageTriggerEvent='+registerPageEventArray[i].triggerEvent+'\n E1:'+E1+' E2:'+E2+' E3:'+E3+' E4:'+E4+' E5:'+E5+' E6:'+E6);
			if(registerPageEventArray[i].pageName == tcPageAliasArray["entityType"] && eval(registerPageEventArray[i].eventCode)) {
				if(triggerEvent == registerPageEventArray[i].triggerEvent) {
					var popup_win;
					var leftcom = (screen.width-703)/2;
					var obencom = (screen.height-511)/2;
					var eventCode = registerPageEventArray[i].eventCode;
					eventCode = eventCode.replace(/E/,"");
					var url = "http://www.puls.3uu.de/uc/audi/?a="+eventCode;
					if (tcPageAliasArray["model"]) {
						var carline = tcPageAliasArray["model"];
						carline = escape(carline);
						url+="&b="+carline;
					}
					popup_win = window.open(url, 'popwin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,left='+leftcom+',top='+obencom+',height=511,width=725');
					if (registerPageEventArray[i].focusStatus) {
						window.focus();
					}
					var cookie_str = "ak4UmfrageId=0"+
					"; expires=Thu, 01-Jan-2009 00:00:01 GMT";
					document.cookie=cookie_str;
					break;
				}
			}
		}
	}
}

function getCookieVal(CookieName) {
	// falls test-parameter gesetzt ist, diesen direkt auslesen
	var umfrageID = param("umfrageid",0);
	if (umfrageID) {
		return umfrageID;
	} else {
		var c_length = document.cookie.length;
		var Cookies = document.cookie.split("\;");
		for(var i=0;i<Cookies.length;i++){
			var thisCookie = Cookies[i];
			var CookieKeyValue = thisCookie.split("=");		
			if (CookieKeyValue[0].indexOf(CookieName) != -1) {
				return CookieKeyValue[1];
			}
		}	
	}
	return "";
}

function setCookie() {
	var cookie_str = "ak4UmfrageId="+x+
	"; expires=Thu, 01-Jan-2009 00:00:01 GMT";
	document.cookie=cookie_str;
	return x;
}

function setCookieUmfrage() {
	var cookieVal = getCookieVal('ak4UmfrageId');
	if (!cookieVal) {
		cookieVal = setCookie();
	}
	E1 = cookieVal & 1;		// 0 oder 1
	E2 = cookieVal & 2;
	E3 = cookieVal & 4;
	E4 = cookieVal & 8;		// 0 oder 8
	E5 = cookieVal & 16;	// 0 oder 16
	E6 = cookieVal & 32;
	//alert('E1:'+E1+' E2:'+E2+' E3:'+E3+' E4:'+E4+' E5:'+E5+' E6:'+E6)
	if (typeof(tc_page_alias) != "undefined") {
		var pos = tc_page_alias.indexOf("?");
		new_tc_page_alias = tc_page_alias.substr(pos+1,tc_page_alias.length);
		var fields = new_tc_page_alias.split("&");
		for(var i=0;i<fields.length;i++){
			var thisField = fields[i];
			var keyVal = thisField.split("=");
			tcPageAliasArray[keyVal[0]] = keyVal[1];
		}
	}
	triggerUmfragePopup('onload');
}
/*
if (doUmfrage) {
	var cookieVal = getCookieVal('ak4UmfrageId');
	if (!cookieVal) {
		var randomId = Math.floor(Math.random()*1000000);
		document.write('<script src="http://puls.3uu.de/xmldata/audi_popup_quota.php?'+randomId+'" language="Javascript" type="text/javascript"></script>');
	}
}
*/
function registerPageEvent(pageName,eventCode,triggerEvent,setUnFocus) {	
	var c = registerPageEventArray.length;
	registerPageEventArray[c] = new Object();
	registerPageEventArray[c].pageName = pageName;
	registerPageEventArray[c].eventCode = eventCode;
	registerPageEventArray[c].triggerEvent = triggerEvent;
	registerPageEventArray[c].focusStatus = setUnFocus;
}

window.onunload = triggerUmfragePopup;

function oeffne_anfahrtsroute(id){
        fenster=window.open("http://194.25.187.67/Audi/eingabe.asp?ID="+id, "Anfahrtsroute","width=639,height=545,top=120,left=210");
    if (typeof(fenster.focus) == "function" || typeof(fenster.focus) == "object"){
            fenster.focus();
    }
}

function showLeasingFrame(id) {

		var obj = document.getElementById(id);

		if (obj) {
				obj.className="leasingmatrixOver";
//    		obj.setAttribute("class","leasingmatrixOver");
		}		
}
function hideLeasingFrame(id) {
		var obj = document.getElementById(id);
		if (obj) {
				obj.className="bglgrey";
//    		obj.setAttribute("class","bglgrey");
		}		
}


function addKeepAlive(url, timeout, maxnum){
	if(! maxnum){
		maxnum = 10;	// max. 10 keepalives
	}
	var info = new Object();
	info.url = url;
	info.maxnum = maxnum;
	info.n = keepAliveRegistry.length;
	keepAliveRegistry[info.n] = info;
	info.timeout_id = window.setInterval("execKeepAlive(" + info.n + ","+ timeout+")", timeout);
}

function execKeepAlive(id, timeout){
	try {
		var info = keepAliveRegistry[id];
		info.maxnum --;
		// alert("execKeepAlive, maxnum=" + info.maxnum);
		if(info.maxnum <= 0){
			window.clearInterval(info.timeout_id);
		}
		var now = new Date();
		var millis = now.getTime();
		var unique_url = info.url + "&ms=" + millis;
		var obj = new Image();
		obj.src = unique_url;	// keepalive fetch
	} catch(e){ alert("oops: " + e); }		
}

/**
 * testuje validni email
 */
function isEmail(s)
{
	s += "";
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)");
	var r2 = new RegExp("^[a-zA-Z0-9\\-\\.]+\\@[a-zA-Z0-9\\-\\.]+\\.[a-zA-Z]{2,4}$");
	if (r1.test(s) || !r2.test(s))
    	return false;
	return true;
}

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedRadioValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}
