//fieldvalidation
var aReqFields = new Array();
var aReqFields1 = new Array();
var undefined;

function WriteBase() {
    document.write(BaseURL);
}

function AddRequired(sFieldName,sLabel){
	var i = aReqFields.length;
	aReqFields[i] = new Array();
	aReqFields[i][1] = sFieldName;
	aReqFields[i][2] = (sLabel==undefined)?sFieldName:sLabel;
}

function Validate(form, bPhoneCheck){
	var tmpObj;
	var pass = true;
	var i;
	var strReturn = "";
	var objFocus;
	for(i=0;i<aReqFields.length;i++){
//alert(aReqFields[i][1]+' = '+form[aReqFields[i][1]]);
		tmpObj=form[aReqFields[i][1]];
//alert(tmpObj.name + '\n' + tmpObj.parentElement.parentElement.className);
		if(tmpObj.type != undefined){ 
			if (tmpObj.type=="text"||tmpObj.type=="textarea"||tmpObj.type=="password"){
				if(tmpObj.value==""){ 
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields[i][2]+" \n";
				}
			}else if(tmpObj.type.substring(0,6)=="select"){
				if(tmpObj.options[tmpObj.selectedIndex].value==''){
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields[i][2]+" \n";
				}
			}else if(tmpObj.type.substring(0,4)=="file"){
				if(tmpObj.value==""){ 
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields[i][2]+" \n";
				}
			}else if(tmpObj.type.substring(0,8)=="checkbox"){
				if(!tmpObj.checked){
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields[i][2]+" \n";
				}
			}
		}else if(!checkRadios(aReqFields[i][1])){
			pass = false;
			if (strReturn==""){
				objFocus = tmpObj;
			}
			strReturn += "- " + aReqFields[i][2]+" \n";
		}
	}
	
	//check either telephone or mobile is filled in
	if(bPhoneCheck){
		if(!hasMinPhone()){
			pass = false;
			if (strReturn==""){
				objFocus = document.forms[0]['!phoneNumber'];
			}
			strReturn += "- Een van Telefoon Prive, Mobiel of Werk\n";
		}
	}
	
	if (!pass){
		objFocus.focus();
		alert("U bent de volgende velden vergeten in te vullen:\n" + strReturn);
	}
	return pass;
}

function checkRadios(sName) {
	var el = document.forms[0].elements;
	for(var i = 0 ; i < el.length ; ++i) {
		if(el[i].type == "radio" || (el[i].type == "checkbox" && el.length>1)) {
			if(el[i].name == sName){
				var radiogroup = el[el[i].name]; // get the whole set of radio buttons.
				var itemchecked = false;
				for(var j = 0 ; j < radiogroup.length ; ++j) {
					if(radiogroup[j].checked) {
						itemchecked = true;
						break;
					}
				}
				if(!itemchecked) { 
					if(el[i].focus)	el[i].focus();
					return false;
				}
			}
		}
	}
	return true;
}

//checks if the forms has at least one telepohone number
function hasMinPhone(){
	var tele = document.forms[0]['!phoneNumber'];
	var mob = document.forms[0]['!mobileNumber'];
	var zak = document.forms[0]['!phoneNumberBusiness'];
	if ((tele.value=="") && (mob.value=="") && (zak.value=="")){
		return false;
	}
	return true;
}

function isPopup(){
	if(window.opener!=undefined){
		document.write('<a href="#" OnClick="window.close()">Sluit dit venster </a>');
	}
}

function checkAll(formname,checkname,state){
	var el_collection=eval("document.forms."+formname+"."+checkname)
	for (c=0;c<el_collection.length;c++)
		el_collection[c].checked=state
}

function SubmitForm(bPhoneCheck,bVakgebied) {
	if(Validate(document.forms[0], bPhoneCheck)) {
		if(bVakgebied){
			setPublicatie(document.forms[0]['!productType1Node'], document.forms[0]['!postalCode']);
		}
		document.forms[0].submit();
	}
}
	
function SubmitForm2() {
	if(Validate1(document.forms[1], false)) {
		document.forms[1].submit();
	}
}

