// -----------------------------------------------------------------------------------
// JQUERY VALIDATION -  GENERAL USE
// -----------------------------------------------------------------------------------
jQuery.extend(jQuery.validator.messages, {
        required: "verplicht",
        remote: "&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>",
        email: "ongeldig e-mailadres",
        url: "&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>",
        date: "ongeldige datum bv 31-12-2010",
        dateISO: "&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>.",
        number: "ongeldig nummer bv. 0.000",
        numberNL: "ongeldig nummer bv. 0,000",
		digits: "ongeldig nummer bv. 100",
        creditcard: "&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>",
        equalTo: "&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>",
        accept: "&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>",
        maxlength: jQuery.validator.format("bericht is te lang"),
        minlength: jQuery.validator.format("&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>"),
        rangelength: jQuery.validator.format("&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>"),
        range: jQuery.validator.format("&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>."),
        max: jQuery.validator.format("&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>"),
        min: jQuery.validator.format("&nbsp;<img src='/images/icon_alert_red.gif' border='0' align='absMiddle'>")
});

/*
 * Localized default methods for the jQuery validation plugin.
 * Locale: NL
 */
jQuery.extend(jQuery.validator.methods, {
	date: function(value, element) {
		return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
	},
	numberNL: function(value, element) {
		return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
	}
});

// -----------------------------------------------------------------------------------


// -----------------------------------------------------------------------------------
// UNIVERSAL CHECK IF OBJECT EXISTS
// -----------------------------------------------------------------------------------
function checkObject(jID) { 
	try { var o = document.getElementById(jID); if (o) { return true } else { return false }
	} catch (excp) { return false }
}


// -----------------------------------------------------------------------------------
// JQUERY INITS
// -----------------------------------------------------------------------------------
 $(document).ready(function(){ 

	// FAQ page, were using dummy classed for jquery
	$('#overview_faq li').click(function(){	
			// hide current showing
			$("#overview_faq li div.showed").slideUp('fast',function(){ $(this).removeClass('showed'); });
			// mark selected with class
			$("div", this).addClass('tobeshowed');
			$("#overview_faq li div.tobeshowed").slideDown('fast',function(){ $(this).removeClass('tobeshowed'); $(this).addClass('showed'); });		
	});

	// form buttons
	$('.form_main_button').hover( function(){ $(this).addClass('form_main_button_hover'); },			// A mouseover
					               function(){ $(this).removeClass('form_main_button_hover'); });		// A mouseout


	// SEARCH FIELDS
	var jInput_Email, jInput_Password, jInput_Search, jInput_Zipcode, jLanguageCode = ''; 

	// set language words, basiscly we just support Dutch, but yout never know when we should update it
	jInput_Email  = $('#signin_form_email_id').val();
	jInput_Password = $('#signin_form_password_id').val();
	jInput_Search = $('#qID').val();
	jInput_Zipcode = $('#zipcodeID').val();

	// handle search fields
	$('#qID').focus(function(){						if ($(this).val()==jInput_Search) { $(this).val(''); $(this).removeClass('do_gray'); }  });
	$('#qID').blur(function(){						if ($(this).val()=='') { $(this).val(jInput_Search); $(this).addClass('do_gray'); }  	});
	$('#search_form_button').click(function(){		$('#search_form_id').submit();   });
	$('#header_search_cnt').fadeIn();

	// handle signin fields
	$('#signin_form_email_id').focus(function(){	if ($(this).val()==jInput_Email) { $(this).val(''); $(this).removeClass('do_gray'); }  });
	$('#signin_form_email_id').blur(function(){		if ($(this).val()=='') { $(this).val(jInput_Email); $(this).addClass('do_gray'); }  	});

	$('#signin_form_password_id').focus(function(){	if ($(this).val()==jInput_Password) { $(this).val(''); $(this).removeClass('do_gray'); }  });
	$('#signin_form_password_id').blur(function(){	if ($(this).val()=='') { $(this).val(jInput_Password); $(this).addClass('do_gray'); }  	});

	$('#signin_form_button').click(function(){ signIn(); });
	$('#signin_form_id').submit(function(){ signIn(); });
	$('#signin_form_id').fadeIn();

	// handle zipcode/city fields
	$('#zipcodeID').focus(function(){	if ($(this).val()==jInput_Zipcode) { $(this).val(''); $(this).removeClass('do_gray'); }  });
	$('#zipcodeID').blur(function(){	if ($(this).val()=='') { $(this).val(jInput_Zipcode); $(this).addClass('do_gray'); }  	});

	$('#zipcode_form_button').click(function(){	search_branches();   });
	$('#zipcode_form_id').submit(function(){ search_branches(); return false; });
	$('#zipcode_form_id').fadeIn();	

	$('#cityname_form_button').click(function(){	search_branches_by_city();   });
	$('#cityname_form_id').submit(function(){ search_branches_by_city(); return false; });
	$('#cityname_form_id').fadeIn();
	
	// branche full list
	$('#Branches_list_all TR.allow_hover').hover( function(){ $(this).addClass('hover'); },			// A mouseover
												  function(){ $(this).removeClass('hover'); });		// A mouseout

	$('#Branches_list_all TR TD A').click( function(e){ e.preventDefault(); });

	$('#Branches_list_all TR.allow_hover').click( function(){ 
		var jLink = $("a", this).attr('href'); 
		if (jLink==undefined) { alert('Sorry, deze vestiging heeft (nog) geen website.'); } else { window.open(jLink, 'Vestiging'); }
	});

	$("#Branches_list_all").tablesorter({ }); 


	// POLL
	$("#poll_form").validate({
		errorClass: "poll_error",
		rules: { poll_vote: { required: true } },
		messages: { poll_vote: { required: '' } },
		submitHandler: function(form){
			$('#poll_form').removeAttr('action');
			$('#poll_form').attr('action', '/poll/');
			$('#poll_submit').attr('disabled', 'disabled');
			$('#pollallowed').attr('value', '556d699968986a989a9869986e989a986c709d98989898989b996c986a9869');
			this.submit();
		}
	});


 });


