
var pageId = ' ';

function openMenuSection(id,idx) {
	if (idx != null) {
	menuDiv = document.getElementById(id);
	headings = menuDiv.getElementsByTagName('h2');
	toggleSection(headings[idx]);
	}
}

function disableFocus(){
	if(((navigator.appName != 'Microsoft Internet Explorer') && this.blur) && (curPopupWindow = null)) this.blur()
}
function showLayer(id,show) {//?
	if (show) document.getElementById(id).style.display='block'; else document.getElementById(id).style.display='none';
}

function addTmpl(subMenuId){
	if (subMenuId != null) {
		showLayer(subMenuId, true);
		showLayer('button', false)
	}
}

function focusOnField(formName,fieldName,selected){
	if (fieldName != '')
		if (selected) document.forms[formName].elements[fieldName].select();
		else
			document.forms[formName].elements[fieldName].focus();
}

function openWindow(url, name, wWidth, wHeight, x, y, features) {
	window.open(url, name, "resizable, width="+wWidth+", height="+wHeight+", left="+x+", top="+y+features+", status"); 
	return false;
}

function updateShopBasket(frameName,element,text) {//?
	var doc = parent.frames[frameName].document;
	var element = doc.getElementById(element);
	var nodes = element.childNodes;
	var newNode = doc.createTextNode(text);
// Remove existing nodes
	if (nodes.length != 0)
		for (var i = 0; i <= nodes.length; i++)
			element.removeChild(nodes[i]);
// Add new node
	element.appendChild(newNode);
}

function writeDate(separator) {
	var current = new Date();
	var day = current.getDate();
	var month = current.getMonth(current)+1;
	var year = current.getFullYear(current);
	var curDate = (day+separator+month+separator+year);
	document.write(curDate)
}

function iframeSrc(id, url) {//?
	var iframe = document.getElementById(id);
//	if (iframe.src.indexOf(url) == -1)
		iframe.src = url
}

function toggleParentVis(element, display) {
	window.parent.document.getElementById(element).style.display = display
}

function updateFieldParentDoc(form, target, field, value, submit) {
	window.parent.document.forms[form].elements[field].value = value;
	if (target != '') window.parent.document.forms[form].target = target;
	if (submit) window.parent.document.forms[form].submit();
}

function updOrdQty(formName, elementName, minOrdQty, deliverQty, upOrDown) {

  var elemObj = document.forms[formName].elements[elementName];

	if (elemObj != null) {
		var ordQty = pFloat(elemObj.value);
		var delQty = pFloat(deliverQty);
		var remQty = (Math.round(ordQty*10000) % Math.round(delQty*10000));
		if (upOrDown.toUpperCase() == "UP") {
  		if ( remQty != 0 ) {
  		  ordQty = ordQty + ( delQty - remQty );
      } else {
  		  ordQty = ordQty + delQty;
      }
	  } else {
  		if ( remQty != 0 ) {
	   	  ordQty = ordQty - ( delQty - remQty );
      } else {
  		  ordQty = ordQty - delQty;
	    } 
  	}
		
/* 		if (ordQty < minOrdQty) {
		  ordQty = pFloat(minOrdQty);
		}
 */		if (ordQty < 0) {
		  ordQty = 0;
		}
		ordQty = Math.round(ordQty*10000)/10000;
		elemObj.value = ordQty;
		if (elemObj.value == "NaN") {
		  elemObj.value = delQty
		}
	} else {
		alert("Element " + elementName + " in form " + formName + " not found!");
	}
}

function pFloat(quantity) {
    var komma = quantity.indexOf( "," );

	if  (komma != -1) {
		var voorKomma = quantity.substring( 0, komma );
		var naKomma = quantity.substring( komma+1 );
		var waarde = voorKomma+ "." +naKomma;
		waarde = parseFloat(waarde);
		} else {
		var waarde = quantity;
		waarde = parseFloat(waarde);
	}
	return waarde;
}

function updSelectedPage(formName1, elementName1, formName2, elementName2) {//?
	var index_top = document.forms[formName1].elements[elementName1].selectedIndex;
	var elemObj2 = document.forms[formName2].elements[elementName2];

	elemObj2.selectedIndex = index_top; 
}

