// ---------------------------------------------------------------------
// JAVASCRIPT	: Kamper GUI, Macromedia-Adobe javascripts
// REVISION		: v1.4 1aug2007
//				: v1.5 28may2008 - function kgui_userWish() added
// ---------------------------------------------------------------------

var DB = new Array ({cookieVersion:"", actionA:"", actionB:"", actionC:"", user_weight:"", user_wish:"", user_length:"", loginname:"", loginpw:""});
var SHOPDB = new Array ({cookieVersion:"", weekmenu:"", biaStart:"", biaNorm:"", biaRepen:"", biaShaker:"", biaPlus:"", calboek:""});
var cookieNo = "1";

Array.prototype.zoek = function (element) {
	for (var keys in this) {
		if (this[keys] == element) {return keys; break;}}
	return -1;}
	
// ---- Macromedia Dreamweaver functions -------------------------------

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' bevat geen goed e-mail adres.\n';
      } else if (test!='R') {
        if (isNaN(val)) errors+='- '+nm+' moet een getal bevatten.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+nm+' moet een nummer zijn tussen '+min+' en '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is verplicht.\n'; }
  } if (errors) alert('De volgende problemen zijn geconstateerd:\n'+errors);
  document.MM_returnValue = (errors == '');}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;}

// ---- KGUI functions -------------------------------------------------
function kgui_formatPriceStr (vPrice) {
	var price = String(Math.round(vPrice*100)/100);
	var idx = price.indexOf(".");
	var digits = 0;
	if ( idx == -1 ) price+=",00";
	else {
		digits = price.substring(idx+1).length;
		price = price.substring(0,idx)+","+price.substring(idx+1)+"00";
		price = price.substr(0,price.length-digits);
	}
	return price;
} // kgui_formatPriceStr()

function kgui_BMI (vLengte, vGewicht) {	//v1.0
	return Math.round ( vGewicht / ( vLengte * vLengte ) * 10000 ) ;
} // kgui_BMI ()

function kgui_userWish (vLengte, vBMI) {	//v1.0
	return Math.round ( vBMI * ( vLengte * vLengte ) / 10000 ) ;
} // kgui_userWish ()


function kgui_BMItekst (vBMI) {
	var retVal="<h1>Uw <abbr title=\"Body Mass Index. De verhouding tussen gewicht en lichaamslengte.\" style=\"cursor:help\">BMI</abbr> waarde is <b>"+String(vBMI)+"</b>. ";
	if (vBMI>30) {
		retVal += "U bent obees.</h1><p>U heeft  ernstig overgewicht en uw gezondheid loopt ernstig gevaar. Deze vorm van ernstig overgewicht wordt ook wel obesitas genoemd. Obesitas is een vorm van overgewicht die de gezondheid in gevaar brengt! Obesitas is een grote risicofactor voor gezondheidsproblemen zoals diabetes type II en hart- en vaataandoeningen. U moet proberen uw gewicht omlaag te brengen naar een niveau waarop u minder gezondheidsrisico’s loopt.</p>";
    } else if (vBMI >25 && vBMI <=30) {
		retVal += "U lijdt aan overgewicht.</h1><p>Dat betekent dat u teveel weegt volgens uw grootte. Overgewicht is een gevolg van een onevenwicht tussen de energieopname (te veel) en energieverbruik (te weinig) met een energieoverschot als gevolg dat onder de vorm van vetten wordt opgestapeld. Door uw energieopname te beperken (eet gezond !) en uw energieverbruik te verhogen (dagelijks minstens 30 minuten wandelen) kunt u het evenwicht makkelijkst terug herstellen. U bent nog niet obees (overgewicht met gezondheidsrisico's als gevolg) maar een gezondere leefwijze is aan te raden indien u uw gezondheid wenst te vrijwaren !</p>";
	} else if (vBMI >20 && vBMI <=25) {
		retVal += "</h1><p>U hebt een normaal, gezond gewicht !Gezond eten en voldoende fysieke activiteit (dagelijks minstens 30 minuten) zal ervoor zorgen dat u uw gezonde gewicht blijft behouden.</p>";
	} else if (vBMI >17 && vBMI <=20) {
		retVal += "U hebt een ondergewicht.</h1><p>U weegt te weinig volgens uw grootte. Voldoende energie-opname is noodzakelijk. Eet gezond maar eet voldoende ! Wanneer uw gewicht nog daalt, brengt u uw gezondheid in gevaar !</p>";
	} else if (vBMI <=17) {
		retVal += "U hebt een extreem ondergewicht (anorexia nervosa).</h1><p>Dit kan levensbedreigend zijn of worden! U loopt het gevaar op bloeddoorstromingsproblemen (steeds koud hebben) en een tekort aan kalium. Ook kunt u last krijgen van osteoporose (botontkalking). Een stijging van de energieopname is noodzakelijk! U hebt gespecialiseerde hulp nodig (dokter en diëtist). Een gezondere levenswijze is noodzakelijk om uw gewicht op peil te krijgen en te houden.</p>";
	}
	return retVal;
}

