
/*
**  Accenture
**  v1.32 - 2010.03.09
**  Mascheroni Roberto
*/

/*
 * Manage page class
 * Every page of the quotation, myaccount, schade dialog have an init class that add all the javascript action at the object in page
 */
//------ LOGIC FOR STATES ----------------------------------------------------

//--- REQUEST POLICY STEP 1 -----------------------------------------------------------------

	(function($){

		var self = {};
		$.extend( self, {
			form    : undefined,
			divPwdChecker:undefined,
			zip: undefined,
			num: undefined,
			addressList: undefined,
			addressListHolder: undefined,
			addressListOwner: undefined,
			OKSubmit: true,
			throbber:undefined,
			streetNumber05Old: undefined,
			streetNumber02Old: undefined,
			streetNumber01Old: undefined,
			postCode05Old: undefined,
			postCode02Old: undefined,
			postCode01Old: undefined,
			generalDataResponse: undefined,

			getAddressGeneral: function(aElement, useCache) {
				var role = aElement;
				var ErrorClass = AA.Config.classNames['errorField_Quotation'];
				var target_street = $('#ad-streetname_display'+role);
				var target_city   = $('#ad-placename_display'+role);
				var postCode = $('#postCode'+role);
				var streetNumber = $('#streetNumber'+role);
				var postCodeOld=eval('self.postCode'+role+'Old');
				var streetNumberOld=eval('self.streetNumber'+role+'Old');

				var streetNumberDriver = $('#streetNumber' + role);
				var streetDetailDriver = $('#streetDetail' + role);

				var streetNumberHolderJQ = $('#streetNumber01')[0];
				var streetNumberLabelHolderJQ = $('#streetNumberDiv')[0];
				var streetDetailHolderJQ = $('#streetDetail01')[0];
				var streetDetailLabelHolderJQ = $('#streetDetailDiv')[0];

				var streetNumberDriverJQ = $('#streetNumber05')[0];
				var streetNumberLabelDriverJQ = $('#streetNumberDriver')[0];
				var streetDetailDriverJQ = $('#streetDetail05')[0];
				var streetDetailLabelDriverJQ = $('#streetDetailDriver')[0];

				var target_street_holder = $('#ad-streetname_display01');
				var target_street_driver = $('#ad-streetname_display05');
				var target_city_holder   = $('#ad-placename_display01');
				var target_city_driver   = $('#ad-placename_display05');

				var companyTrue = $('#flagPolicyHolderCompanyTrue')[0];

				var forceHolder = $('#forceShowHolderStreet').val() == "true";

				if ( !target_street.length || !target_city.length || !postCode.length || !streetNumber.length ) return;
				if ( streetNumberOld == streetNumber.attr("value") && postCodeOld == postCode.attr("value")) return;

				self['streetNumber' + role + 'Old'] = streetNumber.attr("value");
				self['postCode' + role + 'Old'] = postCode.attr("value");

				var clearHolderAddressDetails = function(isCompany){
					if(!isCompany.checked){
						target_street_holder.html('');
						target_city_holder.html('');
						streetNumberLabelHolderJQ.innerHTML = '';
						streetDetailLabelHolderJQ.innerHTML = '';
					}
				}

				var clearDriverAddressDetails = function(forceHolder){
					if (forceHolder) {
						target_street_driver.html('');
						target_city_driver.html('');
						$(streetDetailLabelDriverJQ).html('');
						$(streetNumberLabelDriverJQ).html('');
					}
				}

				var checkCache = function(){
					return postCode == postCodeOld && streetNumberOld == streetNumber
						&& (!self.generalDataResponse || !useCache || useCache == 'false')
				}

				if ( postCode.attr('value') == "" || streetNumber.attr('value') == "" ) {
					target_street.html('');
					target_city.html('');
					clearDriverAddressDetails(forceHolder);
					clearHolderAddressDetails(companyTrue);
					return;
				}

				var completed = function(response) {
					self.generalDataResponse = response;
					try {
						if (!response)
							response = null;

						target_street.html(response.streetName);
						target_city.html(response.city);


						if ( !companyTrue.checked && !forceHolder ) {

//							if (streetNumber.attr("value") != "") {
								streetNumberHolderJQ.value = streetNumberDriver.attr("value");
								streetNumberLabelHolderJQ.innerHTML = streetNumberDriver.attr("value");
//							}

							//if (streetDetailDriver.attr("value") != "") {
								streetDetailHolderJQ.value = streetDetailDriver.attr("value");
								streetDetailLabelHolderJQ.innerHTML = streetDetailDriver.attr("value");
							//}

							target_street_holder.html(response.streetName);
							target_city_holder.html(response.city);
						}

						if (forceHolder) {

							streetNumberDriverJQ.value = streetNumberDriver.attr("value");
							streetNumberLabelDriverJQ.innerHTML = streetNumberDriver.attr("value");
							streetDetailDriverJQ.value = streetDetailDriver.attr("value");
							streetDetailLabelDriverJQ.innerHTML = streetDetailDriver.attr("value");

							target_street_driver.html(response.streetName);
							target_city_driver.html(response.city);
						}

						AA.Utils.removeError(streetNumber, 'zip');
						if ( role != "05" )
							AA.Utils.removeError(postCode, 'zip');

					} catch(ex) {
						target_street.html('');
						target_city.html('');
						clearHolderAddressDetails(companyTrue);
						clearDriverAddressDetails(forceHolder);
						//Check postCode
						streetNumber.focus();
						AA.Utils.addError(streetNumber, 'zip');
						if (role != "05")
							AA.Utils.addError(postCode, 'zip');
					}
				}

				var params = '&role='+role+'&postCode=' + postCode.attr("value") + '&streetNumber=' + streetNumber.attr("value");
				var url = AA.Utils.updateFormAction( self.form , 'searchAddress' , params , true );

				if(checkCache()){
					completed(self.generalDataResponse);
				}
				else{
					AA.Utils.jsonCall.apply( self, [url, completed,'get', null, false] );
				}

			},


			togglePolicyHolderInfo: function() {
				var show = self.flagpolicyholdertrue.attr("checked");
				var details = $('#policyholderinfo');

				if (!details.length) return;

				if (show) {
					//policy holder = car owner
					$("#flagOwnerVehicleTrue").attr("checked",true);
					details.removeClass(AA.Config.classNames['hide']);
					self.flagownerpolicyfalse.attr("checked",true);
//					self.subjects1GenderM.attr("checked",false);
					//($('mailAddress')).addEvent('blur',self.compileMailAdress(self,{object:$('mailAddress')}));

				} else {
					$("#flagOwnerVehicleFalse").attr("checked",true);
					details.addClass(AA.Config.classNames['hide']);
					if (self.flagownertrue.checked){
				   		self.flagownerpolicyfalse.attr("checked",true);
				   		$('#ownerinfo').removeClass(AA.Config.classNames['hide']);
					}
					else {
						self.flagownerpolicyfalse.attr("checked",true);
					}

					$('#divFlagOwnerPolicy').addClass(AA.Config.classNames['hide']);
					//($('mailAddress')).removeEvents('blur',self.compileMailAdress(self,{object:$('mailAddress')}));

				}
			},

			togglePolicyHolderCompany: function( _obj, onInit ) {
				var show = self.flagpolicyholdercompanytrue.attr("checked") || self.forceShowHolderStreet.val() == "true";
				var person = $('#policyHolderPerson');
				var personNumber = $('#CNumberHolderPerson');
				var personPostcode = $('#PostcodeHolderPerson');
				var personcontact = $('#policyHolderPersonContact');
				var company = $('#policyHolderCompany');
				var companyNumber = $('#CNumberHolderCompany');
				var companyPostcode = $('#PostcodeHolderCompany');
				var postCodeDriver = $('#postCode05')[0];
				var postCodeHolder = $('#postCode01')[0];
				var civicNumberDriver = $('#streetNumber05')[0];
				var civicNumberHolder = $('#streetNumber01')[0];
				var civicDetailDriver = $('#streetDetail05')[0];
				var civicDetailHolder = $('#streetDetail01')[0];
				var notLoggedUser = $('#notLoggedUser')[0];
				var target_street_holder = $('#ad-streetname_display01');
				var target_street_driver = $('#ad-streetname_display05')[0];
				var target_city_holder   = $('#ad-placename_display01');
				var target_city_driver   = $('#ad-placename_display05')[0];

				if (!person.length || !personcontact.length || !company.length) return;

				if (show) {
					company.removeClass(AA.Config.classNames['hide']);
					companyNumber.removeClass(AA.Config.classNames['hide']);
					companyPostcode.removeClass(AA.Config.classNames['hide']);
					person.addClass(AA.Config.classNames['hide']);
					personNumber.addClass(AA.Config.classNames['hide']);
					personPostcode.addClass(AA.Config.classNames['hide']);
					/*
					 * The field should not be emptied if the onInit parameter is true
					 */
					if( notLoggedUser.value == "true" && !onInit ){
						postCodeHolder.value="";
						civicNumberHolder.value="";
						civicDetailHolder.value="";
						target_street_holder.html('');
						target_city_holder.html('');
					}

					if (self.forceShowHolderStreet.val() == "true") {
						companyPostcode.addClass(AA.Config.classNames['hide']);
						personPostcode.removeClass(AA.Config.classNames['hide']);
					}
				} else {
					person.removeClass(AA.Config.classNames['hide']);
					personNumber.removeClass(AA.Config.classNames['hide']);
					personPostcode.removeClass(AA.Config.classNames['hide']);
					company.addClass(AA.Config.classNames['hide']);
					companyNumber.addClass(AA.Config.classNames['hide']);
					companyPostcode.addClass(AA.Config.classNames['hide']);

					if ( ! jQuery('#validationerrors').is(':visible') )  {
						self.getAddressGeneral('05', true);
					}
				}

			},

			toggleOwnerInfo1: function() {

				var show = self.flagownertrue.checked;
				var details = $('#ownerinfo');

				if (!details.length) return;

				if (show) {
					if (self.flagpolicyholdertrue.checked)
						self.flagownerpolicytrue.checked=true;
					details.removeClass(AA.Config.classNames['hide']);
				}else {
					if (self.flagpolicyholdertrue.checked)
					   self.flagownerpolicytrue.checked=true;
					else
					   self.flagownerpolicyfalse.checked=true;

					$('#divFlagOwnerPolicy').addClass(AA.Config.classNames['hide']);
					details.addClass(AA.Config.classNames['hide']);
				}

			},
			toggleOwnerInfo2: function() {

				var show = self.flagownerpolicytrue.checked;
				var details = $('#ownerinfo');

				if (!details.length) return;

				if (show) {
					details.removeClass(AA.Config.classNames['hide']);
				}else {
					details.addClass(AA.Config.classNames['hide']);
				}

			},


			checkZIPGeneral:function(aElement){
				var zip=aElement.attr("value");
				var ErrorClass=AA.Config.classNames['errorField_Quotation'];
				if((zip=="")/*||(!zip.test(AA.Config.formFields["zip"].filter))*/){
					AA.Utils.addError(self.zip, 'zip');
				}else{
					AA.Utils.removeError(self.zip, 'zip');
				}
			},

			toggleOwnerCompany: function() {
				var show = self.flagownercompanytrue.checked;
				var person = $('#ownerPerson');
				var personcontact = $('#ownerPersonContact');
				var company = $('#ownerCompany');

				if (!person.length || !personcontact.length || !company.length) return;

				if (show) {
					//personcontact.addClass(AA.Config.classNames['']);
					company.removeClass(AA.Config.classNames['hide']);
					person.addClass(AA.Config.classNames['hide']);
					$('#ownerPersonContactNotTelephone').addClass(AA.Config.classNames['hide']);
					$("#helpPersonContact").addClass(AA.Config.classNames['hide']);
					$('#companyName02').addClass(AA.Config.classNames.required);
					$('#privateTelephone02').addClass(AA.Config.classNames.required);
				} else {
					//personcontact.removeClass(AA.Config.classNames['']);
					person.removeClass(AA.Config.classNames['hide']);
					company.addClass(AA.Config.classNames['hide']);
					$('#ownerPersonContactNotTelephone').removeClass(AA.Config.classNames['hide']);
					$("#helpPersonContact").removeClass(AA.Config.classNames['hide']);
					$('#companyName02').removeClass(AA.Config.classNames['required']);
					$('#privateTelephone02').removeClass(AA.Config.classNames['required']);
				}

			},

			init: function() {

				self.qq     = $('#quickquote');
				self.form     = $('#processForm');
				self.zip      = $('#postCode05');
				self.num      = $('#streetNumber05');
				self.numsuffix = $('#streetDetail05');

				self.divPwdChecker=$('#passwordChecker');

				self.phzip      = $('#postCode02');
				self.phnum      = $('#streetNumber02');
				self.phnumsuffix = $('#streetDetail02');

				self.owzip      = $('#postCode01');
				self.ownum      = $('#streetNumber01');
				self.ownumsuffix = $('#streetDetail01');
				self.flagpolicyholdertrue = $('#flagPolicyHolderTrue');
				self.flagpolicyholderfalse = $('#flagPolicyHolderFalse');
				self.flagownertrue = $('#flagOwnerVehicleTrue');
				self.flagownerfalse = $('#flagOwnerVehicleFalse');
				self.flagpolicyholdercompanytrue = $('#flagPolicyHolderCompanyTrue');
				self.flagpolicyholdercompanyfalse = $('#flagPolicyHolderCompanyFalse');
				self.flagownercompanytrue = $('#flagOwnerCompanyTrue');
				self.flagownercompanyfalse = $('#flagOwnerCompanyFalse');

				self.flagownerpolicytrue = $('#flagOwnerPolicyTrue');
				self.flagownerpolicyfalse = $('#flagOwnerPolicyFalse');

				self.forceShowHolderStreet = $('#forceShowHolderStreet');

//				self.subjects1GenderM = $('#subjects1GenderM');

				self.mailaddress=$('#mailAddress05');

				self.streetNumber05Old= "";
				self.streetNumber02Old= "";
				self.streetNumber01Old= "";
				self.postCode05Old= "";
				self.postCode02Old= "";
				self.postCode01Old= "";

				if (!self.form.length  || !self.zip.length || !self.num.length  || !self.numsuffix.length || !self.phzip.length || !self.phnum.length  || !self.phnumsuffix.length || !self.owzip.length || !self.ownum.length  || !self.ownumsuffix.length  || !self.flagpolicyholdertrue.length || !self.flagpolicyholderfalse.length || !self.flagownertrue.length || !self.flagownerfalse.length || !self.flagpolicyholdercompanytrue.length || !self.flagpolicyholdercompanyfalse.length || !self.flagownercompanytrue.length || !self.flagownercompanyfalse.length) return;

				self.form.unbind('submit');

				self.num.unbind('blur');
				self.phnum.unbind('blur');
				self.ownum.unbind('blur');

				self.flagpolicyholdertrue.unbind('click');
				self.flagpolicyholderfalse.unbind('click');
				self.flagownertrue.unbind('click');
				self.flagownerfalse.unbind('click');
				self.flagpolicyholdercompanytrue.unbind('click');
				self.flagpolicyholdercompanyfalse.unbind('click');
				self.flagownercompanytrue.unbind('click');
				self.flagownercompanyfalse.unbind('click');
				self.flagownerpolicytrue.unbind('click');
				self.flagownerpolicyfalse.unbind('click');

				self.phzip.unbind('blur');
				self.owzip.unbind('blur');
				self.num.blur(function(){self.getAddressGeneral('05')});
				self.numsuffix.blur(function(){self.getAddressGeneral('05', true)});
				self.phnum.blur(function(){self.getAddressGeneral('02')});//getPolicyHolderAddress
				self.ownum.blur(function(){self.getAddressGeneral('01')});//getOwnerAddress
				self.ownumsuffix.blur(function(){self.getAddressGeneral('01', true)});//getOwnerAddress
				self.phzip.blur(function(){self.checkZIPGeneral(self.phzip)});
				self.owzip.blur(function(){self.checkZIPGeneral(self.owzip)});
				self.flagpolicyholdertrue.click(function(){self.togglePolicyHolderInfo(self)});
				self.flagpolicyholderfalse.click(function(){self.togglePolicyHolderInfo(self)});
				self.flagownertrue.click(function(){self.toggleOwnerInfo1(self)});
				self.flagownerfalse.click(function(){self.toggleOwnerInfo1(self)});
				self.flagpolicyholdercompanytrue.click(function(){self.togglePolicyHolderCompany(self)});
				self.flagpolicyholdercompanyfalse.click(function(){self.togglePolicyHolderCompany(self)});
				self.flagownercompanytrue.click(function(){self.toggleOwnerCompany(self)});
				self.flagownercompanyfalse.click(function(){self.toggleOwnerCompany(self)});
				self.flagownerpolicytrue.click(function(){self.toggleOwnerInfo2(self)});
				self.flagownerpolicyfalse.click(function(){self.toggleOwnerInfo2(self)});
				self.togglePolicyHolderCompany(self,true);

			}
		});
		$.extend( AA.States , {rpstep1: self});

	})(jQuery);


