
// browserdetection
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

// generell functions

var itemDisabled='item-disabled';
var selectDisabled='select-disabled';
var inputDisabled='input-disabled';
var texrareaDisabled='textarea-disabled';
var labelDisabled='label-disabled';

function AddCssClassToItem(cssclass, item)
{
    RemoveCssClassFromItem(cssclass, item);
    item.className = (item.className+' '+cssclass).replace(/^\s+|\s+$/, "");
}
function RemoveCssClassFromItem(cssclass, item)
{
    item.className = (item.className.replace(cssclass, '')).replace(/^\s+|\s+$/, "");
}

function gE(id) {
	return document.getElementById(id);
}

function defaultTextFocus(elem,cssclass)
{
	try {
		if (elem.defaultText==elem.value) elem.value='';
	}catch(e){ }
	if (elem.defaultTextCssClass)
	{
		RemoveClassName(elem, elem.defaultTextCssClass);
	} else if (cssclass)
	{
		elem.className = cssclass;
	}
}

function defaultTextBlur(elem, evt, cssclass)
{
	try	{
		if (elem.value=='')
		{
			elem.value=elem.defaultText;
			if (typeof(elem.onchange) == 'function') elem.onchange(evt);
			if (elem.defaultTextCssClass)
			{
				AddClassName(elem, elem.defaultTextCssClass);
			} else if (cssclass)
			{
				elem.className = cssclass;
			}
		}
	}catch(e){ }
}

function popUp(theUrl,theName,props)
{
 var popupwin=window.open(theUrl,theName,props);
 if (popupwin.focus) popupwin.focus();
}

function trim(str)
{
	// trim spaces from string
  return str.replace(/^\s+|\s+$/, "");
}

function AddClassName(elem, className)
{
  if (elem.className.indexOf(className) == -1)
  {
    RemoveClassName(elem, className);
    elem.className = trim(elem.className+' '+className);
  }
}

function RemoveClassName(elem, className)
{
  elem.className = trim(elem.className.replace(className, ''));
}

function ContainsClassName(elem, className)
{
  return (elem.className == elem.className.replace(className, ''));
}

// handling dom
function removeElements(id)
{
	var elem=gE(id);
	try
	{
		elem.innerHTML='';
		for (cn in elem.childNodes)
		{
			elem.removeChild(cn);
		}
	}
	catch (e) {}
}

function createElement(parentElement, newElem)
{
	var newNode=document.createElement(newElem);
	parentElement.appendChild(newNode);
	return newNode;
}

function createP(parentElement, css, text)
{
	var newNode=document.createElement('p');
	newNode.className=css;
	if (text) createText(newNode, text);
	parentElement.appendChild(newNode);
	return newNode;
}

function createH2(parentElement, css)
{
	var newNode=document.createElement('H2');
	newNode.className=css;
	if (parentElement) parentElement.appendChild(newNode);
	return newNode;
}

function createDiv(parentElement, css, text)
{
	var newNode=document.createElement('div');
	newNode.className=css;
	if (parentElement) parentElement.appendChild(newNode);
	if (text) createText(newNode, text);
	return newNode;
}

function createSpan(parentElement, css, text)
{
	var newNode=document.createElement('span');
	newNode.className=css;
	if (parentElement) parentElement.appendChild(newNode);
	if (text) createText(newNode, text);
	return newNode;
}

function createText(parentElement, text)
{
	var newNode=document.createTextNode(text);
	parentElement.appendChild(newNode);
}

function createCheckbox(parentElement, id)
{
	var newNode=document.createElement('input');
	newNode.type='checkbox';
	newNode.id=id;
	parentElement.appendChild(newNode);
	return newNode;
}

function createAnchor(parentElement, css, href, text)
{
	var newNode=document.createElement('a');
	if (text) createText(newNode, text);
	newNode.href=href;
	newNode.className=css;
	parentElement.appendChild(newNode);
	return newNode;
}

function createImage(parentElement, css, src, alt)
{
	var newNode=document.createElement('img');
	newNode.src=src;
	newNode.alt=alt;
	newNode.title=alt;
	newNode.className=css;
	parentElement.appendChild(newNode);
	return newNode;
}