function kgui_stripSpaces (vStr, vNoSpacesAtAll) { //v1.1 vNoSpacesAtAll added
	var s=0, e=vStr.length-1, str="";
	while (	vStr.charAt(s)==" " ) {s++}		// Remove leading spaces
	while (	vStr.charAt(e)==" " ) {e--}		// Remove trailing spaces
	str = vStr.slice(s,++e);
	if (vNoSpacesAtAll) {
		while (	 (s=str.indexOf(" "))!=-1 )	{ str = str.substring(0,s)+str.substr(s+1); }
	}
	return str;
}

function kgui_cleanTRdata(vTableID,vOptions,vAction) { // v1.1 :: kgui_cleanTRdata(vTableID,"VORGNR|DATUMCHECK=071231|ODDEVEN","STYLE=error|DELETE");
	var flg_oddEven=false,flg_checkDate=false,flg_checkDate2=false,flg_volgnr=false,flg_deleteTR=false,flg_disableCurrTR=false;
	var myTable = MM_findObj(vTableID);
	var myRowLst = myTable.getElementsByTagName("tr");
	var myNrRows = myRowLst.length;
	var myCellLst, myNrCells=0, trTitle="", trDate="";
	var volgNr=0, odd=true;
	var s,e,args,vDate="";
	var argsA,vStyle="";
	
	if ( vOptions==undefined ) alert("KGUI : Parameter verwacht");
	else {
		args = vOptions.split("|");
		argsA = vAction.split("|");
		flg_volgnr=args.zoek("VOLGNR")<0?false:true;
		flg_oddEven=args.zoek("ODDEVEN")<0?false:true;
		flg_deleteTR=argsA.zoek("DELETE")<0?false:true;

		for (var i=0,t=0;i<args.length;i++) {// Check options for DATUMCHECK=
			t=args[i].indexOf("DATUMCHECK");
			if (t>=0){flg_checkDate=true;vDate=args[i].substr(11);break;}}

		for (var i=0,t=0;i<argsA.length;i++) {	// Check options for STYLE=
			t=argsA[i].indexOf("STYLE");
			if (t>=0){vStyle=argsA[i].substr(6);break;}}

		for( var i=0; i<myNrRows; i++) {	// Repeat for every <TR> in <TABLE>
			trTitle = myRowLst[i].title;
			if ( flg_checkDate ) {	// Perform <TR TITLE="[date] check
				s=trTitle.indexOf("[");
				e=trTitle.indexOf("]");
				// alert("s"+s+"e"+e+" - "+trTitle.slice((s+1),(e-1)))
				if ((s==-1)&&(e==-1)) flg_checkDate2 = false; // Title found but no '[DATE]' info
				else { flg_checkDate2 = true;
					trDate = trTitle.slice((s+1),e);
					myRowLst[i].title = trTitle.substr(e+1); }} // EndElseIf Perform <TR TITLE="[date] check
		
			myCellLst = myRowLst[i].getElementsByTagName("td");
			myNrCells = myCellLst.length;

			if ( myNrCells>0 ) {	// Er zijn <TD> aanwezig in deze <TR>
				if ( Number(trDate)<Number(vDate) && flg_checkDate2 ) flg_disableCurrTR=true;
				else flg_disableCurrTR=false;
				for( var j=0; j<myNrCells; j++) {	// Repeat for every <TD> in <TR>
					myCellLst[j].innerHTML = myCellLst[j].innerHTML.replace(/&lt;DATUM&gt;/,kgui_convertJJMMDD(trDate));
					if (flg_volgnr && myCellLst[j].innerHTML.indexOf("&lt;VOLGNR&gt;")>=0 && !flg_disableCurrTR) {
						myCellLst[j].innerHTML = myCellLst[j].innerHTML.replace(/&lt;VOLGNR&gt;/,++volgNr);
					}
				} //EndForeach <TD> in <TR>

				if ( flg_disableCurrTR ) {	// Bepaal de actie voor deze <TR> die buiten de datum valt
					if (flg_deleteTR) {myRowLst[i].className="nodisplay";
					} else { // Andere opties dan DELETE
						if (vStyle!="") myRowLst[i].className=vStyle;
					}
				}
			} //EndIf Er zijn <TD> aanwezig in deze <TR>
			if (!flg_disableCurrTR&&flg_oddEven&&!myRowLst[i].id=="") {
				odd?myRowLst[i].className="odd":myRowLst[i].className="even";
				odd=!odd;
			}
		} // EndForeach ROWS in TABLE
	} // EndIf PARAMETERS VERWACHT
}

