/* Show Message */
function Show_Msg(strMsg){
  if(strMsg != "")
    alert(strMsg); 
} 

/* 清空 txt1 的值，重新輸入 */
function ReInput(txt1){
  txt1.value = "";
  txt1.focus();
}

/* 計算字數 */
function Count_Words(str1){
  return str1.length;
}

/* 字串格式是否為『英文字母或數字或 "-","_"』的組合：是，回傳1；否，回傳0 */
function Check_is_En_Num(str1){
  var intCode;
  for(i=0;i<str1.length;i++){
    intCode = str1.charCodeAt(i);
    if(!((intCode >= 65 && intCode <= 90) || (intCode >=97 && intCode <= 122) || (intCode >= 48 && intCode <= 57)) && (intCode != 95 && intCode != 45)){
      return 0;
      break;
    }
  }

  return 1;
}

/* 檢查是否為數字。是：回傳1，否：回傳0 */
function Check_is_int(str1){
  if(str1 == "")
    return 0;

  if(isNaN(str1) || str1 < 0)
    return 0;
  else
    return 1;
}

/* 檢查輸入Email格式 */
function Check_Format_Email(txt1){
  if(txt1.value == "") return;

  var strVal = txt1.value;
  var intVal = 1,intVal1,intVal2,intVal3,intVal4,intLen;
  var arrVal = new Array();
  var i,j;

  intVal1 = strVal.indexOf("@");	//第一個『@』出現位置
  intVal2 = strVal.lastIndexOf("@");	//最末『@』出現位置
  intVal3 = strVal.indexOf(".");  //第一個『.』出現位置
  intVal4 = strVal.lastIndexOf(".");	//最末『.』出現位置
  //只能含最少且最多一個『@』且至少含一個『.』
  if((intVal1 < 1) || (intVal1 != intVal2) || (intVal3 < 0) || (intVal4 == strVal.length-1)) intVal = 0;

  //『.』與『.』之間只能輸入『英文字母或數字』的組合
  for(i=0;i<2;i++)
    arrVal[i] = new Array();
  arrVal[0] = (strVal.substr(0,intVal1)).split(".");	//『@』之前的字串，分割為陣列
  arrVal[1] = (strVal.substr(intVal1+1)).split(".");	//『@』之後的字串，分割為陣列

  for(i=0;i<2;i++){
    intLen = arrVal[i].length;
    for(j=0;j<intLen;j++){
      if(intVal == 0) break;
      if(Check_is_En_Num(arrVal[i][j]) == 0 || arrVal[i][j] == ""){
        intVal = 0;
        break;
      }
    }
  }

  if(intVal == 0){
    alert("格式錯誤：電子郵件信箱輸入格式錯誤");
    ReInput(txt1);
  }

  delete arrVal;
}

/* 
檢查日期格式 －－
格式一：（type="DateTime"：『YYYY-MM-DD hh:mm』）
格式二：（type="Date"：『YYYY-MM-DD』）
格式三：（type="Time"：『hh:mm』）
*/
function Check_Format_Date(txt1){
  if(txt1.value == "")return;

  var str1 = txt1.value;
  var arr1 = str1.split("-");
  var len1 = arr1.length;

  if(len1 != 3){
    alert("輸入日期格式錯誤：正確格式『YYYY-MM-DD』");
    ReInput(txt1);
    return;
  }

  for(var i=0;i<len1;i++){
    if(!(Check_is_int(arr1[i]))){
      alert("輸入日期格式錯誤：正確格式『YYYY-MM-DD』");
      ReInput(txt1);
      return;
    }
  }
}

/*
檢查終止日期不可早於起始日期
txt1：起始日期
txt2：終止日期
*/
function Check_Date_Begin_End(txt1,txt2){
  if(txt1.value == "" || txt2.value == "") return;

  var str1 = txt1.value;
  var arr1 = str1.split("-");
  var str2 = txt2.value;
  var arr2 = str2.split("-");
  var date1 = new Date(arr1[0],arr1[1],arr1[2],01,01,01);
  var date2 = new Date(arr2[0],arr2[1],arr2[2],01,01,01);

  if(date1 > date2){
    alert("輸入日期錯誤：終止日期不可早於起始日期");
    ReInput(txt2);
    ReInput(txt1);
  }
}

/* 檢查輸入格式只能為『英文+數字』 */
function Check_Login_Name(txt1){
  if(txt1.value == "") return;
  if(Check_is_En_Num(txt1.value) == 0){
    alert("格式錯誤：請輸入含英文字母或數字");
    ReInput(txt1);
  }
}

/* 檢查物件格式是否為數字 */
function Check_Type_int(txt1){
  if(txt1.value == "")return;

  if(Check_is_int(txt1.value))
    txt1.value = parseInt(txt1.value);
  else{
    alert("格式錯誤：請輸入數字");
    ReInput(txt1);
  }
}

/* txt1 => 密碼； txt2 => 密碼再輸入 */
function Check_Password(txt1,txt2){
  if(txt1.value == "" || txt2.value == "")return;

  if(txt1.value != txt2.value){
    alert("密碼不符，請重新輸入");
    ReInput(txt1);
    txt2.value = "";
  }
}

/* 
檢查字數限制。txt1：被檢查物件；val1：限制字數 
如果是用在檢查呼叫物件本身，請勿使用『onBlur』，請用『onChange』，否則在Netscape下執行時會發生訊息無窮回圈。
*/
function Check_Words_Limit(txt1,val1){
  if(txt1.value == "") return;

  var val = Count_Words(txt1.value);

  if(val > val1){  //字數超過
    txt1.focus();
    alert("字數超過：輸入字數最多不可超過 "+val1+" 個字");
  }
}
