﻿function isSame(str1, str2, ignoreCase) {
    if (ignoreCase == true) {
        return str1.toString().toLowerCase() == str2.toString().toLowerCase();
    }
    else {
        return str1 == str2;
    }
}

function isMail(str) {
    return str.match(/^[\W\.-_]+@[\w_-]+(\.[\w_-]+)+$/ig) != null;
}

function isMails(str) {
    return str.match(/^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)(;(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*))*$/ig) != null;
}

// false: not date format
function isDate(str) {
    //Matches 01/01/1990 | 12/12/9999 | 3/28/2001
    //Non-Matches 3-8-01 | 13/32/1001 | 03/32/1989 
    return str.match(/^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/ig) != null;
}
// format: 2009-01-01 or 2009-1-1
function CheckDate(strDate) {
    var result = strDate.match(/((^((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))$))/);

    if (result == null) {
        return false;
    }
    else {
        return true;
    }
}

function isTime(str) {
    var reg = /^((0)?\d{1}|1\d{1}|2[0-3]):(([0-5])?\d{1}):(([0-5])?\d{1})$/;
    return reg.test(str);
}

// false: not decimal format
function isDecimal(str) {
    return str.match(/^[+-]?0|([1-9]{1}\d*)(\.\d+)*$/ig) != null;
}

// false: not int format
function isInteger(str) {
    //Matches 0,+12,12,-12
    return str.match(/^0$|^[+-]?[1-9][0-9]*$/ig) != null;
}
// false: not int format
function isPlusInteger(str) {
    //Matches 0,12, not +12, -12
    return str.match(/^0$|^[1-9][0-9]*$/ig) != null;
}

// arg1 * arg2
function Mul(arg1, arg2) {
    var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
    try { m += s1.split(".")[1].length } catch (e) { }
    try { m += s2.split(".")[1].length } catch (e) { }
    return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
}
// arg1 + arg2
function Add(arg1, arg2) {
    var r1, r2, m;
    try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
    try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
    m = Math.pow(10, Math.max(r1, r2));
    return (arg1 * m + arg2 * m) / m;
}
// arg1 / arg2
function Divide(arg1, arg2) {
    var t1 = 0, t2 = 0, r1, r2;
    try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
    try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
    with (Math) {
        r1 = Number(arg1.toString().replace(".", ""));
        r2 = Number(arg2.toString().replace(".", ""));
        return (r1 / r2) * pow(10, t2 - t1);
    }
}
// arg1 - arg2
function Subtract(arg1, arg2) {
    var r1, r2, m, n;
    try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
    try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
    m = Math.pow(10, Math.max(r1, r2));
    n = (r1 >= r2) ? r1 : r2;
    return ((arg1 * m - arg2 * m) / m).toFixed(n);
}

function toFixed(num, d) {
    var s = num + ""; if (!d) d = 0;
    if (s.indexOf(".") == -1) s += "."; s += new Array(d + 1).join("0");
    if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) {
        var s = "0" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true;
        if (a == d + 2) {
            a = s.match(/\d/g); if (parseInt(a[a.length - 1]) > 4) {
                for (var i = a.length - 2; i >= 0; i--) {
                    a[i] = parseInt(a[i]) + 1;
                    if (a[i] == 10) { a[i] = 0; b = i != 1; } else break;
                }
            }
            s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2");
        } if (b) s = s.substr(1); return (pm + s).replace(/\.$/, "");
    } return num + "";
}

// get file's postfix
function GetFileType(str) {
    var fix = "";
    if (null != str && str.indexOf(".") > -1) {
        fix = str.substr(str.lastIndexOf(".") + 1);
    }
    return fix;
}

function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    else {
        return null;
    }
}

// pop up a new windows, isMore: false: only open one.
var OpenUrlWindow;
function OpenUrl(url, width, height, isMore) {
    try {
        if (!url) return;
        //        if (GetBrowse() == "MSIE")
        //            window.event.cancelBubble=true;
        var swd = screen.width;
        var shg = screen.height;
        if (!width) width = 650;
        if (!height) height = 500;
        var top = (shg - height) / 2;
        var left = (swd - width) / 2;
        if (OpenUrlWindow != null && !isMore) {
            OpenUrlWindow.close();
        }
        // OpenUrlWindow = window.open("Loading.htm?"+encodeURIComponent(url),"","height="+height+",width="+width+",top="+top+",left="+left+",resizable=1,scrollbars=1");
        OpenUrlWindow = window.open(url, "", "height=" + height + ",width=" + width + ",top=" + top + ",left=" + left + ",resizable=1,scrollbars=1");
        OpenUrlWindow.focus();
        return OpenUrlWindow;
    } catch (exception) { }
}

function FullScreen(win) {
    if (null != win) {
        win.moveTo(0, 0);
        win.resizeTo(screen.availWidth, screen.availHeight);
    }
    else {

    }
}

function GotoUrl(url) {
    if (null != url && url.length > 0) {
        self.location.href = url;
    }
}
// E.G. min = 1, max = 4. It will return 1,2,3,4
function GetRandom(min, max) {
    var random = parseInt(Math.random() * (max - min + 1) + min);
    return random
}

