// ---------------------------------------------------------------------
// JAVASCRIPT	: Kamper GUI, Macromedia-Adobe javascripts
// REVISION		: v1.4.0 08 april 2008
// 				: v1.4.1 28 jun 2008 kgui_stripSpaces interface changed
// ---------------------------------------------------------------------

var COOKIEDB = new Array ({cookieVersion:"", il:"", ww:""});
var cookieNo = "1";

Array.prototype.zoek = function (element) {	// v.1.1
	for (var keys in this) {
		// optie 1. zoeken array
		if (keys == element) {return this[keys]; break;}}	// Voor assiociatieve Arrays reeks["naam"] = "Pieter" ;
		// optie 2. vervangen <VOLGNR>
		// if (this[keys] == element) {return keys; break;}}	// <VOLGNR> REPLACEMENT ZIE KoggeZangers in combinatie met kgui_cleanTRdata(), kgui_numberTR() Oorspronkelijk ontwerp reeks ({A:1},{B:2},{E:5}) ;
	return -1;}

String.prototype.supplant = function (o) { 	// v.1.0 :: STRING replacement :: mydivVar.innerHTML = templateVar.supplant(data);  (JSON http://www.json.org/fatfree.html)
    return this.replace(/{([^{}]*)}/g, 
        function (a, b) {  
            var r = o[b];
            return typeof r === 'string' ? 
                r : a; 
        })} // Example "dkdkd {pieter} bvbv".supplant({pieter:"Henk"}) ; String '{pieter}' wordt vervangen door 'Henk'
	
// ---- 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) { 	// V1.0
	if ( /^[0-9]{1,6}\.{0,1}[0-9]{0,2}$/.test(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);
		} // Achter de comma
		return price;
	} else {
		return vPrice;
	} // EndIf
} // kgui_formatPriceStr()

function kgui_openPopup(vURL) {
	MM_findObj("popupiframe").src = vURL; 
	MM_findObj("popup").style.display = "block";
} // kgui_openPopup()

function kgui_makeBreadCrums(vHome,vDivider) {		// v1.3, name giving of foldernames are important
	var url = window.location.href ;
	var breadcrums = "<div>";
	var obj, crums, dot, name, uri="/";
	if (!vDivider) vDivider = " > ";
	if (!vHome) vHome = "Home ";
	switch ( url.substr(0,4) ) {
		case "file":
			url = url.substr(url.indexOf("website")+8) ;				// From 8 position, skipping 'file://../../../website/', removing C:/ folders
			crums = url.split("/");										// first one is root = emtpy, second one is firts folder, last one is actuele filename
			if ( crums[crums.length-1]=="" ) crums.pop();				// Last array item was empty (foldername ending with a / <-slash )
			breadcrums += "<a href='/homepage.php'>"+vHome+"</a>" ;
			for ( var i=0, mx=crums.length-1, uri="/"; i<=mx; i++ ) {
				uri += crums[i]+"/";
				breadcrums += vDivider + "<a href='"+uri+"' title='"+crums[i]+"'>"+crums[i]+"</a>" ;
			}
			break;

		case "http":		
			url = url.substr(url.indexOf("/",7)) ;						// From 7 position, skipping 'http://', removing domainname
			crums = url.split("/");										// first one is root = emtpy, second one is first folder, last one is actuele filename or EMPTY
			if ( crums[0]=="" ) crums.shift();							// First array item was empty (domainname ending with a / <-slash )
			if ( crums[crums.length-1]=="" ) crums.pop();				// Last array item was empty (foldername ending with a / <-slash )
			breadcrums += "<a href='/homepage.php' title='"+vHome+"'>"+vHome+"</a>" ;
			if ( crums.length>0 )
				for ( var i=0, mx=crums.length; i<mx; i++ ) {
					if ( (dot=crums[i].indexOf(".")) < 0 ) {
						uri += crums[i]+"/";
						name = kgui_replaceUnderscores ( crums[i] );
					} else {
						uri += crums[i];
						name = kgui_replaceUnderscores ( crums[i].substr(0,dot) );
					}
					if ( name != "index" ) breadcrums += vDivider + "<a href='"+uri+"' title='"+name+"'>"+name+"</a>" ;
				} // EndFor folders in URL
			break;
	}
	return breadcrums + "</div>";
}

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_replaceUnderscores (vStr) { //v1.0
	var s=0, e=vStr.length, str=vStr;
	while (	 (s=str.indexOf("_"))!=-1 )	{ str = str.substring(0,s)+" "+str.substr(s+1); }
	return str;
}