//---  REQUEST POLICY STEP 2 -----------------------------------------------------------------

	(function($){

		var self = {};
		$.extend( self, {
			 form: undefined,
			 postCodeOld:undefined,
			 streetNumberOld:undefined,
			 withTS: undefined,
			 withoutTS: undefined,

			//MAS: Check postCode
			checkZIPGeneral:function(aElement){
			var zip=aElement.attr("value");
				var ErrorClass=AA.Config.classNames['errorField_Quotation'];
			 	if ( zip == "" ) /*||(!zip.attr("value").test(AA.Config.formFields["zip"].filter)) */{
			 		AA.Utils.addError(self.postCode, 'zip');
			 	} else {
			 		AA.Utils.removeError(self.postCode, 'zip');
			 	}
			 },

			getAddressGeneral: function() {
				var role="";
				var ErrorClass=AA.Config.classNames['errorField_Quotation'];
				var target_street = $('#ad-streetname_display');
				var target_city   = $('#ad-placename_display');
				var postCode = $('#postCode');
				var streetNumber = $('#streetNumberI');
				var postCodeOld=eval('self.postCodeOld');
				var streetNumberOld=eval('self.streetNumberOld');

				if (!target_street.length || !target_city.length || !postCode.length || !streetNumber.length ) return;
				if((streetNumberOld==streetNumber.attr('value'))&&(postCodeOld==postCode.attr('value')))return;

				if((postCode.attr('value')=="")||(streetNumber.attr('value')=="")){
					target_street.html('');
					target_city.html('');
					return;
				}
				var completed = function(response) {
				  	try{
				  		if(!response)response=null;
				  		streetNumberOld=streetNumber.attr("value");
				  		postCodeOld=postCode.attr("value");
				   		target_street.html(response.streetName);
				   		target_city.html(response.city);

				   		AA.Utils.removeError(streetNumber, 'zip');
				   		AA.Utils.removeError(postCode, 'zip');
				   	}catch(ex){
				   		target_street.html('');
				   		target_city.html('');
						streetNumber.focus();

						AA.Utils.addError(streetNumber, 'zip');
						AA.Utils.addError(postCode, 'zip');
				   	}
				};

				var params = "&role="+role+"&postCode=" + postCode.attr("value") + "&streetNumber=" + streetNumber.attr("value");
				var url = AA.Utils.updateFormAction( self.form , 'searchAddress' , params , true );
				AA.Utils.jsonCall.apply( self, [url, completed,'get',null,false] );

			},

			toggleTS: function() {

				var show = self.withTS.attr("checked");
				var details = $('#terminationservicedetails');
				var details2 = $('#terminationservicedetails2');
				var help = $('#terminationservicedetailsHelp');

				if (!details.length || !details2.length) return;
				if (show) {

					details.removeClass(AA.Config.classNames['hide']);
					details2.removeClass(AA.Config.classNames['hide']);

					if (help.length) help.removeClass(AA.Config.classNames['hide']);

					$('#terminationname').addClass(AA.Config.classNames['required']);
				    $("#numberAndDatePolicy input").each(function( index, el ){
				 		$(el).addClass(AA.Config.classNames['required']);
				 	})
					$("#divPostCode").addClass(AA.Config.classNames['hide']);
					self.toggleNP("",{object1:$("anotherCompName"),object2:$("anotherCompNumber")});

				} else {

					details.addClass(AA.Config.classNames['hide']);
				   details2.addClass(AA.Config.classNames['hide']);

				   if (help.length) help.addClass(AA.Config.classNames['hide']);

				   $('#terminationname').removeClass(AA.Config.classNames['required']);
				   $("#divPostCode input").each(function(index,el){
				    	$(el).removeClass(AA.Config.classNames['required']);
				   });
				   $("#numberAndDatePolicy input").each(function(index,el){
					 	 $(el).removeClass(AA.Config.classNames['required']);
					   });
					}

				},

			toggleNP: function(e,aElement){
				if(aElement.object1.attr("id")=="anotherCompNumber"){
			 		$("#terminationname").selectedIndex=0;
			 		$("#terminationname").attr("disabled",true);
					$("#divPostCode").removeClass(AA.Config.classNames['hide']);
			 		aElement.object1.attr("checked",true);
			 		aElement.object2.attr("checked",false);
			 		$('#terminationname').removeClass(AA.Config.classNames['required']);
			 		$("#divPostCode input.isrequired").each(function(index,el){
			 			$(el).addClass(AA.Config.classNames['required']);
			 		});
				}
		 	else{
		 		$("#terminationname").attr("disabled",false);
				$("#divPostCode").addClass(AA.Config.classNames['hide']);
		 		aElement.object1.attr("checked",true);
		 		aElement.object2.attr("checked",false);
		 		$('#terminationname').addClass(AA.Config.classNames['required']);
		 		$("#divPostCode input").each(function(index,el){
			 			$(el).removeClass(AA.Config.classNames['required']);
			 		});
			  	}
			 },

			backToRPstep1: function ( element ) {
				var url = AA.Utils.updateFormAction( self.form , 'rpstep1' , null , false );
				AA.Utils.resetFormAction(self.form,url);
				self.form.submit();
			},

			togglePayment: function(ev){
				if(self.paymentSelect.attr("value")=="06"){	//direct debit
					/*if ( $('bankaccount').hasClass('required') )
						return;
					else*/
					$('#bankaccount').addClass('required');
					$('#bankaccountID').removeClass(AA.Config.classNames['hide']);
					$('#bankPermissionID').removeClass(AA.Config.classNames['hide']);
					$('#permission').addClass('required');
					//$('paymentDiv').removeClass(AA.Config.classNames['hide']);
			    }else{	//accept giro
					$('#bankaccount').removeClass('required');
					$('#bankaccountID').removeClass(AA.Config.classNames['hide']);
					$('#bankPermissionID').addClass(AA.Config.classNames['hide']);
					$('#permission').removeClass('required');
					$('#idPaymentDay').attr("value","");
					//$('paymentDiv').addClass(AA.Config.classNames['hide']);
			    }
			    /*AA.Director.contentBlocks['quickquote'].refreshHeight();*/
			},

			init: function() {

				 self.form      = $('#processForm');

				 self.withTS    = $('#withterminationservice');
				 self.withoutTS = $('#withoutterminationservice');

				 self.anotherCompNumber=$('#anotherCompNumber');
				 self.anotherCompName=$('#anotherCompName');
				 self.postCode=$("#postCode");
				 self.num=$("#streetNumberI");

				 self.paymentSelect = $('#payment');

				 if (!self.form.length || !self.withTS.length || !self.withoutTS.length || !self.anotherCompNumber.length || !self.anotherCompName.length ) return;

				 self.withTS.unbind('click');
				 self.withoutTS.unbind('click');
				 self.postCode.unbind('blur');
				 self.num.unbind('blur');

				 self.withTS.click(function(){self.toggleTS(self)});
				 self.withoutTS.click(function(){self.toggleTS(self)});
				 self.anotherCompNumber.click(function(){self.toggleNP(self,{object1:self.anotherCompNumber,object2:self.anotherCompName})});
				 self.anotherCompName.click(function(){self.toggleNP(self,{object1:self.anotherCompName,object2:self.anotherCompNumber})});
				 self.postCode.blur(function(){self.checkZIPGeneral(self.postCode)});
				 self.num.blur(function(){self.getAddressGeneral()});

				if ( self.withTS.attr("checked") ) {
					$("#terminationservicedetails").removeClass(AA.Config.classNames['hide']);
					if( $("#anotherCompName").attr("checked") ) {
						self.toggleNP("",{object1:$("anotherCompName"),object2:$("anotherCompNumber")});
					}
					else {
						self.toggleNP("",{object1:$("anotherCompNumber"),object2:$("anotherCompName")});
					}
				} else {
					$("#terminationservicedetails").addClass(AA.Config.classNames['hide']);
				}

				self.paymentSelect.change(function(){self.togglePayment(self)});

			 }
		});
		$.extend( AA.States , {rpstep2: self});

	})(jQuery);


