// ---------------------------------------------------------------------
// JAVASCRIPT	: Kamper GUI, Macromedia-Adobe javascripts
// REVISION		: v1.3.1 19mrt2008
// ---------------------------------------------------------------------

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;}}	// Oorspronkelijk ontwerp reeks (A:1,B:2,E:5) ;
	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_insertHTMLField (vAppendObjTo,vArr) {	// V 1.2
	// Eerste object in array moet een elemenet zijn : DIV, etc.
	// STYLE-tag werkt niet. Dat is een sub-dom :: elem.style.color= '#cccccc';
	// Maak een CLASS aan.
	var newNode = null;
	for ( var keys in vArr[0] ) {
 //		alert(keys + ' = "' + vArr[0][keys] + '"');
		if (keys=="element") newNode = document.createElement(vArr[0].element);
		else {
			if ( newNode[keys] == undefined ) {
				// alert ( keys + ' = ' + vArr[0][keys] ) ; // setAttribute 
				newNode.setAttribute ( keys, vArr[0][keys] );
			} else newNode[keys] = vArr[0][keys] ;
		} // EndIF
	} // EndFor
	
	// Append to Object vAppendObjTo
	vAppendObjTo.appendChild(newNode);

	// Insert before Object vAppendObjTo
	// var beforeMe = MM_findObj("wrapper");
	// document.body.insertBefore(newNode, beforeMe);

	return 	newNode;
} // kgui_insertHTMLField()

function deleteDomAndChilds(cell) {
	if ( cell.hasChildNodes() ) while ( cell.childNodes.length >= 1 ) cell.removeChild( cell.firstChild );       
	cell.parentNode.removeChild(cell); 
} // deleteDomAndChilds()

// ---------------------------------------------------------------------

function kgui_stripspaces (vStr) {
	var s=0, e=vStr.length-1;
	while (	vStr.charAt(s)==" " ) {s++}
	while (	vStr.charAt(e)==" " ) {e--}
	return vStr.slice(s,++e);
}

function kgui_cleanTRdata(vTableID,vOptions) { // vOptions="VORGNR|DATUMCHECK=071231|ODDEVEN"
	var flg_oddEven=false;
	var flg_checkDate=false;
	var flg_checkDate2=false;
	var flg_volgnr=false;
	var flg_rowDisabled=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="";
	
	if ( vOptions==undefined ) alert("KGUI : Parameter verwacht");
	else {
		args = vOptions.split("|");
		flg_volgnr=args.zoek("VOLGNR")<0?false:true;
		flg_oddEven=args.zoek("ODDEVEN")<0?false:true;
		for (var i=0,t=0;i<args.length;i++) {
			t=args[i].indexOf("DATUMCHECK");
			if (t>=0){flg_checkDate=true;vDate=args[i].substr(11);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>
				flg_rowDisabled=false;
			
				for( var j=0; j<myNrCells; j++) {	// Repeat for every <TD> in <TR>
					if (flg_checkDate2) {	// <TR TITLE="[date] is aanwezig
						// alert("Title:\""+myRowLst[i].title+"\" trDate:" +trDate+ "< vDate:"+vDate+"<");
						// alert("trDate("+Number(trDate)+") >= ("+Number(vDate)+")");
						if ( Number(trDate)>=Number(vDate) ) {
							myCellLst[j].innerHTML = myCellLst[j].innerHTML.replace(/&lt;DATUM&gt;/,kgui_convertJJMMDD(trDate));
						} else {
							myRowLst[i].className="nodisplay";
							flg_rowDisabled=true;
						}
					}
					if (flg_volgnr && myCellLst[j].innerHTML.indexOf("&lt;VOLGNR&gt;")>=0 && !flg_rowDisabled) {
						myCellLst[j].innerHTML = myCellLst[j].innerHTML.replace(/&lt;VOLGNR&gt;/,++volgNr);
					}
				} //EndForeach <TD> in <TR>
				if (!flg_rowDisabled&&flg_oddEven) {
					odd?myRowLst[i].clasName="odd":myRowLst[i].className="even";
					odd=!odd;
				}
			} //EndIf Er zijn <TD> aanwezig in deze <TR>
		} // EndForeach ROWS in TABLE
	} // EndIf PARAMETERS VERWACHT
}

var trc=new Array ();
function kgui_numberID () { // 1.0 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;
			}}}}

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 ) {
	if(!vClass) vClass="htrs" ;
	if ( vState ) {
		 oldStyle = MM_findObj(vId,window.document).className ;
		 MM_findObj(vId,window.document).className = vClass ;
	} else if (oldStyle != null) MM_findObj(vId,window.document).className = oldStyle ;
}

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()

var oldCellStyle1, oldCellStyle2 ;
function kgui_focusField(id) {
	oldCellStyle1 = MM_findObj(id+"1").className;
	MM_findObj(id+"1").className = "highlitetablerowveldtitel" ;
	oldCellStyle2 = MM_findObj(id+"2").className;
	MM_findObj(id+"2").className = "highlitetablerow" ;
}
function kgui_blurField(id){
	MM_findObj(id+"1").className = oldCellStyle1 ;
	MM_findObj(id+"2").className = oldCellStyle2 ;
}

