$(document).ready(function(){
	//global vars
	var toonbestelformulier = $("img#toon_bestelformulier");

	var formOrderticketUitburo = $("#q_sales");
	var formOrderticket = $("#orderticket_form");
	var ordertickets = $("div#ordertickets");
	var showbevestiging = $("div#bevestiging");

	// statisch bestelformulier (initiële opzet vanaf 3 april 2010)
	var activity = $("#activity");
	var activityInfo = $("#activityInfo");
	var qtickets = $("#qtickets");
	var qticketsInfo = $("#qticketsInfo");
	var tariff = $("#tariff");
	var tariffInfo = $("#tariffInfo");
	var rang1 = $("#rang1");
	var rang2 = $("#rang2");
	var rang3 = $("#rang3");
	var rangInfo = $("#rangInfo");
	// end statisch bestelformulier

	// validatie bij registratie en wijzigen accountgegevens
	var approveai = $("#approveai");
	var approveaiInfo = $("#approveaiInfo");

	// tarievenkiezer
	var rankNameFK = $("#rank_name_fk");
	var tarievenkiezerInfo = $("#tarievenkiezerInfo");
	var maxtickets = $("#max_tickets_per_sale");
	var totalltickets = $("#totalltickets");

	// Alleen de volgende tarieven worden gecontroleerd
	var tariffBIB = $("#t_115"); // Bibliotheekpas
	var tariffCP = $("#t_10"); // CJP
	var tariffCK = $("#t_11"); // Collegekt
	var tariffJub = $("#t_48"); // Jubileum HGO
	var tariffK = $("#t_15"); // Kinderprijs
	var tariffSC = $("#t_12"); // NEC seiz krt
	var tariffVB = $("#t_21"); // Vroegboek
	var tariffN = $("#t_9"); // Normaal

	// uw gegevens - personalia
	var title = $("#title_fk");
	var titleInfo = $("#titleInfo");
	var initials = $("#initials");
	var initialsInfo = $("#initialsInfo");
	var lastname = $("#lastname");
	var lastnameInfo = $("#lastnameInfo");
	var street = $("#homestreet");
	var streetInfo = $("#homestreetInfo");
	var streetnr = $("#homestreet_housenumber");
	var streetnrInfo = $("#homestreet_housenumberInfo");
	var zipcode = $("#homepostalcode");
	var zipcodeInfo = $("#zipcodeInfo");
	var city = $("#homecity");
	var cityInfo = $("#homecityInfo");
	var country = $("#homecountry_fk");
	var countryInfo = $("#countryInfo");
	var phone = $("#homephone");
	var phoneInfo = $("#phoneInfo");
	var email = $("#email3address");
	var emailInfo = $("#email3addressInfo");

	// uw gegevens - betaalwijze
	var paymentmethod = $("#payment_extra_cost_fk");
	var paymentmethodInfo = $("#payment_extra_cost_fkInfo");
	// uw gegevens - betaalwijze - automatische incasso
	var automatischeIncasso = $("#automatischeIncasso");
	var consumerAccountnumber = $("#consumeraccountnumber");
	var consumeraccountnumberInfo = $("#consumeraccountnumberInfo");
	// uw gegevens - betaalwijze - creditcard
	var creditCard = $("#creditCard");
	var consumercreditcardnumber = $("#consumercreditcardnumber");
	var consumercreditcardnumberInfo = $("#consumercreditcardnumberInfo");
	var creditcardname = $("#creditcard_name");
	var creditcardnameInfo = $("#creditcard_nameInfo");
	var cvccode = $("#cvc_code");
	var cvccodeInfo = $("#cvc_codeInfo");
	// uw gegevens - betaalwijze - automatische incasso
	var rekeningnummer = $("#rekeningnummer");
	var rekeningnummerInfo = $("#rekeningnummerInfo");
	
	//onAbort - Occurs when the users stops the loading of an image.
	//onBlur - Occurs when an object on the page is no longer the 'focus'.
	//onChange - Occurs when a text field is changed by the user.
	//onClick - Occurs when the users clicks an object.
	//onError - Occurs when a document, or image can't load correctly.
	//onFocus - Occurs when an object takes the 'focus'.
	//onLoad - Occurs when a page is loaded.
	//onMouseOver - Occurs when the mouse cursor moves over an object.
	//onMouseOut - Occurs when the mouse cursor moves off an object.
	//onSelect - Occurs when the user selects text in a text area.
	//onSubmit - Occurs when the user clicks the "submit" button on a form.
	//onUnload - Occurs when the user leaves a document.

	//On blur
	tariff.blur(validateTariff);
	title.blur(validateTitle);
	initials.blur(validateInitials);
	lastname.blur(validateLastname);
	zipcode.blur(validateZipcode);
	streetnr.blur(validateStreetnr);
	street.blur(validateStreet);
	city.blur(validateCity);
	phone.blur(validatePhone);
	email.blur(validateEmail);
	paymentmethod.blur(paymentMethod);
	approveai.blur(validateApproveai);
	consumerAccountnumber.blur(validateConsumeraccountnumber);
	consumercreditcardnumber.blur(validateConsumercreditcardnumber);
	creditcardname.blur(validateCreditcardname);
	cvccode.blur(validateCvccode);

	//OnClick
	toonbestelformulier.click(toonKaartjesbestellen);
	tariff.click(validateTariff);
	rang1.click(validateRang1);
	rang2.click(validateRang2);
	rang3.click(validateRang3);
	approveai.click(validateApproveai);
	paymentmethod.click(paymentMethod);
	
	//OnChange
	paymentmethod.change(paymentMethod);

	//On Submitting
	//
	//Er wordt bewust niet op straat en woonplaats gecontroleerd. Bij het vinden van de straat
	//en woonplaats (op basis van postcode en huisnummer) wordt dynamisch velden "getekend"
	//in het formulier, welke niet gecontroleerd kunnen worden door formRegistration.submit.	
	formOrderticketUitburo.submit(function() {
		if( validateTitle() & validateInitials() & validateLastname() & validateZipcode() & validateStreetnr() & validateStreet() & validateCity() & validatePhone() & validateEmail() & paymentMethod() & validateRanknamefk() & validateQtickets() ) {
			return true;
		}
		else {
			return false;
		}
	});
	formOrderticket.submit(function() {
		if( validateQtickets() & validateTariff() & validateTitle() & validateInitials() & validateLastname() & validateZipcode() & validateStreetnr() & validateStreet() & validateCity() & validatePhone() & validateEmail() & validateRekeningnummer() & validateApproveai() ) {
			return true;
		}
		else {
			return false;
		}
	});
	function toonKaartjesbestellen(){
		if( toonbestelformulier.attr("src") == "images/shop/button_toon_bestelformulier.gif" ) {
			toonbestelformulier.attr("src", "images/shop/button_verberg_bestelformulier.gif");
			toonbestelformulier.attr("alt", "verberg bestelformulier");
			ordertickets.show();
		}
		else {
			toonbestelformulier.attr("src", "images/shop/button_toon_bestelformulier.gif");
			toonbestelformulier.attr("alt", "toon bestelformulier");
			ordertickets.hide();
		}
	}
	function validateActivity(){
		//if it's NOT valid
		if(activity.val().length < 1){
			activity.addClass("error");
			activityInfo.text("Dit is een verplicht veld");
			activityInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			activity.removeClass("error");
			activityInfo.text("");
			activityInfo.removeClass("error");
			return true;
		}
	}
	function validateTariff(){
		//als tarief niet standaard is
		if(tariff.val() != 9 ){
			tariff.addClass("error");
			tariffInfo.text("geef s.v.p. in omschrijving aan hoeveel kaartjes met reductie gewenst zijn");
			tariffInfo.addClass("error");
			return true;
		}
		//anders is tarief nul en geen opmerking nodig
		else{
			tariff.removeClass("error");
			tariffInfo.text("");
			tariffInfo.removeClass("error");
			return true;
		}
	}
	function validateQtickets(){
		var ttariffBIB = parseInt(tariffBIB.val()) || 0;
		var ttariffCP  = parseInt(tariffCP.val()) || 0;
		var ttariffCK  = parseInt(tariffCK.val()) || 0;
		var ttariffJub = parseInt(tariffJub.val()) || 0;
		var ttariffK   = parseInt(tariffK.val()) || 0;
		var ttariffSC  = parseInt(tariffSC.val()) || 0;
		var ttariffVB  = parseInt(tariffVB.val()) || 0;
		var ttariffN   = parseInt(tariffN.val()) || 0;

		var totalltickets = ttariffBIB + ttariffCP + ttariffCK + ttariffJub + ttariffK + ttariffSC + ttariffVB + ttariffN;
		//als aantal bestelde kaartjes hoger is dan maximaal toegestaan
		if( totalltickets > parseInt( maxtickets.val() ) ){
			tariffN.focus();
			tariffN.val("");
			tariffN.addClass("error");
			alert("Maximaal aantal kaartjes is "+ maxtickets.val());
			tarievenkiezerInfo.addClass("error");
			return false;
		}
		//
		else if (totalltickets == 0){
			tariffN.focus();
			tariffN.val("");
			tariffN.addClass("error");
			alert("Minimaal aantal kaartjes is 1");
			tarievenkiezerInfo.addClass("error");
		}
		else{
			tariffN.removeClass("error");
			return true;
		}
	}
	function validateTariffcp(){
		totalltemp = totalltickets.val();
		//als tarief niet standaard is
		if(tariffCP.val() > 0 ){
			totalltickets.val(totalltemp + tariffCP.val());
			tariffCP.addClass("error");
			return true;
		}
		//anders is tarief nul en geen opmerking nodig
		else{
			totalltickets.val(tariffCP.val());
			tariffCP.removeClass("error");
			return true;
		}
	}
	function validateRang1(){
		//if it's NOT valid
		if($("#rang1:checked").is(":checked")){
			rang1.removeClass("error");
			rangInfo.text("kaarten zijn in principe eerste rang");
			rangInfo.removeClass("error");
			return true;
		}
		//if it's valid
		else{
			rang1.removeClass("error");
			rangInfo.text("");
			rangInfo.removeClass("error");
			return true;
		}
	}
	function validateRang2(){
		//if it's NOT valid
		if($("#rang2:checked").is(":checked")){
			rang2.removeClass("error");
			rangInfo.text("indien 1e rang uitverkocht wens ik 2e rang");
			rangInfo.removeClass("error");
			return true;
		}
		//if it's valid
		else{
		
			if($("#rang3:checked").is(":checked")){
				rang2.removeClass("error");
				rangInfo.text("indien 2e rang uitverkocht wens ik 3e rang");
				rangInfo.removeClass("error");
				return true;
			}
			else {
				rang2.removeClass("error");
				rangInfo.text("kaarten zijn in principe eerste rang");
				rangInfo.removeClass("error");
				return true;
			}
		}
	}
	function validateRang3(){
		//if it's NOT valid
		if($("#rang3:checked").is(":checked")){
			rang3.removeClass("error");
			rangInfo.text("indien 2e rang uitverkocht wens ik 3e rang");
			rangInfo.removeClass("error");
			return true;
		}
		//if it's valid
		else{
			if($("#rang2:checked").is(":checked")){
				rang3.removeClass("error");
				rangInfo.text("indien 1e rang uitverkocht wens ik 2e rang");
				rangInfo.removeClass("error");
				return true;
			}
			else {
				rang3.removeClass("error");
				rangInfo.text("kaarten zijn in principe eerste rang");
				rangInfo.removeClass("error");
				return true;
			}
		}
	}
	function validateTitle(){
		//if it's NOT valid
		if(title.val() == 0){
			title.addClass("error");
			titleInfo.text("U moet een keuze maken");
			titleInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			title.removeClass("error");
			titleInfo.text("");
			titleInfo.removeClass("error");
			return true;
		}
	}
	function validateInitials(){
		//if it's NOT valid
		if(initials.val().length < 1){
			initials.addClass("error");
			initialsInfo.text("Dit is een verplicht veld");
			initialsInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			initials.val(initials.val().toUpperCase());
			initials.removeClass("error");
			initialsInfo.text("");
			initialsInfo.removeClass("error");
			return true;
		}
	}
	function validateLastname(){
		//deze functie wordt aangeroepen op submit knop van het formulier
		//ajax call geeft problemen.
		//if it's NOT valid
		if(lastname.val().length < 1){
			lastname.addClass("error");
			lastnameInfo.text("Dit is een verplicht veld");
			lastnameInfo.addClass("error");
			return false;
		}
		//if it's valid
	else{
			lastname.removeClass("error");
			lastnameInfo.text("");
			lastnameInfo.removeClass("error");
			return true;
		}
	}
	function validateZipcode(){
		//if it's NOT valid
		if(zipcode.val().length < 1){
			zipcode.addClass("error");
			zipcodeInfo.text("Dit is een verplicht veld");
			zipcodeInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			zipcode.val(zipcode.val().toUpperCase());
			zipcode.removeClass("error");
			zipcodeInfo.text("");
			zipcodeInfo.removeClass("error");
			return true;
		}
	}
	function validateStreetnr(){
		//if it's NOT valid
		if(streetnr.val().length < 1){
			streetnr.addClass("error");
			zipcodeInfo.text("Dit is een verplicht veld");
			zipcodeInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			streetnr.removeClass("error");
			zipcodeInfo.text("");
			zipcodeInfo.removeClass("error");
			return true;
		}
	}
	function validateStreet(){
		//if it's NOT valid
		if(street.val().length < 1){
			street.addClass("error");
			streetInfo.text("Dit is een verplicht veld");
			streetInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			street.removeClass("error");
			streetInfo.text("");
			streetInfo.removeClass("error");
			return true;
		}
	}
	function validateCity(){
		//if it's NOT valid
		if(city.val().length < 1){
			city.addClass("error");
			cityInfo.text("Dit is een verplicht veld");
			cityInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			city.removeClass("error");
			cityInfo.text("");
			cityInfo.removeClass("error");
			return true;
		}
	}
	function validatePhone(){
		var cleanPhoneNumber=phone.val().replace(/\D/g, "");
		phone.val(cleanPhoneNumber);
		//if it's NOT valid
		if(cleanPhoneNumber.length < 10){
			phone.addClass("error");
			phoneInfo.text("Telefoon bestaat alleen uit cijfers.");
			phoneInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			phone.removeClass("error");
			phoneInfo.text("");
			phoneInfo.removeClass("error");
			return true;
		}
	}
	function validateEmail(){
		//deze functie wordt aangeroepen op submit knop van het formulier
		//ajax call geeft problemen.
		//if it's NOT valid
		if(email.val().length < 1){
			email.addClass("error");
			emailInfo.text("E-mail is verplicht");
			emailInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			email.removeClass("error");
			emailInfo.text("");
			emailInfo.removeClass("error");
			return true;
		}
	}
	function paymentMethod(){
		//if it's NOT valid
		if(paymentmethod.val() == 0){
			automatischeIncasso.hide();
			creditCard.hide();
			paymentmethod.addClass("error");
			paymentmethodInfo.text("U moet een keuze maken");
			paymentmethodInfo.addClass("error");
			return false;
		}
		/* if it's valid (All value's are primary keys from kk_extra_costs where name like '%autom% */
		else if (paymentmethod.val() == 39 ||			
				paymentmethod.val() == 6 ||			
				paymentmethod.val() == 11 ||			
				paymentmethod.val() == 39 ||			
				paymentmethod.val() == 50 ||			
				paymentmethod.val() == 56 ||			
				paymentmethod.val() == 58
		) {
			creditCard.hide();
			paymentmethod.removeClass("error");
			paymentmethodInfo.text(".");
			paymentmethodInfo.removeClass("error");
			automatischeIncasso.show();
				//if it's NOT valid
				var cleanconsumerAccountnumber=consumerAccountnumber.val().replace(/\D/g, "");
				consumerAccountnumber.val(cleanconsumerAccountnumber);
				if (consumerAccountnumber.val() == 0){
					consumerAccountnumber.addClass("error");
					consumeraccountnumberInfo.text("Dit is een verplicht veld");
					consumeraccountnumberInfo.addClass("error");
					return false;
				}
				else {
					//if it's valid
					consumerAccountnumber.removeClass("error");
					consumeraccountnumberInfo.text("");
					consumeraccountnumberInfo.removeClass("error");
					return true;
				}
				return true;
		}
		else if (paymentmethod.val() == 12) {
			automatischeIncasso.hide();
			paymentmethod.removeClass("error");
			paymentmethodInfo.text(".");
			paymentmethodInfo.removeClass("error");
			creditCard.show();
			var retVal_1=validateCreditcardname();
			var retVal_2=validateConsumercreditcardnumber();
			var retVal_3=validateCvccode();
			var retVal=retVal_1 && retVal_2 && retVal_3;
			return retVal;
		}
		else if (paymentmethod.val() == 10) {
			automatischeIncasso.hide();
			creditCard.hide();
			paymentmethod.addClass("error");
			paymentmethodInfo.text("iDeal wordt niet ondersteund.");
			paymentmethodInfo.addClass("error");
			return false;
		}
		else{
			automatischeIncasso.hide();
			creditCard.hide();
			paymentmethod.addClass("error");
			paymentmethodInfo.text("De gekozen betalingswijze wordt niet ondersteund.");
			paymentmethodInfo.addClass("error");
			return false;
		}
	}
	function validateRekeningnummer(){
		//if it's NOT valid
		if(rekeningnummer.val().length < 1){
			rekeningnummer.addClass("error");
			rekeningnummerInfo.text("Dit is een verplicht veld");
			rekeningnummerInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			rekeningnummer.removeClass("error");
			rekeningnummerInfo.text("");
			rekeningnummerInfo.removeClass("error");
			return true;
		}
	}
	function validateApproveai(){
		//if it's NOT valid
		if($("#approveai:checked").is(":checked")){
			approveai.removeClass("error");
			approveaiInfo.text("");
			approveaiInfo.removeClass("error");
			return true;
		}
		//if it's valid
		else{
			approveai.addClass("error");
			approveaiInfo.text("Gelieve akkoord te gaan met automatische incasso.");
			approveaiInfo.addClass("error");
			return false;
		}
	}
	function validateRanknamefk(){
		//if it's NOT valid
		if(rankNameFK.val() == 0 ){
			rankNameFK.focus();
			tarievenkiezerInfo.text("Gelieve een keuze te maken voor de rang");
			tarievenkiezerInfo.css('color','rgb(228,108,110)');
			tarievenkiezerInfo.css('font-style', 'italic');
			tarievenkiezerInfo.addClass("error");
			return false;
		}
		//if it's valid
		else {
			tarievenkiezerInfo.text("");
			tarievenkiezerInfo.removeClass("error");
			return true;
		}
	}
	function validateConsumeraccountnumber(){
		if(consumerAccountnumber.val().length < 1){
			consumerAccountnumber.addClass("error");
			consumeraccountnumberInfo.text("Dit is een verplicht veld");
			consumeraccountnumberInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			consumerAccountnumber.removeClass("error");
			consumeraccountnumberInfo.text("");
			consumeraccountnumberInfo.removeClass("error");
			return true;
		}

	}
	function validateConsumercreditcardnumber(){
		if(consumercreditcardnumber.val().length < 1){
			consumercreditcardnumber.addClass("error");
			consumercreditcardnumberInfo.text("Dit is een verplicht veld");
			consumercreditcardnumberInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			consumercreditcardnumber.removeClass("error");
			consumercreditcardnumberInfo.text("");
			consumercreditcardnumberInfo.removeClass("error");
				return true;
		}

	}
	function validateCreditcardname(){
		//if it's NOT valid
		if(creditcardname.val() == 0){
			creditcardname.addClass("error");
			creditcardnameInfo.text("U moet een keuze maken");
			creditcardnameInfo.addClass("error");
			return false;
		}
		else {
		//if it's valid
			creditcardname.removeClass("error");
			creditcardnameInfo.text("");
			creditcardnameInfo.removeClass("error");
			return true;
		}
	}
	function validateCvccode(){
		var cleancvccode=cvccode.val().replace(/\D/g, "");
		cvccode.val(cleancvccode);

		if(cleancvccode.length == 3){
			cvccode.removeClass("error");
			cvccodeInfo.text("");
			cvccodeInfo.removeClass("error");
			return true;
		}
		//if it is not valid
		else{
			cvccode.addClass("error");
			cvccodeInfo.text("CVC code bestaat uit 3 cijfers.");
			cvccodeInfo.addClass("error");
			return false;
		}

	}
});
