// auteur:	robert slangen
// datum:	2005-04-04

// browsercheck variabelen
var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();

var is_opera = (agt.indexOf("opera") != -1);
var is_gecko = ((navigator.product)&&(navigator.product.toLowerCase()=="gecko"))?true:false;
var is_ie   = ((appVer.indexOf('msie')!=-1) && (!is_opera));

function regExObject(regex)
{
	this.regex = regex;
}

var myLinkArray=new Array();

myLinkArray[0] = new Array(/(RIH)([\s;:,\b])/gi,"javascript:showDetails(\"beeldmerk\");");
myLinkArray[1] = new Array(/(FWT)([\s;:,\b])/gi,"javascript:showDetails(\"fwt\");");
myLinkArray[2] = new Array(/(FWT-frame)([\s;:,.\b])/gi,"javascript:showDetails(\"fwt\");");
myLinkArray[3] = new Array(/(FWT-afwerking)([\s;:,.\b])/gi,"javascript:showDetails(\"fwt\");");
myLinkArray[4] = new Array(/(Schijfrem)([\s;:,]|\b)/gi,"javascript:showDetails(\"schijfrem\");");
myLinkArray[5] = new Array(/(Auto-L)([\s;:,|\b])/gi,"javascript:showDetails(\"naafdynamo\");");
myLinkArray[6] = new Array(/(lx-naafdynamo)([\s;:,.|\b])/gi,"javascript:showDetails(\"lxnaafdynamo\");");
myLinkArray[7] = new Array(/(rollerbrakes?)([\s;:,]|\b)/gi,"javascript:showDetails(\"rollerbrakes\");");
myLinkArray[8] = new Array(/(verende voorvork)([\s;:,]|\b)/gi,"javascript:showDetails(\"vering\");");
myLinkArray[9] = new Array(/(zadelpen)([\s;:,]|\b)/gi,"javascript:showDetails(\"vering\");");
myLinkArray[10] = new Array(/(stuurpen)([\s;:,]|\b)/gi,"javascript:showDetails(\"stuurpen\");");
myLinkArray[11] = new Array(/(spaakpatroon)([\s;:,]|\b)/gi,"javascript:showDetails(\"spaakpatronen\");");
myLinkArray[12] = new Array(/(V-brakes?)([\s;:,]|\b)/gi,"javascript:showDetails(\"vbrakes\");");
myLinkArray[13] = new Array(/(Discbrakes?)([\s;:,]|\b)/gi,"javascript:showDetails(\"schijfrem\");");
myLinkArray[14] = new Array(/(i-brakes?)([\s;:,|\b])/gi,"javascript:showDetails(\"ibrakes\");");
myLinkArray[15] = new Array(/(gebuste velgen)([\s;:,]|\b)/gi,"javascript:showDetails(\"gebustevelgen\");");
myLinkArray[16] = new Array(/(power modulator)([\s;:,]|\b)/gi,"javascript:showDetails(\"powermodulator\");");
myLinkArray[17] = new Array(/(Marathon supreme)([\s;:,]|\b)/gi,"javascript:showDetails(\"marathonsupreme\");");
myLinkArray[18] = new Array(/(i-light)([\s;:,|\b])/gi,"javascript:showDetails(\"naafdynamo\");");
myLinkArray[19] = new Array(/(respiro-zadel)([\s;:,|\b])/gi,"javascript:showDetails(\"respiro\");");
myLinkArray[20] = new Array(/(lederen handvatten)([\s;:,|\b])/gi,"javascript:showDetails(\"lederenhandvat\");");
myLinkArray[21] = new Array(/(9x4-wielen)([\s;:,.]|\b)/gi,"javascript:showDetails(\"spaakpatronen\");");
myLinkArray[22] = new Array(/(deore lx)([\s;:,.]|\b)/gi,"javascript:showDetails(\"deorelx\");");
myLinkArray[23] = new Array(/(alivio)([\s;:,.]|\b)/gi,"javascript:showDetails(\"alivio\");");
myLinkArray[24] = new Array(/([^\>]deore)([\s;:,.]|\b)/gi,"javascript:showDetails(\"deore\");");
myLinkArray[25] = new Array(/(ge.ntegreerde koplamp)([\s;:,.]|\b)/gi,"javascript:showDetails(\"koplamp\");");
myLinkArray[26] = new Array(/(voorvork met lock-out)([\s;:,]|\b)/gi,"javascript:showDetails(\"voorvorkmetlockout\");");
myLinkArray[27] = new Array(/(multi-positie stuur)([\s;:,]|\b)/gi,"javascript:showDetails(\"multipositiestuur\");");
myLinkArray[28] = new Array(/(naafdynamo)([\s;:,.|\b])/gi,"javascript:showDetails(\"naafdynamo\");");
myLinkArray[29] = new Array(/(display)([\s;:,.|\b])/gi,"javascript:showDetails(\"display\");");
myLinkArray[30] = new Array(/(trapondersteuning)([\s;:,.|\b])/gi,"javascript:showDetails(\"motor\");");
myLinkArray[31] = new Array(/(batterij)([\s;:,.|\b])/gi,"javascript:showDetails(\"batterij\");");


