﻿
function SelectAll(sender, arg)
{
    ///<summary>GridView全選/取消全選動作</summary>
    ///<param name="sender" type="obj">引發事件的物件</param>
    ///<param name="arg" type="string">GridView上CheckBox的Name屬性</param>
    for(var i=0; i <= document.getElementsByName(arg).length -1; i++)
    {
        if(sender.checked == false)
            document.getElementsByName(arg)[i].checked = false;
        else
            document.getElementsByName(arg)[i].checked = true;
    }
}


function doDelete(sender, arg1, arg2)
{
    ///<summary>GridView多筆刪除前確認動作</summary>
    ///<param name="sender" type="obj">引發事件的物件</param>
    ///<param name="arg1" type="string">指定多筆或單筆參數(multi/single)</param>
    ///<param name="arg2" type="string">GridView上CheckBox的Name屬性</param>
    if(arg1 == "multi"){
        //=== Muilt ===
        var isChecked = false;
        for(var i=0; i <= document.getElementsByName(arg2).length -1; i++)
        {
            if(document.getElementsByName(arg2)[i].checked == true)
                isChecked = true;
        }
        
        if(isChecked == false)
        {
            alert("請先選擇其中一筆資料再做刪除!!");
            return false;
        }
    }

    if(confirm("您確定要刪除所選擇的項目嗎?")){
        ShowWaitProcess();
        return true;
    }else
        return false;
}

function ValidControl(ControlID, Message)
{
    if($get(ControlID).value=="")
    {
        alert(Message);
        $get(ControlID).focus();
        return false;
    }else
        return true;
}


function CompareValidator(ValidatControlID, CompareValue, ErrorMessage)
{
    ///<summary>Html控制項值的比對</summary>
    ///<param name="ValidatControlID" type="string">控制項物件ID</param>
    ///<param name="CompareValue" type="string">比對的值</param>
    ///<param name="ErrorMessage" type="string">不符合時跳出警告的文字</param>
    
    try {
        var OrgCssName = $get(ValidatControlID).className;
        if($get(ValidatControlID).value == CompareValue)
        {
            alert(ErrorMessage);
            $get(ValidatControlID).focus();
            //$get(ValidatControlID).className = "InputError";
            return false;
        }
        else{
            //$get(ValidatControlID).className = OrgCssName;
            return true;
        }   
    } catch(err) {
        //document.writeln("Error name: " + err.name + "");
        //document.writeln("Error message: " + err.message);
        /*
        現總結Error.name的六種值對應的信息：
        1. EvalError：eval()的使用與定義不一致 
        2. RangeError：數值越界 
        3. ReferenceError：非法或不能識別的引用數值 
        4. SyntaxError：發生語法解析錯誤 
        5. TypeError：操作數類型錯誤 
        6. URIError：URI處理函數使用不當 
        */
    }
    finally{
        //alert("object is null");
    }
}

function RadioButtonListSelectValue(ControlName)
{
    //Control.UniqueID
    for(var i=0; i<= document.getElementsByName(ControlName).length - 1; i++)
    {
        if(document.getElementsByName(ControlName)[i].checked)
            return document.getElementsByName(ControlName)[i].value;
    }
    return null;
}

function RadioButtonListSelectIndex(ControlName)
{
    //Control.UniqueID
    for(var i=0; i<= document.getElementsByName(ControlName).length - 1; i++)
    {
        if(document.getElementsByName(ControlName)[i].checked)
            return i;
    }
    return -1;
}

//=== 當Web Service 呼叫失敗時執行此失敗函式，並將錯誤物件傳遞警示出來 ===
function WebService_OnError(error)
{
    alert(
        "作業發生嚴重問題！錯誤訊息是：" + error.get_message() + 
        "\n堆疊追蹤果是：" + error.get_stackTrace() + 
        "\n狀態碼是：" + error.get_statusCode() +
        "\n例外型態是：" + error.get_exceptionType() +
        "\n逾時狀態是：" + error.getTimeout()
    );
}

function querySt(ji) {
    hu = window.location.search.substring(1);
    gy = hu.split("&");
    for (i = 0; i < gy.length; i++) {
        ft = gy[i].split("=");
        if (ft[0] == ji) {
            return ft[1];
        }
    }
    return null;
}

function sleep(timeout) {
    ///<summary>JavaScript延遲時間函數。</summary>
    ///<param name="timeout" type="int">延遲時間(micro second)</param>
    var sleeping = true;
    var now = new Date();
    var alarm;
    var startingMSeconds = now.getTime();
    //alert("starting nap at timestamp: " + startingMSeconds + "\nWill sleep for: " + timeout + " ms");
    while (sleeping) {
        alarm = new Date();
        alarmMSeconds = alarm.getTime();
        if (alarmMSeconds - startingMSeconds > timeout) { sleeping = false; }
    }
    //alert("finish!!");
}

function cleanTag(str) {
    return str.replace(/<[^>].*?>/g,"");
}
