// SVN $Id: globals.js 37924 2008-11-19 12:47:01Z dev2003\aschiessl $ 
// 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
function gE(id) {
	return document.getElementById(id);
}

function defaultTextFocus(elem,cssclass)
{
	try {
		if (elem.defaultText==elem.value) elem.value='';
	}catch(e){ }
	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 (cssclass)
			{
				elem.className = cssclass;
			}
		}
	}catch(e){ }
}

function popUp(theUrl,theName,props)
{
 var popupwin=window.open(theUrl,theName,props);
 if (popupwin.focus) popupwin.focus();
}

// 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 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='';
				oVersionValue.disabled=((gE(hdVal).value==0) ? 'disabled' : '');
		}
	}
}

function initMakeModel(makeListId, modelListId, modelValId, versionboxId)
{
	chooseMake(true, makeListId, modelListId, false);
	var oModelSelect=gE(modelListId);
	var oModelValue=gE(modelValId).value;
	if (versionboxId != '')
	{
		var oVersionValue=gE(versionboxId);
		if(oVersionValue != null)
		{
				oVersionValue.disabled=((oModelValue==0) ? 'disabled' : '');
		}
	}
	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, select, version, caption, captionNr)
{
	var oParent=gE(parent);
	
	var oMake=gE(make);
	var oSelect=gE(select);
	var oVersion=gE(version);
	var oCaption=gE(caption);
	var oCaptionNr=gE(captionNr);
	   	
	oMake.disabled=((oParent.selectedIndex==0) ? 'disabled' : '');
	if(oMake.selectedIndex > 0)oMake.disabled= '';
	oSelect.disabled=((oMake.selectedIndex==0) ? 'disabled' : '');
	oVersion.disabled=((oSelect.selectedIndex==0) ? 'disabled' : '');
	
	oCaption.style.color = ((oMake.disabled) ? '#aeaeae' : '#000066');
	oCaptionNr.style.color = ((oMake.disabled) ? '#aeaeae' : '#000066');
}

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;
		for (var i=0;i<modList.length;i++)
		{
			oModelSelect.options[i+1].value=modList[i].split(',')[0];
			oModelSelect.options[i+1].text=modList[i].split(',')[1];
		}
	}
	if (oModelSelect.options.length==2) oModelSelect.selectedIndex=1;
	oModelSelect.disabled=((headContained && oMakeSelect.selectedIndex==0) ? 'disabled' : '');
	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;
	}
	else
	{
		radiusSelect.disabled = '';
		zipInput.disabled = '';
	}
}