function toggleDiv(id, onoff) {
	if ((document.getElementById(id).style.display != "block") || onoff)
		document.getElementById(id).style.display="block";
	else
		document.getElementById(id).style.display="none";
}
//	SB 20/07/06 (mnr0780020) Update listbox 
function updateListBox(input, XMLresponse) {
	if (XMLresponse == null){
		var url  = "ajListBox?" + input;
		loadXMLDoc(url);
	}	else {
		setListBox(XMLresponse);
	}
}
function setListBox(response) {
	//	get listboxname and clear current options
	var box = response.getElementsByTagName('box')[0].firstChild.nodeValue;
	clearListBox(box);
	// 	get number of option elements and populate listbox
	var list = response.getElementsByTagName('option');
	for (var i = 0; i < list.length; i++) {
		var selected;	
		var description = list[i].getElementsByTagName('description')[0].firstChild.nodeValue;
		var code        = list[i].getElementsByTagName('code')[0].firstChild.nodeValue;
		var opt = new Option(description, code);
		if	(list[i].getElementsByTagName('selected')[0].firstChild != null) {
			var selected    = list[i].getElementsByTagName('selected')[0].firstChild.nodeValue;
		} else {
			var selected = null;
		}
		populateListBox(box, opt, selected);
	}
}
function populateListBox(box, option, sel) {
	//	IE kan niet overweg met de waarde NULL als parameter, dus omzeilen door een ongedefineerde variabele te declaren!
	var undefined;
	var listBox = document.getElementsByName(box)[0];
	listBox.add(option, undefined);
	if	(sel != null) {
  		listBox.options[listBox.length -1].setAttribute('selected', 'selected');
		listBox.options.selectedIndex = listBox.length -1;
	}
}
function clearListBox(box) {
	var listBox = document.getElementsByName(box)[0];
	listBox.length = 0;
}

function showError(form,field){
	try {//foute veldnamen mogen de rest van de javascript niet laten crashen
		if (form != '' && field != '') {
		  document.forms[form].elements[field].style.backgroundColor="#FFFF00";
		  focusOnField(form,field,false);
		}
	}
	catch(e) {}
}

/**
* The $ function is a shorthand for getElementById.
*
* @param {String}	element The ID of element to retreive.
* @return {Object}	Returns object.
*/
function $(element) {
	return document.getElementById(element);
}

/**
* The $$ function is a shorthand for the custom getElementsByClassName function.
*
* @param {String}	className The class of element(s) to retreive.
* @return {Object}	Returns an array of objects.
*/
function $$(className) {
	return getElementsByClassName(className);
}

/**
* The getElementsByClassName function retreives all elements with the given class.
*
* @param {String}	className The class of element(s) to retreive.
* @return {Object}	Returns an array of objects.
*/
function getElementsByClassName(className) {
	var a = new Array();
	var regexp = new RegExp('(^| )'+className+'( |$)');
	var nodes = document.getElementsByTagName("*");
	for (var i = 0; i < nodes.length; ++i) {
		if (regexp.test(nodes[i].className)) a.push(nodes[i]);
	}
	return a;
}

