/**********************
* cssFormValidator    *
* David Morrison      *
* 8/29/06             *
**********************/

// http://www.demoniusrex.com/cssformvalidator

// requires yahoo.js and dom.js from the YUI library
// http://developer.yahoo.com/yui/

var CSSFormValidator = function(form, invalidHandler) {
 var f = form;
 if (f) {
  var q=0;
  var v=true;
  var m="";
  var c;
  
  var invalidDefaultHandler = function(message) { alert(message); };

  var i = f.getElementsByTagName("input");
  var s = f.getElementsByTagName("select");
  var t = f.getElementsByTagName("textarea");  
  for(q=0; q<i.length; q++) {
   if(checkInput(i[q])) {
    // field ok
   } else {
     v=false;
	 if(!c) { c = i[q]; }
	 if(i[q].title) {
		m += i[q].title + " is a required field\n";
	 } else if(i[q].name) {
	 	m += i[q].name + " is a required field\n";
	 }
   }
  }
  for(q=0; q<s.length; q++) {
   if(checkInput(s[q])) {
    // field ok
   } else {
     v=false;
	 if(!c) { c = s[q]; }
	 if(s[q].title) {
		m += s[q].title + " is a required field\n";
	 } else if(s[q].name) {
	 	m += s[q].name + " is a required field\n";
	 }
   }
  }
  for(q=0; q<t.length; q++) {
   if(checkInput(t[q])) {
    // field ok
   } else {
     v=false;
	 if(!c) { c = t[q]; }
	 if(t[q].title) {
		m += t[q].title + " is a required field\n";
	 } else if(s[q].name) {
	 	m += s[q].name + " is a required field\n";
	 }
   }
  }
  if(c && c.focus) {c.focus();}
  if(m != "") {
	if(invalidHandler) {
		invalidHandler(m);
	} else {
		invalidDefaultHandler(m);
	}
  }
  return v;
 } else {
  return true;
 }
};

var checkInput = function (i) {
 if (YAHOO.util.Dom.hasClass(i,"required")) {
  if(i.value == "") {
   YAHOO.util.Dom.replaceClass(i,"complete","incomplete");
   return false;
  } else {
   YAHOO.util.Dom.replaceClass(i,"incomplete","complete");
  }
 }
 return true;
};
