// JavaScript Document
// SOOJ     returnpoint   20110210
// venivide resize screen 20110208
<!--

var xml_ErrorColor    = "#FFCCCC";
var xml_ErrorColorRGB = "rgb(255, 204, 204)";
var xml_ValidColor    =  "#FFFFFF";
var xml_ValidColorRGB = "rgb(255, 255, 255)";
var xml_CenturyBorder = 70; 

function xmltag_move_to_anchor() {
// 20101101	
//	window.location.hash="cursor";
	return;
}

function xmltag_onclick_warning(nErrors,text) {
	var ok;
	if ((!nErrors) && (text != undefined)) {
		ok=confirm(text);
		if (!ok) {nErrors = nErrors++}
	} 
	return nErrors;
}

function xmltag_onclick_status(nErrors,status,table,alias,primary,page,returnpoint) {

	if (!nErrors) {if (status == undefined) {nErrors = xml_inputError(nErrors,false,"", "status undefined","STA-001")}}
	nErrors = xml_IdDefined(nErrors,"status_form","STA-002");
	nErrors = xml_IdDefined(nErrors,"table_form","STA-002");
	nErrors = xml_IdDefined(nErrors,"alias_form","STA-002");
	nErrors = xml_IdDefined(nErrors,"primary_form","STA-002");
	nErrors = xml_IdDefined(nErrors,"page_form","STA-002");
	nErrors = xml_IdDefined(nErrors,"return_form","STA-002"); //SOOJ 20110210
	
	if (!nErrors) {
		if (status != undefined)         {document.getElementById("status_form").value = status}
		if (table != undefined)          {document.getElementById("table_form").value = table}
		if (alias != undefined)          {document.getElementById("alias_form").value = alias}
		if (primary != undefined)        {document.getElementById("primary_form").value = primary}
		if (page != undefined)           {document.getElementById("page_form").value = page}
		if ((returnpoint != undefined) && (returnpoint))    {document.getElementById("return_form").value = returnpoint} //SOOJ 20110210
	}
	
	return nErrors;
}

function xmltag_onclick_submit(nErrors,form,url) {

	if (nErrors) {nErrors = xml_inputError(nErrors,false,"", "Corrigeer de fouten en probeer opnieuw","")};
	if (!nErrors){
		if (document.getElementById(form) == undefined) {
			nErrors = xml_inputError(nErrors,false,"", "Fout bij opslaan van formulier " + form,"SUB-001")
		}
	}
	
	if (!nErrors) {
		if (url != "") { 
			document.getElementById(form).action = url;
		}
		//SOOJ 20110210
		if (document.getElementById("return_form").value) {
			document.getElementById(form).action = document.getElementById(form).action = "#" + document.getElementById("return_form").value;
		}
        document.getElementById(form).submit();
	}
		
	return nErrors;
}

function xmltag_validate_mandatory (nErrors,i,field,text,where) {
  
   if (xml_isHidden_field(field,i)) {return nErrors}
   var fieldf =  xml_fieldname(field,i,"form");

   if (xml_IdDefined(0,fieldf ,"MAN-001")) {nErrors++; return nErrors}
   if (!xml_where(i,field,where)) {return nErrors}
   if (xml_trim(document.getElementById(fieldf).value) == "") {
		  nErrors = xml_inputError(nErrors, i,field, text ? text : "verplicht","" );
   }

 return nErrors;
}

function xml_isHidden_field (field,i) {
	var fieldf =  xml_fieldname(field,i,"field");
	var className = " " + document.getElementById(fieldf).className + " ";
	
	if (className.indexOf(" hidden ") >= 0) {
	  return true;
	}
	
	if (document.getElementById(fieldf).style.visibility == "hidden") {
		return true;
	}
	
	return false;
}

function xmltag_validate_date (nErrors,i,field) {

   if (xml_isHidden_field(field,i)) {return nErrors}
   var fieldf = xml_fieldname(field,i,"form");

   if (xml_IdDefined(0,fieldf ,"DAT-001")) {nErrors++; return nErrors}
   if (document.getElementById(fieldf).value != "") {
   	  nErrors = xml_validate_date(nErrors,i,field);
   }

   return nErrors;
}
 
