/*-------------------------------------------------------------------------------------
Date: 17/08/2006
Author: ThangVQ
File: checkImage.js
Purpose: check all text field in the form
Change: first create
-------------------------------------------------------------------------------------*/
function checkURL(valor){
  if (/^w+([.-]?w+)*.w+([.-]?w+)*(.w{2,3})+$/.test(valor)){
   return (true)
  } else {
    return (false);
  }
}
function checkURL1(urlStr){if (urlStr.indexOf(" ")!=-1){alert("Spaces are not allowed in a URL");return false;}if(urlStr==""||urlStr==null){return false;}urlStr=urlStr.toLowerCase();var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";var validChars="\[^\\s" + specialChars + "\]";var atom=validChars + '+';var urlPat=/^http:\/\/(\w*)\.([\-\+a-z0-9]*)\.(\w*)/;var matchArray=urlStr.match(urlPat);if (matchArray==null){alert("The URL seems incorrect \ncheck it begins with http://\n and it has 2 .'s");return false;}var user=matchArray[2];var domain=matchArray[3];for (i=0; i<user.length; i++) {if (user.charCodeAt(i)>127) {alert("This domain contains invalid characters.");return false;}}for (i=0; i<domain.length; i++) {if (domain.charCodeAt(i)>127) {alert("This domain name contains invalid characters.");return false;}}var atomPat=new RegExp("^" + atom + "$");var domArr=domain.split(".");var len=domArr.length;for (i=0;i<len;i++) {if (domArr[i].search(atomPat)==-1) {alert("The domain name does not seem to be valid.");return false;}}if (domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {alert("The address must end in a well-known domain or two letter " + "country.");return false;}return true;}
function checklength(value, maxlength)
{
	//alert(value.length + " " + maxlength);
 if (value.length > maxlength)
 {
  return false;
 }
 else
 {
  return true;
 }
}
function checkvalue(value, maxvalue)
{
 if (value > maxvalue)
 {
  return false;
 }
 else
 {
  return true;
 }
}
function isNull(value)
{
 if (value == "")
 {
  return true;
 }
 else
 {
  return false;
 }
}
function checkchar(value)
{
 var illegalChars = /[\(\)\<\>\,\!\#\$\%\^|&\*\;\:\ \\\"\'\?\`\~\[\]\]]/;

 if (value.match(illegalChars))
 {
	
  return false;
 }
 else
 {
  return true;
 }
}
function isEmail(value, maxlength)
{
 if (isNull(value))
 {
  return "null";
 }
 else if (!CheckEmail(value))
 {
  return false;
 }
 else if (!checklength(value, maxlength))
 {
  return "long";
 }
 else
 {
  return true;
 }
}
/////////////////////////
function CheckEmail(emailstr){
  var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
  if (filter.test(emailstr)) {
    return true;
  } else {
    return false;
  }
}
function isText(value, maxlength)
{
 var illegalChars = /[\(\)\<\>\#\$\%\^\&\*\;\:\\\`\~\[\]\]]/;

 if (isNull(value))
 {
  return "null";
 }
 else if (!checklength(value, maxlength))
 {
  return "long";
 }
 else if (value.match(illegalChars))
 {
  return false;
 }
 else
 {
  return true;
 }
}
function isPhone(value, maxlength)
{
 var stripped = value.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters

 if (isNull(value))
 {
  return "null";
 }
 else if (isNaN(stripped))
 {
  return false;
 }
 else if (!checklength(value, maxlength))
 {
  return "long";
 }
 else
 {
  return true;
 }
}
function isNumber(value, maxvalue)
{
 if (isNull(value))
 {
  return "null";
 }
 else if (isNaN(value) || !checkvalue(value, maxvalue))
 {
  return false;
 }
 else
 {
  return true;
 }
}
function isDate(value)
{
 var cur_date = new Date();
 var current = cur_date.getYear() * 10000 + (cur_date.getMonth() + 1) * 100 + cur_date.getDate();

 var year = value.substr(0, 4);
 var month = value.substr(5, 2);
 var day = value.substr(8, 2);
 var date = new Date(year, month, day);
 var date_num = date.getYear() * 10000 + (date.getMonth()) * 100 + date.getDate();

 if (isNull(value))
 {
  return "null";
 }
 else if (value.length != 10 || isNaN(date_num))
 {
  return false;
 }
 else if (date_num > current)
 {
  return "bigger";
 }
 else if (date_num == current)
 {
  return "equal";
 }
 else
 {
  return "smaller";
 }
}
function isFile(value)
{
 if (isNull(value))
 {
  return "null";
 }
 else if (value.substring(value.length - 4, value.length).toLowerCase() != ".jpg" && value.substring(value.length - 4, value.length).toLowerCase() != ".gif")
 {
  return "notimg";
 }
 else
 {
  return true;
 }
}
/*--------------------------------------------------------------------------------------------
Date: 17/08/2066
Author: ThangVQ
Function: checkText()
Input: three array: arr_field contains text_field_name in the form
                    field_type contains text_field_type. They're: text, phone, email, number
                    field_attr contains text_field_attribute. They're: maxlength or maxvalue (for
                    number field).
Output: one array: arr_result contains boolean values or a String value "null" if this field is null.
"long" if too long.
Purpose: check all text fields in the form.
---------------------------------------------------------------------------------------------*/
function checkText(arr_field, field_type, field_attr)
{
 var i = 0;
 var arr_result = new Array();

 for (i = 0; i < arr_field.length; i++)
 {
	 
  switch (field_type[i])
  {
   case "text":
    arr_result[i] = isText(arr_field[i].value, field_attr[i]);

    break;

   case "phone":
    arr_result[i] = isPhone(arr_field[i].value, field_attr[i]);

    break;

   case "email":
    arr_result[i] = isEmail(arr_field[i].value, field_attr[i]);

    break;

   case "number":
    arr_result[i] = isNumber(arr_field[i].value, field_attr[i]);

    break;

   case "date":
    arr_result[i] = isDate(arr_field[i].value);

    break;

   case "file":
    arr_result[i] = isFile(arr_field[i].value);

    break;
   case "url":
    arr_result[i] = checkURL(arr_field[i].value);

    break;

   default:
    arr_result[i] = true;
  }
 }

 return arr_result;
}