/**
* The getElementsByName function does not work correctly in IE(7).
* This is a fix for this problem
*
* @param  {String}	tagName The element(s) to retrieve.
*         {String}  attributeName The attributeValue for NAME te retrieve
* @return {Object}	Returns an array of objects.
*/
function getElementsByName_iefix(tag, name) {
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

function removeChildNodes(node) {
	var nodesLength = node.childNodes.length;
	if (node.hasChildNodes) {
		for (var i=0;i<nodesLength;i++) {
			node.removeChild(node.childNodes[0]);
		}
	}
}

// OvdZ/SB juli 2008 Positionering elementen
function toon_verberg(invoer, aan) {
	// te schakelen element/elementarray of id mag geen display none in cascade hebben
	var arr = invoer; // elementen array
	if (typeof invoer == 'object' && invoer.length==null) arr=[invoer]; //element
	if (typeof invoer == 'string') arr=[document.getElementById(invoer)]; //id
	for (a=0; a<arr.length; a++) {
		if (typeof arr[a] == 'string') arr[a]=document.getElementById(arr[a]); //array van id's
		if (aan==null) tv = stijl(arr[a]).display == 'none'; else tv=aan;
		if (tv) arr[a].style.display=''; else arr[a].style.display='none';
		if (arr[a].id=="address_dialog") {
			try {toon_verberg('agree_link');/*order04eo2*/}
			catch(e) {toon_verberg(['step_button_nxt_shipinv','step_button_nxt_shipinv2','step_link_closure']);/*order04neo2*/}
		}
	}
}

function positioneer(bron, doel_id, xp, yp) {
	//n.b. meesturen van de bron zal meestal 'this' zijn. 'this' meesturen kan niet vanuit een href attribuut.
	xy = find_position(bron);
	obj=document.getElementById(doel_id);
	if (xy.x + xp < 0) xy.x = 0-xp;
	if (xy.y + yp < 0) xy.y = 0-yp;
	obj.style.left = xy.x + xp + 'px';
	obj.style.top = xy.y + yp + 'px';
}

function find_position(obj) {
//return left and top of the referenced object
//o.a. in order03, order04, infous3x
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft; curtop += obj.offsetTop;
			try {
				if (obj.offsetParent.className.indexOf('panel')>-1 || obj.offsetParent.className.indexOf('layer')>-1) {
					return {x: curleft, y: curtop};//doorgaan tot layer/panel
				}
			}
			catch(e) {}
		}//doorgaan tot html-element
	}
	return {x: curleft, y: curtop};
}

function init_select_change(){//zet bij inladen titles (alt-teksten) op select.do_change_function en option-elementen; 
	try {// e.e.a. werkt niet in msie6
		var objs = document.getElementsByTagName('select');
		for (var i=0; i<objs.length; i++) if (objs[i].className.indexOf('do_change_function')>-1) select_change(objs[i]);
		var objs = document.getElementsByTagName('option');
		for (var i=0; i<objs.length; i++) if (objs[i].parentNode.className.indexOf('do_change_function')>-1) objs[i].title=objs[i].text;
	}
	catch(e) {} //mogelijke problemen: in js .className en in html option.title
}

function select_change(obj) {//toon de tekst van de selectie als tooltip; bij inladen deze functie toepassen als alle select elementen, en opnemen in de onchange van iedere select  
//deze functie gaat gepaard met klasse 'do_change_function'
	obj.title=obj.getElementsByTagName('option')[obj.selectedIndex].text;
}

/* alfabetiseerbaar maken van de getallen */
function getal(n,l) {var s="000000000000000" + String(n);return s.substr(s.length-l);}

function insertHTML(target_reference, source_text){
	//in msie7 kan innerHTML geen a-tag verwerken; vervangen door een u-tag (is obscuur/er mag een geen u-tag in de response voorkomen)
	
	//RANDVOORWAARDE: de tekst mag geen 'U'-tag bevatten, de 'A'-tag mag niet floaten, wordt niet gereproduceerd door MSIE7
	
	try {
		target_reference.innerHTML = source_text;
	}
	catch(e) {
		//setup temporary tags; abuse the obsure 'u'-tag
		rep1 = source_text.replace(/\<a /g,'\<u '); 
		rep2 = rep1.replace(/\<\/a\>/g,'\<\/u\>');
		target_reference.innerHTML = rep2;
		false_anchors = target_reference.getElementsByTagName('u');
		//setup new anchor-tags
		for (c=0; c<false_anchors.length; c++) {
			if (false_anchors[0].href != '#') {//doe het alleen als het echt nodig is
				new_anchor = document.createElement('a');
				new_anchor.href = false_anchors[c].getAttribute('href');
				new_anchor.target = false_anchors[c].getAttribute('target');
				new_anchor.setAttribute('href',false_anchors[c].getAttribute('href'));
				new_anchor.setAttribute('target',false_anchors[c].getAttribute('target'));
				new_anchor.setAttribute('class',false_anchors[c].getAttribute('class'));
				new_anchor.setAttribute('title',false_anchors[c].getAttribute('title'));
				new_anchor.setAttribute('style',false_anchors[c].getAttribute('style'));
				new_anchor.setAttribute('onclick',false_anchors[c].getAttribute('onclick'));
				new_anchor.innerHTML = false_anchors[c].innerHTML;
				false_anchors[c].style.display = 'none';
				false_anchors[c].setAttribute('pgm_msg','delete this');
				false_anchors[c].parentNode.appendChild(new_anchor);
			} else {
				false_anchors[c].style.cursor = 'pointer';
			}
		}
		//delete temporary tags
		for (c=false_anchors.length-1; c>-1; c--) if (false_anchors[c].getAttribute('pgm_msg') == 'delete this') false_anchors[c].parentNode.removeChild(false_anchors[c]);
	}// end catch
}

