// -----------------------------------------------------------------------------------
// FORM HANDLING -  GENERAL USE
// -----------------------------------------------------------------------------------
function checkFormNL(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory) {
	try {	var jValue, jType, jMsg="", jRegExp, jCount=0, jFormObj, jGotError, jMaxError = 5;

			for (var y=0; y<jFields.length; y++) { 
				if (checkFormObject(jFields[y], jFormName)) {	
						jFormObj = document.forms[jFormName].elements[jFields[y]];
						jValue	 = ""; jGotError = false;

						try { jType = jFormObj.type;  } catch (excp) {  }
						try { jType = jType.toUpperCase(); } catch (excp) { jType = ''; }

						if  (jType=='SELECT') { jValue = jFormObj.options[jFormObj.selectedIndex].value; } 
						else if (jType=='SELECT-ONE') { jValue = jFormObj.options[jFormObj.selectedIndex].value; } 
						else if (jType=='RADIO') { jValue = checkRadioButton(jFormObj); }
						else if (jType=='TEXT') { jValue = jFormObj.value; }
						else if (jType=='CHECKBOX') { jValue = jFormObj.checked.toString(); if ((jValue=='0') || (jValue=='false')) { jValue=''; } }
						else if (jType=='TEXTAREA') { jValue = jFormObj.value; }
						else if (jType=='FILE') { jValue = jFormObj.value; }
						else if (jType=='HIDDEN') { jValue = jFormObj.value; }
						else if (jType=='PASSWORD') { jValue = jFormObj.value; }
						else if (checkIsArray(jFormObj)) { jType='RADIO'; jValue = checkRadioButton(jFormObj); } 

						// only validate input if it is required or when it is filled.
						if ((jValue.length>0) || (jMandatory[y].toLowerCase()=="true")) {
							jValue = jValue.replace(/^\s+|\s+$/g,"gi"); jRegExp = new RegExp(jChecks[y],"gi"); 
							if (jRegExp.test(jValue) == false) { jGotError = true; }
						
							if (jGotError == true) { 
								if (checkObject(jFields[y]+'ID')) { document.getElementById(jFields[y]+'ID').innerHTML = jFieldMsg[y]; } jCount+=1;
								if (jCount<jMaxError) { jMsg += "- " + jFields[y] + ': '+ jFieldMsg[y] + "\n"; }  
							} else { if (checkObject(jFields[y]+'ID')) { document.getElementById(jFields[y]+'ID').innerHTML = ''; } }
						}
				}
			}

		// normal handling
		if (jCount>=jMaxError) { jMsg += "...\n";  }
		if (jMsg.length> 0) { alert("Niet alle velden zijn correct ingevuld.\n \n"+jMsg+"\n Controleer de ingevulde gegevens en probeer het opnieuw."); return false; }
		if (jMsg.length==0) { 
				if (checkObject(jFormName+"SentButton")) { document.getElementById(jFormName+"SentButton").disabled = true;  }
				if (checkFormObject("SentButton", jFormName)) { document.forms[jFormName].elements["SentButton"].disabled = true;  }
				if (checkFormObject("sendingformallowed", jFormName)) { document.forms[jFormName].elements['sendingformallowed'].value = '556d699968986a989a9869986e989a986c709d98989898989b996c986a9869'; }
				document.forms[jFormName].action = jAction.toLowerCase();
		}

	} catch (excp) { alert('Current webbrowser is not supported.\nError: '+excp); return false; }
}

// check value of raiobuttons
function checkRadioButton(jObj) {
    var cnt = -1;
    for (var i=jObj.length-1; i > -1; i--) { if (jObj[i].checked) {cnt = i; i = -1;} }
    if (cnt > -1) return jObj[cnt].value;
    else return '';
}

// checks if an object is an array
function checkIsArray(jObj) {
	try {    if (jObj.length>0) { return true; } else { return false };
	} catch (excp) { return false }
}

// checks if an object exists
function checkObject(jID) { 
	try { var o = document.getElementById(jID); if (o) { return true } else { return false }
	} catch (excp) { return false }
}

// checks if an form object exists
function checkFormObject(jName, jFormName) { 
	try { var o = document.forms[jFormName].elements[jName]; if (o) { return true } else { return false }
	} catch (excp) { return false }
}

// checks date format
function validateDate(jValue) {
	var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[-](0?[13578]|1[02])[-]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[-](0?[13456789]|1[012])[-]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[-]0?2[-]((1[6-9]|[2-9]\d)?\d{2}))|(29[-]0?2[-]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
	if ((jValue.match(RegExPattern)) && (jValue!='')) { return true } else { return false  } 
}

// -----------------------------------------------------------------------------------

