﻿function CheckClient(testCookie,testJavascript)
{
    document.getElementById(testJavascript).value ="1";

    var canCookie=navigator.cookieEnabled;
    //避免瀏覽器對navigator.cookieEnabled檢測不出的bug
    document.cookie = 'testcookie=1';
    var cookieSet = document.cookie;
    if (cookieSet.indexOf('testcookie=1') > -1) 
        canCookie=true;
    else
        canCookie=false;
    document.cookie = 'testcookie=';
        
    if (canCookie) 
        document.getElementById(testCookie).value ="1";
    else 
        document.getElementById(testCookie).value ="0";
}

//身份證驗證
//1. 英文代號以下表轉換成數字
//A=10 台北市 J=18 新竹縣 S=26 高雄縣
//B=11 台中市 K=19 苗栗縣 T=27 屏東縣
//C=12 基隆市 L=20 台中縣 U=28 花蓮縣
//D=13 台南市 M=21 南投縣 V=29 台東縣
//E=14 高雄市 N=22 彰化縣 * W=32 金門縣
//F=15 台北縣 * O=35 新竹市 X=30 澎湖縣
//G=16 宜蘭縣 P=23 雲林縣 Y=31 陽明山
//H=17 桃園縣 Q=24 嘉義縣 * Z=33 連江縣
//* I=34 嘉義市 R=25 台南縣
//2. 英文轉成的數字, 個位數乘９再加上十位數
//3. 各數字從'右'到'左'依次乘１、２、３、４．．．．８
//4. 求出(2)+(3)之和
//5. 求出(4)除10後之餘數，用10減該餘數，結果就是檢查碼，若餘數為0，檢查碼就是 0。
//6. 身份證最後一碼即檢查碼
function CheckPersonID(source, arguments)
{
    if (CheckPersonType())
    {
        var reg=new RegExp("^[A-Z][12]\\d{8}","i");
        if (arguments.Value.search(reg) < 0)
            arguments.IsValid = false;

        var firstNum = 0;
        var total = 0;
        // 依照字母的編號排列，存入陣列備用
        var letters = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z', 'I', 'O');
        // 儲存各個乘數
        var multiply = new Array(1, 9, 8, 7, 6, 5, 4, 3, 2, 1);
        var nums = new Array(2);
        // 找出第一個字母對應的數字，並轉換成兩位數數字
        for (var i = 0; i < 26; i++)
        {
            if (arguments.Value.charAt(0).toUpperCase() == letters[i])
            {
                firstNum = i + 10;
                nums[0] = Math.floor(firstNum / 10);
                nums[1] = firstNum % 10;
                break;
            }
        }
        // 執行加總計算,最後一碼不計算
        for (var i = 0; i < multiply.length; i++)
        {
            if (i < 2)
                total += nums[i] * multiply[i];
            else
                total += parseInt(arguments.Value.charAt(i-1)) * multiply[i];
        }
        //求出除10後之餘數
        var isChecked = total % 10;
        var checkCode; 
        //用10減該餘數，結果就是檢查碼，若餘數為0，檢查碼就是 0。        
        if (isChecked == 0)
            checkCode = 0;
        else
            checkCode = 10-isChecked;
        //和最後一碼比對
        if (checkCode == arguments.Value.charAt(arguments.Value.length-1))
            arguments.IsValid = true;
        else
            arguments.IsValid = false;
    }
}
//設定選取月份的天數
//yy=年id,mm=月id,dd=日id
function GetDaysOfMonth(yy,mm,dd)
{
    if (document.getElementById(yy).value != "00" && document.getElementById(mm).value !="00")
    {
        if (document.getElementById(dd).disabled)
            document.getElementById(dd).disabled = false;
        //ie和firefox共用寫法
        if (document.getElementById(yy).options[0].value == "00")
            document.getElementById(yy).remove(0);
        if (document.getElementById(mm).options[0].value == "00")
            document.getElementById(mm).remove(0);
        if (document.getElementById(dd).options[0].value == "00")
            document.getElementById(dd).remove(0);

        var nextYY=document.getElementById(yy).value;
        var nextMM=eval(document.getElementById(mm).value)+1;
        if (nextMM > 12)//表示下個月為跨年度
        {
            nextYY=eval(document.getElementById(yy).value)+1;
            nextMM=1;
        }
        var startDate=new Date(document.getElementById(yy).value+"/"+document.getElementById(mm).value+"/01");
        var endDate=new Date(nextYY+"/"+nextMM+"/01");
        var diffDays=(endDate.getTime()-startDate.getTime())/(1000*60*60*24);//本月天數
        var len=document.getElementById(dd).options.length;//目前顯示的天數        if (len > diffDays)
        {
            do
            {
                document.getElementById(dd).remove(eval(len)-1);//ie和firefox共用寫法
                len=document.getElementById(dd).options.length;
            }while(len > diffDays)
        }
        else if (len < diffDays)
        {
            do
            {
                var ddValue=eval(len)+1;
                ddStr=new String(ddValue);
                var items=new Option(PadLeft(ddStr,'0',2),PadLeft(ddStr,'0',2));//ie和firefox共用寫法
                document.getElementById(dd).options.add(items);
                len=document.getElementById(dd).options.length;
            }while(len < diffDays)
        }
    }
}
//字串不足幾位時,前面補值
function PadLeft(str,pad,count) 
{
    while(str.length < count)
        str=pad+str;
        
    return str;
}

