// SVN $Id: globals.js 6105 2007-05-22 13:03:36Z dev2003\ahengstebeck $ 
// 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)
{
	try {
		if (elem.attributes.defaultText.value==elem.value) elem.value='';
	}catch(e){}
}

function defaultTextBlur(elem, evt)
{
	try	{
		if (elem.value=='')
		{
			elem.value=elem.attributes.defaultText.value;
			if (typeof(elem.onchange) == 'function')
				elem.onchange(evt);
		}
	}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 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 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 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)
{
	var oSelList=gE(selList);
	gE(hdVal).value=oSelList.options[oSelList.selectedIndex].value;
}

function initMakeModel(makeListId, modelListId, makeValId, modelValId)
{
	chooseMake(true, makeListId, modelListId, makeValId, false);
	var oModelSelect=gE(modelListId);
	var oModelValue=gE(modelValId).value;
	for (var i=0;i<oModelSelect.options.length;i++)
	{
		if (oModelSelect.options[i].value==oModelValue)
		{
			oModelSelect.selectedIndex=i;
			break;
		}
	}
}

function chooseMake(headContained, makeListId, modelListId, makeValId, updateModel)
{
	var oMakeSelect=gE(makeListId);
	var oModelSelect=gE(modelListId);
	var oMakeValue=gE(makeValId);
	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];
		}
	}
	oMakeValue.value=oMakeSelect.options[oMakeSelect.selectedIndex].value;
	if (oModelSelect.options.length==2) oModelSelect.selectedIndex=1;
	oModelSelect.disabled=((headContained && oMakeSelect.selectedIndex==0) ? 'disabled' : '');
	if (updateModel) oModelSelect.onchange();
}


// Aktivieren / Deaktivieren der Checkbox durch Klick auf das dazugehoerige Label
function makeChecked(knoten) {
  if (knoten.parentNode.firstChild.checked ==  true) {
    knoten.parentNode.firstChild.checked =  false;
  } else {
    knoten.parentNode.firstChild.checked =  true;
  }
}


// Automatische Reselection des bei der vorherigen Suche ausgewaehlten Modells (Detailsuche)
function LoadModells () {
  onSelectionChanged('ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_modelsList','ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_selectedModelValue');

  var entryId=gE('ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_modelsList').selectedIndex;
  var activeEntry=gE('ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_modelsList').options[entryId].value;

  chooseMake(true,'ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_makesList','ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_modelsList','ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_selectedMakeValue',false);

  for (i = 0; i < gE('ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_modelsList').length; ++i) {
    if (gE('ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_modelsList').options[i].value == activeEntry) {
      gE('ctl00_ctl00_decoratedArea_contentArea_extendedSearch_generalOptions_makeModelSelect_modelsList').options[i].selected=true;
    }
   }
}


function checkPLZ(caller) {
  try{
    if (caller.value.length >= 4) {
      caller.maxLength =  4;
      caller.value = caller.value.substr(0,4);
    } else { caller.maxLength =  15; }
    var zahlen = "0123456789";
    for (var i = 0; i < caller.value.length; i++) {
      if (zahlen.indexOf(caller.value.charAt(i)) == -1) {
        caller.value = caller.value.substr(0,i);
      }
    }
  } catch(e){}
}