
	/**************************************************************\
						   MORPHP2 library
		COPYRIGHT OF GABRIELE VALENTI (GABRIELE.VALENTI@EMAIL.IT)
	\**************************************************************/

function check_form(formr) {
		var tot_elems, i=0, attrs, err='', k=0;

		isIt = (document.all)?(navigator.userLanguage=='it'):(navigator.language=='it-IT');
		if (isIt) {
			var needed = 'è obbligatorio';
			var errors = 'errori';
			var differs = 'non coincide con';
			var notcorrect = 'non è corretto';
		} else {
			var needed = 'required';
			var errors = 'errors';
			var differs = 'not match with';
			var notcorrect = 'is not correct';
		}
		
		tot_elems = formr.elements;
		if (navigator.appName=='Netscape') {
			for (i=0;i<tot_elems.length;i++) {
				verified = (tot_elems[i].type=='checkbox')?(tot_elems[i].checked):(tot_elems[i].value!='');
				// if ((tot_elems[i].getAttributeNode('required')!=null)&&(tot_elems[i].value=='')) {
				if ((tot_elems[i].getAttributeNode('required')!=null)&&(!verified)) {
						err += ' '+tot_elems[i].getAttribute('message')+' '+needed+'\n';
				}
				if (tot_elems[i].getAttribute('join')!=null) {
					var reffld = eval('formr.'+tot_elems[i].getAttribute('join'));
					if (tot_elems[i].value!=reffld.value)
						err += ' '+tot_elems[i].getAttribute('message')+' '+differs+' '+reffld.getAttribute('message')+'\n';
				}
				if (tot_elems[i].getAttribute('email')!=null) {
					if (!emailCheck(tot_elems[i].value))
						err += ' '+tot_elems[i].getAttribute('message')+' '+notcorrect+'\n';
				}
			}
		} else {
			for (i=0;i<tot_elems.length;i++) {
					// alert(tot_elems[i].type+' '+tot_elems[i].checked);
					verified = (tot_elems[i].type=='checkbox')?(!tot_elems[i].checked):(tot_elems[i].value=='');
					// if ((tot_elems[i].required!=null)&&(tot_elems[i].value=='')) {
					if ((tot_elems[i].required!=null)&&(verified)) {
							err += ' '+tot_elems[i].getAttribute('message')+' '+needed+'\n';
					}
					if (tot_elems[i].getAttribute('join')!=null) {
						var reffld = eval('formr.'+tot_elems[i].getAttribute('join'));
						if (tot_elems[i].value!=reffld.value)
							err += ' '+tot_elems[i].getAttribute('message')+' '+differs+' '+reffld.getAttribute('message')+'\n';
					}
					if (tot_elems[i].getAttribute('email')!=null) {
						if (!emailCheck(tot_elems[i].value))
							err += ' '+tot_elems[i].getAttribute('message')+' '+notcorrect+'\n';
					}
			}
		}
		
		if (err.length>0) {
			alert(errors+':\n'+err);
			return false;
		} else {
			return true;
		}

	}
	
	function conf(msg) {
		if (msg==undefined)
			msg = 'continuare ?';
		return confirm(msg);
	}

	function setall(list, value)
	{
		i = 0;
		lst = document.getElementById(list);
		while (lst[i].type != 'undefined')
		{
			lst[i].checked = value;
			++i;
		}
	}
	
	function getVer()
	{
		var inf = navigator.appName.indexOf('Internet Explorer');
		if (inf>0)
			return 1;
		else
			return 2;
	}
	
	function show_selector(pageName, callerObject, singleSelect, extraQStrings)
	{
		window.open(pageName+'?caller='+callerObject+'&singleSelect='+singleSelect+'&'+extraQStrings, 'selector', 'height=500,width=500,resizable=yes,scrollbars=yes'); // ,menubar=yes,toolbar=yes,status=yes
		if (!selector.opener) selector.opener = self;	}
	
	function selector_add_voice(caller, voiceKey,voiceVal,onlyOne) {
		window.opener.remoteSelectorAddVoice(caller, voiceKey,voiceVal,onlyOne);
		self.close();
	}
	
	function remoteSelectorAddVoice(caller, voiceKey,voiceVal,onlyOne) {
		this.o = new Option(voiceVal,voiceKey,true,true);
		var ob = eval('document.'+caller);
//		if (onlyOne)
//		{
//			ob.options = new Array();
//		}
		ob.options[ob.options.length] = this.o;
	}

	function selector_add_voice_text(caller, voiceKey,voiceVal,onlyOne) {
		window.opener.remoteSelectorAddVoice_text(caller, voiceKey,voiceVal,onlyOne);
		self.close();
	}
	
	function remoteSelectorAddVoice_text(caller, voiceKey,voiceVal,onlyOne) {
		var ob = eval('document.'+caller);
		ob.value = voiceVal;
	}
	
	function popup(url,width,height)
	{
		window.open(url, 'popupReader', 'height='+height+',width='+width);
	}
	
	function emailCheck (emailStr) {

		var checkTLD=1;
		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray=emailStr.match(emailPat);
		if (matchArray==null) {
			//alert("Email address seems incorrect (check @ and .'s)");
			return false;
		}
		var user=matchArray[1];
		var domain=matchArray[2];
		for (i=0; i<user.length; i++) {
			if (user.charCodeAt(i)>127) {
				//alert("Ths username contains invalid characters.");
				return false;
			}
		}
		for (i=0; i<domain.length; i++) {
			if (domain.charCodeAt(i)>127) {
				//alert("Ths domain name contains invalid characters.");
				return false;
			}
		}
		if (user.match(userPat)==null) {
			//alert("The username doesn't seem to be valid.");
			return false;
		}
		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) {
			for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					//alert("Destination IP address is invalid!");
					return false;
				}
			}
			return true;
		}
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) {
			if (domArr[i].search(atomPat)==-1) {
				//alert("The domain name does not seem to be valid.");
				return false;
		   }
		}
		if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
			//alert("The address must end in a well-known domain or two letter " + "country.");
			return false;
		}
		if (len<2) {
			//alert("This address is missing a hostname!");
			return false;
		}
		return true;

	}
