function createCookie(name,value,days,path) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path="+(path || '/');
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}


var $j = jQuery; //.noConflict();

var dl = document.location.toString(),
	AVTBasePath = dl.substr(0,dl.lastIndexOf('/',dl.lastIndexOf('/',dl.length-1)-1)+1),
	AVTStepPath = dl.replace(/AVT.*/,'AVT/Step/'),
	AVTlock = false,
	requestPage = null,
	AVTajax = true,
	timeOut = null,
	tOutMSec = 20000,
	retry = 2,
	AVTcookieDays = 7, //days
	saveCookie = true;

var steps = {
	'SceltaVieLA'	: 'LaVie/',
	'CopDSL'		: 'LaCopDSL/',
	'CopWHS'		: 'LaCopWHS/',
	'CopFibra'		: 'LaCopFibra/',
	'NoCop'			: 'LaNoCop/',
	'NumAppoggio'	: 'LnaNumAppoggio/',
	'SceltaVieLNA'	: 'LnaVie/',
	'CopWHS_LNA'	: 'LnaCopWHS/',
	'NoCop_LNA'		: 'LnaNoCop/',
	'NoTel_LNA'		: 'LnaNoTel/',
	'CopDSL_LNA'	: 'LnaCopDSL/',
	'Error'			: 'Error/',
	'Maintenance'	: 'Maintenance/',
	'Conf'			: 'Conf/'
}
function loading() {
	document.getElementById('AVTloading').style.display='';
}

/* cookie management */
var AVTCookiePath = '/AVT/',
	page = dl.substring(dl.lastIndexOf('/',dl.lastIndexOf('/')-1),dl.lastIndexOf('/')),
	queries = [];

if (saveCookie) $j(function(){
	var c = readCookie('q'+page),
		data = readCookie('d'+page);
	if (data) {
		var vals = data.split('&'),
			queries = c ? c.split(',') : [];
		(function(){
			$j(vals).each(function(){
				var v = this.split('=');
				if (v[0] != 'AVT_Sess') {
					var inp = $j('[name='+v[0]+']');
					if (inp.is('[type=radio]')) {
						inp.filter('[value="'+v[1]+'"]').attr('checked','checked');
					} else {
						inp.val( v[1] );
					}
				}	
			})
			if (queries.length) {
				var q = queries.shift();
				if (/Q_/.test(q) ) {
					AVT_Q(q, true, true, arguments.callee );
				}
			}
		})();
	}
})

function QueryCookie( url, serialized ) {
	var i = 0, q = [];
	while (queries[i] && queries[i]!=url) {
		q.push(queries[i++]);
	}
	q.push(url);
	queries = q;
	//strip AVT_Sess e Conf_NP
	serialized = unescape( serialized.replace(/&(AVT_Sess|oldSess|Conf_NP)=[^&]+/g,'') );
	createCookie('d'+page, serialized, AVTcookieDays, AVTCookiePath );
	createCookie('q'+page, queries.join(), AVTcookieDays, AVTCookiePath );
}

/* end cookie management */

function AVT_Q(queryPage, lock, cacheable, callback ) {
	AVTlock=lock;
	dA=document.AVTform;
	//back button fix
	if (dA.oldSess.value) {
		dA.AVT_Sess.value = dA.oldSess.value
		dA.oldSess.value = '';
	}
	requestPage=queryPage;
    dA.target='AVTrequest';
    dA.action=AVTStepPath+queryPage+'/';

	var serialized = $j(dA).serialize();
	if (saveCookie) QueryCookie( queryPage, serialized );

	if (AVTajax) {
    	$j.ajax({ 
			url:dA.action, data:serialized, type: 'POST',
			cache: (cacheable || false),
			success:function(html) {
				h = html.split('<!-- AVTReq -->')[1];
				var AVTResp = $j('#AVTResp');
				if (AVTResp.length) AVTResp.remove();
				$j('body').append("<div id='AVTResp' style='display:none'>"+h+"</div>");
				if (callback) callback();
			},
			timeout : tOutMSec,
			error : function() { 
				if (retry) { retry--; tOutMSec+=5000; AVT_Q(queryPage, lock, cacheable ); }
				else { goNextStep("Error"); }
			}		
		});
	} else {
		dA.submit();
		//Timeout per le richieste
		timeOut = setTimeout('goNextStep("Error")', 10000);
	}

	return false;
}
//Callback per le request
function processRequest(jsonResp) {
	clearTimeout(timeOut)
	if (self!=parent && parent.processRequest)
		return parent.processRequest(jsonResp)
	if (AVTajax) { requestDoc = document }
	else { requestDoc = frames['AVTrequest'].document };
	switch(requestPage) {
		case 'Q_Comuni':
		case 'Q_Prefissi':		
			document.getElementById(jsonResp['MoveTo']).innerHTML = requestDoc.getElementById(jsonResp['MoveFrom']).innerHTML;
			AVTlock=false;
			break;		
		default:
			dA=document.AVTform		
			//back button fix				
			if (!dA.oldSess.value)	dA.oldSess.value = dA.AVT_Sess.value;
        	dA.AVT_Sess.value = jsonResp['AVT_Sess'];
        	AVT_go(jsonResp['NextStep'])		
	}
}

