/* fixed zeroFill 2009.03.24 */

function dump(q){
	// use "HTML" as optional argument
	var HTML=(arguments.length>1)?arguments[1]:"NOHTML";
	HTML=(HTML.toUpperCase()=="HTML")?true:false;
	var result="";
	if(HTML){
		var singleIndent="&nbsp; &nbsp; ";
		var aCapo="<br>";
	}else{
		var singleIndent="    ";
		var aCapo="\n";
	}
	function nav(){
		var t,i;
		var a=(arguments.length>0)?arguments[0]:q;
		var indent=(arguments.length>1)?arguments[1]:"";
		indent+=singleIndent;
		i=0;
		for(t in a){
			if( t!="var_dump" || ( OR(typeof a[t],["string","number","boolean","undefined"]) || a[t]===null ) ){
				result+=indent+"["+t+"]";
				switch(a[t]){
					case Number(a[t]):			result+=("{n} => "+a[t]);	break;
					case true:	case false:		result+=("{b} => "+a[t]);	break;
					case null:	case undefined:	result+=("{ } => "+a[t]);	break;
					case String(a[t]):
						if(HTML)a[t]=a[t].replace(/</g,"&#60;");
						result+=("{s} => "+a[t]);
					break;
					default:
						if(typeof a[t]=="function")result+=("{f} => Function ("+aCapo);
						else if(is.Array(a[t]))result+=("{a} => Array ("+aCapo)
						else result+=("{o} => Object ("+aCapo);
						nav(a[t],indent);
					break;
				}
				i++;
				if(i<a.length)result+=(",");
				result+=(aCapo);
			}
		}
		indent=indent.substring(0,indent.length-singleIndent.length);
		result+=(indent+")")
	}
	if(HTML)result+="<div style=\"display:block;font:10pt 'Courier New'\">";
	result+="Array ("+aCapo;
	nav(q);
	result+=";";
	if(HTML)result+="</div>";
	return result;
}
function AND(check,values){
	result=true;
	values.each(function(v){if(check!=v)result=false;});
	return result;
}
function NAND(check,values){
	var result=true;
	values.each(function(v){if(check==v)result=false;});
	return result;
}
function OR(check,values){
	var result=false;
	values.each(function(v){if(check==v)result=true;});
	return result;
}
function NOR(check,values){
	result=false;
	values.each(function(v){if(check!=v)result=true;});
	return result;
}

function byTag(tagName){
	return $A( ($(arguments[1])||document).getElementsByTagName(tagName) );
}
function byClass(className){
	return $A( ($(arguments[1])||document).getElementsByClassName(className) );
}

function wr(q){document.write(q)};
function ce(q){return document.createElement(q)};

Element.addMethods({
	byTag:function(element,q){return byTag(q,$(element))},
	byClass:function(element,q){return byClass(q,$(element))},
	setDimensions:function(element,dim){
		var d=[],element=$(element);
		if(is.Object(dim))for(t in dim)d.push(dim[t]);
		else d=$A(dim);
		$(element).style.width=parseInt(d[0])+"px";
		$(element).style.height=parseInt(d[1])+"px";
	}
}); 

var is = {
	// browser
	IE: Prototype.Browser.IE,
	Opera: Prototype.Browser.Opera,
	Safari: (navigator.userAgent.indexOf("Safari")!=-1),
	Win:(navigator.appVersion.toLowerCase().indexOf("win")!=-1),
	Mac:(navigator.userAgent.indexOf("Mac")!=-1),
	// objects
	Num    : function(q){ return (!isNaN(q)) ? (q.strip()!="") : false ; },
	Array  : function(q){ return (typeof q=="object") ? ( String(q).indexOf("[object")!=0 ) : false ; },
	Object : function(q){ return !is.Array(); },
	// validation
	Date:function(yyyy,mm,gg){
		function y2k(q){return(q<1000)?q+1900:q;}
		var today=new Date();
		yyyy = ((!yyyy) ? y2k(today.getFullYear()):yyyy)
		mm = ((!mm) ? today.getMonth():mm-1)
		if (!gg) return false
		var test = new Date(yyyy,mm,gg)
		if ((y2k(test.getFullYear()) == yyyy) && (mm == test.getMonth()) && (gg == test.getDate()) ){
			return true
		}else{
			return false
		}
	},
	Email  : function(q){ 
		if(typeof q!="string")return false;
		var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		return re.test(q);
	},
	Url    : function(q){
		if(typeof q!="string")return false;
		var re = /^[A-Za-z]+:\/\/[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$/;
		return re.test(q);
	},
	CreditCard : function(st) {
		// Encoding only works on cards with less than 19 digits
		if(typeof st!="string")return false;
		if (st.length > 19)return (false);
		var sum=0, mul=1, l=st.length;
		for (i = 0; i < l; i++) {
			var digit = st.substring(l-i-1,l-i);
			var tproduct = parseInt(digit ,10)*mul;
			sum += (tproduct >= 10) ? ((tproduct%10)+1) : tproduct ;
			mul += (mul == 1) ? 1 : -1 ;
		}
		return ((sum % 10)==0) ;
	},
	CodiceFiscale : function(q){
		var re = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
		return re.test(q);
	}
}

var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire);
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  del: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  isEnabled: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') === '1');
  }
};

