var sending = false;

$(function() {
 
   $('input[name=straat]').attr('disabled', 'disabled').addClass('disabled');
   $('input[name=woonplaats]').attr('disabled', 'disabled').addClass('disabled');
   
   $('#proefritbtn a').attr('href', '#!proefrit');
   $('#brochurebtn a').attr('href', '#!brochure');
      
   $('#menu a[href*=#], p.back a, #logo').click(function() {

	   $('#menu li').removeClass('selected');
	   
	   $(this).parent('li').addClass('selected');

						
      // skip SmoothScroll on links inside sliders or scroll boxes also using anchors or if there is a javascript call
            
      // duration in ms
      var duration=500;

      // easing values: swing | linear
      var easing='swing';

      // get / set parameters
      var newHash=this.hash;
      var oldLocation=window.location.href.replace(window.location.hash, '');
      var newLocation=this;
	 
         // get target
         var target=$(this.hash+', a[name='+this.hash.slice(1)+']').offset().top;

         // adjust target for anchors near the bottom of the page
         if(target > $(document).height()-$(window).height()) target=$(document).height()-$(window).height();         

         // set selector
         if($.browser.safari) var animationSelector='body:not(:animated)';
         else var animationSelector='html:not(:animated)';

         // animate to target and set the hash to the window.location after the animation
         $(animationSelector).animate({ scrollTop: target }, duration, easing, function() {

            // add new hash to the browser location
            window.location.href=newLocation;

         });

         try {
         	window.history.pushState(this.hash.slice(1), this.hash.slice(1), this.hash);
		 } catch(e) {

		 }
		 
         // cancel default click action
         return false;
      
   });
	
	
	var curHash = window.location.hash;
	
	if (curHash && curHash != "#!proefrit" && curHash != "#!brochure") $('#menu a[href*=#'+curHash.slice(1)+']').parent('li').addClass('selected');
	
	if (curHash == "#!brochure") {
		doFloodlight(brochure_start_cat);  			
	  	$('li.proefrit').removeClass('selected');
					
		$('li.brochure').addClass('selected');
		$('.form-inside').addClass('hidden');
		$('#brochure').removeClass('hidden');		
	}

	doFloodlight(start_cat);		
	
	  	
  	$('li.brochure a').click(function() {
  		
  		if ($('#brochure').hasClass('hidden')) {
  			addComClick('start');
  			
	  		doFloodlight(brochure_start_cat);
  		}
  		
  		var name = "brochure";
  				
	  	$('#form-selection li').removeClass('selected');
					
		$('#brochure .formheaders').removeClass('hidden');							
		$('#brochure .step1').removeClass('hidden');
		$('#brochure .step2').addClass('hidden');
		$('#brochure .step3').addClass('hidden');
												
		$('li.brochure').addClass('selected');
		$('.form-inside').addClass('hidden');
		$('#'+name).removeClass('hidden');
		$('#offer').show();
  	});

  	$('li.proefrit a').click(function() {
  		
  		if ($('#proefrit').hasClass('hidden')) {
  			addComClick('start');
	  		doFloodlight(proefrit_start_cat);  			
  		}
  		  		
  		var name = "proefrit";
  				
	  	$('#form-selection li').removeClass('selected');
					
		$('li.proefrit').addClass('selected');
		$('.form-inside').addClass('hidden');
		$('#'+name).removeClass('hidden');

		$('#proefrit .formheaders').removeClass('hidden');		
		$('#proefrit .step1').removeClass('hidden');
		$('#proefrit .step2').addClass('hidden');
		$('#proefrit .step3').addClass('hidden');

		$('#offer').show();		
  	});
	  	

	  	
	//stick the footer at the bottom of the page if we're on an iPad/iPhone due to viewport/page bugs in mobile webkit
	if(navigator.platform == 'iPad' || navigator.platform == 'iPhone' || navigator.platform == 'iPod')
	{

	   $('#background').css('position', 'absolute');
	   $('#background, #background .inside').css('height', 1300);
	};

	$('.postcode').bind('blur', getStreetCity);
	$('.huisnummer').bind('blur', getStreetCity);
	
	$('.button1').click(checkFirstForm);
	$('.button2').click(checkSecondForm);
}); 

