$(document).ready(function() {
    $.tabs("GSWcontainer");              
    $('#'+gsw_sel_tab).addClass('on');
    if(gsw_sel_tab!='flights'){
        $($('#'+gsw_sel_tab+' a').attr('href')).show()
    }
    $('.anchor form').submit(makeURL);
    $("#depart_date, #return_date").datepicker({beforeShow: customRange});    
    $("#check_in, #check_out").datepicker({beforeShow: customRange2});    
    $("#v_depart_date, #v_return_date").datepicker({beforeShow: customRange3});    
    $('#depart_date, #return_date, #check_in, #check_out, #v_depart_date, #v_return_date').unbind('keyup').unbind('keydown');
    var as_json = new AutoSuggest('flights_from', autosuggest_options);
    var as_json2 = new AutoSuggest('flights_to', autosuggest_options); 
       
    $('#flights_from').blur(function(){as_json.clearSuggestions()});
    $('#flights_to').blur(function(){as_json2.clearSuggestions()});   
    
    $('#check-avail-form').unbind('submit');
    
    var gswldrimg = new Image();
    gswldrimg.src = 'http://cdn.bootsnall.com/gsw/images/progress.gif';
    var gswldrpos = navigator.userAgent.search("MSIE") > 0 ? 'absolute' : 'fixed';
    $('<div id="gsw_overlay"/>').css('z-index','999').css({
        position: gswldrpos,top: 0,left: 0,width: '100%',height: '100%',background: '#FFFFFF no-repeat center',color:'#000000'
    }).css('background-image','url('+gswldrimg.src+')').hide().appendTo('body');
    
    
});
   
function customRange(input) { 
    var mDate = (input.id == "depart_date" ? new Date() : $("#depart_date").datepicker("getDate"));
    return { minDate: mDate}; 
}

function customRange2(input) { 
    var mDate = (input.id == "check_in" ? new Date() : $("#check_in").datepicker("getDate"));
    return { minDate: mDate}; 
}

function customRange3(input) { 
    var mDate = (input.id == "v_depart_date" ? new Date() : $("#v_depart_date").datepicker("getDate"));
    return { minDate: mDate}; 
}