function createRow(parentElement, css)
{
	var newNode=document.createElement('tr');
	newNode.className=css;
	parentElement.appendChild(newNode);
	return newNode;
}

function createCell(parentElement, css, text)
{
	var newNode=document.createElement('td');
	newNode.className=css;
	if (text) createText(newNode, text);
	parentElement.appendChild(newNode);
	return newNode;
}

// cookie handling
function getCookieValue(name, defaultValue)
{
	var arg=name+'=';
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while (i<clen)
	{
		var j=i+alen;
		if (document.cookie.substring(i,j)==arg)
		{
			var endstr=document.cookie.indexOf(';',j);
			if (endstr==-1) endstr=document.cookie.length;
			return unescape(document.cookie.substring(j,endstr));
		}
		i=document.cookie.indexOf(' ',i)+1;
		if (i==0) break;
	}
	return defaultValue;
}

function setCookieValue(name, value, persistent)
{
	var a = new Date();
	var expDate=new Date(a.getFullYear()+1,a.getMonth(),a.getDay(),1,0,0);
	var domain=document.domain;
	var path='/';
	if (domain.indexOf('.')>-1) domain=domain.substring(domain.indexOf('.'));
	document.cookie=name+'='+value+';path='+path+(persistent?';domain='+domain+';expires='+expDate.toGMTString():'');
}


// handling urls
function changeUrlParameter(url, param, val)
{
	var start=url.indexOf('?'+param);
	if (start==-1) start=url.indexOf('&'+param);
	if (start==-1)
	{
		if (url.indexOf('?')==-1)
			url+='?';
		else
			url+='&';
		return url+param+'='+escape(val);
	}
	var end=url.indexOf('&',start+1);
	if (end==-1) end=url.length;
	return url.substring(0,start+1)+param+'='+escape(val)+url.substring(end,url.length);
}

function changeMultipleUrlParameter(url, param, val) //val can be comma separated
{
	url = removeExistingUrlParameter(url, param);
	var a = val.split(',');
	for (var i=0; i<a.length; i++)
	{
		if (url.indexOf('='))
		{
			//already has parameters
			url = url.concat('&'+param+'='+escape(a[i]));
		}
		else
		{
			url = url.concat('?'+param+'='+escape(a[i]));
		}
	}
	return url;
}

function removeUrlParameter(url, param)
{
	var start=url.indexOf('?'+param);
	if (start==-1) start=url.indexOf('&'+param);
	if (start==-1) return url;
	var end=url.indexOf('&',start+1);
	if (end==-1) end=url.length;
	return url.substring(0,start+1)+url.substring(end,url.length);
}

function removeExistingUrlParameter(url, param)
{
	//parameters not at the end
	var regex = new RegExp(param+'=[^&]*&');
	var found = regex.exec(url);
	while (found)
	{
		url = url.replace(found[0], '');
		found = regex.exec(url);
	}
	//rightmost parameter
	regex = new RegExp('[?&]'+param+'=[^&]*');  //no ampersand
	found = regex.exec(url);
	if (found)
	{
		url = url.replace(found[0], '');
	}
	return url;
}

function getUrlParameter(url, param)
{
	var start=url.indexOf('?'+param);
	if (start==-1) start=url.indexOf('&'+param);
	if (start==-1) return null;
	var end=url.indexOf('&',start+1);
	if (end==-1) end=url.length;
	return url.substring(start+1,end);
}

// makemodel selection
function onSelectionChanged(selList,hdVal,versionboxId)
{
	var oSelList=gE(selList);
	gE(hdVal).value=oSelList.options[oSelList.selectedIndex].value;
	if (versionboxId != '')
	{
		var oVersionValue=gE(versionboxId);
		if(oVersionValue != null)
		{
		    oVersionValue.value='';
			if(gE(hdVal).value==0)
		    {
		        oVersionValue.disabled='disabled';
		        AddCssClassToItem(inputDisabled, oVersionValue);
		    }
		    else
		    {
		         oVersionValue.disabled='';
		         RemoveCssClassFromItem(inputDisabled, oVersionValue);
		    }
		}
	}
}