//---  REQUEST POLICY STEP 3 -----------------------------------------------------------------

	(function($){

		var self = {};
		$.extend( self, {

			form: undefined,
			password:undefined,
			permission: undefined,
			statement: undefined,

			toggleCustomerRemarks: function() {
				var show = self.customerremarksyes.attr("checked");
				var details = $('#customerRemarksInfo');

				if (!details.length) return;

				if (show) {
					details.removeClass(AA.Config.classNames['hide']);
				} else {
					details.addClass(AA.Config.classNames['hide']);
				}

			},

			toggleHerhaalAccount: function() {
				var show = self.flagAccountTrue.attr("checked");
				var herhaaleMail = $('#herhaaleMail');
				var herhaalwachtwoord = $('#herhaalwachtwoord');
				var confirmPassword = $('#confirmPassword');
				var confirmUserName = $('#confirmUserName');

				if ( !herhaaleMail.length && !herhaalwachtwoord.length ) return;

				if (show) {

					herhaaleMail.addClass(AA.Config.classNames['hide']);
					herhaalwachtwoord.addClass(AA.Config.classNames['hide']);
					confirmPassword.removeClass(AA.Config.classNames['required']);
					confirmUserName.removeClass(AA.Config.classNames['required']);

				} else {
					herhaaleMail.removeClass(AA.Config.classNames['hide']);
					herhaalwachtwoord.removeClass(AA.Config.classNames['hide']);
					confirmPassword.addClass(AA.Config.classNames['required']);
					confirmUserName.addClass(AA.Config.classNames['required']);
				}

			},

			toggleCriminalHistory: function() {
				var show = self.criminalhistoryyes.attr("checked");
				var details = $('#criminalHistoryInfo');

				if (!details.length) return;

				if (show) {
					details.removeClass(AA.Config.classNames['hide']);
				} else {
					details.addClass(AA.Config.classNames['hide']);
				}
			},

			toggleVehicleDamagedNow: function() {
				var show = self.flagvehicledamagednowyes.attr("checked");
				var details = $('#flagVehicleDamagedNowInfo');
				if (!details.length) return;

				if (show) {
					details.removeClass(AA.Config.classNames['hide']);
				} else {
					details.addClass(AA.Config.classNames['hide']);
				}
			},

			backToRPstep1: function ( element ) {
				 var url = AA.Utils.updateFormAction( self.form , 'rpstep1' , null , false );
				 AA.Utils.resetFormAction(self.form,url);
				 self.form.submit();
			},

			backToRPstep2: function ( element ) {
				 var url = AA.Utils.updateFormAction( self.form , 'rpstep2' , null , false );
				 AA.Utils.resetFormAction(self.form,url);
				 self.form.submit();
			},

			init: function() {

				self.form      = $('#processForm');

				self.password=$('#password');
				self.customerremarksyes = $('#customerRemarksYes');
				self.customerremarksno = $('#customerRemarksNo');
				self.criminalhistoryyes = $('#criminalHistoryYes');
				self.criminalhistoryno = $('#criminalHistoryNo');
				self.flagvehicledamagednowyes = $('#flagVehicleDamagedNowYes');
				self.flagvehicledamagednowno = $('#flagVehicleDamagedNowNo');
				self.customerremarksyes.unbind('click');
				self.customerremarksno.unbind('click');
				self.criminalhistoryyes.unbind('click');
				self.criminalhistoryno.unbind('click');
				self.flagvehicledamagednowyes.unbind('click');
				self.flagvehicledamagednowno.unbind('click');
				self.customerremarksyes.click(function(){self.toggleCustomerRemarks(self)});
				self.customerremarksno.click(function(){self.toggleCustomerRemarks(self)});
				self.criminalhistoryyes.click(function(){self.toggleCriminalHistory(self)});
				self.criminalhistoryno.click(function(){self.toggleCriminalHistory(self)});
				self.flagvehicledamagednowyes.click(function(){self.toggleVehicleDamagedNow(self)});
				self.flagvehicledamagednowno.click(function(){self.toggleVehicleDamagedNow(self)});

				self.flagAccountTrue=$('#flagAccountTrue');
				self.flagAccountFalse=$('#flagAccountFalse');

				if ( !self.flagAccountTrue.length && !self.flagAccountFalse.length ) {
					self.flagAccountTrue.unbind('click');
					self.flagAccountFalse.unbind('click');
				}

				try {
					self.flagAccountTrue.click(function(){self.toggleHerhaalAccount(self)});
					self.flagAccountFalse.click(function(){self.toggleHerhaalAccount(self)});
				} catch ( e ) { }

				if ( self.password.length )
					 self.password.unbind('change');

				if (!self.flagvehicledamagednowyes.attr("checked") && !self.flagvehicledamagednowno.attr("checked"))
					self.flagvehicledamagednowno.attr("checked", "checked");
			}
		});
		$.extend( AA.States , {rpstep3: self});
	})(jQuery);