function AVT_Chg_Prov() { AVT_Q('Q_Comuni', true, true) }
function AVT_Chg_Comuni() { AVT_Q('Q_Prefissi', true, true) }

function AVT_go(to) {
	dA=document.AVTform
  	dA.target='_self' 
    dA.action=AVTBasePath+steps[to]
	dA.submit()
	return false;
}
function goNextStep(to) {
	//in caso di errore o maintenance
	if (to == 'Error' || to == 'Maintenance')
		location.href = AVTBasePath+steps[to]
}

//* old functions *//
function selectValue(sel){return sel[sel.selectedIndex].value;}

function mytrim(pStr){
	tmp = "";
	charFound = false;
	for (i = 0; i < pStr.length; i++) {
		if (pStr.charAt(i) == ' ' && !charFound) continue;
		charFound = true;
		tmp += pStr.charAt(i);
	}
	for (i = tmp.length; i > 0; i--) {
		if (tmp.charAt(i-1) == ' ')	continue;
		break;
	}
	return tmp.substring(0,i);
}

var FWArc_02  = new Array("3654","8969","3652","3653","3651","3650","4540","4541","4542","4543","4544","4545","4546","4547","4548","4549");
var FWArc_010 = new Array("860","981","868","861");
var FWArc_011 = new Array("569","1970","1971","1952");
var FWArc_06  = new Array("4543","4540","4541","4542");

var FWNoArcPrefixes = new Array("0185", "0331", "0362", "039", "051", "0522", "081");

function Belongs2Arc(pNum, pArr) {
    for (i=0;i < pArr.length;i++) {
        var Radix = pNum.substring(0, pArr[i].length)
        if (Radix == pArr[i]) return true;
    }
    return false;
}

function AlreadyFWCustomer(pPrefix, pNumber) {
    if ( eval('typeof(FWArc_' + pPrefix + ') == "undefined"') ) return false;
    var tFunctionCall = 'Belongs2Arc(pNumber, FWArc_' + pPrefix + ')';
    return eval(tFunctionCall);
}