/***********************
tabs and contents are jquery objexts
**************************/
function InitTab(tabs, contents) {
    if (null == tabs || tabs.length == 0 || null == contents || contents.length == 0) {
        return;
    }
    function SetContentsVisible(contents, index) {
        for (var i = 0; i < contents.length; i++) {
            if (i == index) {
                contents.eq(i).show();
            }
            else {
                contents.eq(i).hide();
            }
        }
    }

    for (var i = 0; i < tabs.length; i++) {
        tabs.eq(i).attr("osrc", tabs.eq(i).attr("src"));
        tabs.eq(i).attr("active", "0");
        tabs.eq(i).attr("index", i);

        tabs.eq(i).mouseover(function() {
            if ($(this).attr("active") != "1") {
                $(this).attr("src", $(this).attr("vsrc"));
            }
        });
        tabs.eq(i).mouseout(function() {
            if ($(this).attr("active") != "1") {
                $(this).attr("src", $(this).attr("osrc"));
            }
        });
        tabs.eq(i).click(function() {
            if ($(this).attr("active") != "1") {
                $(this).attr("active", "1");
                $(this).attr("src", $(this).attr("vsrc"));
                for (var j = 0; j < tabs.length; j++) {
                    if (j.toString() != $(this).attr("index")) {
                        tabs.eq(j).attr("active", "0");
                        tabs.eq(j).attr("src", tabs.eq(j).attr("osrc"));
                    }
                }
                SetContentsVisible(contents, $(this).attr("index"));
            }
        });
    }
    tabs.eq(0).click();
}

var startyear = "1900";
var endyear = "2009";
var dat = new Date();
var curday = dat.getDate();
var curmon = dat.getMonth() + 1;
var curyear = dat.getFullYear();
function checkleapyear(datea) {
    if (datea.getYear() % 4 == 0) {
        if (datea.getYear() % 10 != 0) {
            return true;
        }
        else {
            if (datea.getYear() % 400 == 0)
                return true;
            else
                return false;
        }
    }
    return false;
}
function DaysInMonth(Y, M) {
    with (new Date(Y, M, 1, 12)) {
        setDate(0);
        return getDate();
    }
}
function datediff(date1, date2) {
    var y1 = date1.getFullYear(), m1 = date1.getMonth(), d1 = date1.getDate(),
	 y2 = date2.getFullYear(), m2 = date2.getMonth(), d2 = date2.getDate();

    if (d1 < d2) {
        m1--;
        d1 += DaysInMonth(y2, m2);
    }
    if (m1 < m2) {
        y1--;
        m1 += 12;
    }
    return [y1 - y2, m1 - m2, d1 - d2];
}

function isLeapYear(year) {
    return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? true : false;
}

function calage(calyear, calmon, calday) {
    if (curday == "" || curmon == "" || curyear == "" || calday == "" || calmon == "" || calyear == "") {
        return 0;
    }
    else {
        var curd = new Date(curyear, curmon - 1, curday);
        var cald = new Date(calyear, calmon - 1, calday);

        var diff = Date.UTC(curyear, curmon, curday, 0, 0, 0) - Date.UTC(calyear, calmon, calday, 0, 0, 0);

        var dife = datediff(curd, cald);
        return dife[0];
        //        document.birthday.age.value = dife[0] + " years, " + dife[1] + " months, and " + dife[2] + " days";
        //        var monleft = (dife[0] * 12) + dife[1];
        //        var secleft = diff / 1000 / 60;
        //        var hrsleft = secleft / 60;
        //        var daysleft = hrsleft / 24;
        //        document.birthday.months.value = monleft + " Month since your birth";
        //        document.birthday.daa.value = daysleft + " days since your birth";
        //        document.birthday.hours.value = hrsleft + " hours since your birth";
        //        document.birthday.min.value = secleft + " minutes since your birth";
        //        var as = parseInt(calyear) + dife[0] + 1;
        //        var diff = Date.UTC(as, calmon, calday, 0, 0, 0) - Date.UTC(curyear, curmon, curday, 0, 0, 0);
        //        var datee = diff / 1000 / 60 / 60 / 24;
        //        document.birthday.nbday.value = datee + " days left for your next birthday";


    }
}


function InitImagesSelected(images, selectedIndex) {
    if (null == images || images.length == 0) {
        return;
    }

    for (var i = 0; i < images.length; i++) {
        images.eq(i).attr("osrc", images.eq(i).attr("src"));
        images.eq(i).attr("active", "0");

        images.eq(i).mouseover(function() {
            if ($(this).attr("active") != "1") {
                $(this).attr("src", $(this).attr("vsrc"));
            }
        });
        images.eq(i).mouseout(function() {
            if ($(this).attr("active") != "1") {
                $(this).attr("src", $(this).attr("osrc"));
            }
        });
        images.eq(i).click(function() {
            if ($(this).attr("active") != "1") {
                for (var j = 0; j < images.length; j++) {
                    if (images.eq(j).attr("active") == "1") {
                        images.eq(j).attr("active", "0");
                        images.eq(j).attr("src", images.eq(j).attr("osrc"));
                    }
                }
                $(this).attr("active", "1");
                $(this).attr("src", $(this).attr("vsrc"));
            }
        });
    }
    if (null != selectedIndex && selectedIndex >= 0) {
        images.eq(selectedIndex).click();
    }
}

function CheckFlash() {
    var hasFlash = 0;         // 0: not install; 1: install
    var flashVersion = 0; // the verison of flash

    if (document.all) {
        var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
        if (swf) {
            hasFlash = 1;
            VSwf = swf.GetVariable("$version");
            flashVersion = parseInt(VSwf.split(" ")[1].split(",")[0]);
        }
    } else {
        if (navigator.plugins && navigator.plugins.length > 0) {
            var swf = navigator.plugins["Shockwave Flash"];
            if (swf) {
                hasFlash = 1;
                var words = swf.description.split(" ");
                for (var i = 0; i < words.length; ++i) {
                    if (isNaN(parseInt(words[i]))) continue;
                    flashVersion = parseInt(words[i]);
                }
            }
        }
    }
    return { f: hasFlash, v: flashVersion };
}