//* prototype function *//
String.prototype.trim = function() {
    return this.replace(/^\s*|\s*$/g, ""); // Strip leading and trailing white-space
}
String.prototype.normalize_space = function() {
    return this.replace(/^\s*|\s(?=\s)|\s*$/g, ""); // Replace repeated spaces, newlines and tabs with a single space
}
String.prototype.zf = function(l) { return '0'.string(l - this.length) + this; } // Zero-Fill string
String.prototype.string = function(l) { var s = '', i = 0; while (i++ < l) { s += this; } return s; } // VB-like string
Number.prototype.zf = function(l) { return this.toString().zf(l); } // Zero-Fill string
//* prototype function *//

// a global month names array
var gsMonthNames = new Array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
);

// a global day names array
var gsDayNames = new Array(
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);

// the date format prototype
Date.prototype.format = function(f)
{
    if (!this.valueOf())
        return '&nbsp;';

    var d = this;
    
    return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
        function($1)
        {
            switch ($1.toLowerCase())
            {
            case 'yyyy': return d.getFullYear();
            case 'mmmm': return gsMonthNames[d.getMonth()];
            case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
            case 'mm':   return (d.getMonth() + 1).zf(2);
            case 'dddd': return gsDayNames[d.getDay()];
            case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
            case 'dd':   return d.getDate().zf(2);
            case 'hh':   return ((h = d.getHours() % 12) ? h : 12).zf(2);
            case 'nn':   return d.getMinutes().zf(2);
            case 'ss':   return d.getSeconds().zf(2);
            case 'a/p':  return d.getHours() < 12 ? 'a' : 'p';
            }
        }
    );
}
//* end prototype function *//


function Set_Action(url,form) {
	if (form == 'All' ) {
	
	}
	else {
		document.getElementById(form).action = url;
		document.getElementById(form).submit() ;
	}
}

function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function SelectAll(o) {
    if (o.checked) { Select_All(); }
    else { Unselect_All(); }
}

function Select_All() {
	for (var i=0;i<document.forms[0].elements.length;i++) {
		var e = document.forms[0].elements[i];
		if (e.type =='checkbox') {
			e.checked = 1 ;
		}
	}
}

function Unselect_All() {
	for (var i=0;i<document.forms[0].elements.length;i++) {
		var e = document.forms[0].elements[i];
		if (e.type =='checkbox') {
			e.checked = 0 ;
		}
	}
}

function Clear_All() {
	for (var i=0;i<document.forms[0].elements.length;i++) {
		var e = document.forms[0].elements[i];
		if (e.type =='text' || e.label == 'text') {
			e.value = "" ;
		}
		if (e.name.substring(0,3) == 'txt') {
			e.value = '';
		}		
		if (e.name.substring(0,3) == 'cbo') {
			e.value = 'All';
		}
		if (e.name.substring(0,3) == 'ddl') {
		    e.value ='';
		}
	}
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function NewWindow(mypage,myname,w,h,scroll,status,fullscreen){
	var winl = (screen.width-w)/2;
	var wint = (screen.height-h)/2;
	var settings ='height='+h+',';
	settings +='width='+w+',';
	settings +='top='+wint+',';
	settings +='left='+winl+',';
	settings +='scrollbars='+scroll+',';
	settings +='status='+status+',';	
	settings +='channelmode='+fullscreen+',';		
	settings +='resizable=yes';
	win=window.open(mypage,myname,settings);
	if(parseInt(navigator.appVersion) >= 4){win.window.focus();}
} 

function printit() {  
    if (window.print) {
        window.print();  
    } 
    else {
        var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
        document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
        WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";  
    }
}

function bookmark() {
    if (document.all)
	    window.external.AddFavorite("http://thailandday.com","thailandday.com Thailand's Leading Travel Website")
}    

function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num))
    num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents<10)
    cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+','+
    num.substring(num.length-(4*i+3));
    return (((sign)?'':'-') + num + '.' + cents);
}
//  End -->