function makeURL(){
    gsw_animate_src_but();
    
    var thisform = $(this);
    a = thisform.attr('id')

    if (a == "widget_hotels"){
    
        var destination = $('#widget_hotels input[name="city"]').val();
        var dep_date = $('#check_in').val();
        var ret_date = $('#check_out').val();
        var adults = $('#adults').val()
        var rooms = $('#rooms').val()
        $('#widget_hotels input[name="city"], #check_in, #check_out').css('background-color','#ffffff');    
        var var_err = false;
        
        if(!destination){
            $('#widget_hotels input[name="city"]').css('background-color','#ffd3d3');
            var_err = true;
        }        
        if(var_err){
            gsw_reset_src_but();
            alert('Please enter a destination name');
            return false;
        }
        
        var val_err_date = false;
        if(!dep_date){
            val_err_date = true;
            $('#check_in').css('background-color','#ffd3d3');
        }else if(!ret_date){
            val_err_date = true;
            $('#check_out').css('background-color','#ffd3d3');        
        }else{
            var now = new Date();
            var ef_dep = new Date();
            var ef_ret = new Date();
            var spl_d = dep_date.split('/');
            var spl_r = ret_date.split('/');    
            ef_dep.setFullYear(parseInt(spl_d[2]),parseInt(spl_d[0].replace(/^0/,''))-1,parseInt(spl_d[1].replace(/^0/,'')));
            ef_ret.setFullYear(parseInt(spl_r[2]),parseInt(spl_r[0].replace(/^0/,''))-1,parseInt(spl_r[1].replace(/^0/,'')));        
            if(ef_dep < now || ef_dep > ef_ret || !dep_date.match(/\d{1,2}\/\d{1,2}\/\d{4}/)){
                $('#check_in').css('background-color','#ffd3d3');
                val_err_date = true;
            }
            if(ef_ret < now || ef_dep > ef_ret || !ret_date.match(/\d{1,2}\/\d{1,2}\/\d{4}/)){
                $('#check_out').css('background-color','#ffd3d3');
                val_err_date = true;
            }    
        }
        if(val_err_date){
            gsw_reset_src_but();
            alert('Please enter correct departure and return dates'); 
            return false;
        }
            
    }else if (a == "widget_flights"){        
        var departure = $('#flights_from').val();
        var destination = $('#flights_to').val();
        var dep_date = $('#depart_date').val();
        var ret_date = $('#return_date').val();
        
        departure = departure.replace(/\(([^)]+)\)(.+)/,'$1');
        destination = destination.replace(/\(([^)]+)\)(.+)/,'$1');
        
        val_err = false;
        mult_from = mult_to = false;
        fr_fix = to_fix = false;
        $('#flights_to, #flights_from, #depart_date, #return_date').css('background-color','#ffffff');    
        $.getJSON(josnx_url + '?' + 'check_air='+departure+'|'+destination + '&jsoncallback=?', function(msg){        
            spl = msg.result.split('|');
            if(spl[0]=='0'){
                if(!spl[1]){
                    $('#flights_from').css('background-color','#ffd3d3');
                    val_err = true;
                }else if(spl[1].charAt(0)=='@'){    
                    mult_from = spl[1].substr(1);                
                }else{
                    $('#flights_from').attr('value',spl[1]);
                    fr_fix = true;
                }
            }
            if(spl[2]=='0'){
                if(!spl[3]){
                    $('#flights_to').css('background-color','#ffd3d3');
                    val_err = true;
                }else if(spl[3].charAt(0)=='@'){
                    mult_to = spl[3].substr(1);                
                }else{
                    $('#flights_to').attr('value',spl[3]);
                    to_fix = true;
                }
            } 

            if(val_err){
                gsw_reset_src_but();
                alert('The city or airport code(s) in the highlighted fields are not recognized. Please try again and select from one of the suggested locations that appear when typing.');
                return false;
            }
            
            var val_err_date = false;
            if(!dep_date || !ret_date){
                if(!dep_date) $('#depart_date').css('background-color','#ffd3d3');
                if(!ret_date) $('#return_date').css('background-color','#ffd3d3');
                val_err_date = true;
            }else{
                var now = new Date();
                var ef_dep = new Date();
                var ef_ret = new Date();
                var spl_d = dep_date.split('/');
                var spl_r = ret_date.split('/');    
                ef_dep.setFullYear(parseInt(spl_d[2]),parseInt(spl_d[0].replace(/^0/,''))-1,parseInt(spl_d[1].replace(/^0/,'')));
                ef_ret.setFullYear(parseInt(spl_r[2]),parseInt(spl_r[0].replace(/^0/,''))-1,parseInt(spl_r[1].replace(/^0/,'')));        
                if(ef_dep < now || ef_dep > ef_ret || !dep_date.match(/\d{1,2}\/\d{1,2}\/\d{4}/)){
                    $('#depart_date').css('background-color','#ffd3d3');
                    val_err_date = true;
                }
                if(ef_ret < now || ef_dep > ef_ret || !ret_date.match(/\d{1,2}\/\d{1,2}\/\d{4}/)){
                    $('#return_date').css('background-color','#ffd3d3');
                    val_err_date = true;
                }  
                
                var oneyearfromnow = new Date();
                oneyearfromnow.setDate(oneyearfromnow.getDate()+330);
                if(oneyearfromnow < ef_dep){
                    $('#depart_date').css('background-color','#ffd3d3');
                    val_err_date = 'You have selected a date too far into the future to book tickets at this time. Please check your dates and try your search again.';
                }
                if(oneyearfromnow < ef_ret){
                    $('#return_date').css('background-color','#ffd3d3');
                    val_err_date = 'You have selected a date too far into the future to book tickets at this time. Please check your dates and try your search again.';
                }
                
                
                
                  
            }            
            if(val_err_date){
                gsw_reset_src_but();
                if(val_err_date.length > 0){
                    alert(val_err_date);
                }else{
                    alert('Please enter correct departure and return dates'); 
                }                
                return false;
            }                

            if(typeof(cvar)!='undefined'){
                $('#gswcvar').val(cvar);
            }

            if(mult_from){
                jQuery('#mult_from').val(mult_from);
            }else{
                jQuery('#mult_from').val('');
            }    
            if(mult_to){
                jQuery('#mult_to').val(mult_to);
            }else{
                jQuery('#mult_to').val('');
            } 
            
            thisform.unbind('submit');
            thisform.submit();            
            
        });
        
        return false;
                                 
    }
    else
    if (a == "widget_vacations"){
        var departure = document.widget_vacations.city1.value;
        var destination = document.widget_vacations.city2.value;

        var dep_date = document.widget_vacations.v_depart_date.value;
        var ret_date = document.widget_vacations.v_return_date.value;
        var package_type = document.widget_vacations.package_type.value;

        $('#v_depart_date, #v_return_date, #widget_vacations input[name="city1"], #widget_vacations input[name="city2"]').css('background-color','#fff');

        var var_err = false;
        if(!departure || departure == 'Leaving from...'){
            $('#widget_vacations input[name="city1"]').css('background-color','#ffd3d3');
            var_err = true;
        }        
        if(!destination || destination == 'Going to...'){
            $('#widget_vacations input[name="city2"]').css('background-color','#ffd3d3');
            var_err = true;
        }                
        if(var_err){
            gsw_reset_src_but();
            alert('Please enter the correct destination names');
            return false;
        }
        
        var val_err_date = false;
        if(!dep_date || !ret_date){
            if(!dep_date) $('#v_depart_date').css('background-color','#ffd3d3');
            if(!ret_date) $('#v_return_date').css('background-color','#ffd3d3');
            val_err_date = true;
        }else{
            var now = new Date();
            var ef_dep = new Date();
            var ef_ret = new Date();
            var spl_d = dep_date.split('/');
            var spl_r = ret_date.split('/');    
            ef_dep.setFullYear(parseInt(spl_d[2]),parseInt(spl_d[0].replace(/^0/,''))-1,parseInt(spl_d[1].replace(/^0/,'')));
            ef_ret.setFullYear(parseInt(spl_r[2]),parseInt(spl_r[0].replace(/^0/,''))-1,parseInt(spl_r[1].replace(/^0/,'')));        
            if(ef_dep < now || ef_dep > ef_ret || !dep_date.match(/\d{1,2}\/\d{1,2}\/\d{4}/)){
                $('#v_depart_date').css('background-color','#ffd3d3');
                val_err_date = true;
            }
            if(ef_ret < now || ef_dep > ef_ret || !ret_date.match(/\d{1,2}\/\d{1,2}\/\d{4}/)){
                $('#v_return_date').css('background-color','#ffd3d3');
                val_err_date = true;
            }    
        }            
        if(val_err_date){
            gsw_reset_src_but();
            alert('Please enter correct departure and return dates'); 
            return false;
        }    
    }
    
    return true;
}

function gsw_animate_src_but(){
    jQuery('#gsw_overlay').fadeIn('fast');    
}
var gsw_src_orig_src = '';
function gsw_reset_src_but(){
    jQuery('#gsw_overlay').fadeOut('fast');    
}