function getXMLHttpRequest() {
    if (window.XMLHttpRequest) { // if Mozilla, Safari etc
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) { // if IE
        try {
            return new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) {
            try {
                return new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    } else {
        return false
    }
}

/**
 * Load html content from 'url' and render into 'id' object of current page.
 * 
 * Note: the included page must be UTF-8 encoded!
 */
function ajaxInclude(url, id) {
    var request = getXMLHttpRequest();
    if ( ! request) {
        alert('Cannont initialize XMLHttpRequest object.');
        return false;
    }
    request.open('GET', url, false) //get page synchronously
    request.send(null);

    if (request.status == 200) {
        var target = document.getElementById(id);
        if (target) {
            target.innerHTML = request.responseText;
        } else {
            alert("'" + id + "' not found in this page. Cannot render content.");
        }
    }
}

function ajaxReadFile(file) {
    var request = getXMLHttpRequest();
    if ( ! request) {
        alert('Cannont initialize XMLHttpRequest object.');
        return false;
    }
    request.open('GET', file, false) //get page synchronously
    request.send(null);

    return (request.status == 200) ? request.responseText : "";
}

// 從網址列取得傳入參數
function getURLParam(parameter) {
    var strReturn = "";
    var strHref = window.location.href;
    if (strHref.indexOf("?") > -1) {
        var strQueryString = strHref.substr(strHref.indexOf("?") + 1);
        var aQueryString = strQueryString.split("&");
        for (var iParam = 0; iParam < aQueryString.length; iParam ++) {
            if (aQueryString[iParam].indexOf(parameter + "=") > -1) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = Encoder.htmlEncode(aParam[1]);
                break;
            }
        }
    }
    return strReturn;
}

// 確定是否按下定義之熱鍵
function isHotKey (event, code) {
    event = (event) ? event : ((window.event) ? event : null);
    if (event) {
        var KeyCode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
        return (KeyCode == code);
    }
}

// 將數字格式化為貨幣型態 (加上千分位符號)
function toCurrencyNumber(val) {
    var re = /(\d{1,3})(?=(\d{3})+(?:$|\D))/g;
    var ret = val.toString().replace(re, "$1,");
    return ret;
}

function popupWindow(windowUri, windowHeight, windowWidth, canResize, hasScrollbar, windowName) {
    var centerWidth = (window.screen.width - windowWidth) / 2;
    var centerHeight = (window.screen.height - windowHeight) / 2;
    return openWindow(windowUri, windowHeight, windowWidth, centerWidth, centerHeight, canResize, hasScrollbar, windowName);
}

function openWindow(windowUri, windowHeight, windowWidth, left, top, canResize, hasScrollbar, windowName) {
    var newWindow = window.open(windowUri, windowName,
                                ',width=' + windowWidth +
                                ',height=' + windowHeight +
                                ',left=' + left +
                                ',top=' + top +
                                ',resizable=' + canResize +
                                ',scrollbars=' + hasScrollbar +
                                ',status=0,menubar=0');
    newWindow.focus();
    return newWindow;
}

String.prototype.format = function() {
    var args = arguments;
    return this.replace(/\{(\d+)\}/g, function(m, i) { return args[i]; });
}

/*
String.format = function() {
    if (arguments.length == 0) {
        return null;
    }
    var str = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
        var re = new RegExp('\\{' + (i-1) + '\\}','gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}
*/