Object.extend(String.prototype, {
	find: function(q){return this.indexOf(q) != - 1;},
	zeroFill:function(q){
		var s=String(this);
		if(this.length>=q)return s;
		for(var i=s.length;i<q;i++){
			s="0"+s;
		}
		return s;
	},
	timestamp2date:function(q){
		q=this.replace(/\D/g,"");
		return new Date(q.substr(0,4),q.substr(4,2)-1,q.substr(6,2),q.substr(8,2),q.substr(10,2),q.substr(12,2));
	},
	fileext:function(){
		var s = this;
		if(s.indexOf("?")!=-1)s=s.substr(0,s.indexOf("?"));
		if(s.indexOf("#")!=-1)s=s.substr(0,s.indexOf("#"));
		return (s.lastIndexOf(".")!=-1) ? s.substring(s.lastIndexOf(".")+1,s.length) : s ;
	},
	filename:function(){
		var s = this;
		if(s.indexOf("?")!=-1)s=s.substr(0,s.indexOf("?"));
		if(s.indexOf("#")!=-1)s=s.substr(0,s.indexOf("#"));
		return (s.lastIndexOf("/")!=-1) ? s.substring(s.lastIndexOf("/")+1,s.length) : s ;
	}
});

Object.extend(Number.prototype, {
	prev: function(){return this - 1;},
	zeroFill:function(q){
		var s=String(this);
		if(s.length>=q)return s;
		for(var i=s.length;i<q;i++)s="0"+s;
		return s;
	},
	timestamp2date:function(){
		q=this.replace(/\D/g,"");
		return new Date(q.substr(0,4),q.substr(4,2)-1,q.substr(6,2),q.substr(8,2),q.substr(10,2),q.substr(12,2));
	}
});

Object.extend(Math,{
	baseConvert:function(n,b1,b2){return parseInt(String(n),b1).toString(b2).toUpperCase();},
	gra2rad:function(G){return G*Math.PI/180;},
	rad2gra:function(R){return R*180/Math.PI;}
});

Object.extend(Form,{
	submit:function(form){
		form=$(form);
		if(form.onsubmit!=null){
			switch(form.onsubmit()){
				case true:case undefined:form.submit();
			}
		}else form.submit();
	}
});

Object.extend(Position,{
	setLeft:function(element,left){
		$(element).style.left=parseInt(left)+"px";
	},
	setTop:function(element,top){
		$(element).style.top=parseInt(top)+"px";
	},
	setMidLeft:function(element,left){
		$(element).style.left=(parseInt(left)-Element.getDimensions(element).width/2)+"px";
	},
	setMidTop:function(element,top){
		$(element).style.top=(parseInt(top)-Element.getDimensions(element).height/2)+"px";
	},
	set:function(element,pos){
		element=$(element);
		if(OR(Element.getStyle(element,'position'),["absolute","relative"])){
			pos=$A(pos);
			Position.setLeft(element,pos[0]);
			Position.setTop(element,pos[1]);
		}
	},
	setMid:function(element,pos){
		element=$(element);
		if(OR(element.style.position,["absolute","relative"])){
			pos=$A(pos);
			var dim=element.getDimensions();
			Position.setLeft(element,pos[0]-dim.width/2);
			Position.setTop(element,pos[1]-dim.height/2);
		}
	},
	get:function(element){
		element=$(element);
		if(OR(element.style.position,["absolute","relative"])){
			return [element.style.left,element.style.top];
		}else{
			return Position.cumulativeOffset(element);
		}
	},
	getMid:function(element){
		element=$(element);
		var pos,dim=Element.getDimensions(element);
		if(OR(element.style.position,["absolute","relative"])){
			pos=[element.style.left,element.style.top];
		}else{
			pos=Position.cumulativeOffset(element);
		}
		return [pos[0]+dim.width/2,pos[1]+dim.height/2];
	}
});

