﻿//线路日期控件,有比较复杂的业务逻辑,在没有明白业务逻辑之前,不要擅自改动．Sean

//转换月份为文字表示
var startHyqYear = 0;
var startHyqMonth = 0;
var startHyqDay = 0;
var endHyqYear = 0;
var endHyqMonth = 0;
var endHyqDay = 0 ;

var p_leaveType=new Array();  //出发班期数组．

var p_fixed=new Array();    //固定出发班期数组．出发班期和固定出发班期二者只能选其一,当两者都有值时,固定出发班期优先．

var p_fixed_flag=0;  //是固定出发班期,还是天天出发标记,为1时是固定出发班期.

var p_goBusDay;   //去程车上停留晚数(出发日期+去程车上停留晚数=入住日期).

var p_estop=new Array();//禁用日期数组．

var p_minday=0;   //行程的最小停留天数,用于在点击入住日期时,填充退房日期. 

var fillFlag="";  //根据这个标记来确定要填充的文本框．

var p_leaveDate="";  //要填充的出发日期id.
var p_startDate="";  //要填充的入住日期id.
var p_endDate="";   //要填充的退房日期id.

var ho_sd="";     //全局的行程（线路）开始日期．
var ho_endd="";　　//全局的行程（线路）结束日期．

var control_leaveType="";   //控制出发班期只对第一个出发日期有效.

var leaveDateChoose=""; //选择日期,是指出发日期选定的日期,每个行程都不同．
var startchoose="";  //入住日期,在入住日期框选择的日期．

var end_inputid="";  //点击退房日期时的文本框id,根据这个id来判断下一个行程的出发日期id.

var priv_maxday=new Array();  //存放每一个行程的最大入住(停留)天数．

function MonthTxt(MonthNumber){
	var Month = new Array();
	/*
	Month[1]="January";
	Month[2]="February";
	Month[3]="March";
	Month[4]="April";
	Month[5]="May";
	Month[6]="June";
	Month[7]="July";
	Month[8]="August";
	Month[9]="September";
	Month[10]="October";
	Month[11]="November";
	Month[12]="December";
	*/
	Month[1] = "一月";
	Month[2] = "二月";
	Month[3] = "三月";
	Month[4] = "四月";
	Month[5] = "五月";
	Month[6] = "六月";
	Month[7] = "七月";
	Month[8] = "八月";
	Month[9] = "九月";
	Month[10] = "十月";
	Month[11] = "十一月";
	Month[12] = "十二月";
	return Month[MonthNumber];
}

//calendar

var weekend = [0,6];  //礼拜六,礼拜天
var weekendColor = "#D5D5D5";//礼拜六,礼拜天显示的颜色
var fontface = "Verdana";

var gNow = new Date();//当前日期

var ggWinCal;　　//弹出的窗口对象

isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;//判断当前使用的浏览器

//Calendar.Months = ["January", "February", "March", "April", "May", "June",
//"July", "August", "September", "October", "November", "December"];
Calendar.Months = ["一月", "二月", "三月", "四月", "五月", "六月",
        "七月", "八月", "九月", "十月", "十一月", "十二月"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];//每个月的最大天数

function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
    if ((p_month == null) && (p_year == null))    return;

    if (p_WinCal == null){
        this.gWinCal = ggWinCal;
   	}else{
        this.gWinCal = p_WinCal;
    }

    if (p_month == null) {
        this.gMonthName = null;
        this.gMonth = null;
        this.gYearly = true;
    } else {
        this.gMonthName = Calendar.get_month(p_month);
        this.gMonth = new Number(p_month);
        this.gYearly = false;
    }

    this.gYear = p_year;
    this.gFormat = p_format;
    this.gBGColor = "#D2D2D2";
    //"white";
    this.gFGColor = "black";
    this.gTextColor = "black";
    this.gHeaderColor = "#1A595B";
    //"black";
    this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month; //monthNo的大写,eg:五月
