////////////////////////////////////////////////////////////////////////////////////////////////////
// Global variables
var lastOpenLevelID = null;				// Remember last opened submenu
var SID = '';
var bSIDInit = false;
var bShowOverzicht = true;

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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();


////////////////////////////////////////////////////////////////////////////////////////////////////
// Open a sub level in the left menu
//
function openSublevelDetails(suCode, groep, remote, level) {
	if (SID != '') {
		new Ajax.Request(
			'GetLevelAanbiedingen.phtml',//'GetSubLevelsDetails.phtml',
			{
				method: 'get',
				evalScripts: true,
				parameters: {
					'su_code': suCode,
					'groep': groep,
					'remote': remote,
					'level': level,
					'PHPSESSID': SID
				},
				onSuccess: function(transport) {
					$('ProductOverzicht').innerHTML = transport.responseText;
					if (bShowOverzicht) {
						$('ProductOverzicht').show();
						$('ProductDetail').hide();
					}else{
						bShowOverzicht = true;
					}
				}
			}
		);
	}else{
		new Ajax.Request(
			'GetLevelAanbiedingen.phtml',//'GetSubLevelsDetails.phtml',
			{
				method: 'get',
				evalScripts: true,
				parameters: {
					'su_code': suCode,
					'groep': groep,
					'remote': remote,
					'level': level
				},
				onSuccess: function(transport) {
					$('ProductOverzicht').innerHTML = transport.responseText;
					if (bShowOverzicht) {
						$('ProductOverzicht').show();
						$('ProductDetail').hide();
					}else{
						bShowOverzicht = true;
					}
				}
			}
		);
	}
}