function getCurrentForm() {
	if ($('#proefrit').hasClass('hidden')) return $('#brochure form');
	if ($('#brochure').hasClass('hidden')) return $('#proefrit form');
}

function getFormValues(form) {	

	ret = {};
	
	var data = form.serializeArray();
	
	$.each(data, function(index, obj) {
		ret[obj.name] = obj.value;
	});

	return ret;
}

function toggleFieldError(form, name, toggle) {
	$(form).find('input[name='+name+']').parent('p').toggleClass('error', toggle);
}

function toggleRadioError(form, name, toggle) {
	$(form).find('.'+name).toggleClass('error', toggle);
}

function checkFirstForm() {
		
	var form = getCurrentForm();
	
	var values = getFormValues(form);
		
	var next = true;
		
	if (values.type == "") {
		toggleFieldError(form, 'type', true);
		next = false;
 	} else {
		toggleFieldError(form, 'type', false);
	} 	
		
	if (! values.aanhef) {
		toggleRadioError(form, 'aanhef', true);
		
		next = false;
	} else {
		toggleRadioError(form, 'aanhef', false);
	}
	
	if (! values.voorletters) {
		toggleFieldError(form, 'voorletters', true);
		next = false;
	} else {
		toggleFieldError(form, 'voorletters', false);
	}	

	if (! values.achternaam) {
		toggleFieldError(form, 'achternaam', true);
		next = false;
	} else {
		toggleFieldError(form, 'achternaam', false);
	}	
	
	if (! /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(values.email)) {
		toggleFieldError(form, 'email', true);
		next = false;
	} else {
		toggleFieldError(form, 'email', false);
	}
	
	if (! values.telefoon) {
		toggleFieldError(form, 'telefoon', true);
		next = false;
	} else {
		toggleFieldError(form, 'telefoon', false);
	}	
	
	
	if (next) {
		$(form).find('.errorMessage').toggleClass('hidden', true);
		$('#offer').hide();
		$(form).find('.step1').addClass('hidden');
		$(form).find('.step2').removeClass('hidden');
	} else {
		$('p.error input:first').focus();	
		$(form).find('.errorMessage').toggleClass('hidden', false);
	}
	
	return false;	
}


function checkSecondForm() {
	var form = getCurrentForm();
	
	var values = getFormValues(form);
		
	var next = true;
	
	if (! /^[0-9]{4}[ ]{0,1}[a-zA-Z]{2}$/i.test(values.postcode)) {
		toggleFieldError(form, 'postcode', true);
		next = false;
	} else {
		toggleFieldError(form, 'postcode', false);
	}
	
	if (! values.huisnummer) {
		toggleFieldError(form, 'huisnummer', true);
		next = false;
	} else {
		toggleFieldError(form, 'huisnummer', false);	
	}
	
	if (! values.straat) {
		toggleFieldError(form, 'huisnummer', true);
		next = false;
	} else {
		toggleFieldError(form, 'huisnummer', false);	
	}

	if (! values.woonplaats) {
		toggleFieldError(form, 'woonplaats', true);
		next = false;
	} else {
		toggleFieldError(form, 'woonplaats', false);	
	}
	
	if (next) {
		$(form).find('.errorMessage').toggleClass('hidden', true);
		sendForm();		
	} else {
		$('p.error input:first').focus();	
		$(form).find('.errorMessage').toggleClass('hidden', false);
	}
	
	return false;
}

function sendForm() {
	if (! sending) {
		sending = true;
		var form = getCurrentForm();
		
		var values = getFormValues(form);
			
		$(form).find('.button2').addClass('wait');
		$(form).find('.button2').html("Bezig met versturen");			
		$.post('/form.php', form.serialize(), formResult, 'json');
	}	
}

