﻿function Trim(txt)
{
    if (txt == "")
        return txt;

    var txtLen = txt.length;

    for (var i=1; i<= txtLen; i++)
    {
        if (txt.substring(0,1) == " " || txt.substring(0,1) == "　")
            txt = txt.substring(1,txt.length);
        else
            break;
    }

    for (var i=1; i <= txtLen; i++)
    {
        if (txt.substring(txt.length-1,txt.length) == " " || txt.substring(txt.length-1,txt.length) == "　")
            txt = txt.substring(0,txt.length-1);
        else
            break;
    }

    return txt;
}

function FieldNonEmpty(objField,ErrMsg){
    var txt = Trim(objField.value);
    if ( txt == ""){
        if (ErrMsg != null && ErrMsg != ""){
            alert(ErrMsg);
        	objField.focus();
        }
        return false;
    }

    return true;
}

function StrLen2(SouceStr){
	var totalBytes = 0 ;
    for(i=0;i<SouceStr.length;i++){
        chr = SouceStr.charCodeAt(i);
        if (chr > 256){
            totalBytes+=2;
        }else{
            totalBytes++;
        }
    }
    return totalBytes;
}


function StrLen(SouceStr)
{
	return StrLen2(SouceStr);
}

function ValidateStrLen(objStr ,chkBytes ,ErrMsg)
{
    var strLen = StrLen(objStr.value);

    if (strLen > chkBytes)
    {
        if (ErrMsg != null && ErrMsg != ""){
            alert(ErrMsg);
	        objStr.focus();
		}
        return false;
    }

    return true;
}

function CalcEngStrLen(SouceStr){
	var lens = 0;
	for (var i = 0; i < SouceStr.length; i++) {
		if (SouceStr.charAt(i).charCodeAt() <= 255)
            lens++;
	}
	return lens;
}

function ValidationEngStrLen(objStr ,chkBytes ,ErrMsg){
    var lens = CalcEngStrLen(objStr.value);
    if (lens > chkBytes){
        if (ErrMsg != null && ErrMsg != "")
            alert(ErrMsg);

        objStr.focus();
        return false;
    }
    return true;
}

function ValidationEngRangeLen(objStr ,minBytes ,MaxBytes ,ErrMsg){
    var lens = CalcEngStrLen(objStr.value);
    var ret  = true;

    if (lens > MaxBytes || lens < minBytes)
        ret = false;

    if (StrLen(objStr.value) > MaxBytes)
        ret = false;

    if (!ret){
        if (ErrMsg != null && ErrMsg != "")
            alert(ErrMsg);

        objStr.focus();
        return false;
    }
    return true;
}

function ValidationNumber(objStr ,ErrMsg){
    if (isNaN(objStr.value)){
        if (ErrMsg != null && ErrMsg != ""){
            alert(ErrMsg);
        	objStr.focus();
        }

        return false;
    }
    return true;
}

function DropdownlistNonSelected(objDropdownList,ErrMsg)
{
    if (Trim(objDropdownList[objDropdownList.selectedIndex].value) == "")
    {
        if (ErrMsg != null && ErrMsg != "")
            alert(ErrMsg);

        objDropdownList.focus();

        return false;
    }

    return true;
}

function CheckobjNonChecked(objCheck,ErrMsg)
{
    if (objCheck.value != null)
        var IsMulti = false;
    else
        var IsMulti = true;

    if (IsMulti == false)
    {
        if (objCheck.checked == false)
        {
            if (ErrMsg != null && ErrMsg != "")
                alert(ErrMsg);

            objCheck.focus();
            return false;
        }
    }
    else
    {
        var flg = false;
        for (var i=1; i<=objCheck.length; i++)
        {
            if (objCheck[i-1].checked == true)
            {
                flg = true;
                break;
            }
        }

        if (flg == false)
        {
            if (ErrMsg != null && ErrMsg != "")
                alert(ErrMsg);

            objCheck[0].focus();
            return false;
        }
    }

    return true;
}

