function initCufon() {
	Cufon.replace("#nav li #nav-subnav a", {fontFamily: "Helvetica Neue LT Std Medium", hover: true});

	Cufon.replace("#nav li a, .text-box h4", {fontFamily: "Helvetica Neue LT Std", hover: true});
	
	Cufon.replace("#nav li #nav-subnav a", {fontFamily: "Helvetica Neue LT Std Medium", hover: true});

	Cufon.replace(".panel .galleri-billed-tekst h3", {fontFamily: "Baskerville-Regular"});

	Cufon.replace("#contactform table th", {fontFamily: "Helvetica Neue LT Std Medium"});
	Cufon.replace(".boxes h2, .login h2, #content h2, .text-box h3", {fontFamily: "Helvetica Neue LT Std Medium", hover: true});
	Cufon.replace(".booking .heading strong", {fontFamily: "Helvetica Neue"});
	Cufon.replace(".visual strong span, .image-holder h1 span", {fontFamily: "Baskerville-Regular"});
	Cufon.replace(".sub-nav > li > a.category", {fontFamily: "Helvetica Neue LT Std Medium", hover: true});
}

function initDatapicker(){
	$('#date-pick')
		.datePicker(
			// associate the link with a date picker
			{
				createButton:false,
				startDate:'01/01/2010',
				endDate:'31/12/2015'
			}
		).bind(
			// when the link is clicked display the date picker
			'click',
			function()
			{
				updateSelects($(this).dpGetSelected()[0]);
				$(this).dpDisplay();
				return false;
			}
		).bind(
			// when a date is selected update the SELECTs
			'dateSelected',
			function(e, selectedDate, $td, state)
			{
				updateSelects(selectedDate);
			}
		).bind(
			'dpClosed',
			function(e, selected)
			{
				updateSelects(selected[0]);
			}
		);

	var updateSelects = function (selectedDate)
	{
		var selectedDate = new Date(selectedDate);

		var d = selectedDate.getDate();
		var m = selectedDate.getMonth() + 1;
		var y = selectedDate.getFullYear()

		if(d < 10)
			d = '0' + d;
		if(m < 10)
			m = '0' + m;

		$('#d option[value=' + d + ']').attr('selected', 'selected');
		$('#m option[value=' + m + ']').attr('selected', 'selected');
		$('#y option[value=' + y + ']').attr('selected', 'selected');
	}
	// listen for when the selects are changed and update the picker
	$('#d, #m, #y')
		.bind(
			'change',
			function()
			{
				var d = new Date(
							$('#y').val(),
							$('#m').val()-1,
							$('#d').val()
						);
				$('#date-pick').dpSetSelected(d.asString());
			}
		);
	
	// default the position of the selects to today
	var tomorrow = new Date().addDays(1);
	updateSelects(tomorrow .getTime());
	
	// and update the datePicker to reflect it...
	$('#d').trigger('change');
}

function initDatapicker1(){
	$('#date-pick1')
		.datePicker(
			// associate the link with a date picker
			{
				createButton:false,
				startDate:'01/01/2005',
				endDate:'31/12/2015'
			}
		).bind(
			// when the link is clicked display the date picker
			'click',
			function()
			{
				updateSelects($(this).dpGetSelected()[0]);
				$(this).dpDisplay();
				return false;
			}
		).bind(
			// when a date is selected update the SELECTs
			'dateSelected',
			function(e, selectedDate, $td, state)
			{
				updateSelects(selectedDate);
			}
		).bind(
			'dpClosed',
			function(e, selected)
			{
				updateSelects(selected[0]);
			}
		);
		
	var updateSelects = function (selectedDate)
	{
		var selectedDate = new Date(selectedDate);

		var d = selectedDate.getDate();
		var m = selectedDate.getMonth() + 1;
		var y = selectedDate.getFullYear()

		if(d < 10)
			d = '0' + d;
		if(m < 10)
			m = '0' + m;

		$('#d1 option[value=' + d + ']').attr('selected', 'selected');
		$('#m1 option[value=' + m + ']').attr('selected', 'selected');
		$('#y1 option[value=' + y + ']').attr('selected', 'selected');
	}
	// listen for when the selects are changed and update the picker
	$('#d, #m, #y')
		.bind(
			'change',
			function()
			{
				var d = new Date(
							$('#y').val(),
							$('#m').val()-1,
							$('#d').val()
						);
				$('#date-pick').dpSetSelected(d.asString());
			}
		);
	
	// default the position of the selects to today
	var twoDaysFromNow = new Date().addDays(2);
	updateSelects(twoDaysFromNow .getTime());
	
	// and update the datePicker to reflect it...
	$('#d').trigger('change');
}

