﻿
/* Browser detect	*/
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();
function getO(Id)
{
	if(document.getElementById)return document.getElementById(Id);
	if(document.all)return document.all(Id);
	return null;
}
function getOByTag(Tag)
{
	if(document.all)return(document.all.tags(Tag.toUpperCase()));
	if(document.getElementsByTagName)return(document.getElementsByTagName(Tag.toUpperCase()));
	return(new Array());
}
function goIF(FrameName,Url)
{
	var w, isF;
	if(!(w=getO(FrameName)))if(window.frames)w=window.frames[FrameName];
	if(!w)return(false);
	if(w.location)w.location.href=Url;
	else if(w.navigate)w.navigate(Url);
	else if(w.src)w.src=Url;
	else if(w.tagName&&((w.tagName=="FRAME")||(w.tagName=="IFRAME")))w.src=Url;
	else return(false);
	return(true);
}
function writeMTNS(Pe,Po,t,c,Lno)
{
	var l=String.fromCharCode(60),g=String.fromCharCode(62);
	var PeS="",PoS="",P;
	for(k=Pe.length-1;k>=0;k--)
		PeS+=(PeS.length?".":"")+Pe[k];
	for(k=Po.length-1;k>=0;k--)
		PoS+=(PoS.length?".":"")+Po[k];
	P=PeS+String.fromCharCode(32*2)+PoS;
	if(!Lno)document.write(l+"a href=\"ma"+"ilto"+":"+P+"\""+(t?(" title=\""+t+"\""):"")+(c?(" class=\""+c+"\""):"")+g);
	document.write(P);
	if(!Lno)document.write(l+"/A"+g);
}
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/-/g, "\-");
	var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}
function checkSearchBox() {
	if(getO('basesearch').value.length == 0)
	{
		alert("Indicare il parametro da ricercare.");
		return false;
	}
	return true;
}
function getWindowWidth() {
	if(document.all)
		return document.body.offsetWidth;
	else
		return window.innerWidth;
}
function getWindowHeight() {
	if(document.all)
		return document.body.offsetHeight + document.body.scrollTop;
	else
		return window.innerHeight + window.pageYOffset;
}

function copy_clip(txt) {
	if(window.clipboardData)
		window.clipboardData.setData("Text", txt);
}
function paste_clip() {
	if(window.clipboardData)
		return window.clipboardData.getData("Text");
	return null;
}

function showCodes(codeid) {
	var elcode = getO(codeid);
	if(BrowserDetect.browser == "Explorer")
	{
		if(parseInt(BrowserDetect.version) < 7)
			elcode.style.display='';
		else
			elcode.style.display='block';
	}
	else { 
		elcode.style.display='table'; 
	}
	setCodesPosition(elcode);
	elcode.style.height = '80px';
	return false;
}
function hideCodes(codeid) {
	var elcode = getO(codeid);
	elcode.style.display = 'none';
}
function setCodesPosition(el) {
	var winl = (getWindowWidth() - 690) / 2;
	var wint = (getWindowHeight() - 50) / 2;
	el.style.top = wint + 'px';
	el.style.left = winl + 'px';
}
function CreateInput(type,id,XtraVals,name,createChecked)
{
	var I=null,k;
	if(type==null)type="text";
	if(document.all)
	{
		try
		{ I=document.createElement("<input type=\""+type+"\" "+((id==null)?"":(" id=\""+id+"\" "))+" "+((name==null)?"":(" name=\""+name+"\" "))+" "+(createChecked?(" checked=\"checked\" "):"")+" />"); }
		catch(e)
		{ I=null; }
	}
	if(!I)
	{
		I=document.createElement("input");
		I.type=type;
		if(id!=null)
			I.id=id;
		if(name!=null)
			I.name=name;
		if(createChecked)
			I.checked=true;
	}
	if(XtraVals!=null)
		for(k in XtraVals)
			I[k]=XtraVals[k];
	return I;
}