function AddSameControl(cboNum, NetNumber, tblAdd_Str, tbdAdd_Str) {
    var divTemp = document.getElementById('divTemp');
    var Num = cboNum.alt.split("_")[0] + "_" + cboNum.alt.split("_")[1];
    var tbdNum;
    var tblAdd = document.getElementById(tblAdd_Str + Num);
    var tbdAdd = document.getElementById(tbdAdd_Str);

    while (tblAdd.hasChildNodes()) {
        var lastNode = tblAdd.lastChild;
        if (lastNode.id == "" || lastNode.innerHTML == "") {
            tblAdd.removeChild(lastNode);
        }
        else {
            break;
        }
    }

    if (NetNumber > 0) {
        if (tblAdd.hasChildNodes()) {
            tbdNum = parseInt(tblAdd.lastChild.id.replace(tbdAdd.id + Num + "_","")) + 1;
        }
        else {
            tbdNum = 0;
        }
        for (var count = 0; count < NetNumber; count++) {
            var row = tbdAdd.innerHTML.split("<NEW_ROW>");
            var tbody = document.createElement("tbody");
            tbody.id = tbdAdd_Str + Num + "_" + tbdNum;
            for (var countRow = 0; countRow < row.length; countRow++) {
                var tr = document.createElement("tr");            
                var col = row[countRow].split("<NEW_COL>");
                for (var countCol = 0; countCol < col.length; countCol++) {
                    var td = document.createElement("td");
                    var td_id = col[countCol].split("<TD_ID>");
                    if (td_id.length == 2) {
                        td.id = td_id[0] + Num + "_" + tbdNum;
                        td.innerHTML = td_id[1].replace(/\$Num/g, Num).replace(/\$Run/g, tbdNum);
                    }
                    else {
                        td.innerHTML = col[countCol].replace(/\$Num/g, Num).replace(/\$Run/g, tbdNum);
                    }
                    tr.appendChild(td);
                }
                tbody.appendChild(tr);                
            }
            tblAdd.appendChild(tbody);
            tbdNum++;
        }
    }
    else {
        for (var count = 0; count > NetNumber; count--) {
            var oldAdd = tblAdd.lastChild;
            tblAdd.removeChild(oldAdd);
        }    
    }
}

function Manage_Control() {
    var control = new Array();

    function Enable_Relate_Control(clt) {
        var posNum = clt.id.indexOf("_Num");
        var type = clt.id.substring(3,4); // type = H, F
        var num = clt.id.substring(posNum, clt.id.length);
        for (var count = 1; count < this.control.length; count++) {
            var cltSub = document.getElementById(this.control[count].replace("_Num", num));
            if (!cltSub) { continue; }
            if (clt.value == "0") {
                cltSub.value = 0;
                cltSub.disabled = true;
            }
            else {
                cltSub.disabled = false;
            }
        }
    }
    
    this.Enable_Relate_Control = Enable_Relate_Control;
    this.control = control;
}