function initOpenClose() {
	var speed =  300;
	var hold_wrapper = $('div.booking');
	var _opener = hold_wrapper.find('div.heading a.open-close');
	var _slide = hold_wrapper.find('.form-booking');
	
	var slide_height = $(_slide).outerHeight() -4;
	//var slide_height = $(_slide).height() -4;
	
	if(_opener.hasClass('close')){		
		_slide.css('height', '0');
	}
	_opener.click(function(){
		if (_opener.hasClass('close')) {
			_slide.animate({
				height: slide_height
				}, {duration: speed, queue: false, complete: function(){
				}
			});
			_opener.removeClass('close');
			_opener.addClass('open');
		}
		else {
			_slide.animate({
				height: 0
				}, {duration: speed, queue: false, complete: function(){
					_slide.css('display','none');
				}
			});
			_opener.addClass('close');
		}
	});
}

jQuery.fn.gallery = function(_options){
	
	// defaults options	
	var _options = jQuery.extend({
		duration: 700,
		autoSlide: false,
		slideElement: 1,
		effect: false,
		fadeEl: 'ul',
		switcher: 'ul > li',
		disableBtn: false,
		next: 'a.link-next, a.btn-next, a.next',
		prev: 'a.link-prev, a.btn-prev, a.prev',
		circle: true
	},_options);

	

	return this.each(function(){
		var _hold = $(this);
		if (!_options.effect) var _speed = _options.duration;
		else var _speed = _options.duration;
		var _timer = _options.autoSlide;
		var _sliderEl = _options.slideElement;
		var _wrap = _hold.find(_options.fadeEl);
		var _el = _hold.find(_options.switcher);
		var _next = _hold.find(_options.next);
		var _prev = _hold.find(_options.prev);
		var _count = _el.index(_el.filter(':last'));
		var _w = _el.outerWidth(true);
		var _wrapHolderW = Math.ceil(_wrap.parent().width()/_w);
		if (((_wrapHolderW-1)*_w + _w/2) > _wrap.parent().width()) _wrapHolderW--;
		if (_timer) var _t;
		var _active = _el.index(_el.filter('.active:eq(0)'));
		if (_active < 0) _active = 0;
		var _last = _active;
		if (!_options.effect) var rew = _count - _wrapHolderW + 1;
		else var rew = _count;

		
		
		if (!_options.effect) _wrap.css({marginLeft: -(_w * _active)});
		else {
			_wrap.css({opacity: 0}).removeClass('active').eq(_active).addClass('active').css({opacity: 1}).css('opacity', 'auto');
			_el.removeClass('active').eq(_active).addClass('active');
		}
		if (_options.disableBtn) {
			if (_count < _wrapHolderW) _next.addClass(_options.disableBtn);
			_prev.addClass(_options.disableBtn);
		}
		
		function fadeElement(){
			_wrap.eq(_last).animate({opacity:0}, {queue:false, duration: _speed});
			_wrap.removeClass('active').eq(_active).addClass('active').animate({
				opacity:1
			}, {queue:false, duration: _speed, complete: function(){
				$(this).css('opacity','auto');
			}});
			_el.removeClass('active').eq(_active).addClass('active');
			_last = _active;
		setLinks();

		}

		function scrollEl(){
			_wrap.animate({marginLeft: -(_w * _active)}, {queue:false, duration: _speed});
		}
		function toPrepare(){
			if ((_active == rew) && _options.circle) _active = -_sliderEl;
			for (var i = 0; i < _sliderEl; i++){
				_active++;
				if (_active > rew) {
					_active--;
					if (_options.disableBtn &&(_count > _wrapHolderW)) _next.addClass(_options.disableBtn);
				}
			};
			if (_active == rew) if (_options.disableBtn &&(_count > _wrapHolderW)) _next.addClass(_options.disableBtn);
			if (!_options.effect) scrollEl();
			else fadeElement();
		}
		function runTimer(){
			_t = setInterval(function(){
				toPrepare();
			}, _timer);

		if ($("ul#nav li:first").attr('class')=='active'){
			setLinks();}
		}

		function setLinks() {

			var activeLink = $(".slides li.active span.theLink").html();
			//var stringActiveLink = activeLink.toString().replace("function onclick(event) {","").replace("location.href = \"","").replace("\";","").replace("}","").replace(/^\s*|\s*$/g,"")
		
	
//alert($("ul#nav li:first").attr('class'));
			$("#visual").click(function() { 


					
				location.href=activeLink;

  			});


$(".booking").mouseover(function(e)
    {
$('#visual').unbind('click'); 
    });


		}

		_next.click(function(){
			if(_t) clearTimeout(_t);
			if (_options.disableBtn &&(_count > _wrapHolderW)) _prev.removeClass(_options.disableBtn);
			toPrepare();
			if (_timer) runTimer();
			return false;
		setLinks();
		});
		_prev.click(function(){
			if(_t) clearTimeout(_t);
			if (_options.disableBtn &&(_count > _wrapHolderW)) _next.removeClass(_options.disableBtn);
			if ((_active == 0) && _options.circle) _active = rew + _sliderEl;
			for (var i = 0; i < _sliderEl; i++){
				_active--;
				if (_active < 0) {
					_active++;
					if (_options.disableBtn &&(_count > _wrapHolderW)) _prev.addClass(_options.disableBtn);
				}
			};
			if (_active == 0) if (_options.disableBtn &&(_count > _wrapHolderW)) _prev.addClass(_options.disableBtn);
			if (!_options.effect) scrollEl();
			else fadeElement();
			if (_timer) runTimer();
			return false;
		setLinks();
		});
		if (_options.effect) _el.click(function(){
			_active = _el.index($(this));
			if(_t) clearTimeout(_t);
			fadeElement();
			if (_timer) runTimer();
			return false;
		});
		if (_timer) runTimer();
	});
}

