var monthsNumber = 0;
var bStopSubmit = false;
/*
function customRange(input) 
{ 
	return {
//        minDate: (input.id == "pDate" ? $("#pDate").datepicker("getDate") : null)
  	 } 
}
*/
function _$(obj) {
    return document.getElementById(obj);

}

$(document).ready(function() {


    if (!monthsNumber) monthsNumber = 2;
    // Set autocomplete for locc

    if (document.getElementById("#locc") != null) {

        jquery("#locc").autocomplete("/post/getlocations2.php",
        {
            width: 230,
            cacheLength: 1,
            max: 20,
            minChar: 3,
            focus: false,
            extraParams: { id: function() { return document.getElementById("country1").value; } }
        });

    }
    

    if (document.getElementById("#abc") != null) {
        jquery("#abc").treeview({ speed: "slow", collapsed: true });
    }

    if (document.getElementById("#loca") != null) {
        // What to do when we get results for locas autocomplete
        jquery("#loca").result(function(event, data, formatted) {
            if (data) {
                /*    document.getElementById("pickup_lon").value = data[2];
                document.getElementById("pickup_lat").value = data[3];

            $("#loca").val(data[1]);
                document.getElementById("locb").value = data[3];
                document.getElementById("locd").value = data[4];
                document.getElementById("country1").value = data[2];

            // if unchecked then the dropoff is the same as the pickup.
                if (!document.getElementById("droploc").checked) 
                {
                document.getElementById("dropoff_lon").value = data[2];
                document.getElementById("dropoff_lat").value = data[3];

 
    document.getElementById("locc").value = data[1];
                document.getElementById("drop_locb").value = data[3];
                document.getElementById("drop_locd").value = data[4];
                document.getElementById("drop_country1").value = data[2];
                }
                */
            }
            onsubmit: false;
        });
    }

    if (document.getElementById("#locc") != null) {
        // What to do when we get results for loccs autocomplete 
        $("#locc").result(function(event, data, formatted) {
            if (data) {
                document.getElementById("locc").value = data[1];

                document.getElementById("dropoff_lon").value = data[2];
                document.getElementById("dropoff_lat").value = data[3];


                //			$("#from2").val(data[1]);
                $("#locc").val(data[1]);
//                document.getElementById("drop_locb").value = data[3];
//                document.getElementById("drop_locd").value = data[4];
                //document.getElementById("drop_country1").value = data[2];


            }
        });
    }

    // Set calendar to date inputs
    if (document.getElementById("pDate") != null) 
    {
    
    //alert( $('#dDate').datepicker("isDisabled"));

    jQuery('#pDate').datepicker({ minDate: 0, numberOfMonths: monthsNumber, dateFormat: 'dd/mm/yy', firstDay: 1 });
        //alert("6");

        // When a loca date is selected make the minDate for locc this date
    jQuery('#pDate').change(function() {
    var date_tmp = jQuery('#pDate').val().split("/");
    var date_help = jQuery('#dDate').val();
            jQuery('#dDate').datepicker('option', { minDate: new Date(date_tmp[2], date_tmp[1] - 1, date_tmp[0]) });
            jQuery('#dDate').val(date_help);
        });
    }

    if (document.getElementById("dDate") != null) {
        jQuery('#dDate').datepicker({ minDate: 0, numberOfMonths: monthsNumber, dateFormat: 'dd/mm/yy', firstDay: 1 });

        // When a locc date is selected make the maxDate for loca this date
        jQuery('#dDate').change(function() {
        var date_tmp = jQuery('#dDate').val().split("/");
        var date_help = jQuery('#pDate').val();
        jQuery('#pDate').datepicker('option', { maxDate: new Date(date_tmp[2], date_tmp[1] - 1, date_tmp[0]) });
        jQuery('#pDate').val(date_help);
        });
    }




});


/**
 *   Form Validation before sending
 **/