var trc=new Array ();
function kgui_numberID () { // 1.1 renumber <tr> ID's of given <table> ID's ;kgui_numberID("x","y",...)
	var args=kgui_numberID.arguments,ro,nro;
	
	for(var a=0; a<args.length; a++){
		ro=MM_findObj(args[a]).getElementsByTagName("tr");
		nro=ro.length;

		for(var i=0,newID="",tagFound; i<nro; i++) {
			tagFound=-1;
			newID = ro[i].id;
			if (newID!="") {
				newID = newID.substring(0,newID.indexOf("#"));
				for( var j=0; j<trc.length; j++ ) if (trc[j].id==newID) {tagFound=j;break;}
				if (tagFound<0) {tagFound=(trc.length);trc.push({id:newID,count:1})}
				else trc[tagFound].count++
				ro[i].id = newID + trc[tagFound].count;
			} else {ro[i].id = "kgui"+String(i);}}}}

function kgui_readCookie(vCookieName) {
	var cookieData = XMreadCookie(vCookieName);
	var items_array;

	if (cookieData!=""){
		items_array = cookieData.split("|");
		for (var i=0; i<items_array.length; i++ ) {
			var data_array = items_array[i].split("=");
			switch ( data_array[0] ) {
				case "user_weight" :	DB[0].user_weight = data_array[1]; break;
				case "user_wish" :		DB[0].user_wish = data_array[1]; break;
				case "user_length" :	DB[0].user_length = data_array[1]; break;
				case "loginname" :		DB[0].loginname = data_array[1]; break;
				case "loginpw" :		DB[0].loginpw = data_array[1]; break;
				case "actionA" :		DB[0].actionA = data_array[1]; break;
				case "actionB" :		DB[0].actionB = data_array[1]; break;
				case "actionC" :		DB[0].actionC = data_array[1]; break;
				case "cookieVersion" : break;
				default:
					alert ( "WARNING 101 : onbekende parameter '"+data_array[0]+"'");
		}} return true;}
	return false;
} // kgui_readCookie()

