function $validate(form, config, message){
	return function(){
		if(execute(form, config)){
			var f = form.elements;
			for(var i = 0; i < f.length; ++i)
				if(f[i].isNull && f[i].isNull()) f[i].value = '';
			return true;
		}
		return false;
	};
	function execute(form, config){
		for(var c in config){
			var el = form[c] || window[c];
			if(!el || !visible(el)) continue;
			var a = config[c].split(/; */);
			for(var i = 0; i < a.length; i++) if(!exec(el, a[i])) return false;
		}
		return true;
	}
	function exec(el, str){
		var a = str.split('|');
		var test = parse(a[0]);
		if(!test.call) test = test.test.bind(test);
		var msg = (message && message[a[1]]) || a[1];
		return test.call(form, val(el), el) || $alert(el, msg) && false;
	}
	function parse(str){
		if(!str) return null;
		if(str.indexOf('(') < 0) return window[str] || new RegExp(str);
		var m = str.trim().match(/^(\w+)\(([\w, ]*)\)$/);
		if(!m) return new Function('return true');
		var fn = window[m[1]] || new RegExp(m[1]);
		if(!m[2]) return fn;
		var arg = m[2].match(/\w+/g);
		if(!arg) return fn;
		for(var i = 0; i < arg.length; i++) arg[i] = form[arg[i]] || window[arg[i]] || arg[i];
		var n = arg.length;
		return function(){
			for(var i = 0;i < arguments.length;i++) arg[n+i]=arguments[i];
			return fn.apply(null, arg);
		};
	}
	function val(el){
		var v = el.value;
		if(el.isNull && el.isNull()) return '';
		return v;
	}
	function visible(el){
		return $(el).$getStyle('visibility') != 'hidden' && el.offsetWidth > 0 && el.offsetHeight > 0;
	}
}

/*************************************************************************
*Author:               bhli
*Description:     移除ScheduleSelector.ascx行内JS，解决$validate先定义问题
*Creatime:          2011-05-17
*/
 function ShowScheduleDetailByFlight()
    {
        if(ValidateFlight())
        {
            window.location.href="/schedule/"+$("textfield").value+".html";
        }
    }

    //Validate
    var ValidateDCity = $validate(document.forms[0], 
    {
	    home_city: 'StringIsEmpty|DepartCityNullPrompt'
    }, 
    {
	    DepartCityNullPrompt: '请选择出发城市'
    });
    //Validate
    var ValidateACity = $validate(document.forms[0], 
    {
	    dest_city_1: 'StringIsEmpty|ArriveCityNullPrompt'
    }, 
    {
        ArriveCityNullPrompt: '请选择到达城市'
    });
    //Validate
    var ValidateDACity = $validate(document.forms[0], 
    {
	    dest_city_1: 'ValidateDepartCityNotSameAsArriveCity(home_city, dest_city_1)|DepartCityNotSameAsArriveCityPrompt'
    }, 
    {
        DepartCityNotSameAsArriveCityPrompt: '出发城市不能和到达城市相同'
    });
    var ValidateFlight=$validate(document.forms[0], 
    {
	    textfield: 'StringIsEmpty|FlightNullPrompt'
    }, 
    {
	    FlightNullPrompt: '请填写航班号'
    });

    //String is empty
    function StringIsEmpty(value)
    {
    return value.trim()!='';
    }

    //Validate depart city does not same as arrive city
    function ValidateDepartCityNotSameAsArriveCity(departCityControl, arriveCityControl)
    {
    var DepartCity = departCityControl.value; 
    if ( DepartCity.indexOf("(")>-1)
    {
        DepartCity = DepartCity.slice(0, DepartCity.indexOf('('))
    } 
    var ArriveCity = arriveCityControl.value; 
    if ( ArriveCity.indexOf("(")>-1)
    {
        ArriveCity = ArriveCity.slice(0, ArriveCity.indexOf('('))
    } 
    return DepartCity != ArriveCity; 
    }
    function ShowScheduleDetailByCity()
    {   
        if(StringIsEmpty($("DCityCode").value)||StringIsEmpty($("ACityCode").value))
        {
            //出发到达都不为空         
            if(StringIsEmpty($("DCityCode").value)&&StringIsEmpty($("ACityCode").value))
            {
                if(ValidateDCity()&&ValidateACity()&&ValidateDACity())
                {
                    window.location.href="/schedule/"+$("DCityCode").value.replace(/,\w+/, '')+"."+$("ACityCode").value.replace(/,\w+/, '')+".html";
                }             
            }
            //出发为空,到达不为空
            else if(!StringIsEmpty($("DCityCode").value)&&StringIsEmpty($("ACityCode").value))
            {
               window.location.href="/schedule/"+"."+$("ACityCode").value.replace(/,\w+/, '')+".html";
            }
            //出发不为空,到达为空
            else if(StringIsEmpty($("DCityCode").value)&&!StringIsEmpty($("ACityCode").value))
            {          
                window.location.href="/schedule/"+$("DCityCode").value.replace(/,.\w+/, '')+"..html";
            }
        }
        else
        { 
            var objtips = $("tips1");
            objtips.style.display = "";
//            if(!ValidateDCity())
//                 return;
        }
    }
    
    function HideMessage()
    {
        var objtips = $("tips1");
        objtips.style.display = "none";
    }
    
    