var myFolderArray = new Array();
myFolderArray[0] = "";
myFolderArray[1] = "modellen";
//myFolderArray[2] = "";

function init()
{
	SetItem();
	if(!(is_opera)) {
		linkText();
		new Draggable('popupLayer',{});
	}
}

function checkFolderPermission(folder)
{
	var result = false;
	for (var j = 0; j < myFolderArray.length; j++)
	{
		if (myFolderArray[j].toLowerCase() == folder.toLowerCase())
		{
			result = true;
			break;
		}
	}
	return result;
}

function linkText()
{
	if (window.RegExp)
	{
		var folder = GetFolder('item');
		if (checkFolderPermission(folder))
		{
			var obj = document.getElementById('content');
			if (obj)
			{
				var elements = obj.getElementsByTagName('p');
				for (var i = 0; i < elements.length; i++) 
				{
					for (var j = 0; j < myLinkArray.length; j++)
					{
						//alert(myLinkArray[j][1])
						if ((myLinkArray[j][0] != null) && (myLinkArray[j][1] != null))
						{
							var source = elements[i].innerHTML;
							source = source.replace(myLinkArray[j][0], "<a href='" + myLinkArray[j][1] + "'>" + "$1" + "</a>" + "$2");
							elements[i].innerHTML = source;
						}
					}
				}
			}
			else
			{
				alert('not an object');
			}
		}
	}
	else
	{
		alert('no regular expressions')
	}

}

function showDetails(str)
{
	if (str != "")
	{
		position('popupLayer');
		var folder = str.toString();
		var url = '/site/details/' + folder + '/content.html';
		var target = 'popupLayerContent';
		var myAjax = new Ajax.Updater(
			target,
			url, 
			{
				method: 'get', 
				parameters: '',
				onComplete: show('popupLayer')
			});		
	}
}



function showInstructieAfbeelding(str)
{
	if (str != "")
	{
		document.getElementById('popupLayer').style.width = "350px";
		position('popupLayer');
		
		setTextToInnerHTML('popupLayerContent', '<img style="margin-top: 10px;" src="/site/images/instructie/' + str + '" alt="" />');
		show('popupLayer');
	}

}


function goToUrl(strUrl)
{
	location.href = strUrl;
}

function changeClass(object, strClass)
{
	object.className = strClass;
}

function changeClassByID(id, strClass)
{
	document.getElementById(id).className = strClass;
}

// uitlezen van huidige folder
// hiermee is duidelijk waar we zitten in de site
// de folder na de content folder bepaald het oplichtend item
function GetFolder(strX)
{
	var path = document.location.pathname;
	strX = strX.toLowerCase();
	//alert(path)
	var strFolder = null;
	var arFolders = path.split("/");
	switch(strX)
	{
		case 'item':
			//alert(arFolders.length)
			if (arFolders.length > 3)
			{
				strFolder = arFolders[2];
			}
			break;
		case 'menu':
			if (arFolders.length > 3)
			{
				strFolder = arFolders[3];
			}
			else
			{
				strFolder = '';
			}
			break;
		case 'submenu':
			if (arFolders.length > 4)
			{
				strFolder = arFolders[4];
			}
			break;
	}

	if (strFolder != null)
	{
		strFolder = strFolder.toLowerCase();
	}
	else
	{
		strFolder = "";
	}
	return (strFolder);
	
}