function xmltag_validate_time (nErrors,i,field) {

   if (xml_isHidden_field(field,i)) {return nErrors}
   var fieldf = xml_fieldname(field,i,"form");

   if (xml_IdDefined(0,fieldf ,"TIM-001")) {nErrors++; return nErrors}
   if (document.getElementById(fieldf).value != "") {
   	  nErrors = xml_validate_time(nErrors,i,field);
   }

   return nErrors;
}
 

function xmltag_validate_cond (nErrors,i,field,text,where,value2,operator,operatortext,type) {
	
	var format1, format2;
 
   if (xml_isHidden_field(field,i)) {return nErrors}
   if (!xml_where(i,field,where)) {return nErrors}
   var fieldf1 =  xml_fieldname(field,i,"form");
   var value1;
   var conditie;
   var field2;
   var fieldf2;
   value2 = xml_trim(value2);
   if ((value2.substr(0,1) == "^") && (value2.substr(value2.length-1,1)== "^")) {
	  field2  = value2.substr(1,value2.length-2);
	  fieldf2 = xml_fieldname(field2,i,"form"); 
	  if (document.getElementById(fieldf2)) {
		 value2 = document.getElementById(fieldf2).value;
	  } else {
		 value2 = "";
	  }
   }

   if (document.getElementById(fieldf1)) {value1 = document.getElementById(fieldf1).value;}
  if ((value1 == "") || (value2 == "")) {return nErrors}  
  
  switch(operator)
	{
     case "in":
	 case "ends":
	 case "begins":
	 case "contains":
	   if (xmltag_validate_multicond(value,operator,value2)) {return nErrors} 
       if (value2.indexOf("," + value + ",") > 0) {return nErrors}
	   var lastcomma =  value2.lastIndexOf(",");
	   if (lastcomma >= 0) {
	   		value2 = value2.substr(0,lastcomma) + " of " + value2.substr(lastcomma+1)
	   }
	   nErrors = xml_inputError(nErrors,i,field, text ? text : valuetext.replace("^^",value2),"")
	    return nErrors;
	   break;
	  default:
	    switch (type)
		  {
		   case "date": 
		     format1  = xml_yyyymmdd(value1); 
			 format2  = xml_yyyymmdd(value2);
			 break;
		   case "time":
		     format1  = xml_uumm(value1); 
			 format2  = xml_uumm(value2);
			 break;
		   case "textarea": 	 
		   case "text": 
		     format1  = xml_text(value1); 
			 format2  = xml_text(value2);
			 break;
		   default:
		     format1  = value1; 
			 format2  = value2;
			 break;
		  }
 
        if ((format1 == "") || (format2 == "")) {return nErrors}  
	    conditie = format1 + " " + operator + " " +   format2 + ";"	
        if (eval(conditie)) {return nErrors}
	    nErrors = xml_inputError(nErrors,i,field, text ? text : operatortext.replace("^^",value2),"")
		return nErrors;
    }

 return nErrors;
}

function xmltag_validate_multicond (value,operator,reeks) {
	var arr_reeks = reeks.split(",");
	var max_i     = arr_reeks.length;
	var val_len   = value.length;
	for (i=0;i<max_i;i++) {
		if ((operator == "in") && (arr_reeks[i] == value)) {return true} 
		if ((operator == "begins") && (value.indexOf(arr_reeks[i]) == 0))  {return true}
		if ((operator == "contains") && (value.indexOf(arr_reeks[i]) >= 0))  {return true}		
		if ((operator == "ends") && ((value.indexOf(arr_reeks[i]) + arr_reeks[i].length) == val_len))  {return true} 		
	}
	return false;
}







function xmltag_onclick_validate_update_textarea (nErrors,i,field) {

 return nErrors;
}

function xml_IsError(i,field)  {
  var fieldf =  xml_fieldname(field,i,"form");
  var isError = false;

  return isError;
}


function xmltag_validate_thetext(nErrors,i,field) {
    var fieldf =  xml_fieldname(field,i,"form");	
	var value = document.getElementById(fieldf).value;
	if (value == "") {return nErrors}
	if ((value.substr(0,3) == "de ") || (value.substr(0,4) == "het ")) {return nErrors} 
	
	return  xml_inputError(nErrors,i,field,"lidwoord de of het ontbreekt");
	
}