function setSelectBoxWidth(){//alleen vanuit order04_oud
	selObj = document.getElementsByTagName('select');
	//if (arguments.length>0) selObj = arguments[0];
	for (s=0; s<selObj.length; s++) {
		selectObj = document.getElementsByName(selObj[s].name)[0];
		if (selectObj != null) {//doe alleen interessante selectboxes (die een naam hebben)
			if (selectObj.scrollWidth > parseFloat(selectObj.style.maxWidth)) {
				selectObj.style.width = selectObj.style.maxWidth;
			} else if (selectObj.scrollWidth < parseFloat(selectObj.style.minWidth)) {
				selectObj.style.width = Math.max(28, parseFloat(selectObj.style.minWidth))+'px';
			} else {
				extra = 20; //extra breedte om alles in het boxje te tonen
				//if (navigator.userAgent.indexOf('MSIE 6')>-1) extra = 0;
				breed = Math.max(28, selectObj.scrollWidth);
				selectObj.style.width = String(breed + extra) + 'px';
			}
		}
	}
}
function showNewBasket() {
  var rsText = this.req.responseText;
  try { 
    insertHTML(document.getElementById('newBasket'), rsText);
  }
  catch(e) {}  
  try {
    var percentageOrderWeight = document.getElementById("percentMass").getAttribute('percentage');
    var totalOrderWeight = document.getElementById("percentMass").getAttribute('mass');
    try {
      setProgressBarBgPos('percentMass', percentageOrderWeight);
      if (parseInt(percentageOrderWeight) != 0) {
        insertHTML(document.getElementById('pMass'), totalOrderWeight + ' (' + percentageOrderWeight + '%)');
      }  
    }
    catch(e) {}  
  }
  catch(e) {}
  try {                    			
    var percentageOrderVolume = document.getElementById("percentVolume").getAttribute('percentage');
    var totalOrderVolume = document.getElementById("percentVolume").getAttribute('volume');
    try {
      setProgressBarBgPos('percentVolume', percentageOrderVolume);
      if (parseInt(percentageOrderVolume) != 0) {
        insertHTML(document.getElementById('pVolume'), totalOrderVolume + ' (' + percentageOrderVolume + '%)');
      }  
    }
    catch(e) {}  
  }
  catch(e) {}  
}


/* Set the background position (parameter percentage as int) */
function setProgressBarBgPos(id, percentage) {
	try {var bar = document.getElementById(id);}
	catch(e) {return;}
	if (bar) {
  var initialPos = (0 - bar.width) -1;
	var pxPerPercent = bar.width /100; 
	// adjust the background position
	var percentagePos = (pFloat(percentage) * pxPerPercent);
	if (percentagePos > 116 ) {
    percentagePos = 117;
  }   
	bar.style.backgroundPosition = (initialPos + percentagePos) + "px 50%";
	if (pFloat(percentage) < 100.01) bar.style.backgroundImage = "url(../images/percentImage_back1.png)";
	// if (pFloat(percentage) > 60) bar.style.backgroundImage = "url(../images/percentImage_back2.png)";	
	// if (pFloat(percentage) > 75) bar.style.backgroundImage = "url(../images/percentImage_back3.png)";
	if (pFloat(percentage) > 100.01) bar.style.backgroundImage = "url(../images/percentImage_back4.png)";
	// Adjust the alt & title of the image
	bar.alt = percentage + "%";
	bar.title = percentage + "%";
	}
}

