/*		
*使用命名空间EY_W(也就是EY.widget)。
*调用：
*	 	var obj = new EY_U.checkForm.chooseCity({
*			$form : $("#gnFlightForm"), //form jq对象
*			$city1: $("#gnCityIn"), //出发城市jq对象
*			$city2: $("#gnCityOut"), //到达城市jq对象
*			$date1: $("#gnDateIn"), //出发时间jq对象
*			$date2: $("#gnDateOut"), //到达时间jq对象
*			one_way: way //单程
*		});
*		obj.startValid();
*
*/
//命名空间
if (typeof(EY_U.checkForm) == 'undefined') {
	EY_U.checkForm = {};
}
EY_U.checkForm.chooseCity = function(config){
	this.$form = null; //当前表单
	this.$city1 = null; //出发城市
	this.$city2 = null; //到达城市
	this.$date1 = null; //开始时间
	this.$date2 = null; //返回时间
	this.one_way = true; //单程
	this.alert1 = "请输入出发城市";
	this.alert2 = "请输入到达城市";
	this.alert3 = "出发城市和到达城市不能相同";
	this.alert4 = "出发日期格式不对或不是实际日期";
	this.alert5 = "日期不能小于今天";
	this.alert6 = "出发日期不能大于返程日期"
	this.alert7 = "请填写出发日期";
	this.alert8 = "请填写返程日期";
	this.alert9 = "返程日期格式不对或不是实际日期";
	this.alert10 = "查询日期要在一年以内";
	this.cityEqual = false; //标记城市不能相同
	this.defaultDate = "yyyy-mm-dd";
	this.defaultCity1 = "中文/拼音";
	this.defaultCity2 = "中文/拼音";
	this.apartDayNum = 0;
	this.beyondTime = 12; //以月为单位，表示日期从现在开始的范围，如果为0，则不判断
	$.extend(this, config);
	
	this.startValid = function(){
		if(!this.$form || !this.$city1) //表单和出发城市不能为空
			return
		if(this.$city1.val() == this.defaultCity1){
				alert(this.alert1);
				return		
		}
		if(this.$city2 && !this.cityEqual){ //检查城市不能相同
			if(this.$city2.val() == this.defaultCity2){
				alert(this.alert2);
				return		
			}
			//alert(this.$city1.get(0).value)
			//alert(this.$city2.get(0).value)
			var result = this.ck_city(this.$city1.val(),this.$city2.val());
			if(!result){
				alert(this.alert3);
				return
			}
		}
		if(this.$date1){ //检查日期
			var dat = this.$date1.val();
			if(dat == this.defaultDate){
				alert(this.alert7);
				return;
			}
			if(!this.ck_heckDate(dat)){ //检查出发日期的格式
				alert(this.alert4);
				return
			}else if(!this.ck_todayDate(dat)){ //检查出发日期是否小于今天
				alert(this.alert5);
				return
			}else if(this.beyondTime && !this.ck_dataBeyond(dat)){
				alert(this.alert10);
				return
			}
			if(this.$date2 && !this.one_way){ //往返，检查日期
				var datRe = this.$date2.val();
				if(datRe == this.defaultDate){
					alert(this.alert8);
					return;
				}
				if(!this.ck_heckDate(datRe)){ //检查返回日期的格式
					alert(this.alert9);
					return
				}else if(!this.ck_todayDate(datRe)){ //检查返回日期是否小于今天
					alert(this.alert5);
					return
				}if(this.beyondTime && !this.ck_dataBeyond(datRe)){
					alert(this.alert10);
					return
				}
				if(!this.ck_datePare(dat, datRe, this.apartDayNum)){ //返回日期得在出发日期后面
					alert(this.alert6);
					return
				}
				
			}
		}
		this.$form.submit();
	};
	
	//判断日期，格式为yy-mm-dd，且符合实际日期
	this.ck_heckDate = function(theDate){
	  var reg = /^\d{4}-((0{1}[1-9]{1})|(1[0-2]{1}))-((0{1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/; 
	  var result=true;
	  if(!reg.test(theDate))
	    result = false;
	  else{
	    var arr_hd=theDate.split("-");
	    var dateTmp;
	    dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
	    if(dateTmp.getFullYear()!=parseFloat(arr_hd[0])
	       || dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1
	        || dateTmp.getDate()!=parseFloat(arr_hd[2])){
	        result = false
	    }
	  }
	  return result;
	};
	
	//日期不能比今天的日期小,但必须先保证参数格式正确（-），先用ck_heckDate判断，"日"要注意，要加一天
	this.ck_todayDate = function(theDate){
		if(theDate){
			var arr_hd = theDate.split("-");
			var date = new Date();
			var dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]) + 1);
			if(dateTmp.getTime() > date.getTime())
				return true;
			else
				return false;
		}
	};
	
	//判断两个日期的大小，第二个必须比第一个大或相同,要先经过ck_heckDate验证
	this.ck_datePare = function(date1, date2, day){
		day = day ? day : 0;
		if(date1 && date2){
			var arr_hd1 = date1.split("-");
			var arr_hd2 = date2.split("-");
			var dateTmp1 = new Date(arr_hd1[0],parseFloat(arr_hd1[1])-1,parseFloat(arr_hd1[2]));
			var dateTmp2 = new Date(arr_hd2[0],parseFloat(arr_hd2[1])-1,parseFloat(arr_hd2[2]) - day);
			if(dateTmp1.getTime() > dateTmp2.getTime())
				return false
			else
				return true
		}
	};
	
	//判断俩个城市不能一样，即相同
	this.ck_city = function(city1, city2){
		var result = true;
		if(city1 == city2)
			result = false;
		else
			result = true;
		return result;
	};
	//判断日期不能超过一年
	this.ck_dataBeyond = function(theDate){
		if(theDate){
			var arr_hd = theDate.split("-");
			var dateTmp1 = new Date(arr_hd[0], parseFloat(arr_hd[1])-1-this.beyondTime, arr_hd[2]);
			var dateTmp2 = new Date();
			if(dateTmp1.getTime() > dateTmp2.getTime()){
				return false;
			}else
				return true;
		}
	};
	
}