// -----------------------------------------------------------------------------------
// UNIVERSAL AJAX NOT USED YET
// -----------------------------------------------------------------------------------
function getExternalData(jURL, jField, jSendData) {
	$.ajax({
		type: "POST",
		url: '/forms/'+jURL+'.asp',
		dataType:"html",
		data: jSendData,
		timeout: 10000,
		cache: false,
		success: function(html){ 
			$("#"+jField).html(html);
		},
        error: function (xhr, ajaxOptions, thrownError){ 
			//this shouldn't ever happen, because we are on a local server
			if (thrownError==undefined) {
				$("#"+jField).html('<div class="do_ajax_failed">Er is een storing ('+ajaxOptions+').').fadeIn('fast');
			}
		} 

	 });
}


/* signin using ajax */
function signIn() {
	var jU = $('#signin_form_email_id').val(), jP = $('#signin_form_password_id').val();
	// fade out
	$('#title_left_cnt').fadeOut('fast', function(){ 
			// set loader text and fade in again
			$('#title_left_cnt').html('<div class="ajax_loader">Bezig met inloggen...</div>').fadeIn("fast", function(){
					// do ajax call
					getExternalData('form-signin', 'title_left_cnt', 'u='+jU+'&p='+jP+'&c=52348674');				
			});
	});
}


/* signout using ajax */
function signOut() {
	// fade out
	$('#title_left_cnt').fadeOut('fast', function(){ 
		// set loader and fade in again
		$('#title_left_cnt').html('<div class="ajax_loader">Bezig met uitloggen...</div>').fadeIn("fast", function() {
			// do ajax call
			getExternalData('form-signout', 'title_left_cnt', '') 
		}); 
	});
}


/* search branches using ajax */
function search_branches() {
	$('#main_title_ID').html('MINIOPSLAG VESTIGINGEN');

	var jZ = $('#zipcodeID').val(), jD = $('#distanceID').val();
	// fade out
	$('#content_text').fadeOut('fast', function(){ 
			// set loader text and fade in again
			$('#content_text').html('<div class="ajax_loader">Bezig met zoeken naar vestigingen...</div>').fadeIn("fast", function(){
					// do ajax call
					getExternalData('form-branches', 'content_text', 'z='+jZ+'&d='+jD+'&c=324782435');				
			});
	});
}


/* search branches using ajax */
function search_branches_by_city() {
	$('#main_title_ID').html('MINIOPSLAG VESTIGINGEN');

	var jZ = escape($('#cityname_form_selectID').val());
	if (jZ.length<2) { return }
	
	// fade out
	$('#content_text').fadeOut('fast', function(){ 
			// set loader text and fade in again
			$('#content_text').html('<div class="ajax_loader">Bezig met zoeken naar vestigingen...</div>').fadeIn("fast", function(){
					// do ajax call
					getExternalData('form-branches-by-cityname', 'content_text', 'z='+jZ+'&c=324782435');				
			});
	});
}
