// 2004-06-05 joel 
// Form validation routines

function ct_verify_input(oinput,cond,msg,p1,p2,p3) {
  var result=true;
  var isArr=(typeof oinput=='object' && !oinput.tagName);
  if (!isArr && oinput.tagName!='INPUT' && oinput.tagName!='SELECT' && oinput.tagName!='TEXTAREA') 
    alert('ct_verify_input js error: not an input entity');

  // 2006-10-24 joel 
  if (typeof ctfv_str=="undefined") {
    alert('ct_verify_input js error: developer pls include language js (eg. /site/ctx/js/.pcache.fv_str.js)');
    return false;
  }

  // default checking
  if (!cond) cond='fill';

  if (!isArr) {
    // get the display name for field
    fdn=(oinput.dname || oinput.name);
  }

  //alert(cond+'/'+fdn+'/'+oinput.value+'/');
  if (cond=='fill') {
    if (oinput.value=='') {
      if (!msg) msg=(ctfv_str.need_value)+'['+fdn+']';
      result=false;
    }
  } 
  else if (cond=='radios') {
    cnt=oinput.length;
    result=0;
    if (!p1) p1=1;
    for(var i=0; i< cnt; i++) {
      if (oinput[i].checked) result++;
    }
    if (result<p1) {
      if (!msg) msg=(ctfv_str.item_count)+p1;
      result=false;
    }
  } 
  else if (cond=='check') {
    if (!oinput.checked) {
      if (!msg) msg=(ctfv_str.check_this)+'['+fdn+']';
      result=false;
    }
  } 
  else if (cond=='nick') {
    if (!p1) p1=6;
    if (oinput.value=='' || oinput.value.length<p1) {
      if (!msg) msg=(ctfv_str.need_uname)+'['+fdn+']'+'\n('+(ctfv_str.uname_explain)+p1+')';
      result=false;
    }
    if (oinput.value.charAt(0)<65) {
      if (!msg) msg=(ctfv_str.start_letter)+'['+fdn+']';
      result=false;
    }
    for (i=0; i<oinput.value.length; i++) {
      if (oinput.value.charCodeAt(i)<127 && oinput.value.charAt(i).search(/[A-Z0-9_\-]/i)<0) {
	if (!msg) msg=(ctfv_str.need_uname)+'['+fdn+']\n('+(ctfv_str.illegal_char)+oinput.value.charAt(i)+')';
	result=false;
      }
    }
  } 
  else if (cond=='select') {
    if (oinput.value=='') {
      if (!msg) msg=(ctfv_str.sel_item)+'['+fdn+']';
      result=false;
    }
  } 
  else if (cond=='number') {
    // 2004-08-24 joel 
    if (oinput.value=='' || isNaN(oinput.value)) {
      if (!msg) msg=(ctfv_str.need_number)+'['+fdn+']';
      result=false;
    }
    if (oinput.value<p1 || oinput.value>p2) {
      msg=(ctfv_str.need_number)+'['+fdn+']'+'\n('+(ctfv_str.number_range)+p1+' - '+p2+')';
      result=false;
    }
  }
  else if (cond=='phone') {
    // 2004-09-24 joel 
    if (oinput.value=='' || isNaN(oinput.value) || oinput.value.length<8) {
      msg=(ctfv_str.need_phone)+'['+fdn+']';
      msg+='\n('+(ctfv_str.phone_explain)+')';
      result=false;
    }
  }
  else if (cond=='email') {
    p=oinput.value.indexOf('@');
    if (p<1 || p==(oinput.value.length-1)) {
      if (!msg) msg=(ctfv_str.need_email)+'['+fdn+']';
      result=false;
    }
  }
  else if (cond=='confirm_pw') {
    if (oinput.value!=p1.value) {
      if (!msg) msg=(ctfv_str.bad_pw_verify)+'['+fdn+']';
      result=false;
    }
  }
  else if (cond=='disallow_ext' || cond=='limit_ext') { 
	  // ec: restricted ext
		var earr=p1.split(",");
		if (oinput && earr) {
			var f=oinput.value;
			for(var i=0; i<earr.length;i++) {
				var l=earr[i].length;
				var s=f.substr(f.length-l,l).toLowerCase();
				if (earr[i]==s) {
					result=false;
				}
			}
			if (!result) msg = f+" is of invalid filetype.";
		}
  }
  else if (cond=='allow_ext') { 
	  // ec: possible ext

		var earr=p1.split(",");
		if (oinput && earr) {
			var f=oinput.value;
			for(var i=0; i<earr.length;i++) {
				var l=earr[i].length;
				var s=f.substr(f.length-l,l).toLowerCase();
				if (earr[i]==s) {
					return 1;
				}
		 }
		}
		result=false;
		msg = f+" is of invalid filetype.";
	}
  else {
    result=false;
    msg=(ctfv_str.bad_type)+cond;
  }

  if (!result) {
    if (!isArr) {
      try {
	if (oinput.style.display!='none') oinput.focus();
      } catch (e) {};
    }
    else {
      try {
	oinput[0].focus();
      } catch (e) {};
    }

    alert(msg);
  }
  return result;
}

function ct_verify_date_order(odate1,odate2) {
  dn1=odate1.name;
  dn2=odate2.name;
  if (odate1.value>odate2.value) {
    alert("Please enter a "+dn2+" date which is later than the "+dn1+" date.");
    odate2.focus();
    return false;
  }
  return true;
}

function ct_dirty_input(oinput) {
  document.body.ct_dirty_form=true;
  oinput.style.backgroundColor='#FFD7D7';
  barr=document.getElementsByTagName('INPUT');
  for (i=0; barr!=null && i<barr.length; i++) {
    if (barr[i].type=='submit') barr[i].disabled=false;
  }
}

function ct_check_dirty_form() {
  if (document.body.ct_dirty_form)
    event.returnValue='Changes have not been submitted yet.';
}

function ct_fix_url(which) {
  if (!which || which.search(/http:\/\//i)==0 || which.search(/\//)==0) return which;
  return 'http://'+which;
}

function ct_verify_picslot(obj,ext,msg) {
 // ec 2006-09-08
 var f=obj.value;
 if (f=="") return 1;
 if (typeof ext=="undefined") ext = ".gif,.jpg,.jpeg,.png,jpe,bmp";
 if (typeof msg =="undefined") msg="Please upload only picture file (GIF, JPG, BMP, PNG).";
 var earr=ext.split(",");
 if (!earr) return;
 for(var i=0; i<earr.length;i++) {
   var l=earr[i].length;
   var s=f.substr(f.length-l,l).toLowerCase();
   if (earr[i]==s) {
      return 1;
    }
 }
 alert(msg);
 return 0;
}


