$(document).ready(function() {
    try{
        if($ && $.fn && $.fn.lightbox && $.fn.lightbox.defaults){
            if($.fn.lightbox.defaults.fileLoadingImage){
                $.fn.lightbox.defaults.fileLoadingImage = imgPath+'/loading.gif';
            }
            if($.fn.lightbox.defaults.fileBottomNavCloseImage){
                $.fn.lightbox.defaults.fileBottomNavCloseImage = imgPath+'/closelabel.gif';
            }
        }
    }catch(e){}

    if ($.browser.msie && $.browser.version < 7) {
        try{
        document.execCommand("BackgroundImageCache", false, true);
        }catch(e){}
    }

    $("input[type=text]").each(function() {
        if (($(this).attr("maxlength")) == -1 || ($(this).attr("maxlength")) > 120) {
            $(this).attr("maxlength", "120");
        }
    });
        if($("#right li").size()==3)
    {
        $("#right").css("display","none");
    }
});


function getSpaceTimeByNow(time) { 
    var spaceTime = "1" + SpaceTimeByNowInfo.minute;

    var spaceLevel = [];
    spaceLevel[spaceLevel.length] = {level:60 * 24 * 7, unit:SpaceTimeByNowInfo.week};
    spaceLevel[spaceLevel.length] = {level:60 * 24, unit:SpaceTimeByNowInfo.day};
    spaceLevel[spaceLevel.length] = {level:60, unit:SpaceTimeByNowInfo.hour};
    spaceLevel[spaceLevel.length] = {level:1, unit:SpaceTimeByNowInfo.minute};

    var spaceMin = parseInt(((CURRENT_SYSTEM_TIME - time) / 1000 / 60));

    if (spaceMin > 60 * 24 * 7) {
        spaceTime = "1" + SpaceTimeByNowInfo.week;
    } else {
        for (var i = 0; i < spaceLevel.length; i++) {
            if (spaceMin >= spaceLevel[i].level) {
                return parseInt(spaceMin / spaceLevel[i].level) + " " + spaceLevel[i].unit;
            }
        }
    }

    return spaceTime;
}

function payReservation(id,path) {
    $.post(_contextpath + path + "/pay/popPay.html", function(data) {
        $.facebox(data);
    });
    window.open(_payUrl + "/reservation/pay.action?id=" + id);
}

function changeFaceboxContent(data) {
    $('#facebox .popup .body > .content').html(data);
}

function getTwoFloat(amount) {
    if (!amount) {
        return "";
    }
    amount = "" + (Math.round(amount * 100) / 100);

    if (amount.indexOf(".") < 0) {
        amount = amount + ".00";
    }

    var zero = amount.length - amount.indexOf(".") - 1;

    for (var i = zero; i < 2; i++) {
        amount = amount + "0";
    }

    return amount;
}

function initAlertMsg() {
    if ($.browser.msie) {
        iframeDecorateDiv("alertMsg", "alertMsgFrame");
    }

    document.body.onmousedown = function() {
        $("#alertMsg").css("display", "none");
        $("#alertMsgFrame").css("display", "none");
        $("#alertMsgFrame").remove();
    }
}

function daAlert(obj, msg) {
    var alertDiv = $("#alertMsg");
    alertDiv.css("top", obj.offset().top + obj.height() + 5 + "px");
    alertDiv.css("left", obj.offset().left + "px");
    alertDiv.css("zIndex", 1000);
    alertDiv.html(msg);
    alertDiv.show();

    initAlertMsg();

    obj.bind("onblur", function() {
        alertDiv.css("display", "none");
        $("#alertMsgFrame").css("display", "none");
        $("#alertMsgFrame").remove();
    });

    obj.focus();
}

function isValidUserName(value) {
    var trimValue = $.trim(value);
    if (trimValue == "")
        return false;
    var pattern = /^[\w\.\@\-]{3,20}$/;

    return pattern.test(trimValue);
}

function isEnglishStr(value) {
    var trimValue = $.trim(value);
    if (trimValue == "")
        return true;
    var pattern = /^[A-Za-z\s]+$/;

    return pattern.test(trimValue);

}

function isEnglishStrWithNumber(value) {
    var trimValue = $.trim(value);
    if (trimValue == "")
        return true;
    var pattern = /^[A-Za-z0-9\s]+$/;
    return pattern.test(trimValue);
}

function containsChinese(value) {
    var trimValue = $.trim(value);
    if (trimValue == "")
        return false;
    for (var i = 0; i < trimValue.length; i++) {
        if (trimValue.charCodeAt(i) >= 10000) {
            return true;
        }
    }
    return false;
}

function isPhoneNumber(value) {
    return true;
}