function xml_yyyymmdd (value) {
	var re_date  = /^\s*(\d{2,2})[\-\/\:\.\ ](\d{2,2})[\-\/\:\.\ ](\d{4,4})\s*$/;
    if (re_date.exec(value)) {
		var n_day = Number(RegExp.$1),
	        n_month = Number(RegExp.$2),
         	n_year = Number(RegExp.$3);
			value = "'" + n_year + "-" + (n_month < 10 ? '0' : '')  + n_month + "-" + (n_day < 10 ? '0' : '')  + n_day + "'";
	} else {
		value = "";
	}
	
	return value;
}

function xml_uumm (value) {
	
	var re_time  = /^\s*(\d{2,2})[\:\.\-\,\;](\d{2,2})\s*$/;
    if (re_time.exec(value)) {
		var n_uur = Number(RegExp.$1),
	        n_min = Number(RegExp.$2);
			value = "'" + (n_uur < 10 ? '0' : '')  + n_uur + ":" + (n_min < 10 ? '0' : '')  + n_min + "'";
	} else {
		value = "";
	}
	return value;
}

function xml_text (value) {
	if (value) {
		value = value.replace(/\'/g,"\\\'")
		value =  "'" + value + "'";
	} else {
		value = "";
	}
	  
	return value;
}


function xml_validate_date(nErrors,i,field) {

	var fieldf =  xml_fieldname(field,i,"form");
	
   	var s_date = document.getElementById(fieldf).value;
	if (s_date == "")
	    return nErrors;
	
	var re_date  = /^\s*(\d{1,2})[\-\/\:\.\ ](\d{1,2})[\-\/\:\.\ ](\d{1,4})\s*$/;
	var re_date2 = /^\s*(\d{1,2})[\-\/\:\.\ ](\d{1,2})\s*$/;
	var today = new Date();

    if (!re_date.exec(s_date)) {
		if (!re_date2.exec(s_date)) {
			return xml_inputError(nErrors,i,field,"Formaat is dd-mm-jjjj","");
		} else {
		var n_day = Number(RegExp.$1),
			n_month = Number(RegExp.$2),
			
			n_year = today.getFullYear();
		}
	} else { 	
		var n_day = Number(RegExp.$1),
			n_month = Number(RegExp.$2),
			n_year = Number(RegExp.$3);
	}


	if (n_year < 100)
		n_year += (n_year < xml_CenturyBorder ? 2000 : 1900);
	if (n_month < 1 || n_month > 12)
		return  xml_inputError(nErrors,i,field,"Onjuiste maand");
	var d_numdays = new Date(n_year, n_month, 0);
	if (n_day > d_numdays.getDate())
		return  xml_inputError(nErrors,i,field,"Onjuiste dag");

    document.getElementById(fieldf).value = (n_day < 10 ? '0' : '') + n_day + "-"
		+ (n_month < 10 ? '0' : '') + (n_month) + "-"
		+ n_year;
		
	return nErrors;
}

function xml_validate_time(nErrors,i,field) {

	var fieldf =  xml_fieldname(field,i,"form");
	
   	var s_time = document.getElementById(fieldf).value;
	if (s_time == "")
	    return nErrors;
	
	var re_time  = /^\s*(\d{1,2})[\:\.\-\,\;](\d{1,2})\s*$/;
	var re_time2 = /^\s*(\d{1,2})\s*$/;

    if (!re_time.exec(s_time)) {
		if (!re_time2.exec(s_time)) {
			return xml_inputError(nErrors,i,field,"Formaat is uu:mm","");
		} else {
		var n_uur = Number(RegExp.$1),
			n_min = 0;
		}
	} else { 	
		var n_uur   = Number(RegExp.$1),
			n_min = Number(RegExp.$2);
	}

    if (n_uur == 24 ) {n_uur = 0}
	if (n_uur >= 24) {return  xml_inputError(nErrors,i,field,"Onjuist uur")}
	if (n_min >= 60) {return  xml_inputError(nErrors,i,field,"Onjuiste minuten")}	

    document.getElementById(fieldf).value = (n_uur < 10 ? '0' : '') + (n_uur+"") + ":"
		+ (n_min < 10 ? '0' : '') + (n_min+"");

	return nErrors;
}


function xml_IdDefined(nErrors,field,ErrorCode) {
	if (document.getElementById(field) == undefined) {
		nErrors = xml_inputError(nErrors,false,"", field + " undefined",ErrorCode)
	}
   return nErrors;  	
}

function xml_hide_field(i,field) {
	
   if (xml_change_className(i,field,"field","","hidden")) {
	   var rfield = xml_fieldname(field,i,"error");
	   xml_SetValidColor(rfield);
   }
/*	  
   var className;
   var rfield = xml_fieldname(field,i,"field");
   if (document.getElementById(rfield)) {
	   className = ""+ document.getElementById(rfield).className + ""; 
	   if (className.indexOf(" hidden ") < 0) {
	       className = xml_trim(className) + " hidden";
		   document.getElementById(rfield).className = xml_trim(className) + " hidden";
	   }
	    	   
//	   document.getElementById(rfield).style.visibility = "hidden"; 
   }
   var rfieldf = xml_fieldname(rfield,i,"form");
   if (document.getElementById(rfieldf)) {
	  xml_SetValidColor(rfield); 
	  document.getElementById(rfieldf).value = ""; 
	  document.getElementById(rfieldf).style.visibility = "hidden"; 
    }
*/	
}

function xml_change_className(i,field,divType,fromClass,toClass) {
   var className;
   var rfield = xml_fieldname(field,i,divType);
   var ClassType = "hidden";
   var changed = false;  
   if (document.getElementById(rfield)) {
	   className = " "+ document.getElementById(rfield).className + " "; 
	   if (fromClass == "") {
		 if (className.indexOf(" " + toClass + " ") < 0) {
		   className = xml_trim(className) + " " + toClass;
		   document.getElementById(rfield).className = className;
		   changed = true; 
		 }
	   } else {
		 if (className.indexOf(" " + fromClass + " ") >= 0) {
		   if (toClass != "") {
			 toClass = " " + toClass
		   }	 
	       className = xml_trim(className.replace(" "+ fromClass + " ",toClass + " "));
		   document.getElementById(rfield).className = className;
		   changed = true;
		 } 
	   }
/*		   
	   if (className.indexOf(" " + fromClass + " ") >= 0) {
		 if (!hidden) {
	       className = xml_trim(className.replace(" "+ toClass + " "," "));
		   document.getElementById(rfield).className = className;
		   changed = true;
		 }
	   } else {
	     if (hidden) {
	       className = xml_trim(className) + " " + ClassType;
		   document.getElementById(rfield).className = className;
		   changed = true;
		 }
	   }
*/	   
   }
   
   return changed;
}

function xml_show_field(i,field) {
	
	  var divType   = "form";
	  var field_att = (field+"=").split("=");
      var fieldname = field_att[0];
	  var rfield    = xml_fieldname( fieldname,i,divType);
	  
	  if (document.getElementById(rfield)) {
        if (document.getElementById(rfield).value == "") {
			document.getElementById(rfield).value = field_att[1]; 
	 	 }
	  }
	  
	  if (xml_change_className(i, fieldname,"field","hidden","")) 
      {} 	
	
/*	
   var rfield = xml_fieldname(field,i,"form");
   if (document.getElementById(rfield)) {
	   document.getElementById(rfield).style.visibility = "visible";
   }
   rfield = xml_fieldname(field,i,"field");
   if (document.getElementById(rfield)) {
	  document.getElementById(rfield).style.visibility = "visible"; 
    }
*/	
}

function xml_visible_field(i,field,type,property) {
   var rfield = xml_fieldname(field,i,type);
   if (document.getElementById(rfield)) {document.getElementById(rfield).style.visibility = property; }
}

function xml_SetValidColor(field) {
  if (xml_change_className(false,field,"form","errcol","")) { 
      var fielde =  xml_fieldname(field,false,"error")
 	  if (document.getElementById(fielde)) {
	    document.getElementById(fielde).innerHTML = "";
        xml_change_className(false,field,"error","errtxt","error");
      }
  }
  
	
	
/*	 var fieldf = xml_fieldname(field+"_form");
     var fielde = xml_fieldname(field+"_error");
	 if (document.getElementById(fieldf)) {
	   document.getElementById( fieldf).style.backgroundColor = xml_ValidColor; 
	 }
//	 field = field.substr(0,field.length -5) ;
	 if (document.getElementById(fielde))  { 
    	 document.getElementById( fielde).innerHTML = "";
	     document.getElementById( fielde).display = "none";
         document.getElementById( fielde).style.visibility = "hidden";
	 }
*/	 
}

function xml_inputError(nErrors,i,field, text, ErrorCode) {
  var alertBox = true; 

  var fielde = xml_fieldname(field,i,"error");
  if (document.getElementById(fielde)) {
	text = text.replace("^^","");  
	text = text.replace("  "," ");
	text = xml_trim(text);
	document.getElementById(fielde).innerHTML = text;
	alertBox = false; 
  }

  xml_change_className(i,field,"form","","errcol");
  xml_change_className(i,field,"error","error","errtxt");
  
/*  
  if (field) {
	if (document.getElementById(fieldf) == undefined) {
	} else {
	   document.getElementById(fieldf).style.backgroundColor = xml_ErrorColor; 
	   if (document.getElementById(fielde) == undefined) {
	   } else {
	     document.getElementById(fielde).innerHTML        = text;
         document.getElementById(fielde).style.display    = "block";
         document.getElementById(fielde).style.visibility = "visible";
		 alertBox = false; 
	   }
	}
  }
*/ 

  
  if (alertBox) {
	text = text.replace("^^",field); 
	if (ErrorCode) {text = ErrorCode + ": " + text};
  	alert(text);
  }
  nErrors++
  
  return nErrors;	
} 

function xml_trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function xml_ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function xml_rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function xml_fieldname(field,row,suffix) {
	if ((field == "") || !field ) {
	   return field;
	}
	
	if ((suffix == undefined) || (suffix == "")) {
	} else {
		field = field + "_" + suffix;
	}
		
	if ((row == undefined) || (row == "") || !(row) ) {
	} else {
		field = "r" + row + "_" + field ;
	}	
	
	return field;
}


function xml_where ($i,$field,$where) {
   if (xml_trim($where) == "") {return true;} 	
   if (xml_trim($where) == "NULL") {return false;} 	  
   $where = xml_replace_var($where,$i,$field);
   if (xml_trim($where) == "") {return true;} 	
   if (xml_trim($where) == "NULL") {return false;} 
   $where = $where + ";";
   if (eval($where)) {return true;}
   return false;
}


function xml_replace_var($text,$row_i,$field) {
    var $next  = true;
	var $delimeter = "^"; 
    var $i = 0;
	var $n = 0;
	var $pos1, $pos2,$sub,$var,$varsub,$varpos,$repl,$reptype; 
	var $varf,$repvar;
	while (($next) && ($i < $text.length)) {
		  $n++;
		  if ($n > 10) {
			  $next = false;
			  xml_inputError(0,false,"", $field + " looping","REP-001")
			  return false;
		  }
		  $pos1 = $text.indexOf($delimeter, $i);
		  if ($pos1 == -1) {
			  $next = false;
		  } else if (!($text.substr($pos1+1,1)).match("^[a-zA-Z]")) {  
			$i = $pos1+1;
		  } else {
			 $pos2 = $text.indexOf($delimeter,$pos1+1);
			 if ($pos2 == -1) {
				$next = false;
			 } else {
				$sub    = $text.substr($pos1,$pos2-$pos1+1);
				$varsub = $text.substr($pos1+1,$pos2-$pos1-1);
				$varpos = $varsub.indexOf(":");
				if ($varpos  == -1) {
					$var     = $varsub;	
					$repl    = "undefined";	
				} else {
					$var     = $varsub.substr(0,$varpos);
					$repl    = $varsub.substr($varpos+1,$varsub.length-$varpos);
				}
				$varf = xml_fieldname($var,$row_i,"form");
			//	debug("xml_replace_var var",$var,"replace");
				/* 20101126 var met een lengte van 1 niet vervangen ivm tijd e.d.*/
				if ($var.length == 1) {
				   	$i = $pos2+1;
					$reptype = false;	
				 } else if ((document.getElementById($varf) != undefined) && (document.getElementById($varf).value != "")) {
					  $repvar = document.getElementById($varf).value;
                      $text = $text.replace($sub,$repvar);
					  $reptype = "FORM";	
				 } else if ($repl.toLowerCase() != "undefined") {
					if ($repl == "true") {
					  $text = "1 == 1  ";  
					  $next = false;
					   $reptype = "TRUE";
					} else if ($repl.toLowerCase() == "false") {
					  $text = "1 != 1  ";  
					  $next = false;	
					  $reptype = "FALSE";
					} else if ($repl.toLowerCase() == "null") {
					  $text = "NULL  ";  
					  $next = false;	
					  $reptype = "NULL";  
					} else {
					  $text = $sub.replace($repl,$text);
					  $reptype = "REPL";
					}
				 } else {
					$i = $pos2+1;
					$reptype = false;
				 }
			 }
		  }
		}

    $text = xml_str_ireplace(" le "," <= ",$text);
	$text = xml_str_ireplace(" ge "," >= ",$text);
	$text = xml_str_ireplace(" gt "," > ",$text);
	$text = xml_str_ireplace(" lt "," < ",$text);
	$text = xml_str_ireplace(" eq "," == ",$text);
	$text = xml_str_ireplace(" ne "," != ",$text);
	$text = xml_str_ireplace(" = "," == ",$text);
	$text = xml_str_ireplace(" and "," && ",$text);
	$text = xml_str_ireplace(" or "," || ",$text);

	return $text;
}


function xml_str_replace ($search,$replace,$text) {
	return $text.replace(new RegExp($search, 'g'),$replace);
}

function xml_str_ireplace ($search,$replace,$text) {
	return $text.replace(new RegExp($search, 'gi'),$replace);
}

// venivide resize screen 20110208
function xml_resizeScreen(cssId,cssFiles,cssRefresh)
  {
   //cssFiles: normal.css,[minB,maxB,minH,maxH,File][,..]
   var myWidth       = 0; 
   var myHeight      = 0;
   var cssResizeFile ;
   var cssDir, cssFile,cssLocation, i, n;
   var pMinB = 0; var pMaxB = 1; var pMinH = 2; var pMaxH = 3; var pFile = 4;
   
   if( typeof( window.innerWidth ) == 'number' ) 
      { //Non-IE 
        myWidth = window.innerWidth; 
        myHeight = window.innerHeight; 
      } 
    else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
      { //IE 6+ in 'standards compliant mode' 
        myWidth = document.documentElement.clientWidth; 
        myHeight = document.documentElement.clientHeight; 
      }
    else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
      { //IE 4 compatible 
         myWidth = document.body.clientWidth; 
         myHeight = document.body.clientHeight; 
      } 

	cssLocation = document.getElementById(cssId).href;
	n = cssLocation.lastIndexOf("/"); 
	cssFile = cssLocation.substr(n+1);
	cssDir  = cssLocation.substr(0,n+1);
	
	//cssDir, cssFile = xml_CurrentCssFile(cssId)[0,1];
	cssResizeFile = cssFiles[0];
	for (i = 1; i < cssFiles.length;i = i+5) {
		if (((myWidth  >= cssFiles[i+pMinB]) || (cssFiles[i+pMinB] == 0)) &&
		    ((myWidth  <= cssFiles[i+pMaxB]) || (cssFiles[i+pMaxB] == 0)) &&
			((myHeight >= cssFiles[i+pMinH]) || (cssFiles[i+pMinH] == 0)) &&	
			((myHeight <= cssFiles[i+pMaxH]) || (cssFiles[i+pMaxH] == 0)) 
		   ) {
		    cssResizeFile = cssFiles[i+pFile];
			i = cssFiles.length + 1;
		 }  
	}

	
	if (cssFile != cssResizeFile) {
	   document.getElementById(cssId).href = cssDir+cssResizeFile;
	   if (cssRefresh) { //IErefresh
	  	 var setCss = "document.getElementById('"+cssId+"').href = '"+cssDir+cssResizeFile+"'";
	   	var timer = setTimeout(setCss, 50);
	   }
	}

	return [myWidth,myHeight];
}


-->

