/*
指令檔名: common.js
指令說明: 旅舍依瑪共用指令程式
程式作者: 依瑪貓 imacat
初稿日期: 2000-06-24
版權字樣: 版權所有 (c) 2000-2007 依瑪貓 */

// _: Gettext
function _(msg) {
    var i;
    for (i = 0; i < lc_messages.length; i++) {
        if (lc_messages[i][0] == msg) {
            return lc_messages[i][1];
        }
    }
    return msg;
}
// The messages
lc_messages = [];

// isEmail: Check if an email address is legal
function isEmail(a) {
    var i, c, re;
    if (typeof(RegExp) == "undefined") return true;
    re = new RegExp("^[\\w\\-]+(\\.[\\w\\-]+)*\\@([\\w\\-]+\\.)+[\\w\\-]+$");
    if (typeof(a) != "string") return false;
    a = a.toLowerCase();
    if (re.exec(a) == null) return false;
    return true;
}

// isDate: Check if a date is legal
function isDate(dateText) {
    var i, year, month, day, maxDay;
    if (dateText.length != 10) {
        return false;
    }
    // Check each character
    for (i = 0; i < dateText.length; i++) {
        // The dash sign
        if (i == 4 || i == 7) {
            if (dateText.charAt(i) != "-")
                return false;
        // The digits
        } else {
            if (dateText.charCodeAt(i) < 48 || dateText.charCodeAt(i) > 57)
                return false;
        }
    }
    // Check if the date is valid
    year = dateText.substr(0, 4) * 1;
    month = dateText.substr(5, 2) * 1;
    day  = dateText.substr(8, 2) * 1;
    // A reasonable month
    if (month < 1 || month > 12)
        return false;
    // Find the maximum day in this month
    switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        maxDay = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        maxDay = 30;
        break;
    case 2:
        maxDay = 28;
        if (year % 4 == 0)
            maxDay = 29;
        if (year % 100 == 0)
            maxDay = 28;
        if (year % 400 == 0)
            maxDay = 29;
        break;
    }
    // A reasonable day
    if (day < 1 || day > maxDay)
        return false;
    return true;
}

// trim: Trim the leading and tailing spaces
function trim(a) {
    var pos, start, len, spaces;
    start = 0;
    len = a.length;
    spaces = " \t\f\n\r";
    for (start = 0; start < a.length && spaces.indexOf(a.charAt(start)) >= 0; start++, len--);
    for (pos = a.length - 1; pos >= 0 && spaces.indexOf(a.charAt(pos)) >= 0; pos--, len--);
    return a.substr(start, len);
}
function trimText(a) {
    var pos, start, len, spaces, newlines;
    start = 0;
    len = a.length;
    spaces = " \t\f\n\r";
    newlines = "\n\r";
    for (start = 0; start < a.length && spaces.indexOf(a.charAt(start)) >= 0; start++, len--);
    for ( ; start-1 >= 0 && newlines.indexOf(a.charAt(start-1)) < 0; start--, len++);
    for (pos = a.length - 1; pos >= 0 && spaces.indexOf(a.charAt(pos)) >= 0; pos--, len--);
    return a.substr(start, len);
}

// replace: Replace one phace with another in a string
function replace(source, oldStr, newStr) {
    var pos;
    pos = 0;
    while (true) {
        pos = source.indexOf(oldStr, pos);
        if (pos == -1) break;
        source = source.substr(0, pos) + newStr + source.substr(pos + oldStr.length)
        pos += newStr.length;
    }
    return source;
}