//function isPhoneNumber(value) {
//    var trimValue = $.trim(value);
//    if (trimValue == "")
//        return true;
//    var reg = /^((00\d{1,4}-)?0\d{2,3}-[1-9]\d{5,7}(-[0-9]{1,4})?)$/;
//    return reg.test(trimValue);
//}

//function isWebsite(value) {
//    var trimValue = $.trim(value);
//    if (trimValue == "")
//        return true;
//    var reg = /^([\w\.])+$/;
//    return reg.test(trimValue);
//}

function isWebsite(value){
    return true;
}

function isMobileNumber(value) {
    var trimValue = $.trim(value);
    if (trimValue == "")
        return true;
    var reg = /^(\d{11})$/;
    return reg.test(trimValue);
}

function isEMail(value) {
    var trimValue = $.trim(value);
    if (trimValue == "")
        return true;
    var reg = /^\b(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b$/;
    return reg.test(trimValue);
}

function isIDNum(idNum) {
    if (idNum == '') {
        return true;
    }
    var reg = /^[\d]{15}([\d]{2}[\dxX])?$/;
    return reg.test(idNum);
}

function getDayOfWeek(today) {
    return dayNameCN[convertStringToDate(today).getDay()]; //根据Date返一个星期中的某一天，其中0为星期日
}

function convertStringToDate(date) {
    if (typeof(date) == 'string') {
        date = new Date(date.replace(/-/g, '/'));
    }
    return date;
}

function getDayRanges(startDate, endDate) {
    var time = convertStringToDate(endDate).getTime() - convertStringToDate(startDate).getTime();
    return parseInt(time / (1000 * 60 * 60 * 24));
}

function getWeekRanges(startDate, endDate) {
    var dayRanges = getDayRanges(startDate, endDate);
    return dayRanges % 6 != 0 ? (parseInt(dayRanges / 6) + 1) : parseInt(dayRanges / 6);
}

function getNextDate(date) {
    return new Date(convertStringToDate(date).getTime() + 1000 * 60 * 60 * 24)
}

function getNextNumDate(date, num) {
    return new Date(convertStringToDate(date).getTime() + 1000 * 60 * 60 * 24 * parseInt(num));
}

function dateBefore(d1, d2) {
    return Date.parse(convertStringToDate(d1)) - Date.parse(convertStringToDate(d2)) < 0;
}

function dateAfter(d1, d2) {
    return Date.parse(convertStringToDate(d1)) - Date.parse(convertStringToDate(d2)) > 0;
}

function dateEqual(d1, d2) {
    return Date.parse(convertStringToDate(d1)) - Date.parse(convertStringToDate(d2)) == 0;
}

function dateBeforeOrEqual(d1, d2) {
    return dateBefore(d1, d2) || dateEqual(d1, d2);
}

function dateAfterOrEqual(d1, d2) {
    return dateAfter(d1, d2) || dateEqual(d1, d2);
}

function toDate(d1) {
    return new Date(d1.replace(/-/g, "/"));
}

function dateFormat(date) {
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    return "" + year + "-" + (month < 10 ? "0" + month : "" + month) + "-" + (day < 10 ? "0" + day : "" + day);
}

function toFormatDate(date) {
    return toDate(dateFormat(date));
}

function checkDateTime(dateStr) {
    var r = dateStr.match(/^(\d{4})(-)(\d{1,2})(-)(\d{1,2})$/);
    if (r == null)return false;
    var d = new Date(r[1], r[3] - 1, r[5]);
    return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[5]);
}

function isIntegerStr(value) {
    var reg = /^\d+$/;
    return reg.test(value);
}

function isMoneyStr(value) {
    var reg = /^\d?[.]?\d+/;
    return reg.test(value);
}

function isBlank(value) {
    var trimValue = $.trim(value);
    return trimValue == "";
}

function isLegalName(value) {
    var trimValue = $.trim(value);

    if (isEnglishStr(trimValue)) {
        if (trimValue.indexOf("/") < 0) {
            return false;
        }
    } else {

    }
    var reg = /\d+/;
    return !reg.test(trimValue);
}

function encrypt(value) {
    return hex_sha1(value);
}


/*
 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
 * in FIPS PUB 180-1
 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for details.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible with
 * the server-side, but the defaults work in most cases.
 */
var hexcase = 0;
/* hex output format. 0 - lowercase; 1 - uppercase        */
var b64pad = "";
/* base-64 pad character. "=" for strict RFC compliance   */
var chrsz = 8;
/* bits per input character. 8 - ASCII; 16 - Unicode      */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded strings
 */
