

jQuery.validator.addMethod('phoneUK', function(phone_number, element) {
	return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(\(?(0|\+44)[1-9]{1}\d{1,4}?\)?\s?\d{3,4}\s?\d{3,4})$/);
}, 'Please specify a valid phone number');


$(document).ready(function() {
	$("#booking_form").validate({
		errorContainer: "#errorBox",
   		errorLabelContainer: "#errorBox",
		errorClass: "invalid",
		rules: {
			quickstartDate: {
				required: true
			},
			quicktoDate: {
				required: true
			},
			/*days: {
				required: true,
      			number: true
			},*/
			quickadult: {
				required: true,
      			number: true
			},
			quickchildren: {
				required: true,
      			number: true
			},
			quickpet: {
				required: true
			},
		},
		messages: {
			quickstartDate: "Invalid Start date, ",
			quicktoDate: "Invalid End date, ",
			//days: "The minimum stay is 3 nights, please check your dates, ",
			quickadult: "Number of adults required, ",
			quickchildren: "Number of children required, ",
			quickpet: "Any pets?, "
		},
		highlight: function(element, errorClass, validClass) {
			 $(element).addClass(errorClass).removeClass(validClass);
			 //$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
		},
		unhighlight: function(element, errorClass, validClass) {
			 $(element).removeClass(errorClass).addClass(validClass);
			 //$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
		},
		submitHandler: function() { 
			$.post("/includes/sessionbuilder.php",{
				quickstartDate: document.getElementById("quickstartDate").value,
				quicktoDate: document.getElementById("quicktoDate").value,
				quickdays:  /*document.getElementById("days").value,*/countDays,
				quickadult: document.getElementById("quickadult").value,
				quickchildren: document.getElementById("quickchildren").value,
				quickpet: $('input[name=quickpet]:checked').val()
				//view: $('input[name=view]:checked').val()
			},
				function(data){
				//alert(data);
					//document.getElementById("bookingiframe").contentDocument.location.reload(true);
					$('#bookingiframe').attr("src", $('#bookingiframe').attr("src"));
					if ($("#booking_form").valid()){
						$("#sub").attr('value', 'Searching...');
						//$( "#dialog-form" ).dialog("open");
						$( "#dialog-form" ).delay(3000).queue(function(){
							$(this).dialog("open").dequeue(); // take this function out of queue a.k.a dequeue a.k.a notify done
											// so the next function on the queue continues execution...
							$("#sub").attr('value', 'Search').dequeue();
						});
						return false;
					}					
				}
			);
			//$('#bookingiframe').attr("src", $('#bookingiframe').attr("src"));	
		}
	});
	
	$("#bookingForm").validate({
		errorContainer: "#errorBox",
   		errorLabelContainer: "#errorBox",
		errorClass: "invalid",
		rules: {
			first_name: {
				required: true
			},
			sname: {
				required: true
			},
			phone: {
				required: true,
				phoneUK:true
			},
			email: {
				required: true,
				email: true
			},
			address_1: {
				required: true
			},
			post: {
				required: true
			},
			adult_1: {
				required: true
			},
			adult_2: {
				required: true
			},
			adult_3: {
				required: true
			},
			adult_4: {
				required: true
			},
			adult_5: {
				required: true
			},
			adult_6: {
				required: true
			},
			child_1: {
				required: true
			},
			child_2: {
				required: true
			},
			child_3: {
				required: true
			},
			child_4: {
				required: true
			},
			child_5: {
				required: true
			},
			child_6: {
				required: true
			},
			child_age_1: {
				required: true,
				number:true
			},
			child_age_2: {
				required: true,
				number:true
			},
			child_age_3: {
				required: true,
				number:true
			},
			child_age_4: {
				required: true,
				number:true
			},
			child_age_5: {
				required: true,
				number:true
			},
			child_age_6: {
				required: true,
				number:true
			},
			adult_age_1: {
				required: true,
				number:true
			},
			adult_age_2: {
				required: true,
				number:true
			},
			adult_age_3: {
				required: true,
				number:true
			},
			adult_age_4: {
				required: true,
				number:true
			},
			adult_age_5: {
				required: true,
				number:true
			},
			adult_age_6: {
				required: true,
				number:true
			},
			term: {
				required:true	
			}
		},
		messages: {
			first_name: "First name required, ",
			sname: "Surname required, ",
			phone: "Phone Number required, ",
			email: "Email address required, ",
			address_1: "Address line 1 is required, ",
			post: "Post code required, ",
			adult_1: "Adult 1 name required, ",
			adult_2: "Adult 2 name required, ",
			adult_3: "Adult 3 name required, ",
			adult_4: "Adult 4 name required, ",
			adult_5: "Adult 5 name required, ",
			adult_6: "Adult 6 name required, ",
			child_1: "Child 1 name required, ",
			child_2: "Child 2 name required, ",
			child_3: "Child 3 name required, ",
			child_4: "Child 4 name required, ",
			child_5: "Child 5 name required, ",
			child_6: "Child 6 name required, ",
			child_age_1: "Child 1 age name required, ",
			child_age_2: "Child 2 age name required, ",
			child_age_3: "Child 3 age name required, ",
			child_age_4: "Child 4 age name required, ",
			child_age_5: "Child 5 age name required, ",
			child_age_6: "Child 6 age name required, ",
			term: "You need to confirm your agreement to the terms &amp conditions "
		},
		highlight: function(element, errorClass, validClass) {
			 $(element).addClass(errorClass).removeClass(validClass);
			 //$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
		},
		unhighlight: function(element, errorClass, validClass) {
			 $(element).removeClass(errorClass).addClass(validClass);
			 //$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
		}
	});
	
	//stripe table 
	$(".stripe tr").mouseover(function(){$(this).addClass("over");}).mouseout(function(){$(this).removeClass("over");});
    $(".stripe tr:even").addClass("even");
	$("ul.sf-menu").supersubs({ 
			minWidth:    12,   
            maxWidth:    28,   
            extraWidth:  1     
	}).superfish({
            autoArrows:  false,
            dropShadows: false
	});
		
	$('.pic a').lightBox({		
		imageLoading: '/js/lightbox/images/loading.gif',
		imageBtnClose: '/js/lightbox/images/close.gif',
		imageBtnPrev: '/js/lightbox/images/prev.gif',
		imageBtnNext: '/js/lightbox/images/next.gif'
	});	
	$('.lightbox').lightBox({		
		imageLoading: '/js/lightbox/images/loading.gif',
		imageBtnClose: '/js/lightbox/images/close.gif',
		imageBtnPrev: '/js/lightbox/images/prev.gif',
		imageBtnNext: '/js/lightbox/images/next.gif'
	});	
	$('.lightboxGallery a').lightBox({		
		imageLoading: '/js/lightbox/images/loading.gif',
		imageBtnClose: '/js/lightbox/images/close.gif',
		imageBtnPrev: '/js/lightbox/images/prev.gif',
		imageBtnNext: '/js/lightbox/images/next.gif'
	});

	
	// addSizes was written by Natalie Downe 
	// http://natbat.net/2008/Aug/27/addSizes/
	
	// Copyright (c) 2008, Natalie Downe under the BSD license
	// http://www.opensource.org/licenses/bsd-license.php
	
	$('a[href$=".pdf"], a[href$=".doc"],a[href$=".zip"]').each(function(){
		// looking at the href of the link, if it contains pdf, doc, zip, mp3, ogg, m4u, jpg, png, swf
		var link = $(this);
		var bits = this.href.split('.');
		var type = bits[bits.length -1];
		
		var url= "http://json-head.appspot.com/?url="+encodeURIComponent (this.href)+"&callback=?";
		//console.log(url);
	
		// then call the json thing and insert the size back into the link text
		 $.getJSON(url, function(json){
			if(json.ok && json.headers['content-length']) {
				var length = parseInt(json.headers['content-length'], 10);
				
				// divide the length into its largest unit
				var units = [
					[1024 * 1024 * 1024, 'GB'],
					[1024 * 1024, 'MB'],
					[1024, 'KB'],
					[1, 'bytes']
				];
				
				for(var i = 0; i < units.length; i++){
					
					var unitSize = units[i][0];
					var unitText = units[i][1];
					
					if (length >= unitSize) {
						length = length / unitSize;
						// 1 decimal place
						length = Math.ceil(length * 10) / 10;
						var lengthUnits = unitText;
						break;
					}
				}
				
				// insert the text directly after the link and add a class to the link
				// note: if you want to insert the size into the link rather than after it change the following 'after' to 'append'
				link.after(' <span class="quiet small">(' + type + ' ' + length + ' ' + lengthUnits + ')</span>');
				link.addClass(type);
			}
		});
	});
	
	/* Quick Search Code */
	/*$( "#startDate" ).datepicker({
        changeMonth: true,
        changeYear: true,
		dateFormat: "dd/mm/yy",
		minDate: 0,
		showOn: "button",
		buttonImage: "/holiday-css/looe-quick-search/images/calendar-icon.jpg",
		buttonImageOnly: true	
    });*/

	var dates = $( "#quickstartDate, #quicktoDate" ).datepicker({
			defaultDate: "+1w",
			changeMonth: true,
			changeYear: true,
			dateFormat: "dd/mm/yy",
			minDate: 0,
			numberOfMonths: 2,
			showOn: "both",
			buttonImage: "/holiday-css/looe-quick-search/images/calendar-icon.jpg",
			buttonImageOnly: true,
			onSelect: function( selectedDate ) {
				var option = this.id == "quickstartDate" ? "minDate" : "maxDate",
					instance = $( this ).data( "datepicker" ),
					date = $.datepicker.parseDate(
						instance.settings.dateFormat ||
						$.datepicker._defaults.dateFormat,
						selectedDate, instance.settings );
				date.setDate(date.getDate() + 3);
				dates.not( this ).datepicker( "option", option, date );
			}
	});
	
	//$( "#views" ).buttonset();
	$( "#quickpets" ).buttonset();
	$( "input#sub" ).button();
	$( ".bookNow" ).button();
	$( ".viewNow" ).button();
	
	$( "#dialog-form" ).dialog({
		autoOpen: false,
		height: 500,
		width: 800,
		title: 'Search Results',
		modal: true,
		buttons:{ 
			"Close": function() { 
				$.post("/includes/sessionkiller.php",
					function(data){
					//alert(data);
						//document.getElementById("bookingiframe").contentDocument.location.reload(true);
						$('#bookingiframe').attr("src", $('#bookingiframe').attr("src"));						
					}
				);
				$(this).dialog("close");
				//parent.location.reload();
			} 
		}
	});
});
  
function countDays (){
	var sDate = $('#quickstartDate').datepicker('getDate');
	var eDate = $('#quicktoDate').datepicker('getDate');
	var difference = (Math.ceil(eDate - sDate) / (1000 * 60 * 60 * 24));
	//document.getElementById(days).value = difference; 
	//alert (difference);
	//$('#days').val() = difference;
	//alert(difference);
	return difference;
}