function formResult(data) {

	var form = getCurrentForm();
	sending = false;

	$(form).find('.button2').removeClass('wait');
	$(form).find('.button2').html("VERSTUUR");			

	if (data.success == "1") { 
	
		addComClick('end');
		
		var values = getFormValues(form);
		
		var cat = "";
		
		if (values.form == "proefrit") {
			cat = proefrit_end_cat;
		} else if (values.form == "brochure") {
			cat = brochure_end_cat;
		}
		
		doFloodlight(cat, values);
	
		$(form).find('.step2').addClass('hidden');
		$(form).find('.step3').removeClass('hidden');
		$(form).find('.formheaders').addClass('hidden');
	} else {
		
		$(form).find('.errorMessage').toggleClass('hidden', false);
	}
	
	//$(form).find('.button2').removeAattr('disabled');	
}

function urlencode(str) {
	return escape(str).replace('+', '%2B').replace('%20', '+').replace('*', '%2A').replace('/', '%2F').replace('@', '%40');
}


function doFloodlight(cat, data) {

	src = floodlight_url + ';cat=' + cat;
	
	if (data) {
		if (data.form == "brochure") contactmethode = "post";
		if (data.form == "proefrit") contactmethode = "phone";
				
		postcode1 = data.postcode.match(/^[0-9]{4}/gi);
		postcode2 = data.postcode.match(/[a-z]{2}$/gi);		
					
		log(postcode1);
		log(postcode2);			
		
		src += ";u2=" + urlencode(data.achternaam) + ";u1=" + urlencode(data.voorletters) + ";u4=" + urlencode(postcode1) + ";u3=" + urlencode(data.aanhef) + ";u6=" + urlencode(data.huisnummer + " " + data.huisnummertoevoeging) + ";u5=" + urlencode(postcode2) + ";u8=" + urlencode(data.woonplaats) + ";u7=" + urlencode(data.straat) + ";u10=" + urlencode(data.telefoon) + ";u9=" + urlencode(data.email) + ";u12=" + urlencode(data.dealer) + ";u11=" + urlencode(contactmethode) + ";u13=" + urlencode(data.requests) + ";u14=" + urlencode(data.type) + "";
	}
	
	var axel = Math.random() + "";
	var a = axel * 10000000000000;	
	
	src += ";ord=" + a;
		
	$('#floodlight-container').attr('src', src);
}

function addComClick(type) {
	if (type == 'start') {
		$('#tracking-container').html(comclick_start);
	} else if (type == 'end') {
		$('#tracking-container').html(comclick_end);		
	}
}

function getStreetCity() {
	var form = getCurrentForm();
	
	var ps = $(form).find('.postcode').val();
	var hn = $(form).find('.huisnummer').val();
	
	if (ps && hn) {

		var data = "pc="+ps+"&hn="+hn;
		
		postjson("/address.php", data, function(){}, handlePsCheck, handlePsError);
	}
}

function postjson(url,data,bS,s,e){
	$.ajax({type:"POST",url:url,data:data,dataType:"json",beforeSend:bS,success:s,error:e});
}

function handlePsError() {

}

function handlePsCheck(data) {
	var form = getCurrentForm();

	if (data.success == "1") {
		$(form).find('.straat').removeAttr('disabled');
		$(form).find('.woonplaats').removeAttr('disabled');		
				
		$(form).find('.straat').val(data.straat);
		$(form).find('.woonplaats').val(data.plaats);
		$(form).find('.dealer').val(data.dealer);
	} else {
		$(form).find('.straat').val("");
		$(form).find('.woonplaats').val("");
		$(form).find('.dealer').val("");

		$(form).find('.straat').removeAttr('disabled');
		$(form).find('.woonplaats').removeAttr('disabled');
		$(form).find('.straat').removeClass('disabled');
		$(form).find('.woonplaats').removeClass('disabled');
			
	}
}


function showFancyBox() {
	$('.gallery a').fancybox();
}

$(function() {
	setTimeout(showFancyBox, 500);
});