function ValidateBothField(obj1 ,obj2 ,CompareKind ,ErrMsg)
{
    if (CompareKind == null || CompareKind == "")
    {
        alert("請在「BothInput」函式加上比較方式!!\n\n「one：其中一個有值)」\n「onlyone：只有一個有值」\n「xor：全有值或全無值」\n「both：二者皆需有值」");
        return false;
    }

    if (obj1.type == "select-one")
        var s1 = Trim(obj1[obj1.selectedIndex].value);
    else
        var s1 = Trim(obj1.value);

    if (obj2.type == "select-one")
        var s2 = Trim(obj2[obj2.selectedIndex].value);
    else
        var s2 = Trim(obj2.value);


    var result = true;
    switch (CompareKind)
    {
        case "one":
            if (s1 == "" && s2 == "")
                result = false;
            break;

        case "xor":
            if (s1 == "" ^ s2 == "")
                result = false;
            break;

        case "both":
            if (s1 == "" || s2 == "")
                result = false;
            break;
        case "onlyone":
            if ((s1 == "" && s2 == "") || (s1 != "" && s2 != ""))
                result = false;
            break;
    }

    if (result == false)
    {
        if (ErrMsg != null && ErrMsg != "")
            alert(ErrMsg);

        if (obj1.value == "")
            obj1.focus();
        else
            obj2.focus();

        return false;
    }

    return true;
}

function ValidateFieldDate(objYYYY ,objMM ,objDD, ErrMsg){
    if (objYYYY.type == "select-one")
        var y = parseInt(objYYYY[objYYYY.selectedIndex].value,10);
    else
        var y = parseInt(objYYYY.value,10);

    if (objMM.type == "select-one")
        var m = parseInt(objMM[objMM.selectedIndex].value,10);
    else
        var m = parseInt(objMM.value,10);

    if (objDD.type == "select-one")
        var d = parseInt(objDD[objDD.selectedIndex].value,10);
    else
        var d = parseInt(objDD.value,10);

	if (y<1900){
    	y=y+1911;//民國年才轉為西元年
    }
    var dt=new Date(y,m,1);
    dt.setDate(dt.getDate()-1);
    var maxday=dt.getDate();
    if(d>maxday){
        if (ErrMsg != null && ErrMsg != ""){
           	alert(ErrMsg);
	        objDD.focus();
	    }
        return false;
    }

    return true;
}

function ValidateDate(YYYY ,MM ,DD ,ErrMsg){
    var y = parseInt(YYYY,10);
    var m = parseInt(MM,10);
    var d = parseInt(DD,10);

	if (y<1900)
    	y=y+1911;//民國年才轉為西元年
    var dt=new Date(y,m,1);
    dt.setDate(dt.getDate()-1);
    var maxday=dt.getDate();
    if(d>maxday){
        if (ErrMsg != null && ErrMsg != "")
            alert(ErrMsg);
        return false;
    }

    return true;
}

function CompareDate(YYYY1,MM1,DD1,YYYY2,MM2,DD2,FormatErrMsg,CompareErrMsg)
{
    var ret = true;
    ret = ValidateDate(YYYY1,MM1,DD1,FormatErrMsg)

    if (ret == false)
        return false;

    ret = ValidateDate(YYYY2,MM2,DD2,FormatErrMsg)
    if (ret == false)
        return false;

    var date1 = new Date(YYYY1, MM1, DD1);
    var date2 = new Date(YYYY2, MM2, DD2);

    if (date1 > date2)
    {
        if (CompareErrMsg != "")
            alert(CompareErrMsg)
        return false;
    }

    return true;
}

function AddMonth(SourceDate ,months ){
	var y = SourceDate.getFullYear();
	var m = SourceDate.getMonth() + 1;
	var d = SourceDate.getDate();

	var y2 = 0;
	var m2 = m + months;
	if (m2 > 12){
		y2 = Math.floor(m2 / 12);
		m2 = m2 - y2 * 12;
	}
	return new Date(y+y2 ,m2 -1 ,d);
}

function AddYear(SourceDate ,years ){
	return AddMonth(SourceDate ,years * 12 );
}


function ValidateFieldMail(objMail, ErrMsg){
    var email = objMail.value;

	/* check 1 */
	var ret1 = true;
	reg_v = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*" ;
    var rx = new RegExp(reg_v);
    var matches = rx.exec(email);
    email_ret = (matches != null && email == matches[0]);

    if (email.length == 0 || email_ret == false){
        ret1 = false;
    }

    /* check 2 */
	var ret2 = true;
    var rege = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
    if (email.length == 0 || rege.exec(email) == null)
    {
        ret2 = false;
    }

    if (!ret1 && !ret2){

        if (ErrMsg != null && ErrMsg != ""){
            alert(ErrMsg);
        	objMail.focus();
    	}
        return false;
    }

    return true;
}





function ValidateFieldURL(objURL,ErrMsg)
{
    var URL = objURL.value.toLowerCase();

    if (URL == "")
        return true;

    if (URL.substring(0,7) != "http://" && URL.substring(0,8) != "https://")
    {
        alert("URL路徑格式錯誤!!\n必需為 http:// 或 https:// 開頭");
        objURL.focus();
        return false;
    }

    var path;
    if (URL.substring(0,7) == "http://")
        path = URL.substring(7,URL.length);

    if (URL.substring(0,8) == "https://")
        path = URL.substring(8,URL.length);

    if (path == "" || isNaN(path) == false)
    {
        if (ErrMsg != null && ErrMsg != "")
            alert(ErrMsg);

        objURL.focus();
        return false;
    }
}