// Class Currency_Exchange
function Currency_Exchange() {
    var control = new Array();
    var cboCurrency;
    var multiplyNum;
    var oldmultiplyNum;
    var criteriaAddOn = new String();
    var NetNumber;
    
    function change_Currency(cboCurrencyInput) {
        cboCurrency = cboCurrencyInput;
        var curRate = cboCurrency.value;    
        for (var running = 0; running < this.control.length; running++) {
            for (var running1 = 0; running1 < this.control[running].length; running1++) {
                var now_control = this.control[running][running1];
                for (var i=0;i<document.forms[0].elements.length;i++) {
                    var e = document.forms[0].elements[i];
                    if (e.id.indexOf("hdf" + now_control.substring(3)) != -1) {
                        var hdfPrice = e;
                        var lblPrice = document.getElementById("lbl" + e.id.substring(3));
                        if (hdfPrice) {
                            var price = hdfPrice.value;
                            var curName = cboCurrency.options[cboCurrency.selectedIndex].text;
                            lblPrice.innerHTML = formatCurrency(price * curRate) + " " + curName.substring(curName.length - 4, curName.length - 1);          
                        }
                    }
                }        
            }
        }
        var Currency_ID = cboCurrency.id;
        var Currency_Code = document.getElementById("hdf" + Currency_ID.substring(3, Currency_ID.lenght));
        if (Currency_Code) {
            Currency_Code.value = curName;
        }             
    }
//    function change_Currency(cboCurrencyInput) {
//        cboCurrency = cboCurrencyInput;
//        var curRate = cboCurrency.value;
//        for (var running = 0; running < this.control.length; running++) {
//            for (var running1 = 0; running1 < this.control[running].length; running1++) {
//                count = 1;
//	            while (1==1) {
//	                var hdfPriceID = "hdf" + this.control[running][running1].substring(3, this.control[running][running1].length);
//                    var hdfPrice = document.getElementById(hdfPriceID + count);
//                    var lblPrice = document.getElementById(this.control[running][running1] + count);                        
//                    if (hdfPrice) {
//                        var price = hdfPrice.value;
//                        var curName = cboCurrency.options[cboCurrency.selectedIndex].text;
//                        lblPrice.innerHTML = formatCurrency(price * curRate) + " " + curName.substring(curName.length - 4, curName.length - 1);          
//                    }
//                    else {
//                        var count1 = 1;
//                        var haveControl = false;
//                        while (1==1) {
//                            hdfPrice = document.getElementById(hdfPriceID + count + "_" + count1);
//                            lblPrice = document.getElementById(this.control[running][running1] + count + "_" + count1);
//                            if (hdfPrice) {
//                                var price = hdfPrice.value;
//                                var curName = cboCurrency.options[cboCurrency.selectedIndex].text;
//                                lblPrice.innerHTML = formatCurrency(price * curRate) + " " + curName.substring(curName.length - 4, curName.length - 1);          
//                                haveControl = true;
//                            }
//                            else {                        
//                                var count2 = 1;
//                                var haveControl = false;
//                                while (1==1) {
//                                    hdfPrice = document.getElementById(hdfPriceID + count + "_" + count1 + "_" + count2);
//                                    lblPrice = document.getElementById(this.control[running][running1] + count + "_" + count1 + "_" + count2);
//                                    if (hdfPrice) {
//                                        var price = hdfPrice.value;
//                                        var curName = cboCurrency.options[cboCurrency.selectedIndex].text;
//                                        lblPrice.innerHTML = formatCurrency(price * curRate) + " " + curName.substring(curName.length - 4, curName.length - 1);          
//                                        haveControl = true;
//                                    }
//                                    else {                        
//                                        var count3 = 1;
//                                        var haveControl = false;
//                                        while (1==1) {
//                                            hdfPrice = document.getElementById(hdfPriceID + count + "_" + count1 + "_" + count2 + "_" + count3);
//                                            lblPrice = document.getElementById(this.control[running][running1] + count + "_" + count1 + "_" + count2 + "_" + count3);
//                                            if (hdfPrice) {
//                                                var price = hdfPrice.value;
//                                                var curName = cboCurrency.options[cboCurrency.selectedIndex].text;
//                                                lblPrice.innerHTML = formatCurrency(price * curRate) + " " + curName.substring(curName.length - 4, curName.length - 1);          
//                                                haveControl = true;
//                                            }
//                                            else {                        
//                                                break;
//                                            }
//                                            count3++
//                                        }
//                                        if (!haveControl) break;
//                                    }
//                                    count2++
//                                }
//                                if (!haveControl) break;
//                            }
//                            count1++
//                        }
//                        if (!haveControl) break;
//                    }                        
//                    count++;
//	            }    	
//	        }
//        }
//        var Currency_ID = cboCurrency.id;
//        var Currency_Code = document.getElementById("hdf" + Currency_ID.substring(3, Currency_ID.lenght));
//        if (Currency_Code) {
//            Currency_Code.value = curName;
//        }        
//    }
    
    function sum_amount(cboNum) { 
        var ID = cboNum.id.substring(3, cboNum.id.indexOf("_Num") + 1);
        var Num = cboNum.id.substring(cboNum.id.indexOf("_Num") + 4, cboNum.id.length);
        var hdfNum = document.getElementById("hdf" + ID + "Num" + Num);
        var lblAmount = document.getElementById("lbl" + ID + "Price" + Num);
        var hdfAmount = document.getElementById("hdf" + ID + "Price" + Num);
        var lblTotal_Amount, hdfTotal_Amount;
        var lblGrand_Amount = document.getElementById(this.control[this.control.length - 1][0] + "0");
    
        // Find Label Total Amount
        for (var running = 0; running < this.control.length; running++) {
            for (var running1 = 0; running1 < this.control[running].length; running1++) {
                if (lblAmount.id.indexOf(this.control[running][running1]) != -1) {
                    lblTotal_Amount = document.getElementById(this.control[running][this.control[running].length - 1] + "0");
                    hdfTotal_Amount = document.getElementById("hdf" + lblTotal_Amount.id.substring(3, lblTotal_Amount.id.length));                    
                    break;
                }
            }
            if (lblTotal_Amount) {
                break;
            }
        }
        
        // Array[0] = First Dimension; Array[1] = control add on;    
        var AmountAddOn = 0; 
        if (criteriaAddOn.text != "") {
            var strAddOn = criteriaAddOn.text.split("-");
            if (strAddOn.length == 2) {
                if (running == strAddOn[0]) {
                    var controlStrAddOn = strAddOn[1].split("+");    
                    for (var count = 0; count < controlStrAddOn.length; count++) {
                        var lblAddOn = document.getElementById(controlStrAddOn[count] + Num);
                        var hdfAddOn = document.getElementById("hdf" + controlStrAddOn[count].substring(3,controlStrAddOn[count].length) + Num);
                        AmountAddOn = AmountAddOn + parseFloat(hdfAddOn.value);
                    }
                }
            }
        }
        
        var curName = cboCurrency.options[cboCurrency.selectedIndex].text;
        var curCode = curName.substring(curName.length - 4, curName.length - 1);
        var curRate = cboCurrency.value;
        this.NetNumber = cboNum.value - hdfNum.value;
        // in case have multiply number
        if (this.multiplyNum) {
            // change multiply
            if (this.NetNumber == 0) { 
                this.NetNumber = (this.multiplyNum - this.oldmultiplyNum) * cboNum.value; 
            }
            // change number
            else {
                this.NetNumber *= this.multiplyNum;
            }
            //alert("NetNumber : " + this.NetNumber + "\nmultiplyNum : " + this.multiplyNum + "\noldmultiplyNum : " + this.oldmultiplyNum);
        }
        
        var NetAmount = (parseFloat(hdfAmount.value)+ AmountAddOn)  * this.NetNumber  ;
        if (hdfTotal_Amount) {
            var OldTotal_Amount = Math.round(parseFloat(hdfTotal_Amount.value * curRate)*100)/100;
            var AddTotal_Amount = Math.round(NetAmount * curRate* 100)/100;        
            lblTotal_Amount.innerHTML =  formatCurrency(OldTotal_Amount + AddTotal_Amount) + " " + curCode;
            hdfTotal_Amount.value = parseFloat(hdfTotal_Amount.value) + NetAmount;
        }
        
        var hdfGrand_Amount = document.getElementById("hdf" + lblGrand_Amount.id.substring(3, lblGrand_Amount.id.length));
        if (hdfGrand_Amount) {
            var OldGrand_Amount = Math.round(parseFloat(hdfGrand_Amount.value * curRate)*100)/100;
            var AddGrand_Amount = Math.round(NetAmount * curRate* 100)/100;
            lblGrand_Amount.innerHTML = formatCurrency(OldGrand_Amount + AddGrand_Amount) + " " + curCode;
            hdfGrand_Amount.value = parseFloat(hdfGrand_Amount.value) + NetAmount;
        }
        
        hdfNum.value = cboNum.value;
    }
    
    function addOne_amount(cboNum) { 
        var ID = cboNum.id.substring(3, cboNum.id.indexOf("_Num") + 1);
        var Num = cboNum.id.substring(cboNum.id.indexOf("_Num") + 4, cboNum.id.length);
        var hdfNum = document.getElementById("hdf" + ID + "Num" + Num);
        var lblAmount = document.getElementById("lbl" + ID + "Price" + Num);
        var hdfAmount = document.getElementById("hdf" + ID + "Price" + Num);
        var lblTotal_Amount, hdfTotal_Amount;
        var lblGrand_Amount = document.getElementById(this.control[this.control.length - 1][0] + "0");
    
        // Find Label Total Amount
        for (var running = 0; running < this.control.length; running++) {
            for (var running1 = 0; running1 < this.control[running].length; running1++) {
                if (lblAmount.id.indexOf(this.control[running][running1]) != -1) {
                    lblTotal_Amount = document.getElementById(this.control[running][this.control[running].length - 1] + "0");
                    hdfTotal_Amount = document.getElementById("hdf" + lblTotal_Amount.id.substring(3, lblTotal_Amount.id.length));                    
                    break;
                }
            }
            if (lblTotal_Amount) {
                break;
            }
        }
        
        var curName = cboCurrency.options[cboCurrency.selectedIndex].text;
        var curCode = curName.substring(curName.length - 4, curName.length - 1);
        var curRate = cboCurrency.value;
        if (hdfNum.value != 0) { 
            this.NetNumber = (cboNum.value == 0 ? -1 : 0);
        }
        else {
            this.NetNumber = 1;
        }        
     
        var NetAmount = (parseFloat(hdfAmount.value))  * this.NetNumber  ;
        if (hdfTotal_Amount) {
            var OldTotal_Amount = Math.round(parseFloat(hdfTotal_Amount.value * curRate)*100)/100;
            var AddTotal_Amount = Math.round(NetAmount * curRate* 100)/100;        
            lblTotal_Amount.innerHTML =  formatCurrency(OldTotal_Amount + AddTotal_Amount) + " " + curCode;
            hdfTotal_Amount.value = parseFloat(hdfTotal_Amount.value) + NetAmount;
        }
        
        var hdfGrand_Amount = document.getElementById("hdf" + lblGrand_Amount.id.substring(3, lblGrand_Amount.id.length));
        if (hdfGrand_Amount) {
            var OldGrand_Amount = Math.round(parseFloat(hdfGrand_Amount.value * curRate)*100)/100;
            var AddGrand_Amount = Math.round(NetAmount * curRate* 100)/100;
            lblGrand_Amount.innerHTML = formatCurrency(OldGrand_Amount + AddGrand_Amount) + " " + curCode;
            hdfGrand_Amount.value = parseFloat(hdfGrand_Amount.value) + NetAmount;
        }
        
        hdfNum.value = (cboNum.value == 0 ? 0 : 1);        
    }    
    
    this.control = control;
    this.cboCurrency = cboCurrency;
    this.criteriaAddOn = criteriaAddOn;
    this.multiplyNum = multiplyNum;
    this.oldmultiplyNum = oldmultiplyNum;
    this.change_Currency = change_Currency;
    this.sum_amount = sum_amount;
    this.addOne_amount = addOne_amount;
}