function checkPostcode(field){
	//pattern wanted is number, number, number, number, space(optional), Ucase(letter), Ucase(letter)
	var val = field.value.toUpperCase();
	var lngth = val.length;
	var pattern = /^\d{4} [A-Z]{2}$/;
	var nosppat = /^\d{4}[A-Z]{2}$/;
	var newresult = "";
	
	// forgot space?
	if (val.match(nosppat)) {
		newresult = val.substring(0,4)+" "+val.substring(4,6);
		val=newresult;
	}
	//is the format good?
	if(!val.match(pattern) && !val=="") {
		field.focus();
		alert("De Postcode is niet correct. Gebruik: '9999 AA'");
		return false;
	}
	else {
		field.value = val;
		return true;
	}
}

function checkNumber(field, display) {
	var value = field.value;
	var pattern = /^[0-9]*$/;
	
	if(!pattern.test(value) && !value=="") {
		alert("U heeft geen geldig " + display + " ingevuld.");
		field.focus();
		return false;
	}
	return true;
}

function checkHours(field, display) {
   var result = checkNumber(field, display);
	if (result && field.value.length > 0)
   {
      if (field.value < 4 || field.value > 40)
      {
         alert('Gewenst aantal uur moet liggen tussen 4 en 40');
			field.focus();
         result = false;
      }
   }
	return result;
}

function checkPhoneNr(field, display) {
	var value = field.value;
	var pattern = /(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)/;
	
	if(!pattern.test(value) && !value=="") {
		alert("U heeft geen geldig " + display + " ingevuld.");
		return false;
	}
	return true;
}

function checkDateFormat(field, fieldname){
	var value = field.value;
	//var pattern = /^((([0-2]{1})?[0-9]{1})|(3[0-1]{1}))-((0?[1-9]{1})|(1[0-2]{1}))-(19|20)[0-9]{2}$/; 
	var pattern = /^(((((0[1-9])|(1\d)|(2[0-8]))-((0[1-9])|(1[0-2])))|((31-((0[13578])|(1[02])))|((29|30)-((0[1,3-9])|(1[0-2])))))-(((19|20)[0-9][0-9]))|(29-02-20(([02468][048])|([13579][26]))))$/;
	if(!pattern.test(value) && !value=="") {
		alert("U heeft geen geldig " + fieldname + " ingevuld (dd-mm-yyyy).");
		return false;
	}
	return true;
}

function checkURL(field) {
	var value	= field.value;
	var pattern = /^http\:\/\/(((((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))))|((([a-z0-9\-])+\.)+([a-z]{2}\.[a-z]{2}|[a-z]{2,4})))(\/.*)?$/;
	
	if(!pattern.test(value) && !value=="") {
		alert("U heeft geen geldige link ingevuld.");
		return false;
	}
	return true;
}

function isValidEmailAddress(field, display) {
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/; // valid
	var value = field.value + "";	
	if (!reg1.test(value) && reg2.test(value) || value=="") { // if syntax is valid
	  return true;
	}
	alert("U heeft geen geldig " + display + " ingevuld.");
	return false;
}

//open sollicitatie
//for a known bl without postcode manipulation necessary, return true
function setPublicatie(prod, postcode){
	//var aProdIgnore = none, I&B,Fin,Legal,Bio,VKVV,interne
	var aProdIgnore = new Array("","153","154","2547","2771","5765","5835");
	var aPubIgnore = new Array("2","15","16","17","3","14","2");
	var val;
	
	//is the prod object a select list or a hidden text field
	if(prod.type.substring(0,6)=="select"){
		val = prod.options[prod.options.selectedIndex].value;
	}else{
		val = prod.value;
	}
	for(i=0;i<aProdIgnore.length;i++){
		if(val==aProdIgnore[i]){
			document.forms[0].pub.value = aPubIgnore[i];
			return true;
		}
	}
	var code = parseInt(postcode.value.substring(0,4));
	var pubId = "-1";
	if(val=="2548"){ //ICT
		if((code < 2200) || (code > 2399 && code < 2500) || (code > 3399 && code < 4200)){
			pubId = "13";
		}else if((code > 2199 && code < 2400) || (code > 2499 && code < 3400) || (code > 4199 && code < 6500)){
			pubId = "12";
		}else if((code > 6499 && code < 7700) || (code > 7999 && code < 8300)){
			pubId = "11";
		}else if((code > 7699 && code < 8000) || (code > 8299 && code < 10000)){
			pubId = "10";
		}
	}else if(val=="157"){ //Engineering
		if((code > 2199 && code < 2400) || (code > 2499 && code < 3400) || (code > 4199 && code < 5000)){
			pubId = "9";
		}else if((code < 2200) || (code > 2399 && code < 2500)){
			pubId = "8";
		}else if((code > 3399 && code < 4200)){
			pubId = "7";
		}else if((code > 4999 && code < 6500)){
			pubId = "6";
		}else if((code > 6499 && code < 7700) || (code > 7999 && code < 8300)){
			pubId = "5";
		}else if((code > 7699 && code < 8000) || (code > 8299 && code < 10000)){
			pubId = "4";
		}
	}else{
		// as all prod id's should be catered for
		return false;
	}
	if(pubId!="-1"){
		document.forms[0].pub.value = pubId;
		return true;
	}
}	

