/*
* 	FORM VALIDATOR
*	onsubmit="return validate(this)"
*/


var tmpFormOnSubmit = "";
var currentFormObject = null;



//window.onload = apply_form_validator;

//apply_form_validator()
/*
function addEvent(objObject, strEventName, fnHandler) { 
	 // DOM-compliant way to add an event listener 
	 //alert(objObject.addEventListener);
	if (objObject.addEventListener)	   
		//alert('Mozilla..');
	   objObject.addEventListener(strEventName, fnHandler, true); 
	   
	// IE/windows way to add an event listener 
	else if (objObject.attachEvent)    	   
	   objObject.attachEvent("on" + strEventName, fnHandler); 
}

function getEventSrc(e) {
	if (!e) e = window.event;	
	if (e.target)
		return e.target;
	else if (e.srcElement)
		return e.srcElement;
}
*/

function apply_form_validator()
{
	var elements = document.getElementsByTagName("*");
	for (var i=0; i<elements.length; i++) {
		input = elements[i];
		if (input.tagName.toLowerCase() == 'form') {			
			// save the content of onSubmit attribute to variable
			currentFormObject = input;
			tmpFormOnSubmit = input.getAttribute("onsubmit");
			//if (tmpFormOnSubmit=='') {
			//	input.setAttribute('onsubmit','return form_validate(this)');
			//}
			
			addEvent(input,"submit",assign_form_validator);
			
			var formEls = input.getElementsByTagName('*');
			for (var fEl=0; fEl<formEls.length; fEl++) {
				//if (formEls[fEl].required == 'true') {
				addEvent(input,"keydown",assign_charCounterAlert);
				addEvent(input,"keyup",assign_charCounterAlert);
				//}
				/*}
				if (formEls[fEl].tagName.toLowerCase() == 'input' && formEls[fEl].type.toLowerCase() == 'text')
					addEvent(input,"keydown",assign_charCounterAlert);
					addEvent(input,"keyup",assign_charCounterAlert);
				}*/
			}
		}
	}
}


function assign_form_validator(e)
{
	var obj = getEventSrc(e);
	return form_validate(obj);
}

function form_validate(form)
{
	var elements = form.getElementsByTagName("*");
	var input = null;
	var ok = true;
	// Search for invalid inputs
	for (var i = 0; i < elements.length; i++) {
		input = elements[i];
		minLength = (input.minlength) ? input.minlength : 0;
		if (input.required == 'true') {
		if (input.tagName.toLowerCase() == 'select') {
				if (input.options.length == 0 || !input[input.selectedIndex].value) {
					ok = false;
				}
		} else if (input.tagName.toLowerCase() == 'div') {
				if (input.innerText.length == 0 ) {
					ok = false;
				}
				if (!ok) {
					var my_LABEL_JS_PLEASECOMPLETEFIELD = LABEL_JS_PLEASECOMPLETEFIELD.replace(/\@\@FIELD\@\@/,"'"+input.title+"'");
					alert(my_LABEL_JS_PLEASECOMPLETEFIELD);
					try {
						input.focus();
					} catch (e) {}
					return false;
				}
		} else if (!input.value || input.value.length < minLength) {
			ok = false;
			}
			if (!ok) {
				var my_LABEL_JS_PLEASECOMPLETEFIELD = LABEL_JS_PLEASECOMPLETEFIELD.replace(/\@\@FIELD\@\@/,"'"+input.title+"'");
				alert(my_LABEL_JS_PLEASECOMPLETEFIELD);
				try {
					input.focus();
				} catch (e) {}
				return false;
			}
		}
		if (input.confirm && input.confirm != '') {
			if (input.value != document.getElementById(input.confirm).value) {
				alert(document.getElementById(input.confirm).title + ' and ' + input.title + ' do not match.');
				return false;
			}
		}	
	}
	return true;
	//	execute the content of onSubmit attribute (from var)
	eval(tmpFormOnSubmit);
	form.submit();
}

function assign_charCounterAlert(e)
{
	var obj = getEventSrc(e);
	return charCounterAlert(obj);
}

function charCounterAlert(obj)
{
	if (obj.getAttribute("maxlength"))
	{
		LABEL_JS_TOOMUCHCHARS = LABEL_JS_TOOMUCHCHARS.replace(/\@\@QTY\@\@/,obj.getAttribute("maxlength"));
		try {
			if (obj.value.length > obj.getAttribute("maxlength")) {
				obj.value = obj.value.substring(0, obj.getAttribute("maxlength"));
				alert(LABEL_JS_TOOMUCHCHARS);
			} else {
				//cntfield.value = maxlimit - field.value.length;
			}
			}
		catch(e) {
			if (obj.innerText.length > obj.getAttribute("maxlength")) {
				obj.innerText = obj.innerText.substring(0, obj.getAttribute("maxlength"));
				alert(LABEL_JS_TOOMUCHCHARS);
			} else {
				//cntfield.value = maxlimit - field.value.length;
			}
		}
	}
}


// Focuses on the first <input> or <select> field in the specified form
function focusForm(formId) {
	var elements = (formId) ? document.getElementById(formId).getElementsByTagName("*") : document.getElementsByTagName("*");
	for (var i = 0; i < elements.length; i++) {
		var input = elements[i];
		if (input.tagName.toLowerCase() == 'input' || input.tagName.toLowerCase() == 'select') {
			input.focus();
			break;
		}
	}
	return true;
}

function getElementsByClassName(class_name)
{
  var all_obj,ret_obj=new Array(),j=0,teststr;

  if(document.all)all_obj=document.all;
  else if(document.getElementsByTagName && !document.all)
    all_obj=document.getElementsByTagName("*");

  for(i=0;i<all_obj.length;i++)
  {
    if(all_obj[i].className.indexOf(class_name)!=-1)
    {
      teststr=","+all_obj[i].className.split(" ").join(",")+",";
      if(teststr.indexOf(","+class_name+",")!=-1)
      {
        ret_obj[j]=all_obj[i];
        j++;
      }
    }
  }
  return ret_obj;
}


function addEvent(objObject, strEventName, fnHandler) { 
	 // DOM-compliant way to add an event listener 
	try {
		//if (objObject.addEventListener)	   
		//alert('Mozilla..');
	   objObject.addEventListener(strEventName, fnHandler, true); 
	}
	catch(e) {
	// IE/windows way to add an event listener 
	//else if (objObject.attachEvent)    	   
	   objObject.attachEvent("on" + strEventName, fnHandler); 
	}
}

function getEventSrc(e) {
	if (!e) e = window.event;	
	if (e.target)
		return e.target;
	else if (e.srcElement)
		return e.srcElement;
}