// Class Manage_Input
function Manage_Input() {
    var divTemp;
    var tdButton
    var cmdSend;
    var cmdBack;
    var cmdBackH;
    var cmdConfirm;
    var cmdReset;
    var colorConfirm = new String();
    var strCltComboText = new Array();
    var strCltCheck = new Array();
    var strCltReset = new Array();
    var strCltConfirm = new Array();
    var strCondition = new Array();
    var strAlert = new Array();
    var strResetValue = new Array();
    var tdCltConfirm = new Array();    

    function check_validate() {
        for (var count=0; count<this.strCltCheck.length; count++) {
            if (document.getElementById(this.strCltCheck[count]).value == this.strCondition[count]) {
                alert(this.strAlert[count]);
                document.getElementById(this.strCltCheck[count]).focus();
                return false;
            }
        }
        return true;
    }

    function reset_value() {
        for (var countGroup=0; countGroup<this.strCltReset.length; countGroup++) {
            for (var count=0; count<this.strCltReset[countGroup].length; count++) {
                document.getElementById(this.strCltReset[countGroup][count]).innerHTML = this.strResetValue[countGroup];
            }
        }
    }

    function send_data() {
        if (this.check_validate()) { 
            this.confirm_data();
        }
    }

    function confirm_data() {
        var countTotal=0;    
        var AllControl = new Array();   
        for (var i=0;i<document.forms[0].elements.length;i++) {
            var e = document.forms[0].elements[i];
            var name = e.id.substring(3);
            var div = document.getElementById("div" + name);
            if (div && e.id.substring(0,3) != "cmd" && e.id.substring(0,3) != "hdf") { 
                if (e.id.indexOf("cbo") != -1 && e.id.indexOf("Time") != -1 && e.id.indexOf("AMPM") != -1) { }
                else if (e.id.indexOf("$Run") != -1 && e.id.indexOf("$Num") != -1) { }
                else {
                    AllControl[countTotal] = e.id; 
                    countTotal++; 
                 }
            }
        }
        countTotal=0;
	    for (var i=0;i<AllControl.length;i++) {
		    var e = document.getElementById(AllControl[i]);
            var name = e.id.substring(3);
            var div = document.getElementById("div" + name);
            if (div) { this.divTemp.appendChild(div); }                   
            var td = document.getElementById("td" + name);
            if (td) {
                var HTML;
                if (e.id.indexOf("Time") != -1) {  
                    HTML = document.getElementById("cbo" + name).value + " "  + document.getElementById("cbo" + name + "AMPM").value;
                }
                else if (e.id.indexOf("Date") != -1) {
                    HTML = document.getElementById("txt" + name).value;
                }
                else {
                    HTML = e.value;            
                }
                td.innerHTML = HTML.trim();
                td.style.color = this.colorConfirm;         
                this.tdCltConfirm[countTotal] = td;
                countTotal++;
            }
	    }
        this.divTemp.appendChild(this.cmdSend);
        this.divTemp.appendChild(this.cmdReset);
        this.tdButton.appendChild(this.cmdConfirm);
        this.tdButton.appendChild(this.cmdBack)
        this.cmdBackH.style.visibility = "visible";	    
    }

//    function confirm_data() {
//        var countTotal=0;
//        for (var i=0; i<this.strCltConfirm.length; i++) {
//            var clt_str = this.strCltConfirm[i].split("-");            
//            for (var count=0; count<clt_str.length; count++) {
//                var pos_num = clt_str[count].indexOf("$");
//                var loop_num = (pos_num != -1) ? parseInt(clt_str[count].substring(pos_num+1)) : 0;
//                clt_str[count] = (pos_num != -1) ? clt_str[count].substring(0, pos_num) : clt_str[count];
//                var running = new Array(loop_num);
//                for (var countR = 0; countR < running.length; countR++) { running[countR] = 1; }
//                var dimension = 1;
//                while (1==1) {
//                    var control = document.getElementById(clt_str[count] + running.join("_"));            
//                    if (control) {
//                        var HTML = control.value;
//                        var name = control.id.substring(3);
//                        var div = document.getElementById("div" + name);
//                        if (div) { this.divTemp.appendChild(div); }                   
//                        var td = document.getElementById("td" + name);
//                        td.innerHTML = HTML.trim();
//                        td.style.color = this.colorConfirm;         
//                        this.tdCltConfirm[countTotal] = td;
//                        countTotal++
//                        running[running.length-1]++;                            
//                        if (running.length==0) break;        
//                    }            
//                    else { 
//                        for (var countD = 1; countD <= dimension; countD++) { running[running.length - countD] = 1; }
//                        if (dimension >=3 && dimension <= running.length) {
//                             
//                            if (running[running.length-1] == 1) {
//                                dimension++;                        
//                                running[running.length-dimension]++;                                                          
//                            }
//                        }
//                        else {
//                            dimension++;                        
//                            running[running.length-dimension]++;                              
//                        }
//                        if (dimension > running.length) break;             
//                    }
//                }    
//            }            
//        }
//        this.divTemp.appendChild(this.cmdSend);
//        this.divTemp.appendChild(this.cmdReset);
//        this.tdButton.appendChild(this.cmdConfirm);
//        this.tdButton.appendChild(this.cmdBack)
//        this.cmdBackH.style.visibility = "visible";
//    }
    
    function back_data() {
        for (var count=0; count<this.tdCltConfirm.length; count++) {
//            alert("div" + this.tdCltConfirm[count].id.substring(2));
//            alert(document.getElementById("div" + this.tdCltConfirm[count].id.substring(2)).innerHTML);        
            var divCltConfirm = document.getElementById("div" + this.tdCltConfirm[count].id.substring(2));
            this.tdCltConfirm[count].innerHTML = "";
            this.tdCltConfirm[count].appendChild(divCltConfirm);
        }
        this.tdButton.appendChild(this.cmdSend);
        this.tdButton.appendChild(this.cmdReset);
        this.divTemp.appendChild(this.cmdConfirm);
        this.divTemp.appendChild(this.cmdBack)        
        this.cmdBackH.style.visibility = "hidden";
    }
    
    this.confirm_data = confirm_data;
    this.reset_value = reset_value;
    this.send_data = send_data;
    this.check_validate = check_validate;
    this.back_data = back_data;
    this.divTemp = divTemp;
    this.tdButton = tdButton;
    this.cmdSend = cmdSend;
    this.cmdBack = cmdBack;
    this.cmdBackH = cmdBackH;
    this.cmdConfirm = cmdConfirm;
    this.cmdReset = cmdReset;
    this.colorConfirm = colorConfirm;
    this.strCltComboText = strCltComboText;
    this.strCltCheck = strCltCheck;    
    this.strCltReset = strCltReset;
    this.strCltConfirm = strCltConfirm;
    this.strCondition = strCondition;
    this.strAlert = strAlert;
    this.strResetValue = strResetValue;    
    this.tdCltConfirm = tdCltConfirm;
}