// -----------------------------------------------------------------------------------
// FORM HANDLING -  SIGN UP FOR NEWSLETTER
// -----------------------------------------------------------------------------------
function checkNewsletterNL(jAction, jFormName, jDefaultName, jdefaultEmail) {
	var jFields		= Array("Naam","Emailadres");
	var jFieldMsg	= Array("5-100 karakters","naam@domein.nl");
	var jChecks		= Array(".{5,100}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
	var jMandatory	= Array("true","true");

	// do form validation
	var jReturnValue = checkFormNL(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory);

	// remove error messages if showed
	if (jFormName.indexOf('SideBox')>-1) {
		if (checkObject("NaamID"))			{ document.getElementById("NaamID").innerHTML = ''; }
		if (checkObject("EmailadresID"))	{ document.getElementById("EmailadresID").innerHTML = ''; }
	}

	return jReturnValue;
}

// -----------------------------------------------------------------------------------
// FORM HANDLING -  WERKGEVER CONTACT FORM
// -----------------------------------------------------------------------------------
function checkWerkgeverOfferte(jAction, jFormName) {
	var jFields = Array("Bedrijfsnaam","Geslacht","Voornaam","Tussenvoegsel","Achternaam","Telefoonnummer","Emailadres","Opmerkingen");
	var jFieldMsg = Array("3-100 karakters","Maak een keuze","3-50 karakters","0-100 karakters","3-100 karakters","3-25 karakters","naam@domein.nl","min. 0 karakters");
	var jChecks = Array(".{3,100}",".{3,}",".{3,50}",".{0,100}",".{3,100}",".{3,25}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$",".{0,}");
	var jMandatory = Array("true","true","true","false","true","true","true","false");

	return checkFormNL(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory);
}

// -----------------------------------------------------------------------------------
// SIGNIN
// -----------------------------------------------------------------------------------
function InloggenWerknemer(jFormObj, jAction) {
	try {	var jFields		= Array("EmailadresLogin","WachtwoordLogin");
			var jFieldMsg	= Array("naam@domein.nl", "4-15 karakters");
			var jChecks		= Array("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$", ".{4,15}");
			var jMandatory	= Array("true","true");

			// remove error messages if showed
			if (checkObject("EmailadresID"))	{ document.getElementById("EmailadresID").innerHTML = ''; }
			if (checkObject("WachtwoordID"))	{ document.getElementById("WachtwoordID").innerHTML = ''; }

			// do form validation
			var jReturnValue = checkFormNL(jAction, jFormObj.name, jFields, jFieldMsg, jChecks, jMandatory);

			// remove error messages if showed
			var jErrMsg = '';
			if ((checkObject("InloggenMsgTR")) && (jReturnValue==false))	{ 
				document.getElementById("InloggenMsgTR").style.display = ''; 
				if (checkObject("WachtwoordID"))	{ if (document.getElementById("WachtwoordID").innerHTML!='') { jErrMsg = 'Ongeldig wachtwoord.'; }}
				if (checkObject("EmailadresID"))	{ if (document.getElementById("EmailadresID").innerHTML!='') { jErrMsg = 'Ongeldig emailadres.'; }}
				document.getElementById("InloggenMsg").innerHTML = jErrMsg; 
				return false;
			}
	} catch (excp) { return false; }
}



// -----------------------------------------------------------------------------------
// RESPOND TO VACATURE
// -----------------------------------------------------------------------------------
function werknemerVacatureReageren(jFormName, jAction) {
	var jFields = Array("VacatureNr","Motivatie");
	var jFieldMsg = Array("1-50 karakters","min 15 karakters");
	var jChecks = Array(".{1,50}",".{15,}");
	var jMandatory = Array("true","true");

	return jReturnValue = checkFormNL(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory);
}

// -----------------------------------------------------------------------------------
// RESPOND TO VACATURE
// -----------------------------------------------------------------------------------
function checkSponsorAanvraag(jFormName, jAction) {
	var jFields		= Array("Naam_instantie","Contactpersoon","Telefoon","Email","Sponsor_verzoek");
	var jFieldMsg	= Array("1-100 karakters","1-100 karakters","bv 020-1234567","bv naam@domein.nl","min. 10 karakters");
	var jChecks		= Array(".{1,100}",".{3,100}",".{10,100}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$",".{1,}");
	var jMandatory	= Array("true","true","true","true","true");

	return jReturnValue = checkFormNL(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory);
}



// -----------------------------------------------------------------------------------
// JQUERY INITS
// -----------------------------------------------------------------------------------
 $(document).ready(function(){ 

	// set hovers
	// -------------------------------------------------------------------------------
	wsw_setHovers();

 });



// set hovers, we need a seperate function becus it's also called after ajax call
function wsw_setHovers() {
	// Vacature overview 
	$('#VacatureOverzicht tr').hover( function(){ if ($(this).children('th').length==0) { $(this).addClass('hover'); } }, // A mouseover
									  function(){ $(this).removeClass('hover'); });		// A mouseout

	$('#VacatureOverzicht tr').click(function() { var jLink = $(this).find('A'); if (jLink[0]!=undefined) { self.location.href = jLink[0];} });
}

