//////////////////////////////////////////////////////////////
// FILE: validateForm.js                                                           
// VERSION: 20040502_1 
//  
// DESCRIPTION: 檢視輸入表單的內容
//                                   
// 2003/10/06 created by Rmo Tsai
//////////////////////////////////////////////////////////////


function validateForm_confirmDelete(p_title) {
    if (confirm("確定要刪除此筆" + p_title + "資料?")) {
       return true;
    }
    else 
       return false;
}



function validateForm_confirmDeleteAll(p_title) {
    if (confirm("確定要刪除所有" + p_title + "資料?")) {
       return true;
    }
    else 
       return false;
}



function validateForm_confirmDeleteAllOfData(p_title1, p_title2) {
    if (confirm("確定要刪除該" + p_title1 + "下的所有" + p_title2 +"資料?")) {
       return true;
    }
    else 
       return false;
}


function validateForm_confirmListDelete(p_title) {
    if (confirm("確定要刪除所選擇的" + p_title + "資料?")) {
       return true;
    }
    else 
       return false;
}



function validateForm_isAnyOptionChecked(p_object) {
    var len = 1 * p_object.length || 0;
    var count = 0;
    if (len > 0) {
        while (count < len) {
            if (eval("p_object[" + count + "].checked")) {
                return true;
            }
            count++;
        }
    }
    else {
        if (p_object.checked) {
            return true;
        }
    }    
     
    return false;    
}



function validateForm_isCheckboxSelected(p_object, p_title) {
    if (validateForm_isAnyOptionChecked(p_object)) {
    	return true;
    } 
    else {
        alert("請勾選" + p_title);
        return false; 
    }     
}



function validateForm_isRadioSelected(p_object, p_title) {
    if (validateForm_isAnyOptionChecked(p_object)) {
    	return true;
    } 
    else {
        alert("請選擇" + p_title);
        return false; 
    }
}



function validateForm_isEmailValid(object, objectTitle) {
    if (object.value.indexOf('@',0) == -1 ||
        object.value.indexOf('@',0) == 0 ||
        object.value.indexOf('.',0) == -1) {
        alert(objectTitle + " is not valid");
        object.focus();
        return false;
    }
    return true;
}
   
   
   
function validateForm_IsFileExtensionValid(object, objectTitle, fileType) {
    var fileName = object.value;
    var valid = false;
    if (fileName.length != 0) {
        var fileNameExtension = fileName.substring(fileName.lastIndexOf('.'));
        if (fileType == "msword") {
            if (fileNameExtension == ".doc") {
                valid = true;
            }       
        }
        else if (fileType == "image") {
            if ((fileNameExtension == ".jpeg") &&
                (fileNameExtension == ".jpg") &&
                (fileNameExtension == ".gif")) {
                valid = true;
            }
        }
        else {
            alert("不存在此種檔案類型:" + fileType);
            object.focus();
            return false;
        }
    }
        
    if (valid) {
        return true;
    }
    else {
        alert(objectTitle + "檔案類型不正確");
        object.focus();
        return false;
    }
}


//檢查身份證字號
function validateForm_IsPersonalIdValid(object, objectTitle){
    var id = object.value.toLowerCase()
    //Regular expression checking. Must leading with letter and followed
    //by numbers. First digit is place of birth. second digit is sex.
    //The last digit is checksum
    var patten = /^[a-z][12][0-9]{8}$/;
    if(patten.test(id)) {
       var areaCode = "abcdefghjklmnpqrstuvxywzio";
       var sum = 10 + areaCode.indexOf(id.substring(0,1));
       var checksum=(sum - (sum % 10)) / 10 + (sum % 10)* 9;
       for(i = 1; i < 9; i++){
          checksum += id.substring(i, i + 1)*(9 - i);
       } 
       checksum = (10 - checksum % 10) % 10 
       
       if(checksum == id.substring(9,10)) {
           return true;
       }
    }
    
    alert(objectTitle + "內容不正確");
    object.focus();
    return false;
}



///////////////////////////////////////////////////////////////
// function validateForm_isInputItemNonEmpty(item, itemTitle)
//     檢視輸入是否為空字串
// Parameters:
// 1.input parameter:
//   item: 輸入項目
//   itemTitle: 標題
// 2.return parameter
//   true or false
///////////////////////////////////////////////////////////////
function validateForm_isInputItemNonEmpty(item, itemTitle) {
    var inputString = utility_trim(item.value);
    if (utility_isStringEmpty(inputString)) {
        alert("Please enter " + itemTitle);
        item.focus();
        return false;
    }
    else
        return true;
}



function validateForm_isSelectedItemNonEmpty(item, itemTitle) {
    var inputString = utility_trim(item.value);
    if (utility_isStringEmpty(inputString)) {
        alert("請選擇" + itemTitle);
        item.focus();
        return false;
    }
    else
        return true;
}



function validateForm_IsNumberFloat(object, objectTitle)
{
    if (isNaN(parseFloat(object.value))) {
        alert(objectTitle + "內容必須為實數");
        object.focus();
        return false;
    }
    else 
        return true;
}



function validateForm_IsNumberInt(object, objectTitle)
{
    if (isNaN(parseInt(object.value))) {
        alert(objectTitle + "內容必須為整數");
        object.focus();
        return false;
    }
    else 
        return true;
}