function hex_sha1(s) {
    return binb2hex(core_sha1(str2binb(s), s.length * chrsz));
}
function b64_sha1(s) {
    return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
}
function str_sha1(s) {
    return binb2str(core_sha1(str2binb(s), s.length * chrsz));
}
function hex_hmac_sha1(key, data) {
    return binb2hex(core_hmac_sha1(key, data));
}
function b64_hmac_sha1(key, data) {
    return binb2b64(core_hmac_sha1(key, data));
}
function str_hmac_sha1(key, data) {
    return binb2str(core_hmac_sha1(key, data));
}

/*
 * Perform a simple self-test to see if the VM is working
 */
function sha1_vm_test()
{
    return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
}

/*
 * Calculate the SHA-1 of an array of big-endian words, and a bit length
 */
function core_sha1(x, len)
{
    /* append padding */
    x[len >> 5] |= 0x80 << (24 - len % 32);
    x[((len + 64 >> 9) << 4) + 15] = len;

    var w = Array(80);
    var a = 1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d = 271733878;
    var e = -1009589776;

    for (var i = 0; i < x.length; i += 16)
    {
        var olda = a;
        var oldb = b;
        var oldc = c;
        var oldd = d;
        var olde = e;

        for (var j = 0; j < 80; j++)
        {
            if (j < 16) w[j] = x[i + j];
            else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
            var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
                    safe_add(safe_add(e, w[j]), sha1_kt(j)));
            e = d;
            d = c;
            c = rol(b, 30);
            b = a;
            a = t;
        }

        a = safe_add(a, olda);
        b = safe_add(b, oldb);
        c = safe_add(c, oldc);
        d = safe_add(d, oldd);
        e = safe_add(e, olde);
    }
    return Array(a, b, c, d, e);

}

/*
 * Perform the appropriate triplet combination function for the current
 * iteration
 */
function sha1_ft(t, b, c, d)
{
    if (t < 20) return (b & c) | ((~b) & d);
    if (t < 40) return b ^ c ^ d;
    if (t < 60) return (b & c) | (b & d) | (c & d);
    return b ^ c ^ d;
}

/*
 * Determine the appropriate additive constant for the current iteration
 */
function sha1_kt(t)
{
    return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
                                   (t < 60) ? -1894007588 : -899497514;
}

/*
 * Calculate the HMAC-SHA1 of a key and some data
 */
function core_hmac_sha1(key, data)
{
    var bkey = str2binb(key);
    if (bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);

    var ipad = Array(16), opad = Array(16);
    for (var i = 0; i < 16; i++)
    {
        ipad[i] = bkey[i] ^ 0x36363636;
        opad[i] = bkey[i] ^ 0x5C5C5C5C;
    }

    var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
    return core_sha1(opad.concat(hash), 512 + 160);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function rol(num, cnt)
{
    return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert an 8-bit or 16-bit string to an array of big-endian words
 * In 8-bit function, characters >255 have their hi-byte silently ignored.
 */
function str2binb(str)
{
    var bin = Array();
    var mask = (1 << chrsz) - 1;
    for (var i = 0; i < str.length * chrsz; i += chrsz)
        bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i % 32);
    return bin;
}

/*
 * Convert an array of big-endian words to a string
 */
function binb2str(bin)
{
    var str = "";
    var mask = (1 << chrsz) - 1;
    for (var i = 0; i < bin.length * 32; i += chrsz)
        str += String.fromCharCode((bin[i >> 5] >>> (32 - chrsz - i % 32)) & mask);
    return str;
}

/*
 * Convert an array of big-endian words to a hex string.
 */
function binb2hex(binarray)
{
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for (var i = 0; i < binarray.length * 4; i++)
    {
        str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) +
               hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8  )) & 0xF);
    }
    return str;
}

/*
 * Convert an array of big-endian words to a base-64 string
 */
function binb2b64(binarray)
{
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var str = "";
    for (var i = 0; i < binarray.length * 4; i += 3) {
        var triplet = (((binarray[i >> 2] >> 8 * (3 - i % 4)) & 0xFF) << 16)
                | (((binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) % 4)) & 0xFF) << 8 )
                | ((binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4)) & 0xFF);
        for (var j = 0; j < 4; j++)
        {
            if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
            else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
        }
    }
    return str;
}

function b64_sha1(s) {
    return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
}
function str_sha1(s) {
    return binb2str(core_sha1(str2binb(s), s.length * chrsz));
}
function hex_hmac_sha1(key, data) {
    return binb2hex(core_hmac_sha1(key, data));
}
function b64_hmac_sha1(key, data) {
    return binb2b64(core_hmac_sha1(key, data));
}
function str_hmac_sha1(key, data) {
    return binb2str(core_hmac_sha1(key, data));

}