function Manage_Data() {
    var controlDate = new Array();
    var startDate = new String();
    var endDate = new String();
    
    function Change_RangeDate() {
        var startRDate, endRDate;
        for (var count=0; count<this.controlDate.length; count++) {
            var rangeDate = this.controlDate[count].value.split(" - ");
            if (rangeDate.length = 2) {
                startRDate = (startRDate == "") ? rangeDate[0] : startRDate;
                startRDate = (Date.parse(startRDate) > Date.parse(rangeDate[0])) ? rangeDate[0] : startRDate;
                endRDate = (endRDate == "") ? rangeDate[1] : endRDate;
                endRDate = (Date.parse(endRDate) < Date.parse(rangeDate[1])) ? rangeDate[1] : endRDate;
            }
        }
    }
    
    this.controlDate = controlDate;    
    this.startDate = startDate;
    this.endDate = endDate;
    
    this.Change_RangeDate = Change_RangeDate;
}

function checkValue(value1, value2, alertText, url, form) {
    var cltValue1 = document.getElementsByName(value1);
    var cltValue2 = document.getElementsByName(value2);
    var haveCheck1 = 0, haveCheck2 = 0;
    for (var count=0; count<cltValue1.length; count++) {
        if (cltValue1[count].id == value1 && cltValue1[count].checked == 1) { 
            haveCheck1 = 1; 
            break;
        }
    }
    
    for (var count=0; count<cltValue2.length; count++) {
        if (cltValue2[count].id == value2 && cltValue2[count].checked == 1) { 
            haveCheck2 = 1;
            break;
        }
    }    
    
    if ((haveCheck1 == 1 && haveCheck2 == 1) || (haveCheck1 == 0 && haveCheck2 == 0)) { 
        alert(alertText);
        return;
    }   
    Set_Action(url,form)
}