function sendData()//{{{
{
    return false;

  var err_list = "";
  //check date out
    if ((document.getElementById("loca").value.length==0) || (document.getElementById("loca").value == "loca airport"))
 	 err_list += "Please select the from location.\n";

	if (document.getElementById("pDate").value.length == 0)
	  err_list += "Please select the depart date\n";
	else if (document.getElementById("pDate").value == 'dd/mm/yyyy')
	  err_list += "Please select the depart date\n";

   if ((document.getElementById("locc").value.length==0) || (document.getElementById("locc").value == "arrival airport"))
	 err_list += "Please select locc airport.\n";

	//check date ret
	if (document.getElementById("journey_return").checked)
	{
		if (document.getElementById("dDate").value.length == 0)
	  		err_list += "Please select the return date\n";
		else if (document.getElementById("dDate").value == 'dd/mm/yyyy')
		  err_list += "Please select the return date\n";
	}


	var x = 1*document.getElementById("adults").value;
	if ( x < 1 )
	   err_list += "At least one of the passengers must be an adult\n";

	if(err_list)
	{
	  alert (err_list);
	  return false;
	}

	return true;
}//}}}


function change_journey_type()//{{{
{
  if (!document.getElementById("journey_return").checked)
    document.getElementById("form_return_date").style.visibility = "hidden";
  else
    document.getElementById("form_return_date").style.visibility = "visible";
}//}}}


$.fn.infiniteCarousel = function() {
   
    function repeat(str, num) {
        if (isNaN(num)) num = 1;
        return new Array(num + 1).join(str);
    }

    return this.each(function() {
        var $wrapper = $('> div', this).css('overflow', 'hidden'),
            $slider = $wrapper.find('> ul'),
            $items = $slider.find('> li'),
            $single = $items.filter(':first'),

            singleWidth = $single.outerWidth(),
            visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
            currentPage = 1,
            pages = Math.ceil($items.length / visible);


        // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
        if (($items.length % visible) != 0) {
            $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
            $items = $slider.find('> li');
        }

        // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
        $items.filter(':first').before($items.slice(-visible).clone().addClass('cloned'));
        $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
        $items = $slider.find('> li'); // reselect

        // 3. Set the left position to the first 'real' item
        $wrapper.scrollLeft(singleWidth * visible);

        // 4. paging function
        function gotoPage(page) {
            var dir = page < currentPage ? -1 : 1,
                n = Math.abs(currentPage - page),
                left = singleWidth * dir * visible * n;

            $wrapper.filter(':not(:animated)').animate({
                scrollLeft: '+=' + left
            }, 500, function() {
                if (page == 0) {
                    $wrapper.scrollLeft(singleWidth * visible * pages);
                    page = pages;
                } else if (page > pages) {
                    $wrapper.scrollLeft(singleWidth * visible);
                    // reset back to start position
                    page = 1;
                }

                currentPage = page;
            });

            return false;
        }

        $wrapper.after('<a class="arrow back">&lt;</a><a class="arrow forward">&gt;</a>');

        // 5. Bind to the forward and back buttons
        $('a.back', this).click(function() {
            return gotoPage(currentPage - 1);
        });

        $('a.forward', this).click(function() {
            return gotoPage(currentPage + 1);
        });

        // create a public interface to move to a specific page
        $(this).bind('goto', function(event, page) {
            gotoPage(page);
        });
    });
};