function showMoreInfo(target, popBoxId) {
    if ($('#' + popBoxId).html()) {
        $('#' + popBoxId).css('top', $(target).position().top + $(target).height());
        $('#' + popBoxId).css('left', $(target).position().left);
        $('#' + popBoxId).show();
    }
}


function hideMoreInfo(targetId) {
    $('#' + targetId).hide();
}

function generateHotelRatingDesc(hotelRating,equilantRating) {
    if (hotelRating == "1") {
        return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star1.gif'>";
    } else if (hotelRating == "2") {
        return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star2.gif'>";
    } else if (hotelRating == "3" || hotelRating == "4") {
        if(equilantRating){
            return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star8.gif'>";
        } else {
            return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star3.gif'>";
        }
    } else if (hotelRating == "5" || hotelRating == "6") {
        if(equilantRating){
            return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star9.gif'>";
        } else {
            return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star4.gif'>";
        }
    } else if (hotelRating == "7" || hotelRating == "8") {
        if(equilantRating){
            return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star10.gif'>";
        } else {
            return "<img height='11' width='58' src='" + _contextpath + "/images/icon_star5.gif'>";
        }
    } else if (hotelRating == "0" || hotelRating == "") {
        return "";
    }
    return "";
}

function change_newClassName(id, newClassName) {
    $(id).hover(function () {
        $(this).addClass(newClassName);
    },
            function () {
                $(this).removeClass(newClassName);
            });
}

// event is jquery object
function pointInObject(event, obj) {
    var x = event.pageX;
    var y = event.pageY;

    return x > obj.offset().left && x < obj.offset().left + obj.outerWidth() && y > obj.offset().top
            && y < obj.offset().top + obj.outerHeight();
}


function initControlCss() {
    $(":text").each(function() {
        if ($(this).attr("class") == '') {
            $(this).addClass("text");
        } else {
            $(this).attr("className", $(this).attr("className") + " text");
        }
    })

    $(":button").each(function() {
        if (!$(this).attr("className")) {
            $(this).addClass("button");
        } else {
            $(this).attr("className", $(this).attr("className") + " button");
        }
    })

    $(":submit").addClass("submit");

    $(":checkbox").addClass("checkbox");
    $(":radio").addClass("radio");
}

function getCaserverHost() {
    if (caserver.length > 0) {
        return caserver.split(_contextpath)[0];
    }
    return "";
}

function urlIsHttps() {
    var url = window.location.href;
    return url.indexOf("https") > -1;
}

function iframeDecorateDiv(divId, iframId) {
    if ($.browser.msie && $.browser.version <7) {

        if($("#" + divId + " > iframe").length > 0){
            return;
        }
        
        var div = $("#" + divId);
        var divIframe;
        if (caserver.length > 0 && urlIsHttps()) {
            divIframe = $('<iframe src=' + getCaserverHost() + _contextpath + '/blank.html/>');
        } else {
            divIframe = $('<iframe/>');
        }
        div.append(divIframe);
        if (iframId) {
            divIframe.attr("id", iframId);
        }
        divIframe.css("position", "absolute");
        divIframe.css("display", "none");
        divIframe.css("display", "block");
        divIframe.css("z-index", "-1");
        divIframe.css("top", "-2");
        divIframe.css("left", "-2");
        if (divId == "hotCity") {
            divIframe.css("width", div.width() + "px");
            divIframe.css("height", div.height() + "px");
        } else {
            try{
                divIframe.css("width", div.width() + parseInt(div.css("padding")) * 2 + 4 + "px");
                divIframe.css("height", div.height() + parseInt(div.css("padding")) * 2 + 4 + "px");
            }catch(e){}
        }
        divIframe.css("filter", "mask(color=#a09261)");
    }
}

function forward(url, menuId, subMenuId) {
    $("#menu_top_menuId").val(menuId || "");
    $("#menu_top_subMenuId").val(subMenuId || "");

    $("#menuTopForm").attr("action", url);
    $("#menuTopForm").submit();

    return false;
}


function isExistId(id) {
    return $("#" + id).length > 0;
}

function includeChineseCharacter(value) {
    var reg = /^(.*)[\u4e00-\u9fa5]+(.*)$/;
    return reg.test(value);
}

function dateFormatByYMD(year, month, day) {
    return "" + year + "-" + (month < 10 ? "0" + month : "" + month) + "-" + (day < 10 ? "0" + day : "" + day);
}
function showMoreInfoForRoomType(target, popBoxId) {
    if ($('#' + popBoxId).html()) {
        $('#' + popBoxId).css('top', $(target).position().top + $(target).height());
        $('#' + popBoxId).css('left', $(target).position().left);
        $('#' + popBoxId).show();
    }
}

function hideMoreInfo(targetId) {
    $('#' + targetId).hide();
}