/* return text from selected listoption */
document.getSelectedText = function( elem ) {
   for (var i = 0; i < document.getElementsByName(elem)[0].options.length; i++) {
      if (document.getElementsByName(elem)[0].options[i].selected == true) {
         return document.getElementsByName(elem)[0].options[i].text;
      }
   }
   return null;
}
function getSelectText(obj){return obj.getElementsByTagName('option')[obj.selectedIndex].text;}

function showNewPromotion() {
var rsText = this.req.responseText;
	var s = rsText.indexOf('containerB[') +11;
	var e = rsText.indexOf(']containerE');
	var containerId = rsText.substring(s, e);
	try {insertHTML(document.getElementById('promo_'+containerId), rsText);}
	catch(e) {
		try {insertHTML(document.getElementById(containerId), rsText);}
		catch(e) {}  
	}  
}	

function stijl(obj){obj.currentStyle ? st=obj.currentStyle : st=document.defaultView.getComputedStyle(obj, '');return st;}

// Changes the cursor to an hourglass
function cursor_wait() {
	win = window;
	if (document.getElementsByTagName('body')[0].id=='INFOPR20' || document.getElementsByTagName('body')[0].id=='INFOPR20C') win = parent.window.frames["content"];
	try{win.document.getElementById('preloader_cnt').style.display='block';} catch(e) {}
	try{win.document.getElementById('scrim').style.display='block';} catch(e) {}
	try{win.document.getElementsByTagName('body')[0].getElementsByTagName('table')[0].style.display='none';} catch(e) {}
	try{win.document.getElementsByTagName('body')[0].getElementsByTagName('form')[0].style.display='none';} catch(e) {}
}
// Returns the cursor to the default pointer
function cursor_clear() {
	frms = top.frames;
	// for (i=0; i<frms.length; i++) frms[i].document.body.style.cursor = 'default';
	try {parent.window.frames["sidebar"].document.getElementById('scrim').style.display='none';}
	catch(e) {}
}
// Set cursor for INFOPR20 & INFOPR21
function cursorWait(showWait) {
	if (!showWait) return;
	cursor_wait();
	document.getElementById('scrim').style.display='block';
	setTimeout("cursor_clear()", 1000);
}

function showLoginBox() {
	var rsText = this.req.responseText;
	try {insertHTML(document.getElementById('newLoginBox'), rsText);}
	catch(e) {}  
}
function showAccountDetails() {
	var rsText = this.req.responseText;
	try {insertHTML(document.getElementById('accountDetail'), rsText);}
	catch(e) {}  
}

function compareProducts(input, XMLresponse) {//van deze functie is in infopr4n.js ook een versie
  if (XMLresponse == null){
	// Input mode
	document.getElementById('loadingCompare').style.visibility = 'visible';
	url  = 'compare?' + input;
	loadXMLDoc(url);
  }else{
	// Response mode
	var products = XMLresponse.getElementsByTagName('product');
	var compareList = document.getElementById('compareList');
	removeChildNodes(compareList);
	if (products.length == 0) {
		var checkBoxes = document.getElementsByTagName('input');
		for (var i=0;i<checkBoxes.length;i++) {
			if (checkBoxes[i].getAttribute('name') == 'chkCompare') checkBoxes[i].checked = false;
		}
	} else {
		for (var i=0;i<products.length;i++) {
			var breakNode = document.createElement("br");
			var txtNode = document.createTextNode(products[i].getAttribute('compareNumber')+': '+products.item(i).firstChild.data);
			compareList.appendChild(txtNode);
			compareList.appendChild(breakNode);
		}
	}
	document.getElementById('loadingCompare').style.visibility='hidden';
  }
}

var scale_obj;
function scale_Prices(obj, input, id) {
  scale_obj = obj;
	url  = "/easyorder/ajScales?" + input;
	doAjax( url, showScales );	
}

function showScales() {
	in_scales = this.req.responseText;
	insertHTML(document.getElementById('scalePricing'), in_scales);
	positioneer(scale_obj, 'scalePricing', -225, 5);
	toon_verberg('scalePricing');
}