var _includeModelLine = true;
function initMakeModel(makeListId, modelListId, modelValId, versionboxId, includeModelLine)
{
  _includeModelLine = includeModelLine;
	chooseMake(true, makeListId, modelListId, false);
	var oModelSelect=gE(modelListId);
	var oModelValue=gE(modelValId).value;
	if (versionboxId != '')
	{
		var oVersionValue=gE(versionboxId);
		if(oVersionValue != null)
		{
		    if(oModelValue==0)
		    {
		        oVersionValue.disabled='disabled';
		        AddCssClassToItem(inputDisabled, oVersionValue);
		    }
		    else
		    {
		         oVersionValue.disabled='';
		         RemoveCssClassFromItem(inputDisabled, oVersionValue);
		    }
		}
	}
	
	for (var i=0;i<oModelSelect.options.length;i++)
	{
		if (oModelSelect.options[i].value==oModelValue)
		{
			oModelSelect.selectedIndex=i;
			break;
		}
	}
}
function initMultiControl(parent, make, model, version, caption, captionNr)
{
	//initMakeModel(make, model, "","");
	setMultiControl(parent, make, model, version, caption, captionNr);
}

function setMultiControl(parent, make, model, version, caption, captionNr)
{
	var oParent=gE(parent);
	
	var oMake=gE(make);
	var oModel=gE(model);
	var oVersion=gE(version);
	var oCaption=gE(caption);
	var oCaptionNr=gE(captionNr);
	   	
	oMake.disabled=((oParent.selectedIndex==0) ? 'disabled' : '');
	if(oMake.selectedIndex > 0)oMake.disabled= '';
	oModel.disabled=((oMake.selectedIndex==0) ? 'disabled' : '');
	oVersion.disabled=((oModel.selectedIndex==0) ? 'disabled' : '');
	
	if(oMake.disabled)
	{
	    AddCssClassToItem(selectDisabled, oMake);
	    AddCssClassToItem(labelDisabled, oCaption);
	    AddCssClassToItem(labelDisabled, oCaptionNr);
	}
	else
	{
	    RemoveCssClassFromItem(selectDisabled, oMake);
	    RemoveCssClassFromItem(labelDisabled, oCaption);
	    RemoveCssClassFromItem(labelDisabled, oCaptionNr);	
	}
	
	if(oModel.disabled)
	{
	    AddCssClassToItem(selectDisabled, oModel);
	}
	else
	{
	    RemoveCssClassFromItem(selectDisabled, oModel);	
	}
	
	if(oVersion.disabled)
	{
	    AddCssClassToItem(inputDisabled, oVersion);
	}
	else
	{
	    RemoveCssClassFromItem(inputDisabled, oVersion);	
	}	
}

function chooseMake(headContained, makeListId, modelListId, updateModel)
{
  var oMakeSelect=gE(makeListId);
	var oModelSelect=gE(modelListId);
	oModelSelect.selectedIndex=0;
	oModelSelect.options.length=1;
	var offsetForAll=(headContained ? 1 : 0);
	if (oMakeSelect.selectedIndex>=offsetForAll)
	{
		var modList=(arrModels[oMakeSelect.selectedIndex+1-offsetForAll]).split(';');
		oModelSelect.options.length=modList.length+1;
		var index=1;
		for (var i=0;i<modList.length;i++)
		{
			if (_includeModelLine)
			{
  			oModelSelect.options[index].value=modList[i].split(',')[0];
			  oModelSelect.options[index].text=modList[i].split(',')[1];
			}
			else
			{
			  var val = modList[i].split(',')[0];
			  if (parseInt(val)<0)
			  {
				  oModelSelect.options.length--;
				  continue;
			  }
  			oModelSelect.options[index].value=val;
			  oModelSelect.options[index].text=trim(modList[i].split(',')[1]);
			}
			index++;
		}
	}
	if (oModelSelect.options.length==2) oModelSelect.selectedIndex=1;
	
	if(headContained && oMakeSelect.selectedIndex==0)
	{
	    oModelSelect.disabled='disabled';
	    AddCssClassToItem(selectDisabled, oModelSelect);
	}
	else
	{
	    oModelSelect.disabled='';
	    RemoveCssClassFromItem(selectDisabled, oModelSelect);
	}
			
	if (updateModel) oModelSelect.onchange();
}

function checkInputLength(elem,len)
{
	if (elem.value.length>len) elem.value=elem.value.substring(0,len);
}