function Calculate_Persons(cltAdd_Persons, RoomNum_ID, Persons_ID, Extra_ID, thisValue, maxValue) {
    var running_str = cltAdd_Persons.alt;
    var hdfAdd_Persons = document.getElementById("hdf" + cltAdd_Persons.id.substring(3));    
    var cltPersons = document.getElementById(Persons_ID + running_str);
    var cltNow_Persons = document.getElementById("hdf" + Persons_ID.substring(3) + running_str);
    var cltRoom_Num = document.getElementById(RoomNum_ID + running_str);
    var cltExtra = document.getElementById(Extra_ID + running_str);
    var Number = parseInt(cltRoom_Num.value);
    var extraPersons = cltExtra ? parseFloat(cltExtra.value) : 0;
    var maxPersons = parseInt(cltPersons.innerHTML) * Number;
    var oldaddPersons = parseFloat(hdfAdd_Persons.value);
    var addPersons = parseFloat(cltAdd_Persons.value);
    var netaddPersons = addPersons - oldaddPersons;
    var nowPersons = parseFloat(cltNow_Persons.value);
    var addedPersons = nowPersons + (thisValue * netaddPersons);
    if (addedPersons > maxPersons + (maxValue * extraPersons)) {
        alert("You choose number more than capacity room. ");
        cltAdd_Persons.value = oldaddPersons;
        return;
    }
    hdfAdd_Persons.value = addPersons;        
    cltNow_Persons.value = addedPersons;
}

function Check_Persons_More(cltCheck, Number_ID) {
    var running_str = cltCheck.alt;
    var cltNumber = document.getElementById(Number_ID + running_str);
    var hdfCheck = document.getElementById("hdf" + cltCheck.id.substring(3));
    var Number = parseInt(cltNumber.value);
    var addNumber = parseFloat(cltCheck.value);
    var oldNumber = parseFloat(hdfCheck.value);
    if (addNumber > Number) {
        alert("You choose number more than capacity room. ");
        cltCheck.value = oldNumber;
        return;
    }
}

