<!-- JavaScript Document -->
try{MAIN_DIV}catch(e){MAIN_DIV=document.getElementsByTagName("body")[0];}
if(!MAIN_DIV) MAIN_DIV=document.getElementsByTagName("body")[0];

var VALIDATION_DEFAULTS={
	align:"R",
	margin:15,
	container:"",
	form_name:false
}

var validation_callback=false;

var VALIDATION_MSG_CLASSNAME="validator_msg2";
var VALIDATION_FIELD_CLASSNAME="validation_invalid";
var VALIDATION_LIST_ID="validation_list";
var validationSet=new Array();

validationSet.clear = function(){
	var item;
	while(this.length>0) {
		item=this.pop();
		if(item.msg && item.msg.parentNode) item.msg.parentNode.removeChild(item.msg);
	}
}

validationSet.getMsg=function(field){
	var i,j;
	for(i=0;i<this.length;i++){
		for(j=0;j<this[i].fields.length;j++){
			if(this[i].fields[j]==field) return this[i].msg;
		}
	}
}

validationSet.push_item=function(fields_list,message){
	var i;
//	for(i=0;i<fields_list.length;i++) setEvent(fields_list,"change",)
	this.push({fields:fields_list,msg:message});
}

validationSet.find_item=function(field){
	var i,j;
	for(i=0;i<this.length;i++){
		for(j=0;j<this[i].fields.length;j++){
			if(this[i].fields[j]==field) return i;
		}
	}
	return -1;
}


function validation_error(ID,msg,index){
	index=index || 0;
	var main=false;
	if(VALIDATION_DEFAULTS.form_name) main=document.getElementsByName(VALIDATION_DEFAULTS.form_name)[0];
	main=main || document;
	var el=main.getElementsByName(ID)[index];
	if(!el) el=document.getElementById(ID);
	var tmp1,tmp2,i;
	var align=el.getAttribute("validation-align");
	var fieldset=el.getAttribute("validation-fieldset");
	var msgref=el.getAttribute("validation-position");
	var margin=el.getAttribute("validation-margin");
	var msgdisabled=el.getAttribute("validation-msgdisabled");
	var validation_container=el.getAttribute("validation-container");
	
	if(margin==null) {
		margin=VALIDATION_DEFAULTS.margin;
	}else{
		margin=Number(margin);
	}
	
	var span=document.createElement("span");
	span.appendChild(document.createTextNode(msg));
	span.className=VALIDATION_MSG_CLASSNAME;
	if(!msgdisabled){
		if(validation_container){
			validation_container=document.getElementById(validation_container)||document.getElementsByTagName(validation_container)[0];
			validation_container.innerHTML="";
			span.style.position="relative";
			validation_container.appendChild(span);
		}else if(VALIDATION_DEFAULTS.container==""){
			span=BODY.appendChild(span);
			if(msgref){
				if(!(tmp1=document.getElementById(msgref))) tmp1=document.getElementsByName(msgref)[0];
				msgref=tmp1;
			}else{
				msgref=el;
			}
			var pos=get_position(msgref);
			if(!align) align=VALIDATION_DEFAULTS.align;
			switch(align){
				case "T":pos.Y-=(span.offsetHeight+margin);break;
				case "B":pos.Y+=(msgref.offsetHeight+margin);break;
				case "L":pos.X-=(span.offsetWidth+margin);break;
				case "R":pos.X+=(msgref.offsetWidth+margin);break;
			}
			span.style.top=pos.Y+"px";
			span.style.left=pos.X+"px";
		}else{
			var ul;
			if(!(ul=document.getElementById(VALIDATION_LIST_ID))) {
				ul=document.createElement("ul");
				ul.id=VALIDATION_LIST_ID;
				if(!(tmp1=document.getElementById(VALIDATION_DEFAULTS.container))) tmp1=document.getElementsByName(VALIDATION_DEFAULTS.container)[0];
				ul=tmp1.appendChild(ul);
			}
			var li=document.createElement("li");
			span=li.appendChild(span);
			span.style.position="relative";
			li=ul.appendChild(li);
		}
	}
	
	if(!fieldset) fieldset=ID;
	tmp2=fieldset.split(";");
	var fields=new Array();
	for(i=0;i<tmp2.length;i++){
		if(!(tmp1=document.getElementsByName(tmp2[i])[0])) tmp1=document.getElementById(tmp2[i]);
		if(!tmp1) continue;
		tmp1.className+=" "+VALIDATION_FIELD_CLASSNAME;
		fields.push(tmp1);	
		//setEvent(tmp1,"keyprss",validation_off);
	}
	validationSet.push_item(fields,span);
}

