﻿/* -- Browser information --------------------- */
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

/* Common javascript funtionality */

function roundTo(decimalpositions)
{
    var i = this * Math.pow(10,decimalpositions);
    i = Math.round(i);
    return i / Math.pow(10,decimalpositions);
}
Number.prototype.roundTo = roundTo;

var mousex = mousey = 0;
function _setMousePosition(e) {
	if (!e) e = window.event;
	if (e) {
		mousex = Event.pointerX(e);
		mousey = Event.pointerY(e);
	}
}

function SV(v)
{
	var k;
	if(v==null)return "";
	if(!v.toString)return "";
	v=v.toString();
	v=v.replace(/&/g,"&amp;").replace(/"/g,"&quot;");
	for(k=0; k<32; k++)
		while(v.indexOf(String.fromCharCode(k))>=0)
			v=v.replace(String.fromCharCode(k),"&#"+k+";");
	return v;
}
function SH(v)
{
	if(v==null)return "";
	if(typeof(v)!="string")
	{
		if(!v.toString)return "";
		v=v.toString();
	}
	return v.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\n/g,"<br/>");
}
/* Pops up a new window in the middle of the screen */
function popupWindow(mypage, myname, w, h, scroll, tools) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+', width='+w+', top='+wint+', left='+winl+', scrollbars='+scroll+', toolbar='+tools+', resizable=1';
	if(tools == 1 && !Prototype.Browser.IE)
		winprops += ", menubar=1";
	win = window.open(mypage, myname, winprops)
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}
// LTrim(string) : Returns a copy of a string without leading spaces.
function ltrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(0)) != -1) {
      var j=0, i = s.length;
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;
      s = s.substring(j, i);
   }
   return s;
}

//RTrim(string) : Returns a copy of a string without trailing spaces.
function rtrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
      var i = s.length - 1;       // Get length of string
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      s = s.substring(0, i+1);
   }
   return s;
}

// Trim(string) : Returns a copy of a string without leading or trailing spaces
function trim(str) {
   return rtrim(ltrim(str));
}

function testKeyCode( evt, intKeyCode ) {
   if ( window.createPopup )
       return evt.keyCode == intKeyCode;
   else
       return evt.which == intKeyCode;
}
function cancelKeyEvent( evt ) {
   if ( window.preventDefault )
		evt.preventDefault();
   else
      evt.returnValue = false;
}
function onlyNumbers(evt) {
   var charCode = (evt.which) ? evt.which : evt.keyCode
   if (charCode > 31 && (charCode < 48 || charCode > 57))
      return false;
   return true;
}
function onlyMoney(evt)
{
   var charCode = (evt.which) ? evt.which : evt.keyCode
   if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode != 44 && charCode != 46))
      return false;
   return true;
}
function onlyDecimal(evt, allowNegative) {
   var charCode = (evt.which) ? evt.which : evt.keyCode
   if(allowNegative)
   {
	   if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode != 44 && charCode != 45 && charCode != 46))
		   return false;
	}
   else
   {
	   if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode != 44 && charCode != 46))
		   return false;
	}
   return true;
}
// init check
var SiteName = null;
var SiteHost = null;
function initCheck() {
	if(Element.getHeight('tdLayMid') < 400) $('tdLayMid').style.height = '400px';
}

function mouseIsInDiv(e, container) {
	Position.prepare();
	return Position.within($(container), Event.pointerX(e), Event.pointerY(e));
}
//
// Warnings tip
var WarningTitle = null;
function loadWarningsTip() {
	setTimeout('showWarningsTip()', 2500);
}
function showWarningsTip() {
	Lightview.show({ href: '#hiddenwarnings', rel: 'inline', title: WarningTitle, options: { autosize: true }})
	var tt = document.getElementsByClassName('lv_Title'); tt[0].style.color = '#828512';
	tt = document.getElementsByClassName('warnTitle');
	for(var x=0; x<tt.length; x++) {
		tt[x].style.backgroundColor = '#434542';
		tt[x].style.border = '1px solid #434542';
	}
	tt = document.getElementsByClassName('warnBody');
	for(var x=0; x<tt.length; x++) {
		tt[x].style.backgroundColor = '#F7F7F7';
		tt[x].style.border = '1px solid #434542';
	}
	setTimeout('hideWarningsTip()', 15000);
}
function hideWarningsTip() {
	Lightview.hide();
}
//

