$(document).ready(function(){
	/*
	$('#photoslider').galleryView({
	    panel_width: 800,
	    panel_height: 300,
	    frame_width: 30,
	    frame_height: 30,
	    overlay_color: '#222',
	    overlay_text_color: 'white',
	    caption_text_color: '#222',
	    background_color: 'transparent',
	    border: 'none',
	    nav_theme: 'light',
	    easing: 'easeInOutQuad',
	    pause_on_hover: true
	});
	*/

	Shadowbox.init();

	$('A[class="external"]').click( function() {
		window.open( $(this).attr('href') );
		return false;
	});

	$('#datefrom').datepicker({
		showAnim: 'drop',
		changeMonth: true,
		changeYear: true,
		minDate : 'D M Y',
		yearRange: '2011:2020',
		dateFormat: 'dd-mm-yy',
		onClose : function(dateText, inst){
				if($('#dateto').length > 0 && $('#price').length == 1)
				{
					$('#dateto').datepicker("option", "minDate", dateText);

					if(dateDiff($('#datefrom').val(), $('#dateto').val()) == 0)
					{
						$('#dateto').val($('#datefrom').val());
					}
				}
		}
	});

	$('#dateto').datepicker({
		showAnim: 'drop',
		changeMonth: true,
		changeYear: true,
		minDate : 'D M Y',
		yearRange: '2011:2020',
		dateFormat: 'dd-mm-yy'
	});

	$('#credentials #datebirth1').datepicker({
		showAnim: 'drop',
		changeMonth: true,
		changeYear: true,
		maxDate : 'D M Y',
		yearRange: '1900:2010',
		dateFormat: 'dd-mm-yy'
	});


	$('#credentials .passagiers_dob').datepicker({
		showAnim: 'drop',
		changeMonth: true,
		changeYear: true,
		maxDate : 'D M Y',
		yearRange: '1900:2020',
		dateFormat: 'dd-mm-yy'
	});

	$("#tabs").tabs({
		event: "click"
	});

	/* stappen checken op 0 ingevulde velden */

	/* stappen switchen */
	$('#stappen div.stappen').not(':first').hide();
	$("#stappen button.stappen").click(function() {

		iStepId 			 = $(this).attr('id');

		$('#stappen div.stappen').hide();
		$('div#'+iStepId+'tab').show();
		$('html, body').animate({scrollTop:300}, 'slow');
		return false;

	});

	if($('#photos').length > 0)
	{
		$('#photos').ffiIconSlider({
			banner						: 'panel',
			icon							: 'filmstrip',
			pointer_image			: '/interactive/files/images/core/pointer.png',
			iconwrap_width		: 500
		});
	}

});

function dateDiff(startDate, endDate) {
	aDateFrom 		= startDate.split('-');
  startDate     = new Date(aDateFrom[2], aDateFrom[1], aDateFrom[0]);
	aDateFrom 		= endDate.split('-');
  endDate     	= new Date(aDateFrom[2], aDateFrom[1], aDateFrom[0]);
  if(endDate && startDate) //make sure we don't call .getTime() on a null
    return (endDate.getTime() - startDate.getTime()) / (1000*60*60*24);
  return "You must complete both dates!";
}


var H5F = H5F || {};

