function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function setBlur() {
	coll = document.getElementsByTagName("fieldset");
	for (i = 0; i < coll.length; i++) {
		if (coll[i].onblur && !(document.implementation && document.implementation.createDocument)) {
			coll2 = coll[i].getElementsByTagName("input");
			for (j = 0; j < coll2.length; j++) {
				coll2[j].onblur = coll[i].onblur;
			}
		}
	}
}

addLoadEvent(setBlur);

function chcount(e, n, evt) {
	var ev = evt ? evt : window.event;
	var ret = true;
	if (e && n && n != NaN && n > 0) {
		if (!okKey(ev.keyCode) && e.value.length >= n) {
			ev.cancelBubble = true;
			ev.returnValue = false;
			ret = false;
			e.value = e.value.substring(0,n);
		}
		e.form.elements[e.name + '_count'].value = n - e.value.length;
	}
	return ret;
}

function okKey(c) {
	return (c == 46 || c == 8); // delete, backspace
}

function dwrValidation(formname, fieldname, value, elementid) {
	var data = new DWRValidationData(formname, fieldname, value, elementid, "");
	var check = new Boolean(true);
	try {check = (document.forms[formname].gocheck == "true");} catch (E) {check=true;}
	if (!check && document.forms[formname].gocheck == undefined ) check = true;
	if (check == null || check) DWRValidator.dwrValidation(data, dwrValidation_return);
}

function dwrValidation_return(data) {
	el = document.getElementById("err_" + data.elementId);
	lab = document.getElementById("lab_" + data.elementId);
	inp = document.getElementById("" + data.elementId);
	err = (data.errorMessage != null && data.errorMessage != "");
	if (el) {
		el.innerHTML = data.errorMessage;
		if (err) {
			el.className = el.className + " frmErrorMessageShown";
			lab.className = lab.className + " frmError";
			inp.className = inp.className + " frmError";
		} else {
			var classes = el.className.split(' ');
			el.className = classes[0];
			var classes = lab.className.split(' ');
			lab.className = classes[0];
			var classes = inp.className.split(' ');
			inp.className = classes[0];
		}
	}
	else if (err) alert(data.errorMessage);
}

function getValue(el) {
	el.form.gocheck = "true";
	el.form.prevEl = el.id;
	return el.value;
}

function getPasswdValue(el) {
	el.form.gocheck = "false";
	el.form.prevEl = el.id;
	var val1 = "";
	var val2 = ""; 
	if (el.name.substr(el.name.length - 7, el.name.length) == "_repeat") {
		el.form.gocheck = "true";
		val2 = el.value;
		val1 = el.form.elements[el.name.substring(0, el.name.length - 7)].value;
	} else {
		val1 = el.value;
		val2 = el.form.elements[el.name + "_repeat"].value;
	}
	return [val1, val2];
}

function getCheckedValues(el) {
	var moved = false;
	try {
		var prev = el.form.prevEl;
		el.form.gocheck = (prev == el.id) ? "false" : "true";
		moved = (prev == el.id);
		el.form.prevEl = el.id;
	} catch (E) {
		el.form.gocheck = "true";
		el.form.prevEl = el.id;
	}
	ret = new Array();
	if (el.tagName != "INPUT")
		el = document.getElementById(el.id).getElementsByTagName("input")[0];
	if (el.form.elements[el.name].length && el.form.elements[el.name].length > 1) {
		//alert("asf asdf ");
		for (i = 0; i < /* > */ el.form.elements[el.name].length; i++) {
			if(el.form.elements[el.name][i].checked)
				ret[ret.length] = el.form.elements[el.name][i].value;
		}
	} else {
		if(el.form.elements[el.name].checked) {
			ret[ret.length] = el.form.elements[el.name].value;
		}
	}
	if (moved && ret.length <= 1) el.form.gocheck = "true";
	return ret;
}

function getSelectedValues(el) {
	el.form.gocheck = "true";
	el.form.prevEl = el.id;
	ret = new Array();
	for (i = 0; i < /* > */ el.options.length; i++) {
		if(el.options[i].selected)
			ret[ret.length] = el.options[i].value;
	}
	return ret;
}

function isArray(value) { return typeof(value) != 'string';}
function toArray(value) {var ret = new Array(1); ret[0] = value; return ret; }

function DWRValidationData(formname, fieldname, value, elementid, errormessage) {
	this.formName = formname;
	this.fieldName = fieldname;
	this.fieldValues = (isArray(value)) ? value : toArray(value);
	this.elementId = elementid;
	this.errorMessage = errormessage;
}