function GetTBody(tab)
{
	var i;
	for(i=0;i<tab.childNodes.length;i++)
		if(tab.childNodes[i].tagName&&(tab.childNodes[i].tagName.toLowerCase()=="tbody"))
			return tab.childNodes[i];
	return null;
}
function GetTHead(tab)
{
	var i;
	for(i=0;i<tab.childNodes.length;i++)
		if(tab.childNodes[i].tagName&&(tab.childNodes[i].tagName.toLowerCase()=="thead"))
			return tab.childNodes[i];
	return null;
}
function DateFromJson(s)
{
	var rx,sms,ds,dms;
	if(s==null)return null;
	if(typeof(s)=="object")
		switch(typeof(s.getFullYear))
		{
			case "object":
			case "function":
				return s;
		}
	if(!s.length)return null;
	rx=new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{7}[+\\-]\\d{2}:\\d{2}$");
	if(!rx.test(s))
		throw {message:"The string "+s+" can't be parsed as a string."};
	sms=parseFloat(s.substr(17,10));
	ds=Math.floor(sms);
	dms=Math.floor((sms-ds)*1000);
	return new Date
	(
		parseInt(s.substr(0,4),10), parseInt(s.substr(5,2),10)-1, parseInt(s.substr(8,2),10),
		parseInt(s.substr(11,2),10),parseInt(s.substr(14,2),10), ds, dms
	);
}
function DateToJson(d)
{
	var f=function(n){return ((n<10)?"0":"")+n.toString();};
	if(!d)return null;
	return d.getFullYear()+"-"+f(d.getMonth()+1)+"-"+f(d.getDate())+"T"+f(d.getHours())+":"+f(d.getMinutes())+":"+f(d.getSeconds())+"+00:00";
}
function DateToString(d,timeToo,secsToo)
{
	var s,i;
	if(d==null)return "";
	s=(((i=d.getDate())<10)?"0":"")+i+"/"+(((i=(1+d.getMonth()))<10)?"0":"")+i+"/"+d.getFullYear();
	if(timeToo)
		s+=" "+TimeToString(d,secsToo);
	return s;
}
function TimeToString(d, secsToo)
{
	if(d==null)return "";
	var s=(((i=d.getHours())<10)?"0":"")+i+":"+(((i=d.getMinutes())<10)?"0":"")+i;
	if(secsToo)
		s+=":"+(((i=d.getSeconds())<10)?"0":"")+i;
	return s;
}
function SameDate(d1,d2,timeToo)
{
	if((d1==null)&&(d2==null))return true;
	if((d1==null)||(d2==null))return false;
	if(!timeToo){d1=new Date(d1.getFullYear(),d1.getMonth(),d1.getDate());d2=new Date(d2.getFullYear(),d2.getMonth(),d2.getDate());}
	return d1.getTime()==d2.getTime();
}
function DaysSince(d1,d2)
{
	var n1,n2;
	if(!d1)return null;
	n1=new Date(d1.getFullYear(),d1.getMonth(),d1.getDate()).getTime();
	if(!d2)d2=new Date();
	n2=new Date(d2.getFullYear(),d2.getMonth(),d2.getDate()).getTime();
	return Math.round((n2-n1)/(1000*60*60*24));
}
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 SH(s)
{
	var o,k;
	if(s==null)return "";
	s=s.toString();
	if(!s.length)return "";
	o=document.createElement("div");
	s=s.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n");
	for(k=0;k<s.length;k++)
	{
		if(k)
			o.appendChild(document.createElement("br"));
		o.appendChild(document.createTextNode(s[k]));
	}
	return o.innerHTML;
}
function OpenCentered(url,width,height,name,fixedSize,notScrollable)
{
	var EXTRAHEIGHT_TOP=31, EXTRAHEIGHT_BOT=25,w,h,l,t;
	try
	{
		if(navigator.userAgent.toLowerCase().indexOf("opera")>=0)
			EXTRAHEIGHT_TOP=0;
	}
	catch(e){}
	w=Math.max(100, Math.min(width, screen.availWidth-50));
	h=Math.max(100, Math.min(height, screen.availHeight-55));
	l=Math.max(0, (screen.width-w)>>1);
	t=Math.max(0, (screen.height-h)>>1);
	h-=(EXTRAHEIGHT_TOP+EXTRAHEIGHT_BOT);
	if(navigator.userAgent.toLowerCase().indexOf("iphone")>=0)
		return window.open(url,((name==null)?"_blank":name),"channelmode=0,directories=0,fullscreen=1,location=0,menubar=0,resizable="+(fixedSize?"0":"1")+",scrollbars="+(notScrollable?"0":"1")+",status=1,toolbar=0");
	else
		return window.open(url,((name==null)?"_blank":name),"channelmode=0,directories=0,fullscreen=0,location=0,menubar=0,resizable="+(fixedSize?"0":"1")+",scrollbars="+(notScrollable?"0":"1")+",status=1,toolbar=0,left="+l+",top="+t+",width="+w+",height="+h);
}
function GetWinRect()
{
	var R={},D,B;
	D=document.documentElement;
	B=document.body;
	if(typeof(window.innerWidth)=="number")
	{
		R.Width=window.innerWidth;
		R.Height=window.innerHeight;
	}
	else if(D&&(typeof(D.clientWidth)=="number"))
	{
		R.Width=D.clientWidth;
		R.Height=D.clientHeight;
	}
	else if(B&&(typeof(B.clientWidth)=="number"))
	{
		R.Width=B.clientWidth;
		R.Height=B.clientHeight;
	}
	if(typeof(window.pageYOffset)=="number")
	{
		R.HScroll=window.pageXOffset;
		R.VScroll=window.pageYOffset;
	}
	else if(D&&(typeof(D.scrollLeft)=="number"))
	{
		R.HScroll=D.scrollLeft;
		R.VScroll=D.scrollTop;
	}
	else if(B&&(typeof(B.scrollLeft)=="number"))
	{
		R.HScroll=B.scrollLeft;
		R.VScroll=B.scrollTop;
	}
	R.Center=
	{
		X:R.HScroll+(R.Width>>1),
		Y:R.VScroll+(R.Height>>1)
	};
	return R;
}