Object.extend(window,{
	getScroll:function(){
		var x,y;
		if( typeof( window.pageYOffset ) == 'number' ) {
			//Netscape compliant
			y = window.pageYOffset;
			x = window.pageXOffset;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			//DOM compliant
			y = document.body.scrollTop;
			x = document.body.scrollLeft;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			//IE6 standards compliant mode
			y = document.documentElement.scrollTop;
			x = document.documentElement.scrollLeft;
		}
		return [x,y];	
	},
	getDimensions:function(){
		var w,h;
		if (typeof window.innerWidth!="undefined"){
			w = window.innerWidth;
			h = window.innerHeight;
		}else if (document.documentElement && typeof document.documentElement.clientWidth!="undefined" && document.documentElement.clientWidth!=0){
			w = document.documentElement.clientWidth
			h = document.documentElement.clientHeight
		}else if (document.body && typeof document.body.clientWidth!="undefined"){
		    w = document.body.clientWidth
		    h = document.body.clientHeight
		}
		return {width:w,height:h};
	},
	pop:function(){
		// pop ( href [,target] [,x] [,y] [,"maximized"] [,"fullscreen"] [,"nocenter"] [,"scroll"] [,"return"] )
		// eg: pop('http://www.google.com',400,300,'myTarget','scroll')
		if(arguments.length>0){
			_url=arguments[0];
			var x,y,o,_target="",_params=[],center=true,maximized=false,fullscreen=false,scroll=false,returnObj=false;
			if(!document.all || (document.all && navigator.userAgent.indexOf("Mac")!=-1) ){
				for(i=1;i<arguments.length;i++){
					if(arguments[i]=="fullscreen"){
						arguments[i]="maximized";
						break;
					}
				}
			}
			if(arguments.length>1){
				for(i=1;i<arguments.length;i++){
					if(isNaN(arguments[i])){
						switch(arguments[i]){
							case"nocenter":
								center=false;
							break;
							case"scroll":
								scroll=true;
							break;
							case"maximized":
								maximized=true;
								_params[_params.length]="left=0";
								_params[_params.length]="top=0";
								_params[_params.length]="width="+(screen.width-6);
								_params[_params.length]="height="+(screen.height-26);
							break;
							case"fullscreen":
								fullscreen=true;
								_params[_params.length]="fullscreen=yes";
							break;
							case"return":
								returnObj=true;
							break;
							default:
								_target=arguments[i];
							break;
						}
					}
				}
				if(!fullscreen && !window[_target])_params[_params.length]="scrollbars="+((scroll)?"yes":"no");
				if(!maximized && !fullscreen &&  !window[_target]){
					for(i=1;i<arguments.length;i++){
						if(!isNaN(arguments[i]) && !maximized){
							if(x==undefined){
								x=arguments[i];
								_params[_params.length]="width="+x;
							}else{
								y=arguments[i];
								_params[_params.length]="height="+y;
							}
						}
					}
					if(center && !window[_target]){
						_params[_params.length]="left="+((screen.width-x)/2);
						_params[_params.length]="top="+((screen.height-y)/2);
					}
				}
			}
			o=window.open(_url,_target,_params.join(","));
			if(o==undefined)alert("L'apertura della finestra è stata bloccata");
			if(returnObj)return o;
		}
	}
});

Object.extend(Date.prototype,{
	toTimestamp:function(){
		var Y=this.getFullYear();
		var m=(this.getMonth()+1).zeroFill(2);
		var d=(this.getDate()).zeroFill(2);
		var H=(this.getHours()).zeroFill(2);
		var i=(this.getMinutes()).zeroFill(2);
		var s=(this.getSeconds()).zeroFill(2);
		return ""+Y+m+d+H+i+s;
	}
});

$_GET=location.href.toQueryParams();
$_SERVER={PHP_SELF:location.pathname};