/*************************************************************************
*Author:               jun_wu
*Description:     移动ScheduleDetail.aspx内JS
*Creatime:          2012-1-6
*/
function GoToOrder(flight,dcity,acity,dateIndex)
{
    var date=document.getElementById(dateIndex).value;
    if(date!="yyyy-mm-dd")
    {
       if(ValidateDateTime(date) == false)
       {
            $alert(dateIndex,'请选择出发日期');
            return false;
       }
       else
       {
         if(DepartDateBeforeToday(date)==false)
         {
             $alert(dateIndex,'您选择的出发日期早于今天,请重新选择');
            return false;        
         }
         else
         {
           if(DepartDateLimitOneYear(date)== false)
           {
             $alert(dateIndex,'只能查询一年内航班。');
            return false;
           }
         }
       }
       
      window.location.href="../booking/"+dcity+"-"+acity+"-day-" + DateDiff(date) + ".html"; 
       
    }
    else
    {
     window.location.href="../booking/"+dcity+"-"+acity+"-day-1.html";
    }
        
    //window.location.href="ShowFareFirst.aspx?DCity1="+dcity+"&ACity1="+acity+"&Flight1="+flight+"&DDate1="+date;
}

function  DateDiff(sDateSelect)
{                   
   var dateSpanStart = (sDateSelect.isDateTime()-new Date().toStdString().isDateTime())/(3600*24*1000);
        if (dateSpanStart < 0)
        {
           dateSpanStart = 1;
        }
   return  dateSpanStart ; 
} 

//Validate date time
function ValidateDateTime(value) {
    if (value=="") {
        return true;
    } 
    return value.isDateTime();
}

//FirstDepartDateBeforeToday
function DepartDateBeforeToday(value) {
    var LocalDate = new Date();
    var CurrentDate=LocalDate.getFullYear()+"-"+(parseInt(LocalDate.getMonth(),10)+1)+"-"+LocalDate.getDate();
    return Math.round((value.isDateTime()-CurrentDate.isDateTime())/60000)>=0
}

//The Date limit one year
function DepartDateLimitOneYear(value) {
    var LocalDate = new Date();
    var CurrentDate=(LocalDate.getFullYear()+1)+"-"+(parseInt(LocalDate.getMonth(),10)+1)+"-"+LocalDate.getDate();
    return CurrentDate.isDateTime() > value.isDateTime()
}


//时刻表出航到航转换
 
 function ShowDCityOrACity(strScheduleCategory)
 {
    var objTable = $("tbl_Schedulelisting");
    var objHiddenTable = $("tbl_ScheduleHiddenlisting");
    var objDCityTab = $("dcitytab");
    var objACityTab = $("acitytab");
    if(strScheduleCategory == "D")
    {
        objTable.style.display = "";
        objHiddenTable.style.display ="none";
        objDCityTab.className = "current";
        objACityTab.className = "";
    }
    else
    {
        objTable.style.display ="none";
        objHiddenTable.style.display ="";
        objDCityTab.className = "";
        objACityTab.className = "current";
    }
 }
 


