(function(){
		
function debug(err){
	if (PARAGRAPHS_DEBUG) console.log(err);
}
function getLocalizedString(key){
	try {
		var ret=localizedStrings[key];
		if (ret===undefined) ret=key;
		return ret;
	} catch(err){ return key; }
}

var PARAGRAPHS_DEBUG=true;
var localized={
	en: {
		"Devi compilare i seguenti campi":"You've to fill the following fields",
		"Mail non valida": "The email is not valid",
		"Devi scegliere almeno uno tra settore, cliente e categoria":"You have to provide at least one criterion among sector, client or category"
	}
}
var localizedStrings=localized[window.siteLang]||{};

window.addEvent("domready",function(){
	/* for the menu, clientsArea panels and the language switcher */
	try {
		$$("#nav-global ul.level-0 >li, #clientsArea ul >li, #nav-meta > ul >li, .shareBlock >ul >li").each(function(el){
			var myFx, list = el.getElement('.descendants.level-1');
			if (!list) { return; }
			list.setStyle("display","block");
			myFx = new Fx.Slide(list, {
				duration: 300,
				wrapper: new Element("div", {
					"class": "slideWrapper"
				}).wraps(list)
			}).hide();
			el.addEvents({
				'mouseenter': function(){
					myFx.cancel();
					myFx.slideIn();
					el.addClass("open");
				},
				'mouseleave': function(){
					myFx.cancel();
					myFx.slideOut();
					el.removeClass("open");
				}
			});
		});
	} catch(err){
		debug(err);
	}
		
	/* for flash objects */
	try {
		$$(".flashObj").each(function(el){
			var	url=el.get("data-flashurl"), width=el.get("data-width"), height=el.get("data-height"),
				vars=el.get("data-vars"), params=el.get("data-params")
			;
			if (vars){
				try {
					vars = JSON.decode(vars);
				} catch(e){
					vars=null;
				}	
			}
			if (params){
				try {
					params = JSON.decode(params);
				} catch(e){
					params=null;
				}	
			}
			swfobject.embedSWF(url, el.get("id"), width, height,"9.0.0","expressInstall.swf",vars,params);
		});
	} catch(err){
		debug(err);
	}
	
	try {
		$$(".ajaxPager").addEvent("click",function(e){
			e.preventDefault();e.stopPropagation();
			var ajaxPager=$$(this), ajaxUrl=ajaxPager.get("href"), searchFor=ajaxPager.get("data-search-results")[0];
			ajaxRequest=new Request.HTML({
				url: ajaxUrl,
				evalScripts: false,
				onSuccess: function(tree){
					var hasNext=false;
					$$(tree).each(function(el){
						var res=el.getElement(searchFor);
						if (res) res.getChildren().each(function(el){
							$$(searchFor).grab(el);
						});
						var remoteAjaxPager=el.getElement(".ajaxPager");
						if (remoteAjaxPager){
							ajaxPager.set("href", remoteAjaxPager.get("href")
							).set("html",remoteAjaxPager.get("html"));
							hasNext=true;
						}
					});
					if (!hasNext) ajaxPager.hide();
				}
			}).send();
			return false;
		});
	} catch(err){
		debug(err);
	}
		
	/* for js input placeholders */
	try {
		var jsPlaceHolderHandler=function(){
			var placeholder=$(this).get("placeholder");
			if (this.value==placeholder) this.value="";
			else if (this.value=="") this.value=placeholder;
		};
		$$(".jsInputPlaceholder").each(function(el){
			if (el.placeholder) return; //supported
			el.set("value",el.get("placeholder"));
			el.addEvents({
				focus: jsPlaceHolderHandler, blur: jsPlaceHolderHandler
			});
		});
	} catch(err){
		debug(err);
	}


	/* for el selects */
	try {
			$$(".styledSelect").each(function(el){
				new elSelect({container:el});
			});
	} catch(err){
		debug(err);
	}
	
	/* form submit handlers */
	try {
		function formSubmitCheckConditions(e){
			var formValues=$$(this).toQueryString();
			if (!formValues) return false;
			formValues=formValues[0].parseQueryString();
			if (!formValues) return false;
			var conds=$(this).get("data-submit-conditions"), pass=true;
			try {
				conds=JSON.decode(conds);
			} catch (err) {
				conds=null;
			}
			if (conds){
				conds.each(function(v){
					var orResult=false, paramList, n;
					if (v["params-or"]){
						paramList=v["params-or"].split(",");
					} else if(v["param"]){
						paramList=[v["param"]];
					}
					for(n=0;n<paramList.length;n++){
						if (v.condition=="!=") orResult|=(formValues[paramList[n]]!=v.value);
						else if(v.condition=="==") orResult|=(formValues[paramList[n]]==v.value);
					}
					if (paramList.length > 0) {
						pass &= orResult;
						if (!orResult) alert(getLocalizedString(v.errmsg));
					}
				});
			}
			return (pass?true:false);
		}
		$$("form[data-submit-conditions]").addEvent("submit",formSubmitCheckConditions);
	} catch(err){
		debug(err);
	}
		
	/* for stage carousels */
	try {
		var needResizeEvent=false, resizeHandler=function(){
				var docWidth=$(document).getSize();
				return $$(".stageCarousel .holder ul li").setStyle("width",docWidth.x);			
		};
		resizeHandler().each(function(el){
			var img=el.getElement("img");
			if (img){
				needResizeEvent=true;
				$(img).setStyle("visibility","hidden")
					.getParent()
					.setStyle("background","transparent url("+$(img).get("src")+") no-repeat center top")
				;
			}			
		});
		if (needResizeEvent){
			$(window).addEvent("resize",resizeHandler);
		}
	} catch(err){
		debug(err);	
	}
	
	/*try {
		$$(".tabsWrapper").each(function(el){
			var tabNdx=0, res=window.location.hash.match(/tab(\d+)/);
			if (res && res[1]) tabNdx=res[1];
			var mT=new MooTabs(el.getElements(".tabs"), el.getElements(".contents"), {
				duration: 0, autoPlay:false, startIndex: tabNdx
			});	
			mT.addEvent("change",function(tab){ window.location.hash=tab.get("class").replace(/\s.*$/,""); })
		});
	} catch(err){
		debug(err);	
	}*/
	
	try {
		$$(".reloadCaptcha").addEvent("click",function(e){
			var token=(Math.random()+"").substr(2), $this=$$(this), imgUrl;
			$this.getPrevious("input[name=captchaToken]").set("value",token);
			imgUrl=$this.getPrevious(".captchaImg").get("src");
			if (!imgUrl[0]) return true;
			$this.getPrevious(".captchaImg").set("src", imgUrl[0].replace(/\?token=.*$/, "?token=" + token));
			e.preventDefault();
			return false;
		});
	} catch(err){
		debug(err);
	}

	/* for forms with fancy labels and input fields */	
	try {
	    $$("label.inlined + .input-text").each(function(el) {
		    el.addEvent("focus",function () {
		    	$$(this).getPrevious("label.inlined").addClass("focus");
		    });
		     
		    el.addEvent("keypress",function () {
		    	$$(this).getPrevious("label.inlined").setStyle('visibility','hidden'); //IE7 FIX
		    	$$(this).getPrevious("label.inlined").addClass("has-text").removeClass("focus");
		    });
		     
		    el.addEvent("blur",function () {
		    	if($$(this).get("value") == "") {
		    		$$(this).getPrevious("label.inlined").removeClass("has-text").removeClass("focus");
		    		$$(this).getPrevious("label.inlined").setStyle('visibility','visible'); //IE7 FIX
		    	}
		    });
    	});
	    
	    $$("label.inlined + .input-textarea").each(function(el) {
	    	el.addEvent("keypress",function () {
		    	$$(this).getPrevious("label.inlined").setStyle('visibility','hidden'); //IE7 FIX
		    });
	    	el.addEvent("blur",function () {
		    	if($$(this).get("text") == "") {
		    		$$(this).getPrevious("label.inlined").setStyle('visibility','visible'); //IE7 FIX
		    	}
		    });
	    });
	    
	} catch(err){
		debug(err);
	}
	
	try {
		$$('head').grab(
			new Element("script",{
					type: "text/javascript",
					src: "http://s7.addthis.com/js/250/addthis_widget.js#domready=1"
			})
		);
	} catch(err){
		debug(err);
	}
});

window.addEvent("load",function(){
	/* for image, teaser and stage carousels */
	try {
		$$(".imageCarouselSlider, .teaserCarouselSlider, .stageCarousel").each(function(el){
			var isCircle=!$(el).hasClass("teaserCarouselSlider");
			new slideGallery(el, {
				steps: 1,
				mode: isCircle?"circle":"line",
				autoplay: $(el).hasClass("stageCarousel") && $$("body>.mgnlMainbar").length==0,
				duration: 6000,
				paging: !isCircle
			})
		});
	} catch(err){
		debug(err);	
	}

	/* for image and teaser scroller */
	try {
		$$(".imageCarouselScroller, .teaserCarouselScroller").each(function(el){
			var size=0;
			el.getElements(".holder li").each(function(li){ size+=li.getComputedSize({styles: ['padding','border','margin']}).totalWidth; });
			if (size>0) el.getElement(".holder ul").setStyle("width",size);
			new UvumiScrollbar(el.getElement(".holder"));
		})
	} catch(err){
		debug(err);
	}
	/* for tag clouds */
	try {
		if (typeof(TagCanvas) != "undefined") {
			TagCanvas.weight = true;
			TagCanvas.freezeActive = false;
			TagCanvas.hideTags = true;
			TagCanvas.weightFrom = "data-weight";
			TagCanvas.textColour = "#8e8e8e";
			TagCanvas.initial=[0.2,-0.1];
		}
		$$(".tagCloud canvas").each(function(el){
			try {
				var cId = el.get("id"), tmpsize = el.getSize();
				el.setProperties({
					width: tmpsize.x,
					height: tmpsize.y
				});
				TagCanvas.Start(cId, cId + "-data");
			} catch(err){
				el.hide();
				debug(err);
			}
		});
	} catch(err){
		debug(err);
	}

	/* for sibilingsNavTab sliders */
	try {
		$$(".siblingsNavTab").each(function(el){
			var steps=el.get("data-slidestep") || 3;
			new slideGallery(el, { steps: steps, mode: "normal" })
		});
	} catch(err){
		debug(err);	
	}
	
	/* change parent bg (used in foryou) */
	try {
		var jsLinkMouseEnterParentBgChanger=function(e){
			var p=this, bg, found=false;
			do {
				p=$(p).getParent();
				if (!p || $(p).hasClass("jsLinkHoverParentBgChanger")) break;
				bg=$(p).getStyle("background-image");
				if (bg) found=bg.match(/^url\(['"]?(.+)\.(\w+?)['"]?\)/);				
			} while(!found);
			if (found){
				if (found[1].search(/_a$/) == -1) {
					$(p).setStyle("background-image", "url("+found[1] + "_a." + found[2]+")");
				}
			}			
		}, jsLinkMouseLeaveParentBgChanger=function(){
			var p=this, bg, found=false;
			do {
				p=$(p).getParent();
				if (!p || $(p).hasClass("jsLinkHoverParentBgChanger")) break;
				bg=$(p).getStyle("background-image");
				if (bg) found=bg.match(/^url\(['"]?(.+)_a\.(\w+?)['"]?\)/);				
			} while(!found);
			if (found){
				$(p).setStyle("background-image", "url("+found[1] +"."+ found[2]+")");
			}			
		};
		$$(".jsLinkHoverParentBgChanger a")
			.addEvent("mouseenter",jsLinkMouseEnterParentBgChanger)
			.addEvent("mouseleave",jsLinkMouseLeaveParentBgChanger);	
	} catch(err){
		debug(err);
	}
	
	/* change link images in extras areas on hover */
	try {
		var mouseEnterLinkImage=function(){
			var src=$(this).get("src"), found;
			if (src){
				found=src.match(/(.+)\.(\w+?)$/);
				if (found && found[1].search(/_a$/) == -1){
					$(this).set("src",found[1]+"_a."+found[2]);
				}
			}
		}, mouseLeaveLinkImage=function(){
			var src=$(this).get("src"), found;
			if (src){
				found=src.match(/(.+)_a\.(\w+?)$/);
				if (found){
					$(this).set("src",found[1]+"."+found[2]);
				}
			}
		};
		$$(".imageHasRollover")
			.addEvent("mouseenter",mouseEnterLinkImage)
			.addEvent("mouseleave",mouseLeaveLinkImage);
	} catch(err){
		debug(err);
	}
	
	try {
		var adminUnpackStageSlider=function(){
			$("stage").setStyle("height","auto")
				.getElements(".holder").setStyle("height","auto")
				.getElements("ul>li").each(function(el){ el.setStyle("float","none"); });
		}
		$$(".adminUnpackStageSlider").addEvent("click",adminUnpackStageSlider);
		if ($$("body>.mgnlMainbar").length!=0){
			$$("#stage .teaserImageLink").setStyle("top","20px");
		}
	} catch(err){
		debug(err);
	}
	
	try {
		var faqSlides=[];
		function toggleFaq(e){
			if (toggleFaq._lockFn) return;
			toggleFaq._lockFn=true;
			var ndx=$(this).getElement(".list-box-link").get("href").match(/-(\d+)$/,"");
			if (!ndx) return;
			faqSlides[ndx[1]].toggle().chain(function(){
				toggleFaq._lockFn=false;
			});
			if($(this).hasClass("open")){
				$(this).removeClass("open");
			} else {
				$(this).addClass("open");
			}
		};
		$$(".faq-list .list-box .list-item").each(function(el,ndx){
			faqSlides[ndx]=new Fx.Slide(el).hide();
			el.setStyle("display","block");
		});
		$$(".faq-list ul >li").addEvent("click",toggleFaq); 
	} catch(err){
		debug(err);
	}

	/* for fancy input fields pre-compiled by the browser */
	try {
		setTimeout(function(){
			$$("label.inlined + .input-text").each(function(el) {
				if (el.get("value")!="") el.getPrevious().addClass("has-text");
			});
		},500);
	} catch(err){
		debug(err);
	}
	
	try {
		$$(".elSelect .optionsContainer").getFirst(".option").dispose();
	} catch(err){
		debug(err);
	}
	
	try {
		if (Browser.ie){
			$$(".limit100pct").each(function(el){
				if (el.getSize().x>el.getParent().getSize().x){ el.setStyles({width: "100%"}); }	
			});
		}
	} catch(err){ debug(err); }
	
	try {
		$$(".contactus-box form").addEvent("submit",function(e){
			var $form=$(this), valid=true, errors=[], errStr="";
			$form.getElements(".required").each(function(el){
				if ($(el).get("value").length == 0) {
					valid = false;
					errors.push($(el).get("name"));
				}
			});
			var mail=$form.getElement(".validate.input-email");
			if (mail){
				var REX=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
				if (! REX.test( $(mail).get("value") ) ){
					errStr+=getLocalizedString("Mail non valida");
					valid=false;
				}
			}
			if (!valid) {
				e.preventDefault();
				if (errors.length > 0) {
					errStr += "\n"+getLocalizedString("Devi compilare i seguenti campi")+":\n" + errors.join("\n");
				}
				alert(errStr);
				return false;
			}
		})
	} catch(err){ debug(err); }
});

})();