/* -- */
function errore(str) {
	alert(str);
	return false;
}
function erroreFocus(str, objfocus) {
	alert(str);
	if (objfocus) objfocus.focus();
	return false;
}
function AVT_Start_Chk() {
	dA = document.AVTform
	if (AVTlock==true) return false;

	var tAddressLen = dA.AVT_Address_str.value.length;
	var tAddress = new String(dA.AVT_Address_str.value);
	tCivico = parseInt(dA.AVT_ANumber_str.value);
	tPref = dA.AVT_Pref.value;
	tAddress = mytrim(tAddress);
    NoTel = dA.AVT_NoTel_checkbox.checked	
	
	if (dA.AVT_Prov.value == '')  
		return errore("Per proseguire e' necessario specificare la PROVINCIA.");
	if (dA.AVT_Comune.value == '')
		return errore("Per proseguire e' necessario selezionare il COMUNE.");
	if (dA.AVT_Address_str.value == '')
		return erroreFocus("Per proseguire e' necessario inserire l'INDIRIZZO su cui effettuare la verifica.", dA.AVT_Address_str);
	if (tAddress.indexOf(' ') != -1)
		return erroreFocus("Attenzione!\n\nInserisci l'indirizzo digitando la parola più significativa. Ad esempio: se ricerchi 'Via Santa Caterina da Siena' inserisci soltanto 'Caterina' oppure 'Siena'.\n\nInserisci il numero civico nel campo apposito.", dA.AVT_Address_str);
	if (tAddressLen < 2)
		return erroreFocus("Per effettuare la ricerca, il campo indirizzo va popolato con almeno 2 caratteri.", dA.AVT_Address_str);
	if (tCivico=='' || isNaN(tCivico))
		return erroreFocus("Per proseguire e' necessario inserire un numero civico.", dA.AVT_ANumber_str );

	if (NoTel == '') {
    	if (tPref == '-' || tPref == '' || dA.AVT_TNumber_str.value == '') {
    		return errore("Prima di proseguire è necessario inserire un numero di telefono o specificare di non avere una linea telefonica.")
    	} else if (isNaN(dA.AVT_TNumber_str.value)) {
			return erroreFocus('Il numero telefonico puo\' contenere unicamente cifre.', dA.AVT_TNumber_str);
    	} else if (AlreadyFWCustomer(tPref, dA.AVT_TNumber_str.value)) {
			return erroreFocus('Il numero inserito appartiene ad un arco di numerazione FASTWEB. Probabilmente siete gia\' clienti.', dA.AVT_TNumber_str);
		}
	}

    dA.AVT_ANumber_str.value=tCivico
    if (NoTel) dA.AVT_TNumber_str.value=''
    dA.AVT_NoTel.value=(NoTel?'on':'')
    loading()
	return AVT_Q('LA_Vie',false);
}

function mustBeChecked(obj) {
	found = false
	for (i=0; i<obj.length; i++)	
		found |= obj[i].checked
	if (!found)
		return errore("Prima di proseguire è necessario scegliere un'opzione.")
	return true
}
function AVT_SceltaVieLA_Chk() {
	if (!mustBeChecked(document.AVTform.AVT_vie_LA)) return false
    loading()
	return AVT_Q('LA_Tech',false)
}
function AVT_SceltaVieLNA_Chk() {
	if (!mustBeChecked(document.AVTform.AVT_vie_LNA)) return false
    loading()
	return AVT_Q('LNA_ULL',false)
}

function AVT_NumAppoggio_Chk() {
	dA = document.AVTform
	tPref = dA.AVT_NA_Pref.value
    NoTel = dA.AVT_NoTel_NA_checkbox.checked
		
	if (!NoTel) {
    	if (tPref == '-' || tPref == '' || dA.AVT_NA_TNumber_str.value == '') {
    		return errore("Prima di proseguire è necessario inserire un numero di telefono o specificare di non avere un numero di telefono.")
    	} else if (isNaN(dA.AVT_NA_TNumber_str.value)) {
			return erroreFocus('Il numero telefonico puo\' contenere unicamente cifre.', dA.AVT_NA_TNumber_str);
    	} else if (AlreadyFWCustomer(tPref, dA.AVT_NA_TNumber_str.value)) {
			return erroreFocus('Il numero inserito appartiene ad un arco di numerazione FASTWEB. Probabilmente siete gia\' clienti.', dA.AVT_NA_TNumber_str);
		}
	}

	dA.AVT_NoTel_NA.value=(NoTel?'on':'')
    if (NoTel) dA.AVT_NA_TNumber_str.value=''	
    loading()
	return AVT_Q('LNA_WS',false);	
}

function AVT_NoTel_chkbox() {
	document.getElementById('PhoneNumber_div').style.display=(document.AVTform.AVT_NoTel_checkbox.checked?'none':'');
}
function AVT_NoTel_NA_chkbox() {
	document.getElementById('PhoneNumberNA_div').style.display=(document.AVTform.AVT_NoTel_NA_checkbox.checked?'none':'');
}
//controllo di consistenza dello step iniziale in caso di tasto back
function AVT_Start_Consistenza() {
//	dA = document.AVTform
//	if (dA.AVT_Comune.length<2) dA.AVT_Prov.selectedIndex = 0;
//	AVT_NoTel_chkbox()
}

