// ---------------------------------------------------------------------
// JAVASCRIPT	: Kamper GUI, Macromedia-Adobe javascripts
// REVISION		: v1.4.0 08 april 2008
// ---------------------------------------------------------------------

Array.prototype.zoek = function (element) {	// v.1.1
	for (var keys in this) {
		if (keys == element) {return this[keys]; break;}}	// Voor assiociatieve Arrays reeks["naam"] = "Pieter" ;
		// if (this[keys] == element) {return keys; break;}}	// 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; 
        })} // Exmaple "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_stripspaces (vStr) { //v1.0
	var s=0, e=vStr.length-1;
	while (	vStr.charAt(s)==" " ) {s++}
	while (	vStr.charAt(e)==" " ) {e--}
	return vStr.slice(s,++e);
}

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(/&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 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 '';}

var highLiteTR = new Array() ;
function kgui_highLiteTR(vThis) { // v1.1
	var obj = vThis;
	while (obj.tagName!="TR") obj=obj.parentNode;
	if (obj.className=="hl") obj.className = highLiteTR.zoek(obj.id);
	else { highLiteTR[obj.id] = 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). Top 10 issue lijst niet mogelijk.");
	return AJAXrequest;
}