// zet zonneplaatje bij items aan
// aan de hand van de doorgegeven folder folde
function SetItem()
{
	var item = GetFolder('item');
	//alert(item);
	var el = document.getElementById(item);
	if (el != null)
	{
		el.className = "on";
	}
}

function changeButtonToOn(ButtonID)
{
	var obj = document.getElementById(ButtonID);
	if (obj) 
	{
		obj.src = obj.src.replace(/_off(\.[a-z0-9]+)$/i,'_on$1');
	}

}

function changeButtonToOff(ButtonID)
{
	var obj = document.getElementById(ButtonID);
	if (obj) 
	{
		obj.src = obj.src.replace(/_on(\.[a-z0-9]+)$/i,'_off$1');
	}
	
}


function SetMenu()
{
	var Menu = GetFolder('menu');
	var ButtonID;
	if (Menu != '')
	{
		ButtonID = 'bt' + Menu.substring(0,1).toUpperCase() + Menu.substring(1, Menu.length);
		changeButtonToOn(ButtonID);
	}
}
	

function SetSubMenu()
{
	var SubMenu = GetFolder('submenu');

	var ButtonID;
	if (SubMenu != '')
	{
		ButtonID = 'bt' + SubMenu.substring(0,1).toUpperCase() + SubMenu.substring(1, SubMenu.length);
		changeButtonToOn(ButtonID);
	}
}

function alternate(id,rollover){ 
	if(document.getElementsByTagName){  
		var table = document.getElementById(id); 
		if (table != null)
		{  
		var rows = table.getElementsByTagName("tr");
		
		for(i = 0; i < rows.length; i++){           
		//manipulate only rows with no <th>
			var headers = rows[i].getElementsByTagName("th");
			if(headers.length == 0)
			{
				if(i % 2 == 0)
				{ 
					rows[i].className = "oneven";
					if (rollover)
					{
						rows[i].style.cursor ='pointer';
						rows[i].onmouseover=function(){this.className='ruled';return false}
						rows[i].onmouseout=function(){this.className='even';return false}
					}
				}
				else
				{ 
					rows[i].className = "even"; 
					if (rollover)
					{
						rows[i].style.cursor ='pointer';
						rows[i].onmouseover=function(){this.className='ruled';return false}
						rows[i].onmouseout=function(){this.className='oneven';return false}
					}
				}
			}
		}
		}
	}
}

var popupWin;
function openWindow(strLink) {
	if (popupWin==null || popupWin.closed) {
		//window.open (URL, windowName, features);
		var iWidth;
		var iHeight;
		var iXOffset;
		var iYOffset;
		var iXMax;
		var iYMax;
		iWidth = 810;
		iHeigth = 610;
	    if (is_ie)
		{
	        iXMax = screen.width;
			iYMax = screen.height;
		}
	    else 
		{
	        if (is_gecko) 
			{
	            iXMax = window.outerWidth;
				iYMax = window.outerHeight;
			}
	        else 
			{
	            iXMax = 640;
				iYMax=480;
			}
		}
	    iXOffset = (iXMax - iWidth)/2;
		iYOffset = (iYMax - iHeigth)/2;
		popupWin=window.open(strLink,'showPicture','width='+iWidth+',height='+iHeigth+',screenX='+iXOffset+',screenY='+iYOffset+',left='+iXOffset+',top='+iYOffset+',directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,alwaysRaised=yes,resizable=yes');
	}
	else
	{
		popupWin.location.href=strLink;
	}
	popupWin.focus();

}

// ================================================
// dealergedeelte
// ================================================
function evalStatus()
{
	if (document.form1.postalcode.selectedIndex != 0)
	{
		selectDealers(document.form1.postalcode.selectedIndex.value);resetCitySelect();alternate('tbAddresses', false);
	}
	if (document.form1.city.selectedIndex != 0)
	{
		selectDealers(document.form1.city.selectedIndex.value);resetCitySelect();alternate('tbAddresses', false);
	}
}

function resetPostalCodeSelect()
{
	document.form1.postalcode.selectedIndex = 0;
}

function resetCitySelect()
{
	document.form1.city.selectedIndex = 0;
}