function initValidation(){
	var _errorClass = 'incorrect';
	var _regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var _regEmails = /^([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})+([, ]+[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})*$/;
	var _regPhone = /^[0-9\-\ \()]+$/;
	var _regNum = /^[0-9]+$/;
	var _regDay = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/;
	var _regMon = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1}))$/;
	var _regYear = /^[19]{2}[0-9]{2}$/;
	
	$('form.login').each(function(){
		var _form = $(this);
		form_submit = $(this).find('a.submit');
		function checkFields() {
			
			var _flag = false;
			_form.find('.'+_errorClass).removeClass(_errorClass);

			// fields validation
			_form.find('input.required-email').each(function(){
				if(!_regEmail.test($(this).val())) addError($(this));
			});
			_form.find('input.required-day').each(function(){
				if(!_regDay.test($(this).val())) addError($(this));
			});
			_form.find('input.required-mon').each(function(){
				if(!_regMon.test($(this).val())) addError($(this));
			});
			_form.find('input.required-year').each(function(){
				if(!_regYear.test($(this).val())) addError($(this));
			});
			_form.find('textarea.required-many-emails').each(function(){
				if(!_regEmails.test($(this).val())) addError($(this));
			});
			_form.find('input.required-phone').each(function(){
				if(!_regPhone.test($(this).val())) addError($(this));
			});
			_form.find('input.required-num').each(function(){
				if(!_regNum.test($(this).val())) addError($(this));
			});
			_form.find('input.required, textarea.required').each(function(){
				if(!$(this).val().length || $(this).val() == $(this).attr('alt')) addError($(this));
			});
			_form.find('input.required-chek').each(function(){
				if (!$(this).is(':checked')) {
					$(this).parent('span').addClass('error-chk');
					_flag=true;
				}
			});
			_form.find('div.required-radio').each(function(){
				var _test = false;
				$(this).find('input[type=radio]').each(function(){
					if ($(this).is(':checked')) _test = true;
				});
				if (!_test) {
					_flag=true;
				}
			});

			// error class adding
			function addError(_obj) {
				_obj.addClass(_errorClass);
				_flag=true;
			}
			return _flag;
		}

		// catch form submit event
		form_submit.click(function(){
			if(checkFields()) {
				alert(alert_message);
				return false;
			}
			return false;
		});
	});
}

$(document).ready(function() {
	initCufon();

	var slidenrms = $('ul.slides li').length;

	for(var i=0;i<slidenrms;i++){
		$('ul.paging').append('<li>'+'<a href="#">'+(i+1)+'</a>'+'</li>');
	}

if ($("ul#nav li:first").attr('class')=='active'){
	$('#visual').gallery({
		duration: 1000,
		autoSlide: 5000,
		effect: 'fade',
		fadeEl: 'ul.slides > li',
		switcher: 'ul.paging > li'
	});
}
	initOpenClose();
	initDatapicker();
	initDatapicker1();
	initValidation();

});