(function($) {

	//closeDOMWindow
	$.fn.closeDOMWindow = function(settings) {

		if (!settings) { settings = {}; }

		var run = function(passingThis) {

			if (settings.anchoredClassName) {
				var $anchorClassName = $('.' + settings.anchoredClassName);
				$anchorClassName.fadeOut('fast', function() {
					if ($.fn.draggable) {
						$anchorClassName.draggable('destory').trigger("unload").remove();
					} else {
						$anchorClassName.trigger("unload").remove();
					}
				});
				if (settings.functionCallOnClose) { settings.functionCallAfterClose(); }
			} else {
				var $DOMWindowOverlay = $('#DOMWindowOverlay');
				var $DOMWindow = $('#DOMWindow');
				$DOMWindowOverlay.fadeOut('fast', function() {
					$DOMWindowOverlay.trigger('unload').unbind().remove();
				});
				$DOMWindow.fadeOut('fast', function() {
					if ($.fn.draggable) {
						$DOMWindow.draggable("destroy").trigger("unload").remove();
					} else {
						$DOMWindow.trigger("unload").remove();
					}
				});

				$(window).unbind('scroll.DOMWindow');
				$(window).unbind('resize.DOMWindow');

				if ($.fn.openDOMWindow.isIE6) { $('#DOMWindowIE6FixIframe').remove(); }
				if (settings.functionCallOnClose) { settings.functionCallAfterClose(); }
			}
		};

		if (settings.eventType) {//if used with $().
			return this.each(function(index) {
				$(this).bind(settings.eventType, function() {
					run(this);
					return false;
				});
			});
		} else {//else called as $.function
			run();
		}

	};

	//allow for public call, pass settings
	$.closeDOMWindow = function(s) { $.fn.closeDOMWindow(s); };

	//openDOMWindow
	$.fn.openDOMWindow = function(instanceSettings) {

		var shortcut = $.fn.openDOMWindow;

		//default settings combined with callerSettings////////////////////////////////////////////////////////////////////////

		shortcut.defaultsSettings = {
			anchoredClassName: '',
			anchoredSelector: '',
			borderColor: '#ccc',
			borderSize: '4',
			draggable: 0,
			eventType: null, //click, blur, change, dblclick, error, focus, load, mousedown, mouseout, mouseup etc...
			fixedWindowY: 100,
			functionCallOnOpen: null,
			functionCallOnClose: null,
			height: 500,
			loader: 0,
			loaderHeight: 0,
			loaderImagePath: '',
			loaderWidth: 0,
			modal: 0,
			overlay: 1,
			overlayColor: '#000',
			overlayOpacity: '85',
			positionLeft: 0,
			positionTop: 0,
			positionType: 'centered', // centered, anchored, absolute, fixed
			width: 500,
			windowBGColor: '#fff',
			windowBGImage: null, // http path
			windowHTTPType: 'get',
			windowPadding: 10,
			windowSource: 'inline', //inline, ajax, iframe
			windowSourceID: '',
			windowSourceURL: '',
			windowSourceAttrURL: 'href'
		};

		var settings = $.extend({}, $.fn.openDOMWindow.defaultsSettings, instanceSettings || {});

		//Public functions

		shortcut.viewPortHeight = function() { return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; };
		shortcut.viewPortWidth = function() { return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; };
		shortcut.scrollOffsetHeight = function() { return self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; };
		shortcut.scrollOffsetWidth = function() { return self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft; };
		shortcut.isIE6 = typeof document.body.style.maxHeight === "undefined";

		//Private Functions/////////////////////////////////////////////////////////////////////////////////////////////////////////

		var sizeOverlay = function() {
			var $DOMWindowOverlay = $('#DOMWindowOverlay');
			if (shortcut.isIE6) {//if IE 6
				var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4;
				var overlayViewportWidth = document.documentElement.offsetWidth - 21;
				$DOMWindowOverlay.css({ 'height': overlayViewportHeight + 'px', 'width': overlayViewportWidth + 'px' });
			} else {//else Firefox, safari, opera, IE 7+
				$DOMWindowOverlay.css({ 'height': '100%', 'width': '100%', 'position': 'fixed' });
			}
		};

		var sizeIE6Iframe = function() {
			var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4;
			var overlayViewportWidth = document.documentElement.offsetWidth - 21;
			$('#DOMWindowIE6FixIframe').css({ 'height': overlayViewportHeight + 'px', 'width': overlayViewportWidth + 'px' });
		};

		var centerDOMWindow = function() {
			var $DOMWindow = $('#DOMWindow');
			if (settings.height + 50 > shortcut.viewPortHeight()) {//added 50 to be safe
				$DOMWindow.css('left', Math.round(shortcut.viewPortWidth() / 2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth()) / 2));
			} else {
				$DOMWindow.css('left', Math.round(shortcut.viewPortWidth() / 2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth()) / 2));
				$DOMWindow.css('top', Math.round(shortcut.viewPortHeight() / 2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindow.outerHeight()) / 2));
			}
		};

		var centerLoader = function() {
			var $DOMWindowLoader = $('#DOMWindowLoader');
			if (shortcut.isIE6) {//if IE 6
				$DOMWindowLoader.css({ 'left': Math.round(shortcut.viewPortWidth() / 2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindowLoader.innerWidth()) / 2), 'position': 'absolute' });
				$DOMWindowLoader.css({ 'top': Math.round(shortcut.viewPortHeight() / 2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindowLoader.innerHeight()) / 2), 'position': 'absolute' });
			} else {
				$DOMWindowLoader.css({ 'left': '50%', 'top': '50%', 'position': 'fixed' });
			}

		};

		var fixedDOMWindow = function() {
			var $DOMWindow = $('#DOMWindow');
			$DOMWindow.css('left', settings.positionLeft + shortcut.scrollOffsetWidth());
			$DOMWindow.css('top', +settings.positionTop + shortcut.scrollOffsetHeight());
		};

		var showDOMWindow = function(instance) {
			if (arguments[0]) {
				$('.' + instance + ' #DOMWindowLoader').remove();
				$('.' + instance + ' #DOMWindowContent').fadeIn('fast', function() { if (settings.functionCallOnOpen) { settings.functionCallOnOpen(); } });
				$('.' + instance + '.closeDOMWindow').click(function() {
					$.closeDOMWindow();
					return false;
				});
			} else {
				$('#DOMWindowLoader').remove();
				$('#DOMWindow').fadeIn('fast', function() { if (settings.functionCallOnOpen) { settings.functionCallOnOpen(); } });
				$('#DOMWindow .closeDOMWindow').click(function() {
					$.closeDOMWindow();
					return false;
				});
			}

		};

		var urlQueryToObject = function(s) {
			var query = {};
			s.replace(/b([^&=]*)=([^&=]*)b/g, function(m, a, d) {
				if (typeof query[a] != 'undefined') {
					query[a] += ',' + d;
				} else {
					query[a] = d;
				}
			});
			return query;
		};

		//Run Routine ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
		var run = function(passingThis) {

			//get values from element clicked, or assume its passed as an option
			settings.windowSourceID = $(passingThis).attr('href') || settings.windowSourceID;
			settings.windowSourceURL = $(passingThis).attr(settings.windowSourceAttrURL) || settings.windowSourceURL;
			settings.windowBGImage = settings.windowBGImage ? 'background-image:url(' + settings.windowBGImage + ')' : '';
			var urlOnly, urlQueryObject;

			if (settings.positionType == 'anchored') {//anchored DOM window

				var anchoredPositions = $(settings.anchoredSelector).position();
				var anchoredPositionX = anchoredPositions.left + settings.positionLeft;
				var anchoredPositionY = anchoredPositions.top + settings.positionTop;

				$('body').append('<div class="' + settings.anchoredClassName + '" style="' + settings.windowBGImage + ';background-repeat:no-repeat;padding:' + settings.windowPadding + 'px;overflow:auto;position:absolute;top:' + anchoredPositionY + 'px;left:' + anchoredPositionX + 'px;height:' + settings.height + 'px;width:' + settings.width + 'px;background-color:' + settings.windowBGColor + ';border:' + settings.borderSize + 'px solid ' + settings.borderColor + ';z-index:10001"><div id="DOMWindowContent" style="display:none"></div></div>');
				//loader
				if (settings.loader && settings.loaderImagePath !== '') {
					$('.' + settings.anchoredClassName).append('<div id="DOMWindowLoader" style="width:' + settings.loaderWidth + 'px;height:' + settings.loaderHeight + 'px;"><img src="' + settings.loaderImagePath + '" /></div>');

				}

				if ($.fn.draggable) {
					if (settings.draggable) { $('.' + settings.anchoredClassName).draggable({ cursor: 'move' }); }
				}

				switch (settings.windowSource) {
					case 'inline': //////////////////////////////// inline //////////////////////////////////////////
						$('.' + settings.anchoredClassName + " #DOMWindowContent").append($(settings.windowSourceID).children());
						$('.' + settings.anchoredClassName).unload(function() {// move elements back when you're finished
							$('.' + settings.windowSourceID).append($('.' + settings.anchoredClassName + " #DOMWindowContent").children());
						});
						showDOMWindow(settings.anchoredClassName);
						break;
					case 'iframe': //////////////////////////////// iframe //////////////////////////////////////////
						$('.' + settings.anchoredClassName + " #DOMWindowContent").append('<iframe frameborder="0" hspace="0" wspace="0" src="' + settings.windowSourceURL + '" name="DOMWindowIframe' + Math.round(Math.random() * 1000) + '" style="width:100%;height:100%;border:none;background-color:#fff;" class="' + settings.anchoredClassName + 'Iframe" ></iframe>');
						$('.' + settings.anchoredClassName + 'Iframe').load(showDOMWindow(settings.anchoredClassName));
						break;
					case 'ajax': //////////////////////////////// ajax //////////////////////////////////////////	
						if (settings.windowHTTPType == 'post') {

							if (settings.windowSourceURL.indexOf("?") !== -1) {//has a query string
								urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?"));
								urlQueryObject = urlQueryToObject(settings.windowSourceURL);
							} else {
								urlOnly = settings.windowSourceURL;
								urlQueryObject = {};
							}
							$('.' + settings.anchoredClassName + " #DOMWindowContent").load(urlOnly, urlQueryObject, function() {
								showDOMWindow(settings.anchoredClassName);
							});
						} else {
							if (settings.windowSourceURL.indexOf("?") == -1) { //no query string, so add one
								settings.windowSourceURL += '?';
							}
							$('.' + settings.anchoredClassName + " #DOMWindowContent").load(
								settings.windowSourceURL + '&random=' + (new Date().getTime()), function() {
									showDOMWindow(settings.anchoredClassName);
								});
						}
						break;
				}

			} else {//centered, fixed, absolute DOM window

				//overlay & modal
				if (settings.overlay) {
					$('body').append('<div id="DOMWindowOverlay" style="z-index:10000;display:none;position:absolute;top:0;left:0;background-color:' + settings.overlayColor + ';filter:alpha(opacity=' + settings.overlayOpacity + ');-moz-opacity: 0.' + settings.overlayOpacity + ';opacity: 0.' + settings.overlayOpacity + ';"></div>');
					if (shortcut.isIE6) {//if IE 6
						$('body').append('<iframe id="DOMWindowIE6FixIframe"  src="blank.html"  style="width:100%;height:100%;z-index:9999;position:absolute;top:0;left:0;filter:alpha(opacity=0);"></iframe>');
						sizeIE6Iframe();
					}
					sizeOverlay();
					var $DOMWindowOverlay = $('#DOMWindowOverlay');
					$DOMWindowOverlay.fadeIn('fast');
					if (!settings.modal) { $DOMWindowOverlay.click(function() { $.closeDOMWindow(); }); }
				}

				//loader
				if (settings.loader && settings.loaderImagePath !== '') {
					$('body').append('<div id="DOMWindowLoader" style="z-index:10002;width:' + settings.loaderWidth + 'px;height:' + settings.loaderHeight + 'px;"><img src="' + settings.loaderImagePath + '" /></div>');
					centerLoader();
				}

				//add DOMwindow
				$('body').append('<div id="DOMWindow" style="background-repeat:no-repeat;' + settings.windowBGImage + ';overflow:auto;padding:' + settings.windowPadding + 'px;display:none;height:' + settings.height + 'px;width:' + settings.width + 'px;background-color:' + settings.windowBGColor + ';border:' + settings.borderSize + 'px solid ' + settings.borderColor + '; position:absolute;z-index:10001"></div>');

				var $DOMWindow = $('#DOMWindow');
				//centered, absolute, or fixed
				switch (settings.positionType) {
					case 'centered':
						centerDOMWindow();
						if (settings.height + 50 > shortcut.viewPortHeight()) {//added 50 to be safe
							$DOMWindow.css('top', (settings.fixedWindowY + shortcut.scrollOffsetHeight()) + 'px');
						}
						break;
					case 'absolute':
						$DOMWindow.css({ 'top': (settings.positionTop + shortcut.scrollOffsetHeight()) + 'px', 'left': (settings.positionLeft + shortcut.scrollOffsetWidth()) + 'px' });
						if ($.fn.draggable) {
							if (settings.draggable) { $DOMWindow.draggable({ cursor: 'move' }); }
						}
						break;
					case 'fixed':
						fixedDOMWindow();
						break;
					case 'anchoredSingleWindow':
						var anchoredPositions = $(settings.anchoredSelector).position();
						var anchoredPositionX = anchoredPositions.left + settings.positionLeft;
						var anchoredPositionY = anchoredPositions.top + settings.positionTop;
						$DOMWindow.css({ 'top': anchoredPositionY + 'px', 'left': anchoredPositionX + 'px' });

						break;
				}

				$(window).bind('scroll.DOMWindow', function() {
					if (settings.overlay) { sizeOverlay(); }
					if (shortcut.isIE6) { sizeIE6Iframe(); }
					if (settings.positionType == 'centered') { centerDOMWindow(); }
					if (settings.positionType == 'fixed') { fixedDOMWindow(); }
				});

				$(window).bind('resize.DOMWindow', function() {
					if (shortcut.isIE6) { sizeIE6Iframe(); }
					if (settings.overlay) { sizeOverlay(); }
					if (settings.positionType == 'centered') { centerDOMWindow(); }
				});

				switch (settings.windowSource) {
					case 'inline': //////////////////////////////// inline //////////////////////////////////////////
						$DOMWindow.append($(settings.windowSourceID).children());
						$DOMWindow.unload(function() {// move elements back when you're finished
							$(settings.windowSourceID).append($DOMWindow.children());
						});
						showDOMWindow();
						break;
					case 'iframe': //////////////////////////////// iframe //////////////////////////////////////////
						$DOMWindow.append('<iframe frameborder="0" hspace="0" wspace="0" src="' + settings.windowSourceURL + '" name="DOMWindowIframe' + Math.round(Math.random() * 1000) + '" style="width:100%;height:100%;border:none;background-color:#fff;" id="DOMWindowIframe" ></iframe>');
						$('#DOMWindowIframe').load(showDOMWindow());
						break;
					case 'ajax': //////////////////////////////// ajax //////////////////////////////////////////
						if (settings.windowHTTPType == 'post') {

							if (settings.windowSourceURL.indexOf("?") !== -1) {//has a query string
								urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?"));
								urlQueryObject = urlQueryToObject(settings.windowSourceURL);
							} else {
								urlOnly = settings.windowSourceURL;
								urlQueryObject = {};
							}
							$DOMWindow.load(urlOnly, urlQueryObject, function() {
								showDOMWindow();
							});
						} else {
							if (settings.windowSourceURL.indexOf("?") == -1) { //no query string, so add one
								settings.windowSourceURL += '?';
							}
							$DOMWindow.load(
								settings.windowSourceURL + '&random=' + (new Date().getTime()), function() {
									showDOMWindow();
								});
						}
						break;
				}

			} //end if anchored, or absolute, fixed, centered

		}; //end run()

		if (settings.eventType) {//if used with $().
			return this.each(function(index) {
				$(this).bind(settings.eventType, function() {
					run(this);
					return false;
				});
			});
		} else {//else called as $.function
			run();
		}

	}; //end function openDOMWindow

	//allow for public call, pass settings
	$.openDOMWindow = function(s) { $.fn.openDOMWindow(s); };

})(jQuery);