function SetZipSearchOnChange(countrySelect, radiusSelect, zipInput)
{
	if((countrySelect == null) || (radiusSelect == null) || (zipInput == null))
	{
		return;
	}
	if (countrySelect.selectedIndex == 0)
	{
		radiusSelect.disabled = 'disabled';
		radiusSelect.selectedIndex = 0;
		zipInput.disabled = 'disabled';
		zipInput.value = zipInput.defaultText;
		
		// requested by PM - ticket 15158
	    AddCssClassToItem(selectDisabled, radiusSelect);
	    AddCssClassToItem(inputDisabled, zipInput);
	}
	else
	{
		radiusSelect.disabled = '';
		zipInput.disabled = '';
		
		// requested by PM - ticket 15158
	    RemoveCssClassFromItem(selectDisabled, radiusSelect);
	    RemoveCssClassFromItem(inputDisabled, zipInput);
	}
}

function SortImages(parent, intFirst, intSecond)
{
   var objFirst = gE(parent + "_ImageCtr" + intFirst);
   var objSecond = gE(parent + "_ImageCtr" + intSecond);

   var objOldNumberFirst = gE(parent + "_OldIndex" + intFirst);
   var objOldNumberSecond = gE(parent + "_OldIndex" + intSecond);

   var strSRC = objFirst.src;
   objFirst.src = objSecond.src;
   objSecond.src = strSRC;
   
   var i = objOldNumberFirst.value;
   objOldNumberFirst.value = objOldNumberSecond.value;
   objOldNumberSecond.value = i;
}

var gparent;


function SetDeleteImages(parent, delIndex)
{
	gparent = parent;
	var delButtonIndex = gE(parent + "_DeleteButtonIndex");
	delButtonIndex.value = delIndex;
	showHideForm('confirmArea', 'block', null, null);
	activeForm = gE('confirmArea');
	var hei = activeForm.offsetHeight ? activeForm.offsetHeight : 150;
	centerForm(activeForm, hei);
	attachKeyDown();
	return false;
}

function SetDeleteAllImages()
{	
	var delButtonIndex = gE(parent + "_DeleteButtonIndex");
	delButtonIndex.value = delIndex;
	showHideForm('confirmArea', 'block', null, null);
	return false;
}

function DeleteImage_Ok()
{
	for (var i=1;i<15;i++)	
		{		
			var who=gE(gparent + "_fu" + i);
			var who2= who.cloneNode(false);
			who2.onchange= who.onchange;
			who.parentNode.replaceChild(who2,who);
		} 
}

function DeleteImage_Cancel()
{
    showHideForm('confirmArea', 'none', null, null);
  return false;
}

function resizeIframe(iframeId)
{
	var iframe = parent.document.getElementById(iframeId);
	if (iframe) iframe.height = self.document.body.scrollHeight;
}

function checkAndResizeIframe(iframeId, parentUrl) 
{
  if (parent.location.href.indexOf(parentUrl) == -1)
    location.href = parentUrl;
  else
    resizeIframe(iframeId);
}

function schwacke()
{
    if (document.cookie.indexOf("zanox=1")>=0)
      koop = '855D2A2961';
    else 
      koop = '42FB6A6CEB';
    var link1 = escape('http://wli-de.eurotax.com/wli/dede/entry/welcome.php?koop_id='+koop);
  	var url = '/redir.asp?type=AC&eventdetail=SCEC&site=1&language=ger&name=az_ct_schwacke&link=' + link1;
    breite = 790;
    hoehe = 580;
    XX = screen.availWidth;
    YY = screen.availHeight;
    x = (XX-breite)/2;
    y = (YY-hoehe)/2;           
    var win = window.open(url,'schwacke','height='+hoehe+',width='+breite+',toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=no,left='+x+',top='+y);
    if (win && win.focus) 
      win.focus();
}

/* z-index utility function*/

function SetZIndex(indexvalue, controlclass) {
    var control = $(controlclass);
    if (control.length > 0) {
        control[0].style.zIndex = indexvalue;
    }
}

function escapeHTML(str) 
{
	var replacements = {'<': '&lt;', '&': '&amp;', '>': '&gt;'};
  return str.replace(/[<&>]/g, function(c) { return replacements[c]; });
}