//Regexuri validare
date_re=/^\d{4}-\d{2}-\d{2} \d{2}\:\d{2}(?:\:\d{2})*$/;
dateshort_re=/^\d{4}-\d{2}-\d{2}$/;
email_re=/^[0-9a-z~!#$%&_-]([.]?[0-9a-z~!#$%&_-])*@[0-9a-z~!#$%&_-]([.]?[0-9a-z~!#$%&_-])*$/;
url_re=/^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'<>()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'<>()\[\]{}\s\x7f-\xff]+)*)?/;
forbidden_re=/`|(?:\.\.)/;

//#########################################

function confirmLink(msg)
{
var is_confirmed = confirm(msg);
return is_confirmed;
}

//#########################################
function validx(re,x,msg){
OK = re.exec(x)   
if (!OK){
	window.alert(msg);
	return false;
}
return true;
}

//#########################################
function is_regex(re,x,msg){
OK = re.exec(x)   
if (OK){
	window.alert(msg);
	return true;
}
return false;
}

//#########################################
//selecteaza toate checkboxurile cu numele 'sel[]' dintr-o forma
function selectall(xform){
for (var i = 0; i < xform.elements.length; i++) {      
	if(xform.elements[i].type=='checkbox' && xform.elements[i].name=='sel[]'){
		//document.write(document.browse_form.elements[i].name +"&nbsp;"+ document.browse_form.elements[i].type+"<BR>")   
		xform.elements[i].checked=true;
	}
}
}

//#########################################
//deselecteaza toate checkboxurile cu numele 'sel[]' dintr-o forma
function deselectall(xform){
for (var i = 0; i < xform.elements.length; i++) {      
	if(xform.elements[i].type=='checkbox' && xform.elements[i].name=='sel[]'){
		//document.write(document.browse_form.elements[i].name +"&nbsp;"+ document.browse_form.elements[i].type+"<BR>")   
		xform.elements[i].checked=false;
	}
}
}

//#########################################
//face toggle, in functie de valoarea lui x, cu toate checkboxurile numite 'sel[]' din forma xform
function sel_toggle(x,xform){
if(x==true){
	selectall(xform);
}else{
	deselectall(xform);
}
}

//#########################################
//deschide o fereastra de dialog, fara meniu si status bar
function meswin(urlx,width,height,title){
	//window.alert('scrollbars=yes,width='+width+', height='+height+', resizable=yes, status=yes');
	window.open(urlx,'picker','scrollbars=yes,width='+width+', height='+height+', resizable=yes, status=yes');
}

//#########################################
//schimba 2 variabile dintr-o forma a ferestrei apelante
function change_opener_value(opener_form,opener_var,newvalue,opener_var2,newvalue2) {
	s='window.opener.document.'+opener_form+'.'+opener_var+".value='"+newvalue+"'";
	//exemplu: window.opener.document.form1.username.value=newvalue;
	eval(s);
	
	if(opener_var2){
		s2='window.opener.document.'+opener_form+'.'+opener_var2+".value='"+newvalue2+"'";
		eval(s2);
	}

	window.opener.focus();
	window.close();
}


//#########################################
//seteaza valoarea unui obiect dintr-o forma la cea a obiectului memoval din aceeasi forma
//memoval a fost setat cu onFocus la intrarea in obiectul care nu se doreste a fi modificat
function nochange(val,obj,mes){
obj.value=obj.form.memoval.value;
window.alert(mes);
}

//#########################################
//deschide o fereastra noua de dimensiunile specificate, deschide in ea url-ul doc si-i da focusul
function show_window(urlx,width,height){
	winx=window.open(urlx,'qqq','status=no,toolbar=no,scrollbars=yes,menubar=no,titlebar=1,resizable=yes,height='+height+',width='+width);
	winx.moveTo(10,10);
	winx.focus()
}

//#########################################
//functia care valideaza variabilele cu nume predefinit dintr-o forma
//validare variabile cu forma nestricta sau predefinita generic
//variabilele cu numele m_var sint mandatory iar cele de tip s_var nu sint mandatory
//email_[mx]_xxx = variabila de tip email
//d_[ms]_xxx = variabila data Y-m-d
//t_[ms]_xxx = variabila timp hh:mm
//a_[ms]_xxx = variabila de format alfanumeric
//an_[ms]_xxx = variabila de format alfanumeric plus alte citeva caractere
//nr[ms]_xxx = variabila de format numeric
//chk_xxx = variabila de tip chkbox numeric
//[ms]_xxx = variabile de tip string generic
function valid_gen(xform, mes_illegal, mes_mandatory) {
for(i=0;i<xform.elements.length;i++){
	if(/^email_[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(!validx(email_re,xform.elements[i].value,xform.elements[i].id + ": " + mes_illegal)){
				return false;
			}
		}else{
			if(/^email_m_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}

	if(/^dt_[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(!validx(/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):?(\d{2})?$/,xform.elements[i].value,xform.elements[i].id + ": " + mes_illegal + ". Date format is: aaaa-ll-zz hh:mm, ex: 2008-02-27 17:45")){
				return false;
			}else{
				ye=RegExp.$1;
				mo=RegExp.$2;
				da=RegExp.$3;
				ho=RegExp.$4;
				mi=RegExp.$5;
				if(!isDate(mo + '/' + da + '/' + ye, xform.elements[i].id + ": ")){
					return false;
				}
				if(!isTime(ho + ':' + mi)){
					window.alert(xform.elements[i].id + ": " + mes_illegal + ". Time format is: hh:mm");
					return false;
				}
			}			
		}else{
			if(/^d_m_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}
	if(/^d_[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(!validx(/^(\d{4})-(\d{2})-(\d{2})$/,xform.elements[i].value,xform.elements[i].id + ": " + mes_illegal + ". Date format is: aaaa-ll-zz, ex: 2008-02-27")){
				return false;
			}else{
				ye=RegExp.$1;
				mo=RegExp.$2;
				da=RegExp.$3;
				if(!isDate(mo + '/' + da + '/' + ye, xform.elements[i].id + ": ")){
					return false;
				}
			}			
		}else{
			if(/^d_m_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}
	if(/^t_[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(!isTime(xform.elements[i].value)){
				window.alert(xform.elements[i].id + ": " + mes_illegal + ". Time format is: hh:mm");
				return false;
			}
		}else{
			if(/^t_m_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}	
	if(/^a_[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(!validx(/^\w+$/,xform.elements[i].value,xform.elements[i].id + ": " + mes_illegal)){
				return false;
			}
		}else{
			if(/^a_m_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}
	if(/^an_[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(!validx(/^[\w\-\_\.\s\+%]+$/,xform.elements[i].value,xform.elements[i].id + ": " + mes_illegal)){
				return false;
			}
		}else{
			if(/^an_m_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}
	if(/^[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(is_regex(forbidden_re,xform.elements[i].value,xform.elements[i].id + ": " + mes_illegal)){
				return false;
			}
		}else{
			if(/^m_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}
	if(/^nr[ms]_.+$/.exec(xform.elements[i].name)){
		if(xform.elements[i].value){
			if(!validx(/\d+/,xform.elements[i].value,xform.elements[i].value + xform.elements[i].id + ": " + mes_illegal)){
				return false;
			}
		}else{
			if(/^nrm_.+$/.exec(xform.elements[i].name)){			
				window.alert(xform.elements[i].id + ": " + mes_mandatory);
				return false;
			}
		}
	}
}	
return true;
}