function validation_reset(){
	var fields=getElementsByClassName(VALIDATION_FIELD_CLASSNAME);
	var strtmp;
	var i;
	

	if(VALIDATION_DEFAULTS.container==""){
		var msgs=getElementsByClassName(VALIDATION_MSG_CLASSNAME);
		for(i=0;i<msgs.length;i++) BODY.removeChild(msgs[i]);
	}else{
		var ul=document.getElementById(VALIDATION_LIST_ID);
		if(!ul) return 0;
		if(!(tmp1=document.getElementById(VALIDATION_DEFAULTS.container))) tmp1=document.getElementsByName(VALIDATION_DEFAULTS.container)[0];
		tmp1.removeChild(ul);
	}
	for(i=0;i<fields.length;i++) fields[i].className=fields[i].className.replace(VALIDATION_FIELD_CLASSNAME,"");
	validationSet.clear();
}

function validation_off(field){
	var index=validationSet.find_item(field);
	
	if(VALIDATION_DEFAULTS.container==""){
		BODY.removeChild(validationSet[index].msg);
	}else{
		var ul=document.getElementById(VALIDATION_LIST_ID);
		ul.removeChild(validationSet[index].msg.parentNode);
	}
	for(i=0;i<validationSet[index].fields.length;i++) {
		validationSet[index].fields[i].className=validationSet[index].fields[i].className.replace(VALIDATION_FIELD_CLASSNAME,"");
		unsetEvent(validationSet[index].fields[i],"keypress",validation_off);
		//alert(validationSet[index].fields[i].removeEventListener("keypress",validation_off,true));
	}
	validationSet=validationSet.slice(index,index);
}

function validation_parseXMLresult(XML_data){
	if(document.getElementsByTagName("validatormsg").length>0) {parseXMLvalidation(XML_data);return 0;}
	var i;
	var validation_list=XML_data.getElementsByTagName('validation');
	var msg,id,index;
	validation_reset();
	for(i=0;i<validation_list.length;i++){
		msg="";
		if(validation_list[i].firstChild) msg=validation_list[i].firstChild.nodeValue;
		//alert(validation_list[i].getAttribute("id"));
		//id=validation_list[i].attributes['id'].value;
		id=validation_list[i].getAttribute("id");
		try {
			//index=validation_list[i].attributes['index'].value;
			index=validation_list[i].getAttribute("index");
		}catch(e){
			index=0;
		}
		validation_error(id,msg,index);
	}
	
	if(validation_list.length && validation_callback) validation_callback();
	
	return true;	
}

/*
//-------------------------------------------OLD
function not_valid(ID,msg, index){
var i;
var VAL_el;
var FRM_el,TMP_el;

if(index == null) { index = 0; }
	VAL_el=document.getElementById(ID);
	if(!VAL_el){
		alert("error not_valid(ID="+ID+")");
		return -1;
	}
	VAL_el.innerHTML='&nbsp;'+msg;
	VAL_el.style.visibility='visible';
	FRM_el=VAL_el.getAttribute('fieldname').split('+');
	for(i=0;i<FRM_el.length;i++) {
		if((document.getElementsByName(FRM_el[i])[index])) {
			document.getElementsByName(FRM_el[i])[index].style.border='1px #FF0000 solid'
		}else{
			alert("error not_valid FRM_el="+FRM_el[i]);
			return -1;
		}
	}
}



function off_validating(ID, index){
var i;
var VAL_el;
var FRM_el,TMP_el;
if(index == null) {index = 0; }
	VAL_el=document.getElementById(ID+'_v');
	VAL_el.innerHTML='';
	VAL_el.style.visibility='visible';
	FRM_el=VAL_el.getAttribute('fieldname').split('+');
	for(i=0;i<FRM_el.length;i++) document.getElementsByName(FRM_el[i])[index].style.border='';
}

function reset_validating(){
var i,j, k;
var VAL_elements;
var FRM_el,TMP_el, TMP_el_list;


VAL_elements=document.getElementsByTagName('validatormsg');

for(i=0;i<VAL_elements.length;i++){

FRM_el=VAL_elements[i].getAttribute('fieldname').split('+');

	for(j=0;j<FRM_el.length;j++) {
		TMP_el_list = document.getElementsByName(FRM_el[j]);
		for(k = 0; k < TMP_el_list.length; k++) {
			if(TMP_el = TMP_el_list[k]) TMP_el.style.border='';	
		}		
	}
	
	VAL_elements[i].innerHTML='&nbsp;';
	VAL_elements[i].style.visibility='hidden';
}

}



function parseXMLvalidation(XML_data){
	var i;
	var validation_list=XML_data.getElementsByTagName('validation');
	var msg,id,index;
		reset_validating();

		for(i=0;i<validation_list.length;i++){
			msg="";
			id=validation_list[i].attributes['id'].value;
			if(validation_list[i].firstChild) msg=validation_list[i].firstChild.nodeValue;
			try{
				index=validation_list[i].attributes['index'].value;
			}catch(e){
				index=0;
			}
			not_valid(id,msg,index);
		}
}*/