// COMMON JS CODE <!-- by Mind -->
var Win=navigator.userAgent.indexOf("Win")!=-1;	
var Mac=navigator.userAgent.indexOf("Mac")!=-1;
var InternetExplorer=navigator.userAgent.indexOf("MSIE")!=-1;
var	IE=((typeof document.all!="undefined") && (parseInt(navigator.appVersion)>=4))?1:0;
var Gecko=navigator.userAgent.indexOf("Gecko")!=-1;
var Safari=navigator.userAgent.indexOf("Safari")!=-1;
var Opera=navigator.userAgent.indexOf("Opera")!=-1;
var Konqueror=navigator.userAgent.indexOf("Konqueror")!=-1;

// contents globals
var contentsRootPath="/";
var contentsLangPath="/it/";
var contentsLanguage="IT";
var contentsVersion="standard";

// controllo per oggetto null o undefined
function isNull(v) 		{ return (typeof(v)=="undefined"||v==null); }

// get element by ID (with browser check)
function getObj(objID) 	{ return (!document.getElementById?null:document.getElementById(objID));	}

// show and hide DIV
function alternateShow(divObjToShow,divObjToHide) {
	if (!isNull(divObjToHide)&&!isNull(divObjToHide.style)) {		// hide
		divObjToHide.style.display="none";
		if (Opera)		divObjToHide.style.visibility="hidden";		// aggiro baco background menu di Opera
	}
	if (!isNull(divObjToShow)&&!isNull(divObjToShow.style)) {		// show
		divObjToShow.style.display="block";
		if (Opera)		divObjToShow.style.visibility="visible";	// aggiro baco background menu di Opera
	}
}

// show or hide a object
function switchBoxObj(obj,show)	{
	if (isNull(obj))	return;
	obj.style.display=(show?"block":"none");
	if (Opera)	obj.style.visibility=(show?"visible":"hidden");		// aggiro baco background menu di Opera
}

// check a object visibility
function isVisible(obj)	{ 	return (!isNull(obj)&&obj.style.display!="hidden"&&obj.style.display!="none");	}

// toggle a object
function toggleObj(obj)	{	switchBoxObj(obj,!isVisible(obj)); }

// add onload function (without reset previous)
function addToOnLoadEvent(funcToAdd) {
	var previousOnLoad = window.onload;
	if (typeof window.onload!="function") {	// onload not is function
		window.onload = funcToAdd;
	} else { 								// onload have previous function
		window.onload = function() { 
			try {
				if (!isNull(previousOnLoad)) 	previousOnLoad(); 	// chiamo funzione precedente
				funcToAdd();										// chiamo funzione passata
			} catch (e) { }
		} 
	} 
}

// add onunload function (without reset previous)
function addToOnUnLoadEvent(funcToAdd) { 
	var previousOnUnLoad = window.onunload; 
	if (typeof window.onunload!="function") {	// onunload not is function 
		window.onunload = funcToAdd;
	} else { 									// onunload have previous function
		window.onunload = function() {
			try { 
				if (!isNull(previousOnUnLoad)) 	previousOnUnLoad(); 	// chiamo funzione precedente
				funcToAdd();											// chiamo funzione passata
			} catch (e) { }
		}
	}
}
		
// legge un attributo di un oggetto
function getAtt(obj,attribute)	{
	if (isNull(obj)||attribute=="")	return null;
	var val=null;

	// eccezioni
	if (attribute=="className")		{
		val=getAtt(obj,"class");	// per la classe, tento entrambe le soluzioni
		if (!isNull(val))	return val;
	} else if (Opera||Konqueror)	{	// prima provo eval e poi getAttribute
		try {
			eval("val=obj."+attribute+";");
			if (isNull(val)&&!isNull(obj.getAttribute))	val=obj.getAttribute(attribute);
			if (!isNull(val))	return val;
		} catch (e) { val=null; }
	}
	// else, normal
	try {
		if (!isNull(obj.getAttribute))	val=obj.getAttribute(attribute);
		if (isNull(val))				eval("val=obj."+attribute+";");
	} catch (e) { val=null;	}

	return val;
}

// setto un attributo di un oggetto
function setAtt(obj,attribute,newValue)	{
	if (isNull(obj)||attribute=="")	return false;

	// eccezioni
	if (attribute=="className")			setAtt(obj,"class",newValue);	// per la classe, utilizzo un doppio attributo

	try {
		if (!isNull(obj.setAttribute))	obj.setAttribute(attribute,newValue);
		else							eval("obj."+attribute+"=newValue");
		return true;
	} catch (e) {
		return false;
	}
}