function ValidateFieldIP(objIp,ErrMsg)
{
    var ip = objIp.value.toLowerCase();
    if (ip.substring(0,7) == "http://")
        ip = ip.substring(7,ip.length);
    if (ip.substring(0,8) == "https://")
        ip = ip.substring(8,ip.length);


    var ret = true;
    var dotPos = ip.indexOf(".");
    if (dotPos <= 0)
        ret = false;
    else
    {
        ip = ip.replace(" ","*");

        var ipArray = ip.split(".");

        if (ipArray.length != 4)
            ret = false
        else
        {
            for (var i=1; i<=ipArray.length; i++)
            {
                if (ipArray[i-1] > 255 || isNaN(ipArray[i-1]) == true || ipArray[i-1] == "")
                {
                    ret = false;
                    break;
                }
            }
        }
    }

    if (ret == false)
    {
        if (ErrMsg != null && ErrMsg != "")
            alert(ErrMsg);

        objIp.focus();
    }

    return ret
}

function setCookie(CookieName, CookieString, Expires ,timeUnit)
{
    if ((CookieName != null) && (CookieString != null))
    {
        if (Expires == null)
            document.cookie = CookieName + "=" + escape(CookieString)
        else
        {
            Expires = eval(Expires);
            setDay = new Date();

            if (timeUnit == null)
                timeUnit = "day";

            switch (timeUnit)
            {
                case "week":
                    setDay.setTime(setDay.getTime()+(Expires*1000*60*60*24*7));
                    break;
                case "day":
                    setDay.setTime(setDay.getTime()+(Expires*1000*60*60*24));
                    break;
                case "hour":
                    setDay.setTime(setDay.getTime()+(Expires*1000*60*60));
                    break;
                case "minute":
                    setDay.setTime(setDay.getTime()+(Expires*1000*60));
                    break;
                case "second":
                    setDay.setTime(setDay.getTime()+(Expires*1000));
                    break;
                default:
                    setDay.setTime(setDay.getTime()+(Expires*1000*60*60*24));
            }

            expTime = setDay.toGMTString();
            document.cookie = CookieName + "=" + escape(CookieString) + ";expires=" + expTime ;
        }

        return true;
    }
    return false;
}

function getCookie(CookieName)
{
    CookieName += "=";
    theCookie = document.cookie+";";
    start = theCookie.indexOf(CookieName);

    if (start != -1)
    {
        End = theCookie.indexOf(";",start);
        return unescape(theCookie.substring(start+CookieName.length,End));
    }
}

function deleteCookie(CookieName)
{
    document.cookie = CookieName + "=;expires=Thu,01-Jan-70 00:00:01 GMT";
}

function ShowError(errMsg ,Focusfield){
    if (errMsg != null && errMsg != "")
        alert(errMsg)
    if (Focusfield != null)
        Focusfield.focus();
    return false;
}

function ReplaceMail(email)
{
 if (email==null) {
 	return '';
 }
 email=email.replace(' ','');
 return email;
}

function ValidateSpecialChar(objStr,ErrMsg)
{
    var strLen = objStr.value.length;
	var charList = "~!@#$%^&*()_+|`-=\\{}[]:\"';?><,./“"

    if (strLen > 0)
    {
		for(var i=0;i<strLen;i++){
			if(charList.indexOf(objStr.value.charAt(i)) != -1){
				if (ErrMsg != null && ErrMsg != "")
					alert(ErrMsg)
				objStr.focus();
				return false;
			}
		}
    }

    return true;
}

function ValidateFiledBirthday(objStr,objType,Range,ErrMsg){
	var ChkDate = new Date();
	var age =  eval(ChkDate.getFullYear())  - eval(objStr.value);
	if(objType==1){
		if( age < eval(Range) ){
			if (ErrMsg!=""){
				alert(ErrMsg)
				objStr.focus();
			}
			return false;
		}
	}

	if(objType==2){
		if( age > eval(Range) ){
			if (ErrMsg!=""){
				alert(ErrMsg)
				objStr.focus();
			}
			return false;
		}
	}

	return true;
}

/*
if (document.location.toString().indexOf("pda")<0 && document.location.toString().indexOf("140")<0 && document.location.toString().indexOf("104")<0)
	location.href="http://www.104.com.tw";
*/

function _fun_Validation(){return true;}