Object.extend(Event, {
	wheel:function (event){
		var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta) {
			delta = event.wheelDelta/120;
			if (window.opera) delta = -delta;
		} else if (event.detail) { delta = -event.detail/3;	}
		return Math.round(delta); //Safari Round
	}
});

function GetTextContent(o)
{
	if(o==null)return "";
	if(typeof(o.innerText)=="string")return o.innerText;
	if(typeof(o.textContent)=="string")return o.textContent;
	return "";
}
function isEmail(s)
{
	var rx;
	if(s==null)return false;
	if(typeof(s)!="string")return false;
	rx=new RegExp("^([a-z0-9_\\.\\-])+\\@(([a-z0-9\\-])+\\.)+([a-z0-9]{2,4})+$", "gi");
	return rx.test(s);
}
function isCodFisPartIVA(s)
{
	if((s!=null)&&(s=="-----------"))return true;
	return isCodFis(s)||isPartIVA(s);
}
function isCodFis(s)
{
	var S=0,i,A="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",B="ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ",P="ABCDEFGHIJKLMNOPQRSTUVWXYZ",D="BAKPLCQDREVOSFTGUHMINJWZYX",p;
	if(s==null)return false;
	if(typeof(s)!="string")s=s.toString();
	if(s.length!=16)return false;
	s=s.toUpperCase().replace(/\W/g,"");
	if(s.length!=16)return false;
	for(i=0;;i+=2)
	{
		if((p=A.indexOf(s.charAt(i)))<0)return false;
		S+=D.indexOf(B.charAt(p));
		if(i==14)break;
		if((p=A.indexOf(s.charAt(i+1)))<0)return false;
		S+=P.indexOf(B.charAt(p));
	}
	return (S%26)==(s.charCodeAt(15)-"A".charCodeAt(0));
}
function isPartIVA(s)
{
	var S=0,k,v;
	if(s==null)return false;
	if(typeof(s)!="string")s=s.toString();
	if(s.length!=11)return false;
	s=s.replace(/\D/g,"");
	if(s.length!=11)return false;
	for(k=0;k<9;k+=2)
	{
		S+=parseInt(s.charAt(k),10);
		if((v=2*parseInt(s.charAt(k+1),10))>9)
			v-=9;
		S+=v;
	}
	return ((10-(S%10))%10)==parseInt(s.charAt(10),10);
}
function openNewsLetter() {
	if(!$('newsLetterEmail')) return;
	var email = $F('newsLetterEmail').replace(/\s/g,"").toLowerCase();
	popupWindow("newsletter_iscrizione.aspx?e=" + escape(email), "newsletterIscrizione", 450, 400, 1, 0);
}
function toMoney(n)
{
	var s,n2,p;
	n2=Math.round(n*100)/100;
	s=(""+n2).replace(/\./g,",");
	p=s.lastIndexOf(",");
	if(p==0)
		s="0"+s;
	else if(p<0)
		s+=",00";
	else if(p==s.length-2)
		s+="0";
	return s;
}
function firstToUpper (word) {
	firstLetter = word.substring(1, 0);
	restOfWord = word.substring(1);
	return (firstLetter.toUpperCase()+restOfWord);
}
if(Prototype.Browser.IE)
{
	addEvent(window, 'load', function() {
		var el = document.getElementsByTagName("input");
		for (i=0;i<el.length;i++)
		{
			var type = el[i].getAttribute("type");
			if((type=="checkbox")||(type=="radio"))
				el[i].style.border = "none";
		}
	});
}

// Cookies functions
function createCookie(name,value,days) {
	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=/";
}
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;
}
function eraseCookie(name) {
	createCookie(name,"",-1);
}
function setTipOpacity(tipstyle, opacity) {
	var tt = document.getElementsByClassName('prototip');
	for(var t=0; t<tt.length; t++) {
		if($(tt[t]).innerHTML.indexOf(tipstyle) >= 0)
			$(tt[t]).setStyle({ opacity: opacity });
	}
}