// scrollbar position
function getCurrentScrollPos() {
	var X=0,
		Y=0;
	try	{ 
		if (!isNull(self.pageYOffset)&&(self.pageXOffset>0||self.pageYOffset>0)) {
			X=self.pageXOffset;
			Y=self.pageYOffset;
		} else if (!isNull(document.documentElement) && !isNull(document.documentElement.scrollTop) && (document.documentElement.scrollTop>0||document.documentElement.scrollLeft>0)) {
			Y=document.documentElement.scrollTop;
			X=document.documentElement.scrollLeft;
		} else if (!isNull(document.body)&&(document.body.scrollTop>0||document.body.scrollLeft>0)) {
			Y=document.body.scrollTop;
			X=document.body.scrollLeft;
		}
	} catch (e) {	// fail
		X=0;
		Y=0;
	}
	return new Array(parseInt(X),parseInt(Y));	// 0=>width -- 1=>height
}

// page dimension
function getCurrentPageSize() {
	try	{
		// dimensioni finestra
		var browserX=0,
			browserY=0;
		if (!isNull(self.innerHeight) && self.innerHeight>0) {
			if (!isNull(document.documentElement.clientWidth))	browserX=parseInt(document.documentElement.clientWidth);
			else 												browserX=parseInt(self.innerWidth);
			browserY=self.innerHeight;
		} else if (!isNull(document.documentElement) && !isNull(document.documentElement.clientHeight) && document.documentElement.clientHeight>0) {
			browserX=parseInt(document.documentElement.clientWidth);
			browserY=parseInt(document.documentElement.clientHeight);
		} else if (!isNull(document.body)) {
			browserX=parseInt(document.body.clientWidth);
			browserY=parseInt(document.body.clientHeight);
		}

		// leggo le dimensioni effettive degli oggetti nella pagina (nel caso le dimensiomi degli oggetti siano inferiori alle dimensioni della finestra)
		var minX=0,
			minY=0;
		if (!isNull(window.scrollMaxY)&&!isNull(window.innerHeight)&&window.innerHeight>0)	{
			minX=parseInt(window.innerWidth+window.scrollMaxX);
			minY=parseInt(window.innerHeight+window.scrollMaxY);
		} else if (document.body.scrollHeight>document.body.offsetHeight&&document.body.scrollHeight>0)	{
			minX=parseInt(document.body.scrollWidth);
			minY=parseInt(document.body.scrollHeight);
		} else 	{
			minX=parseInt(document.body.offsetWidth);
			minY=parseInt(document.body.offsetHeight);
		}

		// dimensioni effettive pagina
		var pageX=browserX,
			pageY=browserY;
		if (pageX<minX)	pageX=minX;	
		if (pageY<minY)	pageY=minY;

		// out result
		return new Array(pageX,pageY,browserX,browserY);

	} catch (e) {
		return new Array(0,0,0,0);	// fail
	}
}

// ritorna il valore associato all'option corrente di un select
function getCurrentOption (selectObj)	{
	if (isNull(selectObj)||isNull(selectObj.options))	return "";
	return selectObj.options[selectObj.selectedIndex].value;
}

// ritorna il valore associato al radio button selezionato
function getCurrentRadioChecked (radioObj)	{
	if (isNull(radioObj)||radioObj.length<1)	return "";
	for (var i=0;i<radioObj.length;i++) {
		if (radioObj[i].checked)	return radioObj[i].value;	// found
	}
	return "";	// not found
}

// select: autosubmit
function autoSubmitSelect (selObj,emptyAlso)	{
	if (isNull(selObj))	return;
	var v=selObj[selObj.selectedIndex].value;
	if (v!=""||emptyAlso)	selObj.form.submit();
}

// update opener url
function updateOpener (url,newonerror,closeThisWin)	{
	if (!isNull(opener))	{
		opener.location=url;
		if (closeThisWin) opener.focus();
	} else if (newonerror) {
		window.open(url);
	}
	if (closeThisWin) self.close();
}

// open a custom windows (full parameters)
function customPopUp(url,x,y,name,param,focusOnPopUp,focusOnWindow)		{

	// dimensioni
	var winSize="";
	if (x>0)	winSize+="width="+x+",";
	if (y>0)	winSize+="height="+y+",";

	// new windows
	var siteWindowVar=window.open(url,name,winSize+"directories=no,"+param);

	if (!isNull(siteWindowVar)&&focusOnPopUp)	siteWindowVar.focus();	// popup in primo piano
	if (!isNull(siteWindowVar)&&focusOnWindow)	self.focus();			// finestra corrente in primo piano

	// il return serve per controllare eventuali popup bloccati o javascript non abilitato
	return (isNull(siteWindowVar));
}