// ---  REQUEST POLICY STEP 4 -----------------------------------------------------------------

	(function($){

		var self = {};
		$.extend( self, {

			form: undefined,

			backToRPstep1: function ( element ) {
				 var url = AA.Utils.updateFormAction( self.form , 'rpstep1' , null , false );
				 AA.Utils.resetFormAction(self.form,url);
				 self.form.submit();
			},

			backToRPstep2: function ( element ) {
				 var url = AA.Utils.updateFormAction( self.form , 'rpstep2' , null , false );
				 AA.Utils.resetFormAction(self.form,url);
				 self.form.submit();
			},

			backToRPstep3: function ( element ) {
				 var url = AA.Utils.updateFormAction( self.form , 'rpstep3' , null , false );
				 AA.Utils.resetFormAction(self.form,url);
				 self.form.submit();
			},

			init: function() {

				self.form  = $('#processForm');

			}
		});
		$.extend( AA.States , {rpstep4: self});
	})(jQuery);


//--- REQUEST POLICY LICENSE UNKNOWN -----------------------------------------------------------------

	(function($){

		var self = {};

		$.extend( self, {

			form: undefined,
			oldPlateNumberValue:undefined,
			jsonEdition:undefined,

			getCar: function() {
				$('#plateNumber').removeClass(AA.Config.classNames['errorField_Quotation']);
				if ( $.trim( $('#plateNumber').attr("value") ) == '' ) return;
				if  ( $('#plateNumber').attr("value") == self.oldPlateNumberValue ) return;
				self.oldPlateNumberValue=$('#plateNumber').attr("value");

				/*
				var url = AA.Utils.updateFormAction( self.form , false, [] , true );
				url = url + 'Ajax';
				$.get(url,{
					'method':'reloadByPlateNumber',
					'plateNumber':self.platenumber.attr('value')
			   },function(data){
				   	if(data == ''){
				   		//TODO: put error behaviour
				   	}
				   	else{
				   		alert(data);
				   		window.eval("data = " + data);

				   		self.displayCar(data);
				   	}
			   });
				*/

				var params = "&plateNumber=" + 	self.platenumber.attr("value");
				var url = AA.Utils.updateFormAction( self.form , 'reloadByPlateNumber' , params , true );
				AA.Utils.jsonCall.apply( self, [url, self.displayCar,'get',null,true]);

			},

			displayCar: function(car) {
				jsonEdition=undefined;
				$('#listprice_inclusive').html( '&nbsp;' );
				$('#fuel_display').html( '&nbsp;');
				$('#buildyear_display').html( '&nbsp;' );
				self.cardetails = $('#carDetails');
				self.modeldisplay = $('#model_display');
				self.buildyeardisplay = $('#buildyear_display');
				self.fueldisplay = $('#fuel_display');
				self.errormessage = $('#validationerrors');
				self.saverequest = $('#saverequest');
				self.loginremark = $('#loginremark');

				if ( !self.cardetails.length || !self.errormessage.length || !self.modeldisplay.length || !self.buildyeardisplay.length || !self.fueldisplay.length ) return;

				if ( ( car == '' ) || ( !car.editions ) ) {
					$('#carDetails').addClass('hide');
				  	return;
				}

				self.cardetails.removeClass(AA.Config.classNames['hide']);
				self.errormessage.addClass(AA.Config.classNames['hide']);
				self.saverequest.addClass(AA.Config.classNames['hide']);
				self.loginremark.addClass(AA.Config.classNames['hide']);

				jsonEdition=car;
				$("#model_display").html('');

				AA.Utils.resetSelect(self.edition);

				$.each(car.editions, function(index,element){
					if ( element.progModelBrand != '' ){
						var opt = $( '<option></option>' );
						opt.html( element.edition );
						opt.attr( 'value' , element.progModelBrand );
						opt.title= element.edition ;
						opt.appendTo(self.edition);
					}
				});

				try{
					if(self.edition[0].length>1){
						self.edition[0].options[0].selected=true;
						self.edition[0].selectedIndex = 1;
						self.getEdition();
					}
				}catch(e){}

				self.modeldisplay.html(car.editions[0].make + ' ' +car.editions[0].model);
				self.platenumber[0].value = car.editions[0].plateNumber;
			},

			getEdition: function() {
				if ( !jsonEdition )return;
				if ( (self.edition[0].selectedIndex-1)<0 ){
					$('#listprice_inclusive').html( '&nbsp;' );
					$('#fuel_display').html( '&nbsp;' );
					$('#buildyear_display').html( '&nbsp;' );
					self.edition.title='';
					return;
				}
				var inclusive = $('#listprice_inclusive');
				if (!self.edition || !inclusive.length ) return;
				$('#listprice_inclusive').html(jsonEdition.editions[self.edition[0].selectedIndex-1].inclusive );
				$('#fuel_display').html(jsonEdition.editions[self.edition[0].selectedIndex-1].fuel );
				$('#buildyear_display').html(jsonEdition.editions[self.edition[0].selectedIndex-1].issuanceDate1);
				self.edition.title = self.edition[0].options[self.edition[0].selectedIndex].title; //Fat: add title
			},

			init: function() {

				self.oldPlateNumberValue=undefined;
				self.form      = $('#processForm');

				self.platenumber  = $('#plateNumber');
				self.edition = $('#edition');

				if (!self.form.length || !self.platenumber.length || !self.edition.length) return;

				self.platenumber.unbind('blur');
				self.edition.unbind('change');

				self.platenumber.blur(function(){self.getCar(self)});
				self.edition.change(function(){self.getEdition(self)});

				if(window.ie6){
					new window.toolTipSelectIE6(
						{
							selectObj: 'edition',
							classTitle: 'editionTitle',
							event:{
								move: 'off'
							}
						});
				}
			}
		});
		$.extend( AA.States , {rplicenseunknown: self});
	})(jQuery);


	(function($){

		var self = {};
		$.extend( self, {
			init: function() {
				setTimeout( AA.Utils.endCarDialogue,1500);
			}
		});
		$.extend( AA.States , {rpcompleted: self});

	})(jQuery);

	(function($){

		var self = {};
		$.extend( self, {
 			init: function() {
 				setTimeout( AA.Utils.endCarDialogue,1500);
			}
		});
		$.extend( AA.States , {rpqqcompleted: self});

	})(jQuery);

	(function($){

		var self = {};
		$.extend( self, {
 			init: function() {

			}
		});
		$.extend( AA.States , {rpFishRejected: self});

	})(jQuery);