// ********************************
// Dealers
// ********************************
function dealer(klantnummer,name, address, postalcode, city, phone, email, url, type, acc, lat, lng)
{
	this.klantnummer = klantnummer;
	this.name = name;
	this.address = address;
	this.postalcode = postalcode;
	this.city = city;
	this.phone = phone;
	this.email = email;
	this.url = url;
	this.type = type;
	this.acc = acc;
	this.lat = lat;
	this.lng = lng;
}

function sortByName(a, b) {
    var x = a.name.toLowerCase();
    var y = b.name.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function sortByCity(a, b) {
    var x = a.city.toLowerCase();
    var y = b.city.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function sortByPostalCode(a, b) {
    var x = a.postalcode.toLowerCase();
    var y = b.postalcode.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

// ***************************************


function buildPostalCodeSelect()
{
	var MyInnerText;
	
	MySelectObject = document.form1.postalcode;
	MyOption = new Option('selecteer een postcode',0);
	MySelectObject.options[0] = MyOption;
	

	var myTrimmedPostalcode;
	myDealers.sort(sortByPostalCode);
	
	if (myDealers != null)
	{
		for (var j = 0; j < myDealers.length; j++)
		{
			// geen dubbele
			if (myTrimmedPostalcode != myDealers[j].postalcode.substring(0,2) + "00")
			{
				myTrimmedPostalcode = myDealers[j].postalcode.substring(0,2) + "00";
				MyInnerText = myTrimmedPostalcode;
				if (!(isNaN(MyInnerText)))
				{
					var temp = parseInt(MyInnerText) + 99;
					MyInnerText = MyInnerText + ' - ' + String(temp);
				}
				MyOption = new Option(MyInnerText, myTrimmedPostalcode);
				MySelectObject.options.add(MyOption);
			}
		}
	}
	
	return;
}

function buildCitySelect()
{
	var MySelectObject = document.form1.city;
	var MyOption = new Option('selecteer een plaats',0);
	var myCity = "";
	
	MySelectObject.options[0] = MyOption;
	
	myDealers.sort(sortByCity);
	
	if (myDealers != null)
	{
		for (var j = 0; j < myDealers.length; j++)
		{
			// geen dubble
			if (myCity != myDealers[j].city)
			{
				myCity = myDealers[j].city;
				MyOption = new Option( myDealers[j].city,myDealers[j].city);
				MySelectObject.options.add(MyOption);
			}
		}
	}
	
	return;
}

function selectDealers(strValue)
{
	var mySelectedDealers = new Array();
	
	for (var i = 0; i < myDealers.length; i++)	
	{
		if (myDealers[i].postalcode.substring(0,2) == strValue.substring(0,2) || myDealers[i].city == strValue)	
		{
			mySelectedDealers[mySelectedDealers.length++] = myDealers[i];
		}
	}
	//showMapWithDealers(mySelectedDealers);
	//toonDealers(mySelectedDealers);
	return mySelectedDealers;
}


function toonDealers(strValue, strType)
{
	var text = "";
	var strTemp = "";
	var mySelectedDealers = selectDealers(strValue);

	if (mySelectedDealers.length > 0)
	{
		text = "<table id=\"tbAddresses\" style=\"width: 100%;\">" + "\n";
		text = text + "<tr><th></th><th>naam</th><th>adres</th><th>plaats</th><th colspan=\"3\">meer info</th></tr>" + "\n";
		for(var i = 0; i < mySelectedDealers.length; i++)
		{
			var rowtext = "<tr>" + "\n";
			rowtext = rowtext + "<td><img src=\"/site/images/dealers/" + mySelectedDealers[i].type + ".gif\" alt=\"" + mySelectedDealers[i].type + "\" \/></td>" + "\n";
			rowtext = rowtext + "<td>" + mySelectedDealers[i].name + "</td>" + "\n";
			rowtext = rowtext + "<td>" + mySelectedDealers[i].address + "</td>" + "\n";
			rowtext = rowtext + "<td>" + mySelectedDealers[i].city + "</td>" + "\n";
			if (strType == 'postalcode')
			{
				strTemp = mySelectedDealers[i].postalcode.substring(0,2) + "00";
			}
			else
			{
					strTemp = mySelectedDealers[i].city;
			}
			rowtext = rowtext + "<td><a href=\"javascript:showDealers('" + mySelectedDealers[i].klantnummer + "')\">kaart</a></td>" + "\n";
			(mySelectedDealers[i].email != "")?	rowtext = rowtext + "<td><a href=\"mailto:" + mySelectedDealers[i].email + "\">e-mail</a></td>": rowtext = rowtext + "<td></td>" + "\n";
			((mySelectedDealers[i].url != "") && (mySelectedDealers[i].url.toLowerCase() != "http://"))?	rowtext = rowtext + "<td><a href=\"" + mySelectedDealers[i].url + "\" target=\"_blank\">web</a></td>": rowtext = rowtext + "<td></td>" + "\n";
		
			rowtext = rowtext + "</tr>" + "\n";
			text = text + rowtext;
		}
		text = text + "</table>" + "\n";
	}
	document.getElementById("addresses").innerHTML = text;
}

// ********************************
// Einde Dealers
// ********************************

function toggle(targetID)
{
	if (document.getElementById)
	{
		if(document.getElementById(targetID))
		{
			var target = document.getElementById(targetID);
			if (target.style.display == "none")
			{
				target.style.display = "";
			}
			else
			{
				target.style.display = "none";
			}
		}
	}

}

function show(targetID)
{
	if (document.getElementById)
	{
		if(document.getElementById(targetID))
		{
			var target = document.getElementById(targetID);
			target.style.display = "block";
		}
	}

}


function hide(targetID)
{
	if (document.getElementById)
	{
		if(document.getElementById(targetID))
		{
			var target = document.getElementById(targetID);
			target.style.display = "none";
		}
	}
}

function position(targetID)
{
	if (document.getElementById)
	{
		if(document.getElementById(targetID))
		{
			try
			{
				var target = document.getElementById(targetID);
				var top;
				var left;
				top = getScrollHeight() + 100;

				// getStyle wordt gebruikt om width van een object te verkrijgen
				// in ie 5 en 6 gaat dit niet via de gewone style elementen
				left = (parseInt(screen.width) - parseInt(getStyle(targetID,'width')))/2;
				target.style.top = top.toString()+'px';
				target.style.left = left.toString()+'px';
			}
			catch(err)
			{
				txt="There was an error on this page.\n\n"
				txt+="Error description: " + err.description + "\n\n"
				txt+="Click OK to continue.\n\n"
				alert(txt)
			}
		}
	}
}

function windowWidth()
{
	var myWidth = 0
	if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    	myWidth = window.innerWidth;
	} 
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
		myWidth = document.body.clientWidth;
	}
	
	return myWidth;
}



function screenWidth()
{

}

function screenHeight()
{

}

function changeValue(targetID, value)
{
	//alert(targetID);
	if (document.getElementById)
	{
		var target = document.getElementById(targetID);
		if (target != null)
		{
			target.value = value;
			//alert(target.value);
		}
		else
		{
			alert('object not found');
		}
	}
}

function getValue(targetID)
{
	if (document.getElementById)
	{
		var target = document.getElementById(targetID);
		if (target != null)
		{
			var value = target.value;
			return value;
		}
		else
		{
			alert('object not found');
		}
	}
}

function setTextToInnerHTML(targetID, text)
{
//	alert(targetID);
	if (document.getElementById)
	{
		var target = document.getElementById(targetID);
		if (target != null)
		{
			target.innerHTML = text;
		}
		else
		{
			alert('object not found');
		}
	}
}

function setTextToValue(targetID, text)
{
//	alert(targetID);
	if (document.getElementById)
	{
		var target = document.getElementById(targetID);
		if (target != null)
		{
			target.value = text;
		}
		else
		{
			alert('object not found');
		}
	}
}

function getInnerWidth()
{
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	return x;
}

function getInnerHeight()
{
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	return y;
}

function getScrollWidth()
{

	var x,y;
	if (self.pageYOffset) // all except Explorer
	{
		x = self.pageXOffset;
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}

	return x;
}

function getScrollHeight()
{

	var x,y;
	if (self.pageYOffset) // all except Explorer
	{
		x = self.pageXOffset;
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}

	return y;
}

function getPageWidth()
{

	var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
	     //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}

	return x;
}

function getPageHeight()
{

	var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
	     //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}

	return y;
}

function getStyle(el,styleProp)
{
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}