//依RadioButton決定區塊是否顯示
function ClickRadioButton(radio)
{
    if (radio.id.indexOf('order') > -1)
        document.getElementById("textfield_tt").style.display="block";
    else
        document.getElementById("textfield_tt").style.display="none";
}

function ReloadImage(imgObj)
{
    var img=document.getElementById(imgObj);
    img.src="image.aspx?hash="+Math.random();//用隨機的"參數"，讓瀏覽器不會從緩衝區讀取圖片}

//取消原因的檢查function CheckOtherReason(selectObj,inputObj)
{
    if (document.getElementById(selectObj).options[0].selected) //沒有選擇原因
    {
        document.getElementById(selectObj).focus();
        alert('請選擇取消原因');
        return false;
    }
    else if (document.getElementById(selectObj).options[9].selected && document.getElementById(inputObj).value == "")
    {
        //選擇其他時必須填寫詳細原因
        document.getElementById(inputObj).focus();
        alert('請詳述取消原因');
        return false;
    }
    return true;
}
//依RadioButton決定顯示城市或國家區塊
function ShowCityOrCountry(radio,cityDiv,countryDiv)
{
    if (radio.id.indexOf('internal') > -1)
    {
        document.getElementById(cityDiv).style.display="block";
        document.getElementById(countryDiv).style.display="none";
    }
    else
    {
        document.getElementById(cityDiv).style.display="none";
        document.getElementById(countryDiv).style.display="block";
    }
}
//退/換貨原因的檢查
function CheckReturnReason(totalRows,Quantity,returnGoods,changeGoods,returnQuantity,returnReason,otherReason)
{
    var q=Quantity.split(",");//原有數量
    var returns=returnGoods.split(",");//選擇退貨
    var changes=changeGoods.split(",");//選擇換貨
    var quantity=returnQuantity.split(",");//退換數量
    var reasons=returnReason.split(",");//退換原因
    var others=otherReason.split(",");//詳細說明
    
    for (var i=0;i<totalRows;i++)
    {
        if (returns[i] != "" && changes[i] != "")//有選擇退換貨的才檢查
        {
            if (document.getElementById(returns[i]).checked || document.getElementById(changes[i]).checked)
            {
                if (!isFinite(document.getElementById(quantity[i]).value) || document.getElementById(quantity[i]).value == "" || document.getElementById(quantity[i]).value == "0") //數量非數字或是未填寫
                {
                    //退換數量必須為數字且不可為0
                    document.getElementById(quantity[i]).focus();
                    alert('請填寫正確的退/換數量');
                    return false;
                }
                else if (eval(document.getElementById(quantity[i]).value) > eval(document.getElementById(q[i]).innerText))
                {
                    //退換數量不可超過原有數量
                    document.getElementById(quantity[i]).focus();
                    alert('退/換數量不可超過原本數量');
                    return false;
                }
                else if (document.getElementById(reasons[i]).options[0].selected) 
                {
                    //必須選擇原因
                    document.getElementById(reasons[i]).focus();
                    alert('請選擇退/換原因');
                    return false;
                }
                else if ((document.getElementById(reasons[i]).options[9].selected || document.getElementById(reasons[i]).options[10].selected) && document.getElementById(others[i]).value == "")
                {
                    //選擇商品瑕疵或其他時必須填寫詳細原因
                    document.getElementById(others[i]).focus();
                    alert('請詳述原因');
                    return false;
                }
            }
        }
    }
    return true;
}

function CheckCouponSeq(couponSeqName)
{
    var seqName=couponSeqName.slice(0,-1);
    for (var i=1;i<=10;i++)
    {
        if (document.getElementById(seqName+i).value != "")
            return true;
    }
    alert('請填寫優惠序號');
    return false;
}

function CheckCardNoEmpty(esliteMemberCard,esliteCard,bookCard,passCard)
{
    if (document.getElementById(esliteMemberCard).value !="" || document.getElementById(esliteCard).value !="" || (document.getElementById(bookCard).value !="" && document.getElementById(bookCard).value !="P") || (document.getElementById(passCard).value != "" && document.getElementById(passCard).value != "P"))
        return true;
    else
    {
        alert('請選擇您要登入的會員身份');
        return false;
    }
}

function ShowInputBox(checkId,controlId)
{
    if (document.getElementById(checkId).checked)
        document.getElementById(controlId).style.display="inline";
    else
        document.getElementById(controlId).style.display="none";
}

function CheckInput(checkMember,user,guest,email,question)
{
    if (document.getElementById(checkMember).checked && (document.getElementById(guest).value == "" || document.getElementById(guest).value=="請輸入姓名"))
    {
        document.getElementById(guest).focus();
        alert('如您已是會員請先登入\n\n如您仍非會員請您勾選非會員並留下您的聯絡方式');
        return false;
    }
    if (document.getElementById(checkMember).checked && (document.getElementById(email).value == "" || document.getElementById(email).value=="請輸入Email"))
    {
        document.getElementById(email).focus();
        alert('非會員請填寫Email');
        return false;
    }
    if (document.getElementById(checkMember).checked && document.getElementById(email).value != "")
    {
        var reg=new RegExp("\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*","i");
        if (document.getElementById(email).value.search(reg) < 0)
        {
            document.getElementById(email).focus();
            alert('Email格式錯誤');
            return false;
        }
    }
    if (document.getElementById(checkMember).checked==false && (document.getElementById(user).value=="" || document.getElementById(user).value=="請輸入會員帳號"))
    {
        document.getElementById(user).focus();
        alert('如您已是會員請先登入\n\n如您仍非會員請您勾選非會員並留下您的聯絡方式');
        return false;
    }
    if (document.getElementById(question).value=="")
    {
        document.getElementById(question).focus();
        alert('請填寫問題內容');
        return false;
    }
    return true;
}

function CheckPhoneEmpty(mobile,phone)
{
    if (document.getElementById(mobile).value != "")
        return true;
    else if (document.getElementById(phone).value != "")
        return true;
    else
    {
        alert('手機與市話請擇一填寫');
        document.getElementById(mobile).focus();
        return false;   
    }
}

//檢查團購報價書名.數量.ISBN
function CheckGroupQuote(titles,qtys,isbns)
{
    var title=titles.split(",");//書名
    var qty=qtys.split(",");//數量
    var isbn=isbns.split(",");//ISBN
    var isEmpty=true;
    
    for (var i=0;i<10;i++)
    {
        if (document.getElementById(qty[i]).value != "" && (!isFinite(document.getElementById(qty[i]).value) || document.getElementById(qty[i]).value == "0")) //數量非數字或0
        {
            //數量必須為數字且不可為0
            document.getElementById(qty[i]).focus();
            alert('請填寫正確的數量');
            return false;
        }
        
        if (document.getElementById(title[i]).value != "" && document.getElementById(qty[i]).value != "" && document.getElementById(isbn[i]).value != "")
        {
            isEmpty=false;
            break;
        }
    }
    if (isEmpty)
    {
        alert('請至少完整填寫一本書名/數量/ISBN');
        return false;
    }
    return true;
}

function ShowRadioSelect(radio)
{
    if (radio.id.indexOf('selectCH') > -1)
    {
        document.getElementById("ch").style.display="block";
        document.getElementById("fx").style.display="none";
        document.getElementById("kid").style.display="none";
    }
    else if (radio.id.indexOf('selectFX') > -1)
    {
        document.getElementById("ch").style.display="none";
        document.getElementById("fx").style.display="block";
        document.getElementById("kid").style.display="none";
    }
    else if (radio.id.indexOf('selectKID') > -1)
    {
        document.getElementById("ch").style.display="none";
        document.getElementById("fx").style.display="none";
        document.getElementById("kid").style.display="block";
    }
    else
    {
        document.getElementById("ch").style.display="none";
        document.getElementById("fx").style.display="none";
        document.getElementById("kid").style.display="none";
    }
}