function AddRequired1(sFieldName,sLabel){
	var i = aReqFields1.length;
	aReqFields1[i] = new Array();
	aReqFields1[i][1] = sFieldName;
	aReqFields1[i][2] = (sLabel==undefined)?sFieldName:sLabel;
}

function Validate1(form){
	var tmpObj;
	var pass = true;
	var i;
	var strReturn = "";
	var objFocus;
	for(i=0;i<aReqFields1.length;i++){
		//alert(aReqFields1[i][1]+' = '+form[aReqFields1[i][1]]);
		tmpObj=form[aReqFields1[i][1]];
		if(tmpObj.type != undefined){ 
			if (tmpObj.type=="text"||tmpObj.type=="textarea"||tmpObj.type=="password"){
				if(tmpObj.value==""){ 
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields1[i][2]+" \n";
				}
			}else if(tmpObj.type.substring(0,6)=="select"){
				if(tmpObj.options[tmpObj.selectedIndex].value==''){
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields1[i][2]+" \n";
				}
			}else if(tmpObj.type.substring(0,4)=="file"){
				if(tmpObj.value==""){ 
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields1[i][2]+" \n";
				}
			}else if(tmpObj.type.substring(0,8)=="checkbox"){
				if(!tmpObj.checked){
					pass = false;
					if (strReturn==""){
						objFocus = tmpObj;
					}
					strReturn += "- " + aReqFields1[i][2]+" \n";
				}
			}
		}else if(!checkRadios(aReqFields1[i][1])){
			pass = false;
			if (strReturn==""){
				objFocus = tmpObj;
			}
			strReturn += "- " + aReqFields1[i][2]+" \n";
		}
	}
	
	if (!pass){
		objFocus.focus();
		alert("U bent de volgende velden vergeten in te vullen:\n" + strReturn);
	}
	return pass;
}

function openBrWindow(theURL,winName,features) {
  window.open(theURL,winName,features);
}

function getIDedStyle (elementID) {
  var re = new RegExp("" + elementID + "$", "gi");
  alert('getIDedStyle: ' + elementID);
  if (document.all) {
    for (var s = 0; s < document.styleSheets.length; s++)
      for (var r = 0; r < document.styleSheets[s].rules.length; r++)
        if (document.styleSheets[s].rules[r].selectorText.search(re) 
!= -1) {
alert('found style!');
          return document.styleSheets[s].rules[r].style;
        }
  }
  else if (document.getElementById) {
    for (var s = 0; s < document.styleSheets.length; s++)
      for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
        if (document.styleSheets[s].cssRules[r].selectorText.search
(re) != -1){
          document.styleSheets[s].cssRules[r].sheetIndex = s;
          document.styleSheets[s].cssRules[r].ruleIndex = s;
          return document.styleSheets[s].cssRules[r].style;
        }
  }
  else if (document.layers)
    return document.ids[elementID];
  return null;
}

function getIDedStyleProperty (elementID, propertyName) {
  var styleClass = getIDedStyle(elementID);
alert(styleClass.name);
  if (styleClass)
    return styleClass[propertyName];
  else 
    return null;
}