function Check_Persons_Less(cltCheck, Number_ID) {
    var running_str = cltCheck.alt;
    var hdfCheck = document.getElementById("hdf" + cltCheck.id.substring(3));
    var cltNumber = document.getElementById(Number_ID + running_str);
    if (!cltNumber) { return; }
    var hdfNumber = document.getElementById("hdf" + cltNumber.id.substring(3));
    var Number = parseInt(cltNumber.value);
    var addNumber = parseFloat(cltCheck.value);
    if (addNumber < Number) {
        cltNumber.value = addNumber;
        cltNumber.onchange();
    }
}

function validateCheckInOut(e, reserve_type) {
    var running_str = e.alt.split("_");
    var running;
    if (running_str[1]) {
        running = running_str[0] + "_" + running_str[1];
    }
    else {
        running = running_str[0];
    }
    if (reserve_type == "HT") {
        var txtHCheckIn = document.getElementById("txtHCheckIn" + running);
        var txtHCheckOut = document.getElementById("txtHCheckOut" + running);
        if (txtHCheckIn.value == "") {
            e.value = "0";
            alert("Please enter Check In date");
            txtHCheckIn.focus();
            return false;
        }
        else if (txtHCheckOut.value == "") {    
            e.value = "0";
            alert("Please enter Check Out date");
            txtHCheckOut.focus();
            return false;
        }
    }
    else if (reserve_type == "HF") {
        var txtFDepart_Date = document.getElementById("txtFDepart_Date" + running);
        var txtFArrive_Date = document.getElementById("txtFArrive_Date" + running);
        if (txtFDepart_Date.value == "") {
            e.value = "0";
            alert("Plase enter Departure date");
            txtFDepart_Date.focus();
            return false;
        }
        else if (txtFArrive_Date) {
            if (txtFArrive_Date.value == "") {
                e.value = "0";
                alert("Plase enter Arrive date");
                txtFArrive_Date.focus();
                return false;
            }            
        }
    }
    else if (reserve_type == "CR") {
        var check_type;
        var hdfTransfer_Type = document.getElementById("hdfO_Type" + running);
        var txtOAAirline = document.getElementById("txtOAAirline");
        var txtOAFlight = document.getElementById("txtOAFlight");
        var txtOADate = document.getElementById("txtOADate");
        var cboOATime = document.getElementById("cboOATime");
        var cboOATimeAMPM = document.getElementById("cboOATimeAMPM");
        var txtODAirline = document.getElementById("txtODAirline");
        var txtODFlight = document.getElementById("txtODFlight");
        var txtODDate = document.getElementById("txtODDate");
        var cboODTime = document.getElementById("cboODTime");
        var cboODTimeAMPM = document.getElementById("cboODTimeAMPM");
        if (hdfTransfer_Type.value == "Oneway") {
            if (txtOAAirline.value == "" && txtOAFlight.value == "" && txtOADate.value == "" && cboOATime.selectedIndex == 0
            && cboOATimeAMPM.selectedIndex == 0 && txtODAirline.value == "" && txtODFlight.value == ""
            && txtODDate.value == "" && cboODTime.selectedIndex == 0 && cboODTimeAMPM.selectedIndex == 0) {
                e.value = "0";
                alert("Please enter depart or arrive detail");
                return false;
            }    
            else if (txtOAAirline.value != "" || txtOAFlight.value != "" || txtOADate.value != "" || cboOATime.selectedIndex != 0
            || cboOATimeAMPM.selectedIndex != 0) {
                check_type = 0;
            }
            else if (txtOAAirline.value != "" || txtOAFlight.value != "" || txtOADate.value != "" || cboOATime.selectedIndex != 0
            || cboOATimeAMPM.selectedIndex != 0) {
                check_type = 1;
            }            
        }
        else if (hdfTransfer_Type.value == "Roundtrip") {
            check_type = 2;
        }
        
        if (check_type != 1) {
            if (txtOAAirline.value == "") {
                e.value = "0";
                alert("Please enter arrive Airline name");
                txtOAAirline.focus();
                return false;
            }
            else if (txtOAFlight.value == "") {        
                e.value = "0";
                alert("Plase enter arrive Flight");
                txtOAFlight.focus();
                return false;
            }        
            else if (txtOADate.value == "") {        
                e.value = "0";
                alert("Plase enter arrive Date");
                txtOADate.focus();
                return false;
            }       
            else if (cboOATime.selectedIndex == 0) {        
                e.value = "0";
                alert("Plase enter arrive Time");
                cboOATime.focus();
                return false;
            }                       
            else if (cboOATimeAMPM.selectedIndex == 0) {        
                e.value = "0";
                alert("Plase enter arrive Time");
                cboOATimeAMPM.focus();
                return false;
            }               
        }
        
        if (check_type != 0) {
            if (txtODAirline.value == "") {
                e.value = "0";
                alert("Plase enter depart Airline name");
                txtODAirline.focus();
                return false;
            }
            else if (txtODFlight.value == "") {        
                e.value = "0";
                alert("Plase enter depart Flight");
                txtODFlight.focus();
                return false;
            }        
            else if (txtODDate.value == "") {        
                e.value = "0";
                alert("Plase enter depart Date");
                txtODDate.focus();
                return false;
            }       
            else if (cboODTime.selectedIndex == 0) {        
                e.value = "0";
                alert("Plase enter depart Time");
                cboODTime.focus();
                return false;
            }                       
            else if (cboODTimeAMPM.selectedIndex == 0) {        
                e.value = "0";
                alert("Plase enter depart Time");
                cboODTimeAMPM.focus();
                return false;
            }                     
        }  
    }
    return true;
}