function kgui_writeCookie(vCookieName) {
	var cookieData="";

	cookieData = "cookieVersion="+String(cookieNo)+"|user_weight="+DB[0].user_weight+"|user_wish="+DB[0].user_wish+	"|user_length="+DB[0].user_length+"|loginname="+DB[0].loginname+"|loginpw="+DB[0].loginpw+	"|actionA=" +DB[0].actionA+"|actionB="+DB[0].actionB +"|actionC="+DB[0].actionC;

	XMwriteCookie(vCookieName,cookieData,365);
} // kgui_writeCookie()

function kgui_readShopCookie(vCookieName) {
	var cookieData = XMreadCookie(vCookieName);
	var items_array;

	if (cookieData!=""){
		items_array = cookieData.split("|");
		for (var i=0; i<items_array.length; i++ ) {
			var data_array = items_array[i].split("=");
			switch ( data_array[0] ) {
				case "weekmenu" :		SHOPDB[0].weekmenu	= data_array[1]; break;
				case "biaStart" :		SHOPDB[0].biaStart	= data_array[1]; break;
				case "biaNorm" :		SHOPDB[0].biaNorm	= data_array[1]; break;
				case "biaRepen" :		SHOPDB[0].biaRepen	= data_array[1]; break;
				case "biaShaker" :		SHOPDB[0].biaShaker	= data_array[1]; break;
				case "biaPlus" :		SHOPDB[0].biaPlus	= data_array[1]; break;
				case "calboek" :		SHOPDB[0].calboek	= data_array[1]; break;
				case "cookieVersion" : break;
				default:
					alert ( "WARNING 101 : onbekende parameter '"+data_array[0]+"'");
		}} return true;}
	return false;
} // kgui_readShopCookie()

function kgui_writeShopCookie(vCookieName) {
	var cookieData="";

	cookieData = "cookieVersion="+String(1)+"|weekmenu="+SHOPDB[0].weekmenu+"|biaStart="+SHOPDB[0].biaStart+"|biaNorm="+SHOPDB[0].biaNorm+"|biaRepen="+SHOPDB[0].biaRepen+"|biaShaker="+SHOPDB[0].biaShaker+"|biaPlus=" +SHOPDB[0].biaPlus+"|calboek="+SHOPDB[0].calboek;

	XMwriteCookie(vCookieName,cookieData,365);
} // kgui_writeShopCookie()


function XMwriteCookie(n,i,t){ // v1.0
	var ep="";if (t){d = new Date();d.setTime(d.getTime()+(t*86400000));
	ep = "; expires="+d.toGMTString();}document.cookie = n+"="+i+ep+"; path=/";}

function XMreadCookie(n){ // v1.0
	eq = n+"=";ca = document.cookie.split(';');for(var i=0;i<ca.length;i++) {
	c=ca[i];while (c.charAt(0)==' ') c = c.substring(1,c.length);
	if (c.indexOf(eq) == 0) return c.substring(eq.length,c.length);}return '';}

function fieldHighlite (vThis) { vThis.className = "highlite" ;}

function fieldBlur () {
	for ( i in fieldLst ) MM_findObj(fieldLst[i]).className = "" ;}

var oldStyle ; // Bewaren oude style <TR> / <TD> / Object
function htr ( vId, vState, vClass ) { //v1.1 080607
	var obj = MM_findObj(vId) ;
	// BUG : MM_findObj(vId) returns UNDEFINED, when calling from client_weekmenu.php, I think client_weekmenu.php has corrupted HTML.
	if ( obj == undefined ) obj = document.getElementById(vId) ;
	if(!vClass) vClass="htrs" ;
	if ( vState ) {
		 oldStyle = obj.className ;
		 obj.className = vClass ;
	} else if (oldStyle != null) obj.className = oldStyle ;
}

function check_email(inemail){
   if (inemail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
    return true;
   else
    return false;
}