Calendar.get_daysofmonth = Calendar_get_daysofmonth;  //年月的最后一天是多少
Calendar.calc_month_year = Calendar_calc_month_year; //当前月份的前一个月和后一个月,-1为前一个月,1为后一个月．
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) {  //monthNo的大写,eg:五月	
    return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) { //年月的最后一天是多少
    /*
     Check for leap year ..
     1.Years evenly divisible by four are normally leap years, except for...
     2.Years also evenly divisible by 100 are not leap years, except for...
     3.Years also evenly divisible by 400 are leap years.
     */
    if ((p_year % 4) == 0) {
        if ((p_year % 100) == 0 && (p_year % 400) != 0){
        	return Calendar.DOMonth[monthNo];
        }
        return Calendar.lDOMonth[monthNo];
    } else{
        return Calendar.DOMonth[monthNo];
    }
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {　　
	/*
     	Will return an 1-D array with 1st element being the calculated month
     	and second being the calculated year
     	after applying the month increment/decrement as specified by 'incr' parameter.
     	'incr' will normally have 1/-1 to navigate thru the months.
     	当前月份的前一个月和后一个月,-1为前一个月,1为后一个月．
	*/
    var ret_arr = new Array();

    if (incr == -1) {
        //前一个月
        if (p_Month == 0) {
            ret_arr[0] = 11;
            ret_arr[1] = parseInt(p_Year) - 1;
        }
        else {
            ret_arr[0] = parseInt(p_Month) - 1;
            ret_arr[1] = parseInt(p_Year);
        }
    } else if (incr == 1) {
        //后一个月
        if (p_Month == 11) {
            ret_arr[0] = 0;
            ret_arr[1] = parseInt(p_Year) + 1;
        }
        else {
            ret_arr[0] = parseInt(p_Month) + 1;
            ret_arr[1] = parseInt(p_Year);
        }
    }
    return ret_arr;
}

function Calendar_print() {
    ggWinCal.print();
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
    var vCode = "";
    var vHeader_Code = "";
    var vData_Code = "";

    // Begin Table Drawing code here..
    //vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";
    vCode = vCode + "<TABLE width=\"200\" BORDER=0 cellpadding=\"1\" cellspacing=\"1\" BGCOLOR=\"" + this.gBGColor + "\">";
    vHeader_Code = this.cal_header();   //星期显示
    vData_Code = this.cal_data();    //日期显示
    vCode = vCode + vHeader_Code + vData_Code;

    vCode = vCode + "</TABLE>";
    vCode = vCode + "<p align=center><a href=# onclick=self.opener.document.getElementById('" + this.gReturnItem + "').value='';self.opener.document.getElementById('" + this.gReturnItem + "').focus();self.close()><img border=0 src=images/b_clear_normal.gif onMouseOver=this.src='images/b_clear_down.gif' onMouseOut=this.src='images/b_clear_normal.gif' name=b_clear_normal></a></p>";
    //清空文本框
    return vCode;
}

Calendar.prototype.show = function() {   //显示页面的所有内容
    var vCode = "";
    var fsize = "2";
    this.gWinCal.document.open();

    // Setup the page...
    this.wwrite("<html>");
    this.wwrite("<head><title>美亚国际机票网</title>");
    this.wwrite("</head>");

    this.wwrite("<body leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\"" +
                "link=\"" + this.gLinkColor + "\" " +
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
    //this.wwriteA("<FONT FACE='" + fontface + "' SIZE=1><B>");
    this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2>");
    //this.wwriteA(this.gMonthName + " " + this.gYear);
    //this.wwriteA("</B><BR>");

    // Show navigation buttons
    var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
    var prevMM = prevMMYYYY[0];
    var prevYYYY = prevMMYYYY[1];

    var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
    var nextMM = nextMMYYYY[0];
    var nextYYYY = nextMMYYYY[1];

    //this.wwrite("<TABLE style='font-size:12pt;' WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
    this.wwrite("<table width=\"200\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" bgcolor=\"#005B8E\"><TR align=\"center\"  bgcolor=\"#E0E0E0\"><td><font size=\"" + fsize + "\">");
    this.wwrite("<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear) - 1) + "', '" + this.gFormat + "'" +
                ");" +
                "\"><\/A></font></TD><td bgcolor=\"#E0E0E0\"><font size=\"" + fsize + "\">");
    //"\"><<<\/A>]</TD><TD ALIGN=center>");

    this.wwrite("<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\"><<\/A></font></TD><td width=\"80\" bgcolor=\"#E0E0E0\"><font color=\"#FF0000\" size=\"" + fsize + "\">");
    //"\"><<\/A>]</TD><TD ALIGN=center>");
    this.wwrite(this.gYear + "年" + (this.gMonth + 1) + "月</TD><TD ALIGN=center bgcolor=\"#E0E0E0\"><font size=\"" + fsize + "\">");
    this.wwrite("<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">><\/A></font></TD><td bgcolor=\"#E0E0E0\"><font size=\"" + fsize + "\">");
    //"\">><\/A>]</TD><TD ALIGN=center>");
    this.wwrite("<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear) + 1) + "', '" + this.gFormat + "'" +
                ");" +
                "\"><\/A></font></TD></TR></TABLE><BR>");

    // Get the complete calendar code for the month..
    vCode = this.getMonthlyCalendarCode();
    this.wwrite(vCode);

    this.wwrite("</font></body></html>");
    this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
    var vCode = "";
    var i;
    var vr, vc, vx, vy;
    // Row, Column, X-coord, Y-coord
    var vxf = 285;
    // X-Factor
    var vyf = 200;
    // Y-Factor
    var vxm = 10;
    // X-margin
    var vym;
    // Y-margin
    if (isIE){   
     	vym = 75;
    }else if (isNav){    
    	vym = 25;
    }

    this.gWinCal.document.open();

    this.wwrite("<html>");
    this.wwrite("<head><title>美亚国际机票网</title>");
    this.wwrite("<style type='text/css'>\n<!--");
    for (i = 0; i < 12; i++) {
        vc = i % 3;
        if (i >= 0 && i <= 2)    vr = 0;
        if (i >= 3 && i <= 5)    vr = 1;
        if (i >= 6 && i <= 8)    vr = 2;
        if (i >= 9 && i <= 11)   vr = 3;

        vx = parseInt(vxf * vc) + vxm;
        vy = parseInt(vyf * vr) + vym;

        this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
    }
    this.wwrite("A {style:font-size:12pt;}");
    this.wwrite("-->\n</style>");
    this.wwrite("</head>");

    this.wwrite("<body leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\"" +
                "link=\"" + this.gLinkColor + "\" " +
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
    this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
    this.wwrite("Year : " + this.gYear);
    this.wwrite("</B><BR>");

    // Show navigation buttons
    var prevYYYY = parseInt(this.gYear) - 1;
    var nextYYYY = parseInt(this.gYear) + 1;
    this.wwrite("<table width=\"200\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" bgcolor=\"#005B8E\"><TR align=\"center\"><td><font size=\"2\">");
    //this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
    this.wwrite("<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\" alt='Prev Year'><<<\/A></TD><TD ALIGN=center>");
    this.wwrite("<A HREF=\"javascript:window.print();\">Print</A></TD><TD ALIGN=center>");
    this.wwrite("<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">>><\/A></TD></TR></TABLE><BR>");

    // Get the complete calendar code for each month..
    var j;
    for (i = 11; i >= 0; i--) {
        if (isIE)
            this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
        else if (isNav)
            this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

        this.gMonth = i;
        this.gMonthName = Calendar.get_month(this.gMonth);
        vCode = this.getMonthlyCalendarCode();
        this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
        this.wwrite(vCode);

        if (isIE)
            this.wwrite("</DIV>");
        else if (isNav)
            this.wwrite("</LAYER>");
    }

    this.wwrite("</font><BR></body></html>");
    this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {  //换行写文本
    this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {　　//不换行写文本
    this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {   //星期显示
    var fsize = "2";
    var vCode = "";
    /*
     vCode = vCode + "<TR>";
     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
     vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
     vCode = vCode + "</TR>";
    */
    vCode = vCode + "<TR align=\"center\">";
    vCode = vCode + "<TD WIDTH='14%' bgcolor=\"#F0F0F0\"><strong><FONT SIZE='" + fsize + "'  COLOR='" + this.gHeaderColor + "'>日</strong></FONT></TD>";
    vCode = vCode + "<TD WIDTH='14%' bgcolor=\"#F0F0F0\"><strong><FONT SIZE='" + fsize + "'  COLOR='" + this.gHeaderColor + "'>一</strong></FONT></TD>";
    vCode = vCode + "<TD WIDTH='14%' bgcolor=\"#F0F0F0\"><strong><FONT SIZE='" + fsize + "'  COLOR='" + this.gHeaderColor + "'>二</strong></FONT></TD>";
    vCode = vCode + "<TD WIDTH='14%' bgcolor=\"#F0F0F0\"><strong><FONT SIZE='" + fsize + "'  COLOR='" + this.gHeaderColor + "'>三</strong></FONT></TD>";
    vCode = vCode + "<TD WIDTH='14%' bgcolor=\"#F0F0F0\"><strong><FONT SIZE='" + fsize + "'  COLOR='" + this.gHeaderColor + "'>四</strong></FONT></TD>";
    vCode = vCode + "<TD WIDTH='14%' bgcolor=\"#F0F0F0\"><strong><FONT SIZE='" + fsize + "'  COLOR='" + this.gHeaderColor + "'>五</strong></FONT></TD>";
    vCode = vCode + "<TD WIDTH='16%' bgcolor=\"#F0F0F0\"><strong><FONT SIZE='" + fsize + "'  COLOR='" + this.gHeaderColor + "'>六</strong></FONT></TD>";
    vCode = vCode + "</TR>";

    return vCode;
}

Calendar.prototype.cal_data = function() {    //日期显示
    var vDate = new Date();
    vDate.setDate(1);
    vDate.setMonth(this.gMonth);
    vDate.setFullYear(this.gYear);
    //alert("====vDate======"+vDate);  

    var nowHyqYear = parseInt(this.gYear);
    //alert("=====nowHyqYear======="+nowHyqYear);
    var nowHyqmonth = parseFloat(this.gMonth);
    //alert("=====nowHyqmonth ======="+nowHyqmonth);
   	var nowYearMonth = nowHyqmonth+(nowHyqYear*12)+1;
   	//alert("=====nowYearMonth======="+nowYearMonth);
   	var startYearMonth = startHyqYear*12+startHyqMonth;
   	//alert("=====startYearMonth======="+startYearMonth);
   	var endYearMonth = endHyqYear*12+endHyqMonth;
   	//alert("=====endYearMonth======="+endYearMonth);

    var vFirstDay = vDate.getDay();  //求该月的一号是星期几
    //alert("====vFirstDay======"+vFirstDay);  
    var vDay = 1;
    var vLastDay = Calendar.get_daysofmonth(this.gMonth, this.gYear); //求该月的最后一天是多少号
    //alert("====vLastDay======"+vLastDay);
    var vOnLastDay = 0;
    var vCode = "";

    /*
     Get day for the 1st of the requested month/year..
     Place as many blank cells before the 1st day of the month as necessary.
    */

    //vCode = vCode + "<TR>";
    vCode = vCode + "<TR align=\"center\" bgcolor=\"#FFFFFF\">";
    for (var i = 0; i < vFirstDay; i++) {
        vCode = vCode + "<TD  WIDTH='14%'" + this.write_weekend_string(i) + " align=\"center\"><FONT SIZE='2'>&nbsp;</FONT></TD>";
    }

    // Write rest of the 1st week 
    if(control_leaveType=="FIRSTCONTROLLEAVETYPE" && p_fixed_flag==1){    		                
		for (var j = vFirstDay; j < 7; j++) {						
			var usableFixedFlag=0;
			//alert("========nowYearMonth======"+nowYearMonth);
			//alert("========vDay======"+vDay);
			for(var i=0;i<p_fixed.length;i++){
				var temp_fixed_arr=p_fixed[i].split("-");
				var temp_fixed_year=parseInt(temp_fixed_arr[0],10);
				var temp_fixed_month=parseInt(temp_fixed_arr[1],10);
				var temp_fixed_day=parseInt(temp_fixed_arr[2],10);
				var temp_yearmonth=temp_fixed_month+(temp_fixed_year*12);				
				//alert("=========temp_yearmonth========="+temp_yearmonth);
				//alert("=========temp_fixed_day========="+temp_fixed_day);
				if(temp_yearmonth==nowYearMonth && temp_fixed_day==vDay){
					usableFixedFlag=1;
					break;
				}					
			}
			if(usableFixedFlag==1){
				vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\">" +
					"<A HREF='#' " +
					"onclick=\"self.opener.control_txt('"+this.format_data(vDay)+"');return false;\"><FONT SIZE='2' COLOR='blue'>" +
					this.format_day(vDay) +
					"</FONT></A>" +
					"</TD>";
			}else{
				vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +
					this.format_day(vDay) +
					"</FONT></TD>";
			}
			vDay = vDay + 1;	
		}
		vCode = vCode + "</TR>";
		
	    // Write the rest of the weeks
	    for (var k = 2; k < 7; k++) {
	        vCode = vCode + "<TR bgcolor=\"#FFFFFF\">";
	        for (var j = 0; j < 7; j++) {
	        	usableFixedFlag=0;
	        	for(var i=0;i<p_fixed.length;i++){
					var temp_fixed_arr=p_fixed[i].split("-");
					var temp_fixed_year=parseInt(temp_fixed_arr[0],10);
					var temp_fixed_month=parseInt(temp_fixed_arr[1],10);
					var temp_fixed_day=parseInt(temp_fixed_arr[2],10);
					var temp_yearmonth=temp_fixed_month+(temp_fixed_year*12);
					if(temp_yearmonth==nowYearMonth && temp_fixed_day==vDay){
						usableFixedFlag=1;
						break;
					}					
				}
				if(usableFixedFlag==1){
		        	vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\">" +
						"<A HREF='#' " +
						"onclick=\"self.opener.control_txt('"+this.format_data(vDay)+"');return false;\"><FONT SIZE='2' COLOR='blue'>" +
						this.format_day(vDay) +
						"</FONT></A>" +
						"</TD>";						
					vDay = vDay + 1;			
					if (vDay > vLastDay) {
						vOnLastDay = 1;
						break;
					}
					continue;
				}else{
					vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +                    
							this.format_day(vDay)+"</FONT></TD>";
						vDay = vDay + 1;
					if (vDay > vLastDay) {
						vOnLastDay = 1;
						break;
					}
					continue;
				}
	        }
	        if (j == 6){
	            vCode = vCode + "</TR>";
	        }
	        if (vOnLastDay == 1){
	            break;
	        }
	    }		    	    	    
	}else{
	    // Write rest of the 1st week  
	    for (var j = vFirstDay; j < 7; j++) {
	    	var usableFlag=0;   //出发班期标记．
	    	var usableEstopFlag=0; //禁止日期标记．  	
			if(nowYearMonth<startYearMonth || nowYearMonth>endYearMonth){
		        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +
		                this.format_day(vDay) +
		                "</FONT></TD>";	
		  	}else if((nowYearMonth==startYearMonth && vDay<startHyqDay) || (nowYearMonth==endYearMonth && vDay>endHyqDay)){
		        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +
		                this.format_day(vDay) +
		                "</FONT></TD>";
		  	}else{
		  		if(control_leaveType=="FIRSTCONTROLLEAVETYPE"){
			 	  	for(var i=0;i<p_leaveType.length;i++){   //p_leaveType为出发班期允许的星期数．			
						if(parseInt(p_leaveType[i],10)==j){					
							usableFlag=1;
							break;
						}
					}	
		  			if(usableFlag!=1){
		   				vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +
							this.format_day(vDay) +
							"</FONT></TD>";
		  			}else{
		  				for(var i=0;i<p_estop.length;i++){
		  					var temp_estop_arr=p_estop[i].split("-");
		  					var temp_estop_year=parseInt(temp_estop_arr[0],10);
							var temp_estop_month=parseInt(temp_estop_arr[1],10);
		  					var temp_estop_day=parseInt(temp_estop_arr[2],10);
		  					var temp_yearmonth=temp_estop_month+(temp_estop_year*12);
		   					if(temp_yearmonth==nowYearMonth && temp_estop_day==vDay){
		  						usableEstopFlag=1;
		  						break;
		  					}					
		   				}
		   				if(usableEstopFlag==1){
		   					vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +
								this.format_day(vDay) +
								"</FONT></TD>";
		   				}else{				
			   				vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\">" +
								"<A HREF='#' " +
								"onclick=\"self.opener.control_txt('"+this.format_data(vDay)+"');return false;\"><FONT SIZE='2' COLOR='blue'>" +
								this.format_day(vDay) +
								"</FONT></A>" +
								"</TD>";
						}
		  			}
				}else{						
	   				vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\">" +
						"<A HREF='#' " +
						"onclick=\"self.opener.control_txt('"+this.format_data(vDay)+"');return false;\"><FONT SIZE='2' COLOR='blue'>" +
						this.format_day(vDay) +
						"</FONT></A>" +
						"</TD>";													  			
				}		  	   																			      	    															
			}
		  	vDay = vDay + 1;	
	    }
	    vCode = vCode + "</TR>";
	
	    // Write the rest of the weeks
	    for (var k = 2; k < 7; k++) {
	        vCode = vCode + "<TR bgcolor=\"#FFFFFF\">";
	        for (var j = 0; j < 7; j++) {
	        	usableFlag=0;
	        	usableEstopFlag=0;
	    	    if(nowYearMonth<startYearMonth || nowYearMonth>endYearMonth){
			        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +
			                this.format_day(vDay) + "</FONT></TD>";
			        vDay = vDay + 1;
			        if (vDay > vLastDay) {
			            vOnLastDay = 1;
			            break;
			        }
			        continue;
		    	}else if((nowYearMonth==startYearMonth && vDay<startHyqDay) || (nowYearMonth==endYearMonth && vDay>endHyqDay)){
			        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +                    
			                this.format_day(vDay)+"</FONT></TD>";
			        vDay = vDay + 1;
		
			        if (vDay > vLastDay) {
			            vOnLastDay = 1;
			            break;
			        }
		        	continue;
	        	}else{
	        		if(control_leaveType=="FIRSTCONTROLLEAVETYPE"){
		        		for(var i=0;i<p_leaveType.length;i++){   //p_leaveType为出发班期允许的星期数．			
							if(parseInt(p_leaveType[i],10)==j){
								usableFlag=1;
								break;
							}
						}		
		 	  			if(usableFlag!=1){
		  					vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +                    
									this.format_day(vDay)+"</FONT></TD>";
							vDay = vDay + 1;
							if (vDay > vLastDay) {
								vOnLastDay = 1;
								break;
							}
							continue;
			  			}else{
			  				for(var i=0;i<p_estop.length;i++){
			  					var temp_estop_arr=p_estop[i].split("-");
			  					var temp_estop_year=parseInt(temp_estop_arr[0],10);
								var temp_estop_month=parseInt(temp_estop_arr[1],10);
			  					var temp_estop_day=parseInt(temp_estop_arr[2],10);
			  					var temp_yearmonth=temp_estop_month+(temp_estop_year*12);
									if(temp_yearmonth==nowYearMonth && temp_estop_day==vDay){
										usableEstopFlag=1;
										break;
									}					
							}
							if(usableEstopFlag==1){
								vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\"><FONT SIZE='2' COLOR='gray'>" +                    
									this.format_day(vDay)+"</FONT></TD>";
								vDay = vDay + 1;
								if (vDay > vLastDay) {
									vOnLastDay = 1;
									break;
								}
								continue;
							}else{
								vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\">" +
									"<A HREF='#' " +
									"onclick=\"self.opener.control_txt('"+this.format_data(vDay)+"');return false;\"><FONT SIZE='2' COLOR='blue'>" +
									this.format_day(vDay) +
									"</FONT></A>" +
									"</TD>";						
								vDay = vDay + 1;			
								if (vDay > vLastDay) {
									vOnLastDay = 1;
									break;
								}
								continue;
							}
						}
					}else{				
						vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + " align=\"center\">" +
							"<A HREF='#' " +
							"onclick=\"self.opener.control_txt('"+this.format_data(vDay)+"');return false;\"><FONT SIZE='2' COLOR='blue'>" +
							this.format_day(vDay) +
							"</FONT></A>" +
							"</TD>";						
						vDay = vDay + 1;			
						if (vDay > vLastDay) {
							vOnLastDay = 1;
							break;
						}
						continue;																								
					}							  			
		  		}	 	  			  		        			
	        }
	        if (j == 6){
	            vCode = vCode + "</TR>";
	        }
	        if (vOnLastDay == 1){
	            break;
	        }
	    }
    }
    // Fill up the rest of last week with proper blanks, so that we get proper square blocks
    for (m = 1; m < (7 - j); m++) {
        if (this.gYearly){
            vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j + m) +
                    " align=\"center\"><FONT SIZE='2' COLOR='gray'>&nbsp;</FONT></TD>";
        }else{
            vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j + m) +
                    " align=\"center\"><FONT SIZE='2' COLOR='gray'>" + m + "</FONT></TD>";
        }
    }
    return vCode;
}

Calendar.prototype.format_day = function(vday) {  //使当前日期变为红色
    var vNowDay = gNow.getDate();
    var vNowMonth = gNow.getMonth();
    var vNowYear = gNow.getFullYear();

    if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
        return ("<FONT COLOR=\"red\"><B>" + vday + "</B></FONT>");
    else
        return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {　　//使礼拜六,礼拜天变成weekendColor的颜色
    var i;
    // Return special formatting for the weekend day.
    for (i = 0; i < weekend.length; i++) {
        if (vday == weekend[i])
            return (" BGCOLOR=\"" + weekendColor + "\"");
    }
    return "";
}

Calendar.prototype.format_data = function(p_day) {
    var vData;
    var vMonth = 1 + this.gMonth;
    vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
    var vMon = Calendar.get_month(this.gMonth).substr(0, 3).toUpperCase();
    var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
    var vY4 = new String(this.gYear);
    var vY2 = new String(this.gYear.substr(2, 2));
    var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

    switch (this.gFormat) {
        case "MM\/DD\/YYYY" :
            vData = vMonth + "\/" + vDD + "\/" + vY4;
            break;
        case "MM\/DD\/YY" :
            vData = vMonth + "\/" + vDD + "\/" + vY2;
            break;
        case "MM-DD-YYYY" :
            vData = vMonth + "-" + vDD + "-" + vY4;
            break;
        case "MM-DD-YY" :
            vData = vMonth + "-" + vDD + "-" + vY2;
            break;

        case "DD\/MON\/YYYY" :
            vData = vDD + "\/" + vMon + "\/" + vY4;
            break;
        case "DD\/MON\/YY" :
            vData = vDD + "\/" + vMon + "\/" + vY2;
            break;
        case "DD-MON-YYYY" :
            vData = vDD + "-" + vMon + "-" + vY4;
            break;
        case "DD-MON-YY" :
            vData = vDD + "-" + vMon + "-" + vY2;
            break;

        case "DD\/MONTH\/YYYY" :
            vData = vDD + "\/" + vFMon + "\/" + vY4;
            break;
        case "DD\/MONTH\/YY" :
            vData = vDD + "\/" + vFMon + "\/" + vY2;
            break;
        case "DD-MONTH-YYYY" :
            vData = vDD + "-" + vFMon + "-" + vY4;
            break;
        case "DD-MONTH-YY" :
            vData = vDD + "-" + vFMon + "-" + vY2;
            break;

        case "DD\/MM\/YYYY" :
            vData = vDD + "\/" + vMonth + "\/" + vY4;
            break;
        case "DD\/MM\/YY" :
            vData = vDD + "\/" + vMonth + "\/" + vY2;
            break;
        case "DD-MM-YYYY" :
            vData = vDD + "-" + vMonth + "-" + vY4;
            break;
        case "DD-MM-YY" :
            vData = vDD + "-" + vMonth + "-" + vY2;
            break;
        case "YYYY\/MM\/DD" :
            vData = vY4 + "\/" + vMonth + "\/" + vDD;
            break;
        case "YYYY-MM-DD" :
            vData = vY4 + "-" + vMonth + "-" + vDD;
            break;

        default :
        //vData = vMonth + "\/" + vDD + "\/" + vY4;
            vData = vY4 + "\/" + vMonth + "\/" + vDD;
    }

    return vData;
}

function Build(p_item, p_month, p_year, p_format) {
    var p_WinCal = ggWinCal;
    gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

    // Customize your Calendar here..
    gCal.gBGColor = "#005B8E";
    gCal.gLinkColor = "#968E07";
    gCal.gTextColor = "#7CB2DC";
    gCal.gHeaderColor = "#C94E0B";

    // Choose appropriate show function
    if (gCal.gYearly)    
    	gCal.showY();
    else    
    	gCal.show();
}

//此函数适用于除去日期间的空格
function trim(s){
	return s.replace(/^\s+|\s+$/, '');
}

/*
==================出发日期调用===============================
参数说明:
startHyqDate:线路的开始日期,日期格式必须为:YYYY-MM-DD;
endHyqDate:线路的结束日期,日期格式必须为:YYYY-MM-DD;
leaveType:出发班期,各数字用,分开.eg:"1,2,3,4,5,6,7"  1为星期一,2为星期二,依此类推．
estopDate:禁用日期,每个日期的格式必须为:MM-DD,多个日期之间用,分开.eg:'05-01,05-04,05-17,05-27'
		   年份为线路的有效日期的年份,可为多个年份(只对第一个行程的出发班期不是固定出发班期的出发日期有效).
aheadDay:提前预定天数,数字类型,一个正整数;
maxday:最大入住(停留)天数,必须为一个正整数.
inputid:行程序号,必须从0开始,程序根据此序号来确定出发日期,入住日期,退房日期的文本框的id,
	     规则:	出发日期　　"leaveDate"+inputid;
	     		入住日期    "startDate"+inputid;
	     		退房日期    "endDate"+inputid;
fixedDate:固定出发班期．每个日期的格式必须为:MM-DD,多个日期之间用,分开.eg:'05-01,05-04,05-17,05-27'
		   年份为线路的有效日期的年份,可为多个年份(只对第一个行程的出发日期有效).
goBusDay:去程车上停留晚数,数字类型,一个正整数(只对每一个行程入住日期有效).
*/

function show_calendar(startHyqDate,endHyqDate,leaveType,estopDate,aheadDay,maxday,inputid,fixedDate,goBusDay) {
	fillFlag="LEAVEDATEFLAG";　//根据这个标记来确定要填充的文本框．

	if(startHyqDate==null || startHyqDate=="" || trim(startHyqDate).length!=10){
		alert("开始日期格式不对，必须为YYYY-MM-DD样式！");
		return;
	}
	if(endHyqDate==null || endHyqDate=="" || trim(endHyqDate).length!=10){
		alert("结束日期格式不对，必须为YYYY-MM-DD样式！");
		return;
	}					
	if((leaveType==null || leaveType=="") && (fixedDate==null || fixedDate=="")){
		alert("出发班期和固定出发班期必须选其一！");
		return;
	}	
	if(leaveType!=null && leaveType!=""){
		var arr_leaveType=leaveType.split(",");
		for(var i=0;i<arr_leaveType.length;i++){
			if(isNaN(arr_leaveType[i])){
				alert("出发班期必须为数字类型！");
				return;	
			}		
		}
		p_leaveType=week_conversion(arr_leaveType);  //星期转换．
	}else{
		p_leaveType=null;
	}
	
	if(fixedDate!=null && fixedDate!=""){
		var arr_fixedDate=fixedDate.split(",");
		var pattern = /^(\d{1,2})-(\d{1,2})$/;
		for(var i=0;i<arr_fixedDate.length;i++){
			if(trim(arr_fixedDate[i]).length!=5 || !pattern.test(trim(arr_fixedDate[i]))){
				alert("固定出发班期格式不对，必须为MM-DD样式！");
				return;	
			}		
		}   
		p_fixed_flag=1;	
	}else{
		p_fixed_flag=0;
	}
	if(estopDate!=null && estopDate!=""){
		var arr_estop=estopDate.split(",");
		var pattern = /^(\d{1,2})-(\d{1,2})$/;
		for(var i=0;i<arr_estop.length;i++){
			if(trim(arr_estop[i]).length!=5 || !pattern.test(trim(arr_estop[i]))){
				alert("禁用日期格式不对，必须为MM-DD样式！");
				return;	
			}		
		}
	}		
	if(aheadDay==null || aheadDay==""){
		aheadDay=0;
	}
	if(isNaN(aheadDay)){
		alert("提前预定天数必须为数字类型！");
		return;
	}
	if(parseInt(aheadDay,10)<0){
		alert("提前预定天数必须为正整数！");
		return;
	}
	if(maxday==null || maxday==""){
		maxday=0;
	}
	if(isNaN(maxday)){
		alert("最大入住(停留)天数必须为数字类型！");
		return;
	}
	if(parseInt(maxday,10)<0){
		alert("最大入住(停留)天数必须为正整数！");
		return;
	}
	if(inputid==null || inputid==""){
		inputid="0";
	}		
	if(goBusDay==null || goBusDay==""){
		goBusDay=0;
	}
	if(isNaN(goBusDay)){
		alert("去程车上停留晚数必须为数字类型！");
		return;
	}
	if(parseInt(goBusDay,10)<0){
		alert("去程车上停留晚数必须为正整数！");
		return;
	}
		
	p_goBusDay=parseInt(goBusDay,10);
	
	p_item = "leaveDate"+inputid;
	p_leaveDate = "leaveDate"+inputid;
	p_startDate="startDate"+inputid;
	p_endDate="endDate"+inputid
	
	if(inputid=="0"){
		//计算开始日期
		control_leaveType="FIRSTCONTROLLEAVETYPE";
		var cur_Date=current_date();
		if(add_day(cur_Date,aheadDay)>startHyqDate){
			startHyqDate=add_day(cur_Date,aheadDay);
		}
	    var starts = startHyqDate.split("-");
		startHyqYear = parseInt(starts[0],10);
		startHyqMonth = parseInt(starts[1],10);
		startHyqDay = parseInt(starts[2],10);
		ho_sd=startHyqDate; //全局开始日期
				
		//计算结束日期	
		var endss = endHyqDate.split("-");
		endHyqYear = parseInt(endss[0],10);
		endHyqMonth = parseInt(endss[1],10);
		endHyqDay = parseInt(endss[2],10);
		ho_endd=endHyqDate;	//全局的结束日期	
		//固定出发班期数组
		p_fixed=isValidDate(startHyqDate,endHyqDate,fixedDate);
		//禁用日期数组
		p_estop=isValidDate(startHyqDate,endHyqDate,estopDate);
	}else{
		control_leaveType="";
		var priv_endDate="endDate"+(parseInt(inputid,10)-1);
		//alert(priv_endDate);
		var txtPriv=document.getElementById(priv_endDate);
		if(txtPriv!=null){
			if(document.getElementById(priv_endDate).value==null || document.getElementById(priv_endDate).value==""){
				//alert("请先选择上一行程的退房日期！");
				return;
			}
			else{
				//计算开始日期
				var p_backBusDay=document.getElementsByName("backStayNightDays")[parseInt(inputid,10)-1].value;
				var oth_temp_sd=add_day(txtPriv.value,p_backBusDay);
			    var starts = oth_temp_sd.split("-");
				startHyqYear = parseInt(starts[0],10);
				startHyqMonth = parseInt(starts[1],10);
				startHyqDay = parseInt(starts[2],10);
								
				//计算结束日期

				var privLeaveDate=document.getElementById("leaveDate"+(parseInt(inputid,10)-1)).value;
				var oth_temp_ed=add_day(privLeaveDate,priv_maxday[parseInt(inputid,10)-1]);	
				if(oth_temp_ed>ho_endd){
					oth_temp_ed=ho_endd;
				}
				var endss = oth_temp_ed.split("-");
				endHyqYear = parseInt(endss[0],10);
				endHyqMonth = parseInt(endss[1],10);
				endHyqDay = parseInt(endss[2],10);								
			}
		}		
	}
	               
    p_month = new String((startHyqMonth-1).toString());
    p_year = new String(startHyqYear.toString());
    p_format = "YYYY-MM-DD";
    //====================================Sean于12/13日增加显示效果
    var chasm = screen.availWidth;
	var mount = screen.availHeight;
	var w = 200;
	var h = 210;
	 vWinCal = window.open("","美亚国际机票网","width=" + w + ",height=" + h + ",left=" + ((chasm - w - 10) * .5) + ",top=" + ((mount - h - 30) * .5));
    //===================================================
   /* vWinCal = window.open("", "美亚国际机票网",
            "width=240,height=250,top=200,left=200,scrollbars=yes");*/
    vWinCal.opener = self;
    ggWinCal = vWinCal;

    Build(p_item, p_month, p_year, p_format);
}

/*
==================入住日期调用===============================
minday:最小入住(停留)天数,必须为一个正整数．
maxday:最大入住(停留)天数,必须为一个正整数．	
inputid:行程序号,必须从0开始,程序根据此序号来确定出发日期,入住日期,退房日期的文本框的id,
规则:出发日期　　"leaveDate"+inputid;
	 入住日期    "startDate"+inputid;
	 退房日期    "endDate"+inputid;
*/
function show_calendar_sd(minday,maxday,inputid) {
   	if(document.getElementById("leaveDate"+inputid).value==null || document.getElementById("leaveDate"+inputid).value==""){
   		//alert("请先选择出发日期！");
   		return;
   	} 
   	fillFlag="STARTDATEFLAG";　//根据这个标记来确定要填充的文本框．
   	control_leaveType="";
 	
   	if(minday==null || minday==""){
		minday=0;
	}
	if(isNaN(minday)){
		alert("最小入住(停留)天数必须为数字类型！");
		return;
	}
	if(parseInt(minday,10)<0){
		alert("最小入住(停留)天数必须为正整数！");
		return;
	}

	if(maxday==null || maxday==""){
		maxday=0;
	}
	if(isNaN(maxday)){
		alert("最大入住(停留)天数必须为数字类型！");
		return;
	}
	if(parseInt(maxday,10)<0){
		alert("最大入住(停留)天数必须为正整数！");
		return;
	}
	if(inputid==null || inputid==""){
		inputid="0";
	}

	p_minday=minday;
	p_item = "leaveDate"+inputid;
	p_leaveDate = "leaveDate"+inputid;
	p_startDate="startDate"+inputid;
	p_endDate="endDate"+inputid
			
	var ppp_busDay=0;
	var hidStayNightDays=document.getElementsByName("stayNightDays")[parseInt(inputid,10)];
	if(hidStayNightDays!=null){
		var hidTemp=document.getElementsByName("stayNightDays")[parseInt(inputid,10)].value;
	    if(hidTemp==null || hidTemp==""){
	    	hidTemp=0;
	    }
	    ppp_busDay=parseInt(hidTemp,10);	
    }    			    	
	//计算开始日期.
	var bc_temp_sd=document.getElementById("leaveDate"+inputid).value;
	bc_temp_sd=add_day(bc_temp_sd,ppp_busDay);
    var starts = bc_temp_sd.split("-");
	startHyqYear = parseInt(starts[0],10);
	startHyqMonth = parseInt(starts[1],10);
	startHyqDay = parseInt(starts[2],10);
	//alert("====计算开始日期======"+leaveDateChoose);
	
	var ppp_backBusDay=0;
	var hidBackStayNightDays=document.getElementsByName("backStayNightDays")[parseInt(inputid,10)];
	if(hidBackStayNightDays!=null){
		var hidBackTemp=document.getElementsByName("backStayNightDays")[parseInt(inputid,10)].value;
	    if(hidBackTemp==null || hidBackTemp==""){
	    	hidBackTemp=0;
	    }
	    ppp_backBusDay=parseInt(hidBackTemp,10);	
    }    			    	
	//计算结束日期
	var bc_temp_sd22=document.getElementById("leaveDate"+inputid).value;
	var bc_temp_endd=add_day(bc_temp_sd22,(parseInt(maxday,10)-parseInt(minday,10)-parseInt(ppp_backBusDay,10)));
	//结束日期:出发日期文本框的值+最大入住天数-最小入住天数-回程车上停留晚数.	
	if(bc_temp_endd>ho_endd){
		bc_temp_endd=ho_endd;
	}
	var endss = bc_temp_endd.split("-");
	endHyqYear = parseInt(endss[0],10);
	endHyqMonth = parseInt(endss[1],10);
	endHyqDay = parseInt(endss[2],10);
	//alert("====计算结束日期======"+endHyqDate); 	   
   	             
    p_month = new String((startHyqMonth-1).toString());
    p_year = new String(startHyqYear.toString());
    p_format = "YYYY-MM-DD";
    
       //====================================Sean于12/13日增加显示效果
    var chasm = screen.availWidth;
	var mount = screen.availHeight;
	var w = 200;
	var h = 210;
	 vWinCal = window.open("","美亚国际机票网","width=" + w + ",height=" + h + ",left=" + ((chasm - w - 10) * .5) + ",top=" + ((mount - h - 30) * .5));
    //===================================================

    vWinCal.opener = self;
    ggWinCal = vWinCal;

    Build(p_item, p_month, p_year, p_format);
}

/*
==================退房日期调用===============================
minday:最小入住(停留)天数,必须为一个正整数．
maxday:最大入住(停留)天数,必须为一个正整数．	
inputid:行程序号,必须从0开始,程序根据此序号来确定出发日期,入住日期,退房日期的文本框的id,
规则:出发日期　　"leaveDate"+inputid;
	 入住日期    "startDate"+inputid;
	 退房日期    "endDate"+inputid;
*/
function show_calendar_endd(minday,maxday,inputid) {
	if(document.getElementById("startDate"+inputid).value==null || document.getElementById("startDate"+inputid).value==""){
   		//alert("请先选择入住日期！");
   		return;
   	} 
   	fillFlag="ENDDATEFLAG";　//根据这个标记来确定要填充的文本框．
   	control_leaveType="";
 	
   	if(minday==null || minday==""){
		minday=0;
	}
	if(isNaN(minday)){
		alert("最小入住(停留)天数必须为数字类型！");
		return;
	}
	if(parseInt(minday,10)<0){
		alert("最小入住(停留)天数必须为正整数！");
		return;
	}

	if(maxday==null || maxday==""){
		maxday=0;
	}
	if(isNaN(maxday)){
		alert("最大入住(停留)天数必须为数字类型！");
		return;
	}
	if(parseInt(maxday,10)<0){
		alert("最大入住(停留)天数必须为正整数！");
		return;
	}
	if(inputid==null || inputid==""){
		inputid="0";
	}
	end_inputid=inputid;
	priv_maxday[parseInt(inputid,10)]=maxday;
	
	p_item = "leaveDate"+inputid;
	p_leaveDate = "leaveDate"+inputid;
	p_startDate="startDate"+inputid;
	p_endDate="endDate"+inputid;

	//计算开始日期.	
	var	endd_temp_sd=add_day(document.getElementById("startDate"+inputid).value,minday);
	var starts = endd_temp_sd.split("-");
	startHyqYear = parseInt(starts[0],10);
	startHyqMonth = parseInt(starts[1],10);
	startHyqDay = parseInt(starts[2],10);
	//alert("====计算开始日期======"+leaveDateChoose);
	
	var ppp_backBusDay=0;
	var hidBackStayNightDays=document.getElementsByName("backStayNightDays")[parseInt(inputid,10)];
	if(hidBackStayNightDays!=null){
		var hidBackTemp=document.getElementsByName("backStayNightDays")[parseInt(inputid,10)].value;
	    if(hidBackTemp==null || hidBackTemp==""){
	    	hidBackTemp=0;
	    }
	    ppp_backBusDay=parseInt(hidBackTemp,10);	
    }    			    	
	//计算结束日期
	var endd_temp_end=add_day(document.getElementById("leaveDate"+inputid).value,(parseInt(maxday,10)-parseInt(ppp_backBusDay,10)));
	//退房日期:出发日期文本框的值+最大入住天数-回程车上停留晚数.		
	if(endd_temp_end>ho_endd){
		endd_temp_end=ho_endd;
	}
	var endss = endd_temp_end.split("-");
	endHyqYear = parseInt(endss[0],10);
	endHyqMonth = parseInt(endss[1],10);
	endHyqDay = parseInt(endss[2],10);
	//alert("====计算结束日期======"+endHyqDate); 
                
    p_month = new String((startHyqMonth-1).toString());
    p_year = new String(startHyqYear.toString());
    p_format = "YYYY-MM-DD";
    
    /*vWinCal = window.open("", "美亚国际机票网",
            "width=240,height=250,top=200,left=200,scrollbars=yes");*/
    //====================================Sean于12/13日增加显示效果
    var chasm = screen.availWidth;
	var mount = screen.availHeight;
	var w = 200;
	var h = 210;
	 vWinCal = window.open("","美亚国际机票网","width=" + w + ",height=" + h + ",left=" + ((chasm - w - 10) * .5) + ",top=" + ((mount - h - 30) * .5));
    //===================================================

    vWinCal.opener = self;
    ggWinCal = vWinCal;

    Build(p_item, p_month, p_year, p_format);   
}

/*
当前日期的YYYY-MM-DD格式．
*/
function current_date(){  
	var now1 = new Date();
    var yy1 = now1.getYear();
    var mm1 = now1.getMonth()+1;
    if(mm1<10){
      	mm1 = "0"+mm1.toString();
    }
   	var dd1 = now1.getDate();
    if(dd1<10){
      	dd1 = "0"+dd1.toString();
    }
    var currentDateTm=yy1+"-"+mm1+"-"+dd1;
    return currentDateTm;
}
/*
一个日期p_date加上p_day天后的日期,返回的是YYYY-MM-DD的字符串．
*/
function add_day(p_date,p_day){
	if(p_date==null || p_date=="" || trim(p_date).length!=10){
		alert("日期格式不对，必须为YYYY-MM-DD样式！");
		return;
	}
	if(p_day==null || p_day==""){
		p_day=0;
	}
	if(isNaN(p_day)){
		return;
	}
				
	var starts = p_date.split("-");		
	var iyy=parseInt(starts[0],10);    
    var imm=parseInt(starts[1],10)-1;    
   	var idd=parseInt(starts[2],10);
   	var new_Date = new Date(iyy,imm,idd);
   	
   	var lIntval = parseInt(p_day,10)//间隔
 	new_Date.setDate(new_Date.getDate() + lIntval)
   
	       
	var yy1 = new_Date.getYear();
    var mm1 = new_Date.getMonth()+1;
    if(mm1<10){
      	mm1 = "0"+mm1.toString();
    }
   	var dd1 = new_Date.getDate();
    if(dd1<10){
      	dd1 = "0"+dd1.toString();
    }
    var addResultDate=yy1+"-"+mm1+"-"+dd1;    
    return addResultDate;       	
}

/*
根据开始日期,结束日期,禁止日期字符串来计算实际的结束日期．
*/
function account_estop(p_start,p_end,p_estopStr){
	if(p_start==null || p_start=="" || trim(p_start).length!=10){
		alert("开始日期格式不对，必须为YYYY-MM-DD样式！");
		return;
	}
	if(p_end==null || p_end=="" || trim(p_end).length!=10){
		alert("结束日期格式不对，必须为YYYY-MM-DD样式！");
		return;
	}
	if(p_estopStr==null || p_estopStr=="" || trim(p_estopStr).length<10){
		return p_end;
	}
	p_estopStr=p_estopStr+","+p_end;
	var arr_estop=p_estopStr.split(",");
	for(var i=0;i<arr_estop.length;i++){
		if(trim(arr_estop[i]).length!=10){
			alert("禁用日期格式不对，必须为YYYY-MM-DD样式！");
			return;			
		}
	}
		
	var new_estop=new Array();
	var cnt=0;
	for(var i=0;i<arr_estop.length;i++){
		if(arr_estop[i]>=p_start){
			new_estop[cnt]=arr_estop[i];
			cnt++;
		}	
	}
	var new_end="2999-12-31";		
	for(var i=0;i<new_estop.length;i++){
		if(new_estop[i]<new_end){
			new_end=new_estop[i];
		}
	}
	if(new_end==p_end){	
		return new_end;
	}else{
		return add_day(new_end,-1)
	}
}
/*
传入一个出发班期的数组,作用:星期数转换.
*/
function week_conversion(arrWeek){   
	if(arrWeek==null){
		alert("出发班期不能为空！");
		return;
	}
	for(var i=0;i<arrWeek.length;i++){
		if(isNaN(arrWeek[i])){
			alert("出发班期必须为数字类型！");
			return;			
		}
	}
	for(var i=0;i<arrWeek.length;i++){
		if(arrWeek[i]=="7"){
			arrWeek[i]="0";
		}		
	}
	return arrWeek;
}
/*
根据有效日期的开始日期,结束日期来截取字符串里的有效日期数组.
参数:
startVD:开始日期
endVD:结束日期
fixedStr:字符串
*/
function isValidDate(startVD,endVD,fixedStr){
	if(startVD==null || startVD=="" || trim(startVD).length!=10){
		alert("开始日期格式不对，必须为YYYY-MM-DD样式！");
		return;
	}
	if(endVD==null || endVD=="" || trim(endVD).length!=10){
		alert("结束日期格式不对，必须为YYYY-MM-DD样式！");
		return;
	}
	//endVD=account_estop(startVD,endVD,p_estopStr);
	
	if(fixedStr==null || trim(fixedStr)==""){
		return new Array();
	}else{
		var arr_fixedStr=fixedStr.split(",");
		var pattern = /^(\d{1,2})-(\d{1,2})$/;
		for(var i=0;i<arr_fixedStr.length;i++){
			if(trim(arr_fixedStr[i]).length!=5 || !pattern.test(trim(arr_fixedStr[i]))){
				alert("固定出发班期格式不对，必须为MM-DD样式！");
				return;	
			}		
		}
		
		var starts = startVD.split("-");
		var startVDYear = parseInt(starts[0],10);
		var endss = endVD.split("-");
		var endVDYear = parseInt(endss[0],10);
		
		var h=0;
		var p_fixedStr=new Array();
		for(var i=startVDYear;i<=endVDYear;i++){			
			for(var j=0;j<arr_fixedStr.length;j++){
				p_fixedStr[h]=i+"-"+arr_fixedStr[j];
				h++;							
			}
		}
		h=0;
		var valid_fixed=new Array();		
		for(var i=0;i<p_fixedStr.length;i++){
			if(p_fixedStr[i]>=startVD && p_fixedStr[i]<=endVD){
				valid_fixed[h]=p_fixedStr[i];
				h++;
			}
		}		
		return valid_fixed;			
	}								
}
/*
点击日期时的onclick事件.
*/
function control_txt(currentDate){
	if(fillFlag=="LEAVEDATEFLAG"){		
		leaveDateChoose=currentDate;
		
		var txt_p_leaveDate=document.getElementById(p_leaveDate);
		var txt_p_startDate=document.getElementById(p_startDate);
		var txt_p_endDate=document.getElementById(p_endDate);
		
		if(txt_p_leaveDate!=null){
			document.getElementById(p_leaveDate).value=currentDate;
			document.getElementById(p_leaveDate).focus();
		}
		if(txt_p_startDate!=null){
			document.getElementById(p_startDate).value=add_day(currentDate,p_goBusDay);
		}
		if(txt_p_endDate!=null){
			document.getElementById(p_endDate).value="";
		}
		
		if(p_leaveDate=="leaveDate0"){
			//这里的开始日期和结束日期是对全局都有效的．
			ho_sd=currentDate; //全局开始日期
			//ho_endd=account_estop(currentDate,ho_endd,p_estopStr); //全局结束日期	
		}	
	}
	if(fillFlag=="STARTDATEFLAG"){
		startchoose=currentDate;
		var ff_p_startDate=document.getElementById(p_startDate);
		if(ff_p_startDate!=null){
			document.getElementById(p_startDate).value=currentDate;
		}
		var ff_p_endDate=document.getElementById(p_endDate);
		if(ff_p_endDate!=null){
			document.getElementById(p_endDate).value=add_day(currentDate,p_minday);
		}
	}
	if(fillFlag=="ENDDATEFLAG"){
		var et_p_endDate=document.getElementById(p_endDate);
		if(et_p_endDate!=null){
			document.getElementById(p_endDate).value=currentDate;
		}
		var leave_ipt="leaveDate"+(parseInt(end_inputid,10)+1);
		var start_ipt="startDate"+(parseInt(end_inputid,10)+1);
		
		var txtld=document.getElementById(leave_ipt);
		var txtsd=document.getElementById(start_ipt);
		
		var hidBackStayNightDays=document.getElementsByName("backStayNightDays")[parseInt(end_inputid,10)];
		//调用页面隐藏的回程车上停留晚数,用于在点退房日期时,填充下一个行程的出发日期,退房日期+回程车上停留晚数=下一个行程的出发日期.
		var nextLeaveDate="";
		if(txtld!=null){
			if(hidBackStayNightDays!=null){
	    		var hidBackTemp=document.getElementsByName("backStayNightDays")[parseInt(end_inputid,10)].value;
	    		if(hidBackTemp==null || hidBackTemp==""){
	    			hidBackTemp=0;
	    		}
	    		document.getElementById(leave_ipt).value=add_day(currentDate,parseInt(hidBackTemp,10));	
	    		nextLeaveDate=add_day(currentDate,parseInt(hidBackTemp,10));	
    		}else{
    			document.getElementById(leave_ipt).value=currentDate;
    			nextLeaveDate=currentDate;	
    		}													
    	}
    	    	    	
  		var hidStayNightDays=document.getElementsByName("stayNightDays")[parseInt(end_inputid,10)+1];
  		//调用页面隐藏的去程车上停留晚数,用于在点退房日期时,填充下一个行程的入住日期,下一个行程的出发日期+下一个行程的去程车上停留晚数=下一个行程的入住日期.
    	if(txtsd!=null){
    		if(hidStayNightDays!=null){
	    		var hidTemp=document.getElementsByName("stayNightDays")[parseInt(end_inputid,10)+1].value;
	    		if(hidTemp==null || hidTemp==""){
	    			hidTemp=0;
	    		}
	    		document.getElementById(start_ipt).value=add_day(nextLeaveDate,parseInt(hidTemp,10));	
    		}else{
    			document.getElementById(start_ipt).value=nextLeaveDate;	
    		}
    	}										
	}
	if(ggWinCal && ggWinCal.open && !ggWinCal.closed){
		ggWinCal.close();
	}
}