// open popup
function openDocument(url,winSize,popname)		{
	// default popupsize
	if (winSize=="")	winSize="width=790,height=550";
	if (popname=="")	popname="docWin"+winSize;

	// open popup (le dimensioni le passo direttamente come parametri)
	return customPopUp(url,0,0,popname,"toolbar=yes,status=no,menubar=no,scrollbars=yes,resizable=yes,location=no,"+winSize,true,false);
}

// web popup (/lang/popup/)
function openWebPopUp(popUpPage,px,py,phidebar,pscroll,presize,useReturn)	{
	// open popup
	var poplink=contentsLangPath+"popup/"+popUpPage;
	var param="";

	if (phidebar)	param+="toolbar=no,status=no,menubar=no,location=no";
	else			param+="toolbar=yes,status=yes,menubar=yes,location=yes";
	if (pscroll)	param+=",scrollbars=yes";
	else			param+=",scrollbars=no";
	if (presize)	param+=",resizable=yes";
	else			param+=",resizable=no";

	var ret=customPopUp(poplink,px,py,"WPopWin"+px+"x"+py,param,true,false);
	if (useReturn)	return ret;
}

// flash template object (for object activation problem)
function flashObjectTemplate ()	{

	// base param
	this.params=new Array();
	this.alternate="";

	// aggiunge (o sovrascrive) un parametro
	this.addParam=function (key,val) {
		if (key=="")	return;
		this.params[key]=val;
	}

	// setta il codice alternativo
	this.setAlternate=function (contents) {
		this.alternate=contents;
	}

	// out HTML
	this.toHTML=function (objId,objName,movie,x,y,version,browser,directOutput) {
		if (movie=="")		return "";
		if (version=="")	version="7";

		// check browser
		if (browser=="jsauto")	{	// check browser dynamically
			browser="";
			if (Gecko)					browser="GECKO";
			else if (InternetExplorer)	browser="IE";
		}

		var useObject=(browser!="GECKO"&&browser!="NS");
		var useEmbed=(browser!="IE");
		var out="";

		if (useObject)	{ // use object
			out+="<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"";
			out+=" codebase=\"https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version="+version+",0,0,0\"";
			out+=" width="+x+" height="+y;
			if (objId!="")		out+=" id=\""+objId+"\"";
			if (objName!="")	out+=" name=\""+objName+"\"";
			out+=">\n<param name=\"movie\" value=\""+movie+"\"/>";

			// params
			for (var p in this.params)	out+="\n<param name=\""+p+"\" value=\""+this.params[p]+"\"/>";
		}

		// use embed
		if (useEmbed)	{
			out+="<embed width="+x+" height="+y+" pluginspage=\"https://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\"\n";
			if (objId!="")		out+=" id=\""+objId+"\"";
			if (objName!="")	out+=" name=\""+objName+"\"";
			out+=" src=\""+movie+"\"\n";

			// params
			for (var p in this.params)	out+=" "+p+"=\""+this.params[p]+"\"";
			out+="/>";
		}

		// alternate
		if (this.alternate!="")		out+="<noembed>\n"+this.alternate+"\n</noembed>";

		// close object
		if (useObject)	out+="</object>";

		// out code
		if (directOutput)	{	// direct output
			document.write(out);
			return "";
		} else {				// return output
			return out;
		}
	}
}

// switch UCI toolbar on/off
function openUciToolBar() {
	var theZone=getObj("UCIToolBarZone");
	var theFrame=getObj("UCIToolBarFrame");
	if (isNull(theZone)||isNull(theFrame))	return true;	// use href

	try {
		if (isVisible(theZone)) {	//	chiudo il box
			switchBoxObj(theZone,false);
		} else { 					// visualizzo il box e carico la pagina
			theFrame.style.height="160px";
			switchBoxObj(theZone,true);
			theFrame.src=contentsRootPath+"it/popup/unicredit.toolbar/";	// versione unica sotto IT
		}
	} catch (e) {
		return true;	// use href
	}
	return false;
}

// popup stato semaforo banca via internet
function statoIB()	{
	customPopUp(contentsLangPath+"popup/semaforo/",640,400,"statoBVI","toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,location=no",true,false);
}

