
/**
* CBLU.NET presents X3 - Your next CMS
*
* @author 	Paolo Certo <paolocerto@cblu.net>
* @copyright	CBLU.NET X3, All Rights Reserved
* @license	{http://www.cblu.net/gpl.txt}
* @link		{http://www.cblu.net}
* @name		include/script.js
* @version  20070713

This file is part of X3_SUBSCRIBE MODULE.
*/

/*
// ELIMINA SPAZI
function Trim(stringa) {
	reTrim=/\s+$|^\s+/g;
	return stringa.replace(reTrim,"");
}
*/

// VERIFICA CAP, ABI, CAB
function isNumber5(what)
{
	var i=new RegExp("^[0-9]{5}$");
	if(i.test(Trim(what))) { 
		return true;
	}
	else {
		return false;
	}
}

// VERIFICA PASSWORD
function isPwd(what)
{
	var i=new RegExp("^([a-zA-Z0-9]{6,20})$");
	if(i.test(Trim(what))) { 
		return true;
	}
	else {
		return false;
	}
}

//VERIFICA IVA
function check_iva(what) {
	var control = true;
	var validi = "0123456789";
	for(i = 0; i < 11; i++ ) {
		if( validi.indexOf( what.charAt(i) ) == -1 )
			control = false;
	}
	if (control) {
		s = 0;
		for( i = 0; i <= 9; i += 2 )
			s += what.charCodeAt(i) - '0'.charCodeAt(0);
		for( i = 1; i <= 9; i += 2 ){
			c = 2*( what.charCodeAt(i) - '0'.charCodeAt(0) );
			if( c > 9 )  c = c - 9;
			s += c;
		}
		if( ( 10 - s%10 )%10 != what.charCodeAt(10) - '0'.charCodeAt(0) )
			return false;
		return true;
	}
	return control;
}

// VERIFICA CODICE FISCALE
function check_cf(what) {
	var cf = what.toUpperCase();
	var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
	if (!cfReg.test(cf))
		return false;
	var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	var s = 0;
	for( i = 1; i <= 13; i += 2 )
		s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	for( i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
		return false;
	else
		return true;
}

/*
// VERIFICA EMAIL
function isEmail(what)
{
	var i=new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	if(i.test(Trim(what))) { 
		return true;
	}
	else {
		return false;
	}
}
*/
// VERIFICA URL
function isUrl(what)
{
	var i=new RegExp("^(http(s?)\\://)?(www|[a-zA-Z0-9\\-])+\\.(([a-zA-Z0-9\\-])+\\.)?([a-zA-Z]{2,3})$");
	if(i.test(Trim(what))) { 
		return true;
	}
	else {
		return false;
	}
}

// VERIFICA TEL/FAX
function isTelFax(what)
{
	var s = " ";
	var i=new RegExp("^([0-9]{6,})$");
	what=what.replace(s,"");
	
	if(i.test(Trim(what))) { 
		return true;
	}
	else {
		return false;
	}
}

function split_str(string, sep) 
{
	var tmp = new Array(); 
	tmp = string.split(sep);
	return tmp;
}

function check_fiscal(value) {
	switch(value.length) {
		
		case 16:
			if (!check_cf(value)) {
				return false;
			}
			break;
		case 11:
			if (!check_iva(value)) {
				return false;
			}
			break;
		default:
			if (value.length > 0) {
				return false;
			}
			break;
	}
	return true;
}

function error_check_login(pwd_msg, check_pwd_msg, required, check, req_msg, bad_value_msg, privacy_msg) 
{
	var message = "";
	var req = split_str(required, '-');
	var chk = split_str(check, '-');
	f = document.getElementById("x3_subscribe");
	
	if ((f.mod.value == 1 && f.pwd.value.length == 0 && f.pwd_check.value.length == 0) || (isPwd(f.pwd.value) && isPwd(f.pwd_check.value) )) {
		if (f.pwd.value == f.pwd_check.value) {
		//	error_check_subscribe(required, check, req_msg, bad_value_msg);
			
			// check required
			for (i = 0; i < req.length; i++) {
				if (req[i] != "" && message == "") {
					eval("if (f." + req[i]  + ".value.length < 2) { message += '" + req_msg + "'\n\n; } ");
				}
			}
			
			if (f.strum1.value.length == 0 && message == "") {
				message += req_msg;
			}
			
			if (f.come.value.length == 0 && message == "") {
				message += req_msg;
			}
			else if (f.come.value == 'altro' && f.altro.value.length == 0 && message == "") {
				message += req_msg;
			}
			
			// check values
			for (ix = 0; ix < chk.length; ix++) {
				
				if (chk[ix] != "") {
					eval("tmp = f." + chk[ix] + ".value;");
					
					switch (chk[ix]) {
						case 'cf':
							if(!check_fiscal(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						case 'cfpiva':
							if(!check_fiscal(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						case 'age': 
							if (tmp.length > 0 && (!isNumeric(tmp) || tmp < 10 || tmp > 95)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						case 'fiscal_code':
							if(!check_fiscal(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						case 'zipcode': 
							if (tmp.length > 0 && !isNumber5(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						
						case 'phone': 
							if (tmp.length > 0 && !isTelFax(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						
						case 'mobile': 
							if (tmp.length > 0 && !isTelFax(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						
						case 'fax': 
							if (tmp.length > 0 && !isTelFax(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						
						case 'mail': 
							if (tmp.length > 0 && !isEmail(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						
						case 'url': 
							if (tmp.length > 0 && !isUrl(tmp)) {
								message += "\n\n'" + tmp + "' " + bad_value_msg;
							}
						break;
						
					}
				}
			}
		}
		else {
			message += check_pwd_msg;
		}
	}
	else {
		message += pwd_msg;
	}
	
	if(f.privacy.value != 1 && !f.privacy.checked) {
		message += "\n" + privacy_msg;
	}
	
	if (message.length > 0) {
		alert(message);
	}
	else {
		f.submit();
	}
}