(function(d){

	var field = d.createElement("input"),
	emailPatt = new RegExp("^([a-z0-9_.-]+)@([0-9a-z.-]+).([a-z.]{2,6})$","i"),
	urlPatt = new RegExp("[a-z][-\.+a-z]*:\/\/","i"),
	usrPatt, curEvt, args;

	H5F.setup = function(form,settings) {
		var isCollection = !form.nodeType || false;

		var opts = {
			validClass : "valid",
			invalidClass : "error",
			requiredClass : "required"
		};

		if(typeof settings === "object") {
			for (var i in opts) {
				if(typeof settings[i] === "undefined") { settings[i] = opts[i]; }
			}
		}

		args = settings || opts;

		if(isCollection) {
			for(var k=0,len=form.length;k<len;k++) {
				H5F.validation(form[k]);
			}
		} else {
			H5F.validation(form);
		}
	};

	H5F.validation = function(form) {
		var f = form.elements,
		flen = f.length,
		isRequired;

		H5F.listen(form,"invalid",H5F.checkField,true);
		H5F.listen(form,"blur",H5F.checkField,true);
		H5F.listen(form,"input",H5F.checkField,true);
		H5F.listen(form,"keyup",H5F.checkField,true);
		H5F.listen(form,"focus",H5F.checkField,true);

		if(!H5F.support()) {
			form.checkValidity = function() { return H5F.checkValidity(form); };

			while(flen--) {
				isRequired = !!(f[flen].attributes["required"]);
				// Firefox includes fieldsets inside elements nodelist so we filter it out.
				if(f[flen].nodeName !== "FIELDSET" && isRequired) {
					H5F.validity(f[flen]); // Add validity object to field
				}
			}
		}
	};
	H5F.validity = function(el) {
		var elem = el,
		missing = H5F.valueMissing(elem),
		type = elem.getAttribute("type"),
		pattern = elem.getAttribute("pattern"),
		placeholder = elem.getAttribute("placeholder"),
		isType = /^(email|url)$/i,
		evt = /^(input|keyup)$/i,
		fType = ((isType.test(type)) ? type : ((pattern) ? pattern : false)),
		patt = H5F.pattern(elem,fType),
		step = H5F.range(elem,"step"),
		min = H5F.range(elem,"min"),
		max = H5F.range(elem,"max");

		elem.validity = {
			patternMismatch: patt,
			rangeOverflow: max,
			rangeUnderflow: min,
			stepMismatch: step,
			valid: (!missing && !patt && !step && !min && !max),
			valueMissing: missing
		};

		if(placeholder && !evt.test(curEvt)) { H5F.placeholder(elem); }
		elem.checkValidity = function() { return H5F.checkValidity(elem); };
	};
	H5F.checkField = function (e) {
		var el = H5F.getTarget(e) || e, // checkValidity method passes element not event
		events = /^(input|keyup|focusin|focus)$/i,
		checkForm = true;

		curEvt = e.type;
		if(!H5F.support()) { H5F.validity(el); }

		if(el.validity.valid) {
			H5F.removeClass(el,[args.invalidClass,args.requiredClass]);
			H5F.addClass(el,args.validClass);
		} else if(!events.test(curEvt)) {
			if(el.validity.valueMissing) {
				H5F.removeClass(el,[args.invalidClass,args.validClass]);
				H5F.addClass(el,args.requiredClass);
			} else {
				H5F.removeClass(el,[args.validClass,args.requiredClass]);
				H5F.addClass(el,args.invalidClass);
			}
		} else if(el.validity.valueMissing) {
			H5F.removeClass(el,[args.requiredClass,args.invalidClass,args.validClass]);
		}
		if(curEvt === "input" && checkForm) {
			// If input is triggered remove the keyup event
			H5F.unlisten(el.form,"keyup",H5F.checkField,true);
			checkForm = false;
		}
	};
	H5F.checkValidity = function (el) {
		var f, ff, isRequired, invalid = false;

		if(el.nodeName === "FORM") {
			f = el.elements;

			for(var i = 0,len = f.length;i < len;i++) {
				ff = f[i];

				isRequired = !!(ff.attributes["required"]);
				hasPattern = !!(ff.attributes["pattern"]);

				if(ff.nodeName !== "FIELDSET" && (isRequired || hasPattern)) {
					H5F.checkField(ff);
					if(!ff.validity.valid && !invalid) {
						ff.focus();
						invalid = true;
					}
				}
			}
			return !invalid;
		} else {
			H5F.checkField(el);
			return el.validity.valid;
		}
	};

	H5F.support = function() {
		return (H5F.isHostMethod(field,"validity") && H5F.isHostMethod(field,"checkValidity"));
	};

	// Create helper methods to emulate attributes in older browsers
	H5F.pattern = function(el, type) {
		if(type === "email") {
			return !emailPatt.test(el.value);
		} else if(type === "url") {
			return !urlPatt.test(el.value);
		} else if(!type) {
			return false;
		} else {
			usrPatt = new RegExp(type);
			return !usrPatt.test(el.value);
		}
	};
	H5F.placeholder = function(el) {
		var placeholder = el.getAttribute("placeholder"),
		focus = /^(focus|focusin)$/i,
		node = /^(input|textarea)$/i,
		isNative = !!("placeholder" in field);

		if(!isNative && node.test(el.nodeName)) {
			if(el.value === "") {
				el.value = placeholder;
			} else if(el.value === placeholder && focus.test(curEvt)) {
				el.value = "";
			}
		}
	};
	H5F.range = function(el,type) {
		// Emulate min, max and step
		var min = parseInt(el.getAttribute("min"),10) || 0,
		max = parseInt(el.getAttribute("max"),10) || false,
		step = parseInt(el.getAttribute("step"),10) || 1,
		val = parseInt(el.value,10),
		mismatch = (val-min)%step;

		if(!H5F.valueMissing(el) && !isNaN(val)) {
			if(type === "step") {
				return (el.getAttribute("step")) ? (mismatch !== 0) : false;
			} else if(type === "min") {
				return (el.getAttribute("min")) ? (val < min) : false;
			} else if(type === "max") {
				return (el.getAttribute("max")) ? (val > max) : false;
			}
		} else if(el.getAttribute("type") === "number") {
			return true;
		} else {
			return false;
		}
	};
	H5F.required = function(el) {
		var required = !!(el.attributes["required"]);

		return (required) ? H5F.valueMissing(el) : false;
	};
	H5F.valueMissing = function(el) {
		var placeholder = el.getAttribute("placeholder"),
		isRequired = !!(el.attributes["required"]);
		return !!(isRequired && (el.value === "" || el.value === placeholder));
	};

	/* Util methods */
	H5F.listen = function (node,type,fn,capture) {
		if(H5F.isHostMethod(window,"addEventListener")) {
			/* FF & Other Browsers */
			node.addEventListener( type, fn, capture );
		} else if(H5F.isHostMethod(window,"attachEvent") && typeof window.event !== "undefined") {
			/* Internet Explorer way */
			if(type === "blur") {
				type = "focusout";
			} else if(type === "focus") {
				type = "focusin";
			}
			node.attachEvent( "on" + type, fn );
		}
	};
	H5F.unlisten = function (node,type,fn,capture) {
		if(H5F.isHostMethod(window,"removeEventListener")) {
			/* FF & Other Browsers */
			node.removeEventListener( type, fn, capture );
		} else if(H5F.isHostMethod(window,"detachEvent") && typeof window.event !== "undefined") {
			/* Internet Explorer way */
			node.detachEvent( "on" + type, fn );
		}
	};
	H5F.preventActions = function (evt) {
		evt = evt || window.event;

		if(evt.stopPropagation && evt.preventDefault) {
			evt.stopPropagation();
			evt.preventDefault();
		} else {
			evt.cancelBubble = true;
			evt.returnValue = false;
		}
	};
	H5F.getTarget = function (evt) {
		evt = evt || window.event;
		return evt.target || evt.srcElement;
	};
	H5F.addClass = function (e,c) {
		var re;
		if (!e.className) {
			e.className = c;
		}
		else {
			re = new RegExp('(^|\\s)' + c + '(\\s|$)');
			if (!re.test(e.className)) { e.className += ' ' + c; }
		}
	};
	H5F.removeClass = function (e,c) {
		var re, m, arr = (typeof c === "object") ? c.length : 1, len = arr;
		if (e.className) {
			if (e.className == c) {
				e.className = '';
			}
			else {
				while(arr--) {
					re = new RegExp('(^|\\s)' + ((len > 1) ? c[arr] : c) + '(\\s|$)');
					m = e.className.match(re);
					if (m && m.length == 3) { e.className = e.className.replace(re, (m[1] && m[2])?' ':''); }
				}
			}
		}
	};
	H5F.isHostMethod = function(o, m) {
		var t = typeof o[m], reFeaturedMethod = new RegExp('^function|object$', 'i');
		return !!((reFeaturedMethod.test(t) && o[m]) || t == 'unknown');
	};

})(document);