function windowClose() {
    window.opener.location.href = window.opener.location.href;
    window.close();
}

function emailCheck (emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("Ths username contains invalid characters.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("Ths domain name contains invalid characters.");
			return false;
		}
	}
	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid.");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("The domain name does not seem to be valid.");
			return false;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}
	if (len<2) {
		alert("This address is missing a hostname!");
		return false;
	}
	return true;
}

function datediff(startdate, enddate) {
    var sdate = Date.parse(document.getElementById(startdate).value);
    var edate = Date.parse(document.getElementById(enddate).value);
    return ((edate - sdate) / (24*60*60*1000)); 
}

// find head id
function headID(child, id) {
    var running_str = child.alt.split("_");
    var running;
    if (running_str[1]) {
        running = running_str[0] + "_" + running_str[1];
    }
    else {
        running = running_str[0];
    }
    return (id + running);
}

// recalculate in case change range date reservation
function ReCalDate(e, sid, eid, idCal) {
    var running = e.id.replace(sid, "");
    var idCal_arr = idCal.split(",");
    var run3 = 1;
    var run4 = 1;
    var isObj = false;
    var notObj = false;
    var count = 0;
    while (1==1) {
        for (count=0; count < idCal_arr.length; count++) {
            var objCal = document.getElementById(idCal_arr[count] + running + "_" + run3 + "_" + run4);
            if (objCal) { 
                if (objCal.value != 0) {
                    objCal.onchange();
                }
                isObj = true;
            }
        }
        if (!isObj) {
            if (notObj) { break; }
            run3++;
            run4 = 1;
            notObj = true;
        }
        else {
            isObj = false;
            run4++;        
        }
    }
    setDateHidden(sid + running, eid + running);
}

// for date object set value to hidden object
function setDateHidden(sid, eid) {
    var sobj = document.getElementById(sid);
    var eobj = document.getElementById(eid);
    document.getElementById("hdf" + sobj.id.substring(3)).value = sobj.value;
    document.getElementById("hdf" + eobj.id.substring(3)).value = eobj.value;    
}

// find difference between old date and new date
function dateObjdiff(e, sid, eid) {
    var newdate = datediff(headID(e, sid), headID(e, eid));
    var olddate = datediff(headID(e, 'hdf' + sid.substring(3)), headID(e, 'hdf' + eid.substring(3)));
    if (isNaN(olddate)) { olddate = 0; }
    alert('newdate : ' + newdate);
    alert('olddate : ' + olddate);
    return newdate - olddate;
}

function Validate_Thaikey(keyCode) {
	if ((keyCode >= 3585 && keyCode <= 3642) || (keyCode >= 3648 && keyCode <= 3673) || (keyCode == 32) || (keyCode == 46) || (keyCode == 44)) { // 44 = ","  , 46 = "."
		return true;
	}
	else {
		//alert("กรุณากรอกภาษาไทย");		
		return false
	}
}

function Validate_NotThaikey(keyCode) {
	if ((keyCode >= 3585 && keyCode <= 3642) || (keyCode >= 3648 && keyCode <= 3673) || (keyCode == 32)) {
		return false;
	}
	else {
		return true
	}
}

function Validate_Engkey(keyCode) {
	if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (keyCode == 32)) {
		return true;
	}
	else {
		//alert("กรุณากรอกภาษาไทย");		
		return false
	}
}

function Validate_Intkey(keyCode) {
	// 0-9, .
	if ((keyCode >= 48 && keyCode <= 57) || (keyCode == 46)) {
		return true;
	}
	else {
		return false
	}
}

function Validate_Datekey(keyCode) {
// . , / ,0-9
	if ((keyCode >= 46 && keyCode <= 57)) {
		return true;
	}
	else {
		return false
	}
}

function Validate_Username(keyCode) {
	// a-z, . , 0-9
	if ((keyCode >= 46 && keyCode <= 57)  || (keyCode >= 97 && keyCode <= 122) || (keyCode == 46)) {
		return true;
	}
	else {
		return false
	}
}

function emailCheck(emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("Ths username contains invalid characters.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("Ths domain name contains invalid characters.");
			return false;
		}
	}
/*	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid.");
		return false;
	}*/
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("The domain name does not seem to be valid.");
			return false;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}
	if (len<2) {
		alert("This address is missing a hostname!");
		return false;
	}
	return true;
}

function screenPos(w,h) {
    var myWidth = 0, myHeight = 0;
    if ( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    var screenLeft = (myWidth - w) / 2;
    var screenTop = (myHeight - h) / 2;
    return { left : screenLeft,top : screenTop }  
}