function openSubLevel(elemID, suCode, groep, level, displayLevel, remote, keepVisible) {
		// De bezoeker mag niet te snel klikken
		if (lastOpenLevelID != null) {
			if (lastOpenLevelID == elemID) {
				// Alleen de details opnieuw tonen
				openSublevelDetails(suCode, groep, remote, level);
				bAjaxBusy = false;
				showAjaxBusy(bAjaxBusy); 
				return true;
			}else if (elemID.indexOf(lastOpenLevelID + "_") != 0) { // Alleen de sublevels sluiten, niet de hoofdlevels
				// Bepaal welk level we moeten sluiten:
				arrLastLevel = lastOpenLevelID.split("_");
				arrOpenLevel = elemID.split("_");
				compareLength = (arrLastLevel.length < arrOpenLevel.length ? arrLastLevel.length : arrOpenLevel.length);
				
				for(idx = 1; idx < compareLength; idx++) {
					if (arrLastLevel[idx] != arrOpenLevel[idx]) {
						lastOpenLevelID = arrLastLevel[0];
						for(idx2 = 1; idx2 <= idx; idx2++) {
							lastOpenLevelID = lastOpenLevelID + '_' + arrLastLevel[idx2];
						}
						break;
					}
				}
				
				$(lastOpenLevelID).hide();
				lastOpenLevelID = null; // Theoretisch is er nu geen level geopend!
			}
		}
		
		// Bijhouden welk sublevel wordt geopend
		if (!keepVisible) {
			lastOpenLevelID = elemID;
		}
		
		// Get the details and show them in the content pane
		if (bShowOverzicht) openSublevelDetails(suCode, groep, remote, level);
		
		// Toon geselecteerde sublevel
		//$(elemID).setStyle({'display':''});
		//if ($(elemID).innerHTML != '' && elemID.indexOf("_") != -1) {
			// De inhoud staat er al in
			//return true;
		//}
		// Get the next level of menu-items in the left menu
		if (SID != '') {
			//alert('opening request with:' + SID + 'END');
			new Ajax.Request(
				'GetSubLevels.phtml',
				{
					method: 'get',
					parameters: {
						parentid: elemID, 
						su_code: suCode,
						groep: groep,
						level: level,
						displaylevel: displayLevel,
						remote: remote,
						'PHPSESSID': SID
					},
					onSuccess: function(transport) {
						$(elemID).innerHTML = transport.responseText;
						$(elemID).show();
						bAjaxBusy = false;
						showAjaxBusy(bAjaxBusy); 
					}
				}
			);
		}else{
			//alert('opening request without:' + SID + 'END');
			new Ajax.Request(
				'GetSubLevels.phtml',
				{
					method: 'get',
					parameters: {
						parentid: elemID, 
						su_code: suCode,
						groep: groep,
						level: level,
						displaylevel: displayLevel,
						remote: remote
					},
					onSuccess: function(transport) {
						$(elemID).innerHTML = transport.responseText;
						$(elemID).show();
						bAjaxBusy = false;
						showAjaxBusy(bAjaxBusy); 
					}
				}
			);
		}
		
		//if (!bShowOverzicht) { openSublevelDetails(suCode, groep, remote, level); }
	
	return true; // SubLevel is geopend
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Get Product details
//
function getProductDetail(bestNr, suCode, remote, aantal, oude_sleutel, wijzig) {
	$('ProductOverzicht').hide(); 
	if (SID != '') {
		new Ajax.Updater(
			'ProductDetail',
			'GetProductDetail.phtml',
			{
				method: 'get', 
				parameters: {
					'bestnr'		: bestNr, 
					'su_code'		: suCode, 
					'remote'		: remote,
					'oude_sleutel'	: oude_sleutel,
					'aantal'		: aantal,
					'wijzig'		: wijzig,
					'PHPSESSID'		: SID
				}, 
				onSuccess: function(transport) {
					$('ProductDetail').show();
	
new Ajax.Updater(
			'voorraad', 
			'CheckVoorraad.phtml', 
			{ 
				method: 'get',
				parameters: { 
					'su_code': suCode, 
					'bestnr': bestNr,
					'PHPSESSID'		: SID
				}, 
				onSuccess: function(transport) { 
					$('voorraad').show();
				} 
			} 
		);		
}
			}
		); 
		
	}else{
		new Ajax.Updater(
			'ProductDetail',
			'GetProductDetail.phtml',
			{
				method: 'get', 
				parameters: {
					'bestnr'		: bestNr, 
					'su_code'		: suCode, 
					'remote'		: remote,
					'oude_sleutel'	: oude_sleutel,
					'aantal'		: aantal,
					'wijzig'		: wijzig
				}, 
				onSuccess: function(transport) {
					$('ProductDetail').show();

		new Ajax.Updater(
			'voorraad',
			'CheckVoorraad.phtml', 
			{ 
				method: 'get',
				parameters: { 
					'su_code': suCode, 
					'bestnr': bestNr
				}, 
				onSuccess: function(transport) { 
					$('voorraad').show();
				} 
				
			} 
		);		

				}
			}
		); 
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Show the custom message box after a product is added to the shopping card
// This is an event handler that's fired after a product is added succesfully
//
function addedProductHandler(transport) {
	//$('idBestellijst').show();
	
	arrButtons = new Array();
	arrButtons[0] = '<button class="buttonback" id="btnCancel" onclick="if (!bShowOverzicht) { bShowOverzicht = true; $(\'idAanbiedingen\').onclick(); }else{ if ($(\'idOpmerkingen\').innerHTML != \'\') { $(\'idOpmerkingen\').show(); }; $(\'ProductOverzicht\').show(); $(\'ProductDetail\').hide(); } hidePopup();">Verder winkelen</button>';
	arrButtons[1] = '<button class="button" id="btnOk" onclick="showBestellijst(); hidePopup();">Naar kassa</button>';
	showMessageBox(transport.responseText, arrButtons, 'btnOk');
	updateShoppingCardRow();
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Show the custom message box after a product is deleted from the shopping card
// This is an event handler that's fired after a product is deleted succesfully
//
function deletedProductHandler(transport) {
	showBestellijst();
	exit;
	//$('idBestellijstImg').show();
	
	arrButtons = new Array();
	arrButtons[0] = '<button id="btnOk" onclick="showBestellijst(); hidePopup();">Terug naar de bestellijst</button>';
	showMessageBox(transport.responseText, arrButtons, 'btnOk');
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Show the shopping card
//
function showBestellijst() {
	showOpmerkingen('');
	if (SID != '') {
		new Ajax.Updater(
			'ProductDetail',
			'GetBestellijst.phtml',
			{
				method: 'get',
				evalScripts: true,
				parameters: { 'PHPSESSID': SID },
				onSuccess: function(transport) {
					// The shopping card is loaded into 'ProductDetail'
					// So we must show this element and hide the current ('ProductOverzicht')
					$('ProductDetail').style.height = '';
					$('ProductOverzicht').hide();
					$('ProductDetail').show();
					updateShoppingCardRow();
					setPath('idBestelStatus', 0, 'Bestellijst');
				}
			}
		);
	}else{
		new Ajax.Updater(
			'ProductDetail',
			'GetBestellijst.phtml',
			{
				method: 'get',
				evalScripts: true,
				onSuccess: function(transport) {
					// The shopping card is loaded into 'ProductDetail'
					// So we must show this element and hide the current ('ProductOverzicht')
					$('ProductDetail').style.height = '';
					$('ProductOverzicht').hide();
					$('ProductDetail').show();
					updateShoppingCardRow();
					setPath('idBestelStatus', 0, 'Bestellijst');
				}
			}
		);
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Show path in path box
//
var currPath = new Array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); // moet groot genoeg zijn
var mustReset = false;

function setPath(elemID, level, strPath) {
/*	if (level == 0) {
		if (!mustReset) {
			// Maak kopie van huidig path (alleen indien dat nog niet is gedaan)
			for(idx=1; idx<currPath.length;	idx++) {
				if ($('idPath_' + idx)) {
					strInhoud = $('idPath_' + idx).innerHTML;
					currPath[idx] = strInhoud;
					if (strInhoud == '') {
						break;
					}
				}else{
					break;
				}
			}
			mustReset = true;
		}
		
		// Zet de schijn dat we toch level 1 aan 't vullen zijn
		level = 1;
	}else{
		if (mustReset) {
			for(idx=1; idx<level; idx++) {
				$('idPath_' + idx).innerHTML = currPath[idx];
				if (currPath[idx] == '') {
					break;
				}
			}
			mustReset = false;
		}
	}
	aLink = '<a href="#" onclick="$(\''+elemID+'\').onclick(); return false;">'+strPath+'</a>';
	if (level > 1) {
		aLink = "&nbsp;/&nbsp;" + aLink;
	}
	$('idPath_' + level).innerHTML = aLink;

	level++;
	while ($('idPath_' + level)) {
		$('idPath_' + level).innerHTML = '';
		level++;
	}
*/
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Update status shopping card
//
function updateShoppingCardRow() {
	if (bSIDInit) {
		if (SID != '') {
			//alert('with ' + SID);
			new Ajax.Updater('idAantalArtikelen', 'getBestellijstOverzicht.phtml', { method:'get', parameters: { 'PHPSESSID': SID } } );
		}else{
			new Ajax.Updater('idAantalArtikelen', 'getBestellijstOverzicht.phtml', { method:'get' } );
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Toggle the size of the image
//
var goImageResizer = null;
var	iResizeStep = 1;
var iResizeInterval = 5;
var	oResizer = null;

function clearResizer() {
	clearInterval(oResizer);
	oResizer = null;
}

function enlargeImage() {
	if (goImageResizer != null) {
		newwidth = goImageResizer.elem.width + iResizeStep;
		if (newwidth > goImageResizer.width) {
			clearResizer();
			newwidth = goImageResizer.width;
		}
		
		goImageResizer.elem.style.width = newwidth + 'px';
	}
}

function shrinkImage() {
	if (goImageResizer != null) {
		newwidth = goImageResizer.elem.width - iResizeStep;
		if (newwidth < goImageResizer.smallWidth) {
			clearResizer();
			newwidth = goImageResizer.smallWidth;
			goImageResizer.elem.style.position = '';
			showSelectBoxes();
		}
		
		goImageResizer.elem.style.width = newwidth + 'px';
	}
}

function toggleImageSize(oElem) {
	return;
	if (oElem) {
		if (oElem.style.position == 'absolute') {
			if (oElem != goImageResizer.elem) {
				// Vreemd ...
				return;
			}
			
			if (oResizer != null) {
				clearResizer();
			}
			
			oResizer = setInterval('shrinkImage()', iResizeInterval);
		}else{
			if (goImageResizer == null) { 
				goImageResizer = new Object();
			}else{
				if (oResizer != null) {
					// We waren bezig met het resizen van een image
					clearResizer();
					
					if (oElem != goImageResizer.elem) {
						// Kennelijk een andere image dus => resetten!
						goImageResizer.elem.onload();
						goImageResizer.elem.style.position = '';
					}else{
						// Deze klik gaan we negeren
						return;
					}
				}
			}
			
			goImageResizer.elem = oElem;
			goImageResizer.smallWidth = oElem.width;
			goImageResizer.smallHeight = oElem.height;

			oElem.style.position = 'absolute';
			oElem.style.width = '';
			oElem.style.height = '';
			
			goImageResizer.width = oElem.width;
			goImageResizer.height = oElem.height;
			
			iResizeStep = Math.ceil((goImageResizer.width - goImageResizer.smallWidth) / 5);
			
			oElem.style.width = goImageResizer.smallWidth + 'px';
			
			oResizer = setInterval('enlargeImage()', iResizeInterval);
			hideSelectBoxes();
		}
	}
}

function setSID(newSID) {
	bSIDInit = true;
	SID = newSID;	
}

// IFrame in site van dealers moet de iframe resizen. Dat gaat alleen via javascript
var iFrameHeight = -1;
var objHiddenFrame = null;
var strWebsite = '';
	
function resizeTopWindow() {
	if (objHiddenFrame && strWebsite != '') {
		if (SID != '') {
			objHiddenFrame.src = "http://"+strWebsite+"/gotowebshop.html?sidval="+SID+"&resizeframe=" + iFrameHeight;
		}else{
			objHiddenFrame.src = "http://"+strWebsite+"/gotowebshop.html?resizeframe=" + iFrameHeight;
		}
	}
}

function initHiddenFrame(idFrame, website) {
	if (document.getElementById(idFrame)) {
		objHiddenFrame = document.getElementById(idFrame);
		strWebsite = website;
		setInterval(
			function () {
				if ($('wrap')) {
					iHeight = $('wrap').getHeight();
					if (iHeight != iFrameHeight) {
						iFrameHeight = iHeight;
						resizeTopWindow();
					}
				}
			},
			500
		);
	}
}

function showOpmerkingen(strOpmerkingen, bResetOpmerkingen) {
	if (strOpmerkingen != '') {
		$('idOpmerkingen').innerHTML = strOpmerkingen;
		$('idOpmerkingen').show();
	}else{
		if (bResetOpmerkingen) { $('idOpmerkingen').innerHTML = ''; }
		$('idOpmerkingen').hide();
	}
}

function showCentered(objElem) {
	if (objElem) {
		// Wat zijn de dimensies van mijn viewport
		mydims = document.viewport.getDimensions();
		myoffsets = document.viewport.getScrollOffsets();
			
		objElem.setStyle({
			'top':  Math.floor(myoffsets.top + (mydims.height - objElem.getHeight()) / 2) + 'px'
		});

		if (objElem.getStyle('left') == '0px') {
			// Zet de message (contents) in messagewindow en toon deze
			objElem.setStyle({
				'left': Math.floor((mydims.width - objElem.getWidth()) / 2) + 'px'
			});
		}
		
		objElem.show();
	}
}

var timerAjax = null;

function showAjaxBusy(bBusy) {
	//alert($('divAjaxBusy').getWidth());
	
	if (timerAjax != null) {
		clearTimeout(timerAjax);
		timerAjax = null;
	}
	if (bBusy) {
		timerAjax = setTimeout(function () {
			showCentered($('divAjaxBusy'));
		}, 500);
	}else{
		$('divAjaxBusy').hide();
	}
}