var volgNr=0;	// For continuation of VOLGNR's
function kgui_cleanTRdata(vTableID,vOptions,vAction) { // v1.2 :: kgui_cleanTRdata(vTableID,"VOLGNR|DATUMCHECK=071231|ODDEVEN","STYLE=error|DELETE|VOLGNRCONTINUE");
	var flg_oddEven=false,flg_checkDate=false,flg_checkDate2=false,flg_volgnr=false,flg_deleteTR=false,flg_disableCurrTR=false,flg_volgnrContinue=false;
	var myTable = MM_findObj(vTableID);
	var myRowLst = myTable.getElementsByTagName("tr");
	var myNrRows = myRowLst.length;
	var myCellLst, myNrCells=0, trTitle="", trDate="";
	var 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;
		flg_volgnrContinue=argsA.zoek("VOLGNRCONTINUE")<0?false:true;
		if (!flg_volgnrContinue) {volgNr=0;}

		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(/<DATUM>/,kgui_convertJJMMDD(trDate));
					if (flg_volgnr && myCellLst[j].innerHTML.indexOf("<VOLGNR>")>=0 && !flg_disableCurrTR) {
						myCellLst[j].innerHTML = myCellLst[j].innerHTML.replace(/<VOLGNR>/,++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 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 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 "il" :		COOKIEDB[0].il = data_array[1]; break;
				case "ww" :		COOKIEDB[0].ww = 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)+"|il="+COOKIEDB[0].il +"|ww="+COOKIEDB[0].ww;

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

var highLiteTR = new Array() ;
function kgui_highLiteTR(vThis,vTag) { // v1.3
	var obj = vThis;
	if (vTag==undefined||vTag=="") vTag="TR";
	while (obj.tagName!=vTag) obj=obj.parentNode;
	if (obj.className.indexOf("hl")>=0) obj.className = highLiteTR.zoek(obj.id);
	else { highLiteTR[obj.id] = obj.className; obj.className = obj.className + " hl"; }
} // kgui_highLiteTR()


// ---- AJAX functions --------------------------------------------------
function kgui_createRequest () { // V1.1
	try {
  		AJAXrequest = new XMLHttpRequest();
	} catch (trymicrosoft) {
  		try {
    		AJAXrequest = new ActiveXObject("Msxml2.XMLHTTP");
  		} catch (othermicrosoft) {
    		try {
      			AJAXrequest = new ActiveXObject("Microsoft.XMLHTTP");
    		} catch (failed) {
      			AJAXrequest = false;
    		}}}

	if (!AJAXrequest)
  		alert("Jouw browser ondersteunt geen XMLHttpRequest (AJAX).");
	return AJAXrequest;
}

function kgui_getFileDate(vTitel) {
	var xmlHttp = kgui_createRequest();		// Create an connection

	xmlHttp.onreadystatechange = function() {
		// xmlHttp.readyState hase been changed, it will automatically call xmlHttp.onreadystatechange()
		switch (xmlHttp.readyState) {
			case 0 :		// The request is not initialized
				break;
			case 1 :		// The request has been set up
				break;
			case 2 :		// The request has been sent
				break;
			case 3 :		// The request is in process
				break;
			case 4 :		// The request is complete, data available
				// The data sent back from the server can be retrieved with the responseText property.
				MM_findObj("mutatieDatumDiv").innerHTML = vTitel+" "+xmlHttp.responseText;
				break;
		} // EnwSwitch readyState
	} // onreadystatechange();

	xmlHttp.open("GET","/phplib/filedate.php?url=" + escape(window.location.href), true);
	xmlHttp.send(null);
} // kgui_getFileDate()
