
var nonspace = /\S/;
var number = /^\s*\d+\s*$/;
var number2 = /\d+/;
var nondomain = /[^A-Z\.a-z0-9-]/;
var periodperiod = /\.\./;
var periodonend = /\.$/;
var beginperiod = /^\./;
var datef1 = /\w+ \d{1,2}, \d{4}/;
var empty = /^\s*$/;
var money = /\d+\.\d{2}$/;
var time = /\d{1,2}\:\d{2}$/;
//var minute = /\d{1,2}$/;
var minute = /^[012345]?\d$/;
var url = /^https?:\/\//;
var isbn10 = /\d{9}[\dxX]/;

var killcheck = false;
//if true don't check

var chg_all_running = false;

//args: the element to be checked, the pattern, the textbox prompt
//returns: the prompt if something went wrong, or "" if all is well
function checkme(el,pattern, prompt){
 if ((! el.value) || (!el.value.match(pattern))){
 return prompt + '\n';
}
return "";
}
// Only checks pattern
function checkwhen(el,pattern, prompt){
 if (( el.value) && (!el.value.match(pattern))){
 return prompt + '\n';
}
return "";
}

function checkdomain(el, prompt, prompt2){
 //check if empty
 if (( !el.value) ||  (!el.value.match(nonspace))){
 return prompt2 + '\n';
 }
 if ( (el.value.match(periodperiod))  ||  (el.value.match(nondomain))
    || (el.value.match(periodonend)) || (el.value.match(beginperiod))  ){
 return prompt + '\n';
 }
return "";
}
//checkme for selects. returns the prompt of no options are selected, or "" if one is.
//patern is not used.
function selectcheckme(el,pattern, prompt){
for (var i = 0; i < el.options.length ; i++){
if (el.options[i].selected){ return ""; }
}//for
 return prompt + '\n';
}

//checkme for selects. returns the prompt if no options are selected, or if the selected one matches pattern.
//If valid returns "".
function selectcheckme2(el,pattern, prompt){
for (var i = 0; i < el.options.length ; i++){
if (el.options[i].selected){
	if (el.options[i].value.match(pattern)){ return prompt + '\n'; }
	else  return "";
 }// if (el.options[i].selected)
}//for
 return prompt + '\n';
}

//checkme for selects. s pattern.
//If valid returns "".
function minmaxselect(el,pattern, min, max, prompt){
var j = 0 ;
for (var i = 0; i < el.options.length ; i++){
if (el.options[i].selected){
        j++;
}
}//for
if ( (j >= min) && (j <= max) )    
    return "";
else
    return prompt + '\n'; 
}

//calls onchange for all form elements
function changeall(dform){

if (killcheck)
	return true;
chg_all_running = true ;
var prompt = "";
for(var i = 0 ; i < dform.elements.length ; i++){
   del = dform.elements[i];
   //no processing for tiny mce elements
   if (!del.name.match("mce_editor")) {
      if(del.onchange != null){  
          tempstring = del.onchange();
          if (tempstring){  prompt += tempstring ;}
      } else if(del.onclick != null && del.type != "submit") {
      //CHECK CHECKBOX VALUE HERE
          if (!ccheck( del)) {
             tempstring = del.onclick();
             if (tempstring){
               if (del.type == "radio")
                 { prompt += "You must pick one of \'"+tempstring +"\'\n";}
               else
                 { prompt += "You must check at least one of \'"+tempstring +"\'\n";}
             }//if tempstring
          } //if !ccheck
      }//else
   } //if !del.name
}//for
if (prompt.length > 0){
alert(prompt);
chg_all_running = false ;
return false
} //if
chg_all_running = false ;
return true;
}

//check that at least one of a checkbox (or radio button) is checked
function ccheck(ele){
dform = ele.form;
for(i = 0 ; i < dform.elements.length ; i++){
if (dform.elements[i].name == ele.name && dform.elements[i].checked){
return true;
}//if
}//form
return false;
}

//character count and check for text areas
//field name, warning name, remaining name, max chars
function checkfieldlength(fn, wn, rn, max){
    var len = fn.value.length;
    if(len > max){
        fn.value = fn.value.substring(0, max);
        len = max;
    }
    document.getElementById(wn).innerHTML = len;
    document.getElementById(rn).innerHTML = max - len;
}