function validateForm_IsNumberPositive(object, objectTitle)
{
    var number = parseFloat(object.value);
    if (isNaN(number)) {
        alert(objectTitle + "內容不為數值");
        object.focus();
        return false;
    }
    else if (number < 0) {
        alert(objectTitle + "內容必須為大於 0 的數值");
        object.focus();
        return false;
    }
    return true;
}



function validateForm_isValidateFileNameForUpload(obj, objTitle) {
    if (utility_isFileNameChinese(obj.value)) {
        alert(objTitle + "檔名不可含有中文");
        obj.focus();
        return false;
    }
    return true;
}



function validateForm_isUploadFileNonEmpty(orgObj, newObj, objTitle, objMaxlength) {
    if (orgObj.value == '') {
        if (newObj.value==""){
            alert(objTitle + "請介於1~" + objMaxlength + "個字元之內");
            newObj.focus();
            return false;
        }
    }
    return true;
}



function validateForm_isPasswordEqual(password1, password2, title)
{
    if (password1.value != password2.value) {
        alert(title + "內容必須相同");
        password2.focus();
        return false;
    }
    else 
        return true;
}



function validateForm_validDate(strDate) {
     // (\d{1,2}) means 4 or 12
     // (\/|-) means either (/ or -), 4-12 or 4/12 
     // NOTE: we have to escape / (\/)
     // or else pattern matching will interpret it to mean the end instead of the literal "/"
     // \2 use the 2nd placeholder (\/|-) "here"
     // (\d{2}|\d{4}) means 02 or 2002
     var datePat = /^(\d{2}|\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/;
     var matchArray = strDate.match(datePat);

     if (matchArray == null) return false;

     // matchArray[0] will be the original entire string, for example, 2002-4-12 or 2002/4/12
     var year = matchArray[1];        // (\d{2}|\d{4}) - 1st parenthesis set - 02 or 2002
     var month = matchArray[3];     // (\d{1,2}) - 3rd parenthesis set - 4
     var day = matchArray[4];         // (\d{1,2}) - 4th parenthesis set - 12
     

     if (month < 1 || month > 12) return false;
     if (day < 1 || day > 31) return false;
     if ((month == 4 || month == 6 || month==9 || month == 11) && day == 31) return false;
     if (month == 2) {
          var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));

          if (day > 29 || (day == 29 && !isleap)) return false;
     }
     return true;
}



//function validateForm_validDate(strDate) {
     // (\d{1,2}) means 4 or 12
     // (\/|-) means either (/ or -), 4-12 or 4/12 
     // NOTE: we have to escape / (\/)
     // or else pattern matching will interpret it to mean the end instead of the literal "/"
     // \2 use the 2nd placeholder (\/|-) "here"
     // (\d{2}|\d{4}) means 02 or 2002
//     var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
//     var matchArray = strDate.match(datePat);

//     if (matchArray == null) return false;

     // matchArray[0] will be the original entire string, for example, 4-12-02 or 4/12/2002
//     var month = matchArray[1];     // (\d{1,2}) - 1st parenthesis set - 4
//     var day = matchArray[3];         // (\d{1,2}) - 3rd parenthesis set - 12
//     var year = matchArray[4];        // (\d{2}|\d{4}) - 5th parenthesis set - 02 or 2002

//     if (month < 1 || month > 12) return false;
//     if (day < 1 || day > 31) return false;
//     if ((month == 4 || month == 6 || month==9 || month == 11) && day == 31) return false;
//     if (month == 2) {
//          var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));

//          if (day > 29 || (day == 29 && !isleap)) return false;
//     }
//     return true;
//}



function validateForm_isValidDate(object, objectTitle) {
     if (!validateForm_validDate(object.value)) {
         alert(objectTitle + "日期不正確");
         return false;
     }
     return true;         
}


function validateForm_isValidDateTime(object, objectTitle) {
     // eg: 2002/11/12 03:05:07 is validate date
     var dateTimeSeparator = " ";
     var separatorIndex = object.value.indexOf(dateTimeSeparator);
     if (separatorIndex > 0) {
         dateString = object.value.substring(0, separatorIndex);
     } 
     else {
         dateString = object.value;
     }
     if (!validateForm_validDate(dateString)) {
         alert(objectTitle + "日期不正確");
         return false;
     }
     return true;        
}



function validateForm_composeDateFromSelect(form, variable, country) { 
    var century = eval("form." + variable + "Century.value");
    var year = eval("form." + variable + "Year.value");
    //modified By Rmo, parseInt("08"), parseInt("09") 會解讀為 8 進制的數值，產生 value 為 0
    if (country == "tw") {
        var westernYear = 1911 + parseInt(century) * 100 + parseInt(year, 10);
    } else {
        westernYear = parseInt(century) * 100 + parseInt(year, 10);
    }
    var month = eval("form." + variable + "Month.value");
    var day = eval("form." + variable + "Day.value");
    if ((century == "") && (year == "") && (month == "") && (day == "")) {
        return "";
    }
    else {
        return westernYear + "/" + month + "/" + day;
    }
}        
 
 

function validateForm_composeDateTimeFromSelect(form, variable, country) { 
    var date = validateForm_composeDateFromSelect(form, variable, country)
    var hour = eval("form." + variable + "Hour.value");
    var minute = eval("form." + variable + "Minute.value");
    var time;
    if ((hour == "") && (minute == "")) {
        time = "";
    }
    else {
        time = hour + ":" + minute + ":" + "00";
    }
    return date + " " + time;
}
