function trim(stringa){    while (stringa.substring(0,1) == ' '){        stringa = stringa.substring(1, stringa.length);    }    while (stringa.substring(stringa.length-1, stringa.length) == ' '){        stringa = stringa.substring(0,stringa.length-1);    }    return stringa;}

//-------------------------------------------------
//
//	Thread.js
//
//	Funzioni per admin e view dei post
//
//-------------------------------------------------



function TogglePanel(vElementId, vAnimate){
	
	var objElement = $(vElementId);

	var duration = 0;

	if(vAnimate){
		duration  = 1.0;
	}

	
	Effect.toggle(objElement, 'slide', { duration: duration });
	
	return false;
}

function ToggleAdminPanel(vLinkElementId, vElementId){

	//alert("primo " + vLinkElementId);
	//alert("secondo " + vElementId);	
	
	var objElement = $(vElementId);
	var objLinkElement = $(vLinkElementId);

	//alert(objElement);
	//alert(objLinkElement);	


	var duration = 1.0;

	if(!objElement.hasClassName("closedPanel")){
		objLinkElement.update('[open]');
		Effect.SlideUp(objElement, { duration: duration, 
						afterFinish: function(e){
							objElement.addClassName("closedPanel");
						} 
					}
				);
	}else{
		objLinkElement.update('[close]');
		Effect.SlideDown(objElement, { duration: duration, 
						beforeStart: function(e){
							objElement.setStyle({display: 'none'});
							objElement.removeClassName("closedPanel");
						} 
					}
				);
	}
	return false;
}


//-------------------------------------------------------------------
//
//	Visualizzazione dello pseudo-percorso a sinistra del titolo
//
//-------------------------------------------------------------------
function SetPathTitle(vThreadDetailsPathWrapper,vCurrentUrl){
	//alert(vThreadDetailsPathWrapper)
	var strCurrentUrl = vCurrentUrl;
        
        var upone;
        var lineLabel;
        var lineUrl;
                
        var uptwo;
        var sublineLabel;
        var sublineUrl;
        
    	var startNode;
    	startNodes = $$('#firstMenu a[href="' + strCurrentUrl + '"]');
    
	//mi torna il valore corrente tipo  Brutale 1078
	/*var s = '';    	
	for(var i=0; i<startNodes.length; i++){
		s += startNodes[i].innerHTML + '/';
	}
	alert(s);*/     
    
    
    
     	if(startNodes.length > 0){
     		//alert(startNodes.length)     		
                upone = startNodes[startNodes.length - 1].ancestors()[2].firstDescendant();
		//alert(upone)     
		//lineLabel = upone.innerHTML.replace(/\(.*?\)/,'');
		//alert(lineLabel)           
		
		//qui tira fuori Brutale
                uptwo = upone.ancestors()[2].firstDescendant();
                uptwo = upone.ancestors()[2].firstDescendant();                
	//alert(uptwo)
		lineLabel = uptwo.innerHTML.replace(/\(.*?\)/,'');
                lineUrl = uptwo.href;
	//alert("vis1 " + lineLabel)
		 $(vThreadDetailsPathWrapper).insert(lineLabel)
	//alert("fatto insert")
		//qui fare il cambio della class body per lo sfondo se Brutale o F4
		//alert("fa inner " + $(vThreadDetailsPathWrapper).innerHTML);
		//alert("fa inner21 " +$('threadDetailsPath').innerHTML);						
		//alert("fa qui " + $('threadDetailsPath'));

		if (trim($$('#threadDetailsPath a')[0].title.toUpperCase())=="BRUTALE") {
		  className="moodbrutale";
		  element =$('mood');      
		  element.addClassName(className);		  
		} else if (trim($$('#threadDetailsPath a')[0].title.toUpperCase())=="F4") {
		  className="moodf4";
		  element =$('mood');      
		  element.addClassName(className);		  		
		} else {
		  className="mood1";
		  element =$('mood');      
		  element.addClassName(className);		  				
		}
				
		/*alert("fa a title " + $$('#threadDetailsPath a')[0].title);		
		alert("fa a " + $('threadDetailsPath a').title);				
		alert("fa a inner " + $$('#threadDetailsPath a').innerHTML);*/

		sublineLabel = upone.innerHTML.replace(/\(.*?\)/,'');
               	sublineUrl = upone.href;
               	//qui crea sorta di titlebar
		/*alert("qui" + sublineLabel)
                var line = new Element('a', { href: lineUrl, title: lineLabel }).update(lineLabel);
                $(vThreadDetailsPathWrapper).insert(line);
                $(vThreadDetailsPathWrapper).insert('&nbsp;&nbsp;');

		var subline = new Element('a', { href: sublineUrl, title: sublineLabel }).update(sublineLabel);
                $(vThreadDetailsPathWrapper).insert(subline);
                $(vThreadDetailsPathWrapper).insert('&nbsp;&nbsp;');*/
            }
}


//-------------------------------------------------------------------
//
//	Visualizzazione dello pseudo-percorso a sinistra del titolo
//
//-------------------------------------------------------------------
function SetPathTitleDano(vThreadDetailsPathWrapper,vCurrentUrl){
  try {
	var strCurrentUrl = vCurrentUrl;
        
        var upone;
        var lineLabel;
        var lineUrl;
                
        var uptwo;
        var sublineLabel;
        var sublineUrl;
        
    	var startNode;
    	startNodes = $$('#firstMenu a[href="' + strCurrentUrl + '"]');
    	
	//mi torna il valore corrente tipo  Brutale 1078
	/*var s = '';    	
	for(var i=0; i<startNodes.length; i++){
		s += startNodes[i].innerHTML + '/';
	}
	alert(s);*/     
    
    	//alert(startNodes.length);
    
     	if(startNodes.length > 0){
     		//alert(startNodes.length)     		
     		//alert(startNodes[startNodes.length - 1].innerHTML)
     		//alert(startNodes[startNodes.length - 1].ancestors().innerHTML)     		
                upone = startNodes[startNodes.length - 1].ancestors()[2].firstDescendant();
		//alert("upone" + upone)     
		//lineLabel = upone.innerHTML.replace(/\(.*?\)/,'');
		//alert(lineLabel)           
		
		//qui tira fuori Brutale
                uptwo = upone.ancestors()[2].firstDescendant();
                //uptwo = upone.ancestors()[2].firstDescendant();                
	//alert(uptwo)
		lineLabel = uptwo.innerHTML.replace(/\(.*?\)/,'');
                lineUrl = uptwo.href;
	//alert("vis1 " + lineLabel)
		//alert(lineLabel.indexOf("ul_level0"));
		if (lineLabel.indexOf("ul_level0")>-1) {		//mi trovo nel primo livello quindi non visualizzo breadbar	
			return false;
		}
	
	
		 $(vThreadDetailsPathWrapper).insert(lineLabel)
	//alert("fatto insert")
		//qui fare il cambio della class body per lo sfondo se Brutale o F4
		//alert("fa inner " + $(vThreadDetailsPathWrapper).innerHTML);
		//alert("fa inner21 " +$('threadDetailsPath').innerHTML);						
		//alert("fa qui " + $('threadDetailsPath'));
	
		//alert(trim($$('#threadDetailsPath a')[0].title.toUpperCase()));	
		
		if (trim($$('#threadDetailsPath a')[0].title.toUpperCase())=="BRUTALE") {
		  className="moodbrutale";
		  element =$('mood');      
		  element.addClassName(className);		  
		} else if (trim($$('#threadDetailsPath a')[0].title.toUpperCase())=="F4") {
		  className="moodf4";
		  element =$('mood');      
		  element.addClassName(className);		  		
		} else {
		  className="mood1";
		  element =$('mood');      
		  element.addClassName(className);		  				
		}
				
		/*alert("fa a title " + $$('#threadDetailsPath a')[0].title);		
		alert("fa a " + $('threadDetailsPath a').title);				
		alert("fa a inner " + $$('#threadDetailsPath a').innerHTML);*/

		sublineLabel = upone.innerHTML.replace(/\(.*?\)/,'');
               	sublineUrl = upone.href;
               	//qui crea sorta di titlebar
		/*alert("qui" + sublineLabel)
                var line = new Element('a', { href: lineUrl, title: lineLabel }).update(lineLabel);
                $(vThreadDetailsPathWrapper).insert(line);
                $(vThreadDetailsPathWrapper).insert('&nbsp;&nbsp;');

                //var line = new Element('h1', { class: 'threadDetailsTitle'}).update(lineLabel);
                // $(vThreadDetailsPathWrapper).insert('<h1 class="threadDetailsTitle">'+lineLabel+'</h1>');


		var subline = new Element('a', { href: sublineUrl, title: sublineLabel }).update(sublineLabel);
                $(vThreadDetailsPathWrapper).insert(subline);
                $(vThreadDetailsPathWrapper).insert('&nbsp;&nbsp;');*/
            }
  } catch(e){}            
}


//-------------------------------------------------
//
//	Geatione del meta Categories
//
//	Visualizzazione ad albero delle categorie 
//	utilizzate come menu
//
//	Visualizzazione flat delle categorie 
//	escluse dal menu
//
//-------------------------------------------------

//-----------------------------------------------------------------------------
//
//	Legge la struttura <ul><li>... del menu dal div firstMenu.
//
//	Scorre ricorsivamente la struttura <ul><li>..., inserisce le relative 
//	checkbox nel div (usedCategories).
//
//	Inserisce nel div (unusedCategories) le category non utilizzate nel menu.
//
//-----------------------------------------------------------------------------
function InitCategoriesTool(){
	var strCurrentMenuStructureHiddenDivName = 'firstMenu';
	var strCurrentMenuCheckboxListDivName = 'usedCategories';
	var strUnusedCategoriesCheckboxListDivName = 'unusedCategories';
	var strCurrentMenuStructureUrl = '/it/interface/menu-structure';
	
//alert(strCurrentMenuStructureUrl)	
	
	var objCurrentMenu;
	var objCurrentMenuDiv;
	var objCurrentMenuCheckboxesDiv;
	var objUnusedCategoriesCheckboxesDiv;
	
	//questo array viene popolato al interno della funzione RecurseUl
	var arrUsedCategories = new Array();

	//RIMPIAZZO I MIEI DIV PER IL MENU
	danotext=($(strCurrentMenuStructureHiddenDivName).innerHTML).replace(/<\/div>/gi,'');
	danotext=(danotext).replace(/<div class="mega small open" style="display: none;">/gi,''); 
	danotext=(danotext).replace(/<h2>/gi,'');
	danotext=(danotext).replace(/<h3>/gi,'');	        			
	danotext=(danotext).replace(/<h4>/gi,'');	        				        			
	danotext=(danotext).replace(/<\/h4>/gi,'');	        				        				        			
	danotext=(danotext).replace(/<\/h3>/gi,'');	        			
	danotext=(danotext).replace(/<\/h2>/gi,'');	        			
	danotext=(danotext).replace(/id="nav"/gi,' ');	
	//alert(danotext);	        			
	$(strCurrentMenuStructureHiddenDivName).innerHTML=danotext;
	
//alert("fatta la sostituzione")		

	//div firstMenu, contenente il menu completo
	objCurrentMenuDiv = $(strCurrentMenuStructureHiddenDivName);
	
//alert(objCurrentMenuDiv.innerHTML);	

	
	//div che conterrà le checkbox relative al menu corrente
	objCurrentMenuCheckboxesDiv = $(strCurrentMenuCheckboxListDivName);
	
//alert(objCurrentMenuCheckboxesDiv.innerHTML)	

	//div che conterrà le checkbox non utilizzate come menu
	objUnusedCategoriesCheckboxesDiv = $(strUnusedCategoriesCheckboxListDivName);

//alert(objUnusedCategoriesCheckboxesDiv.innerHTML);
	
	
	objCurrentMenu = objCurrentMenuDiv.firstDescendant();
	
//alert("" + objCurrentMenu);
	
	RecurseUl(objCurrentMenu, objCurrentMenuCheckboxesDiv, arrUsedCategories, 0);
	
	
	//rimpimento del availableCategoriesRoot
	var arrAvailableCategories;  //tutte le categorie disponibili
	var arrUnsusedCategories;  //tutte le categorie già utilizzate
        	
	//inizializzo array delle categorie disponibili con il risultato della 
	//macro ^GetMetaPossibleValues
	arrAvailableCategories = [{id:"11",text:"HOME"},{id:"12",text:"F4"},{id:"13",text:"BRUTALE"},{id:"14",text:"MV STORE"},{id:"15",text:"NEWS"},{id:"16",text:"COMPANY"},{id:"17",text:"FACTORY CLUB"},{id:"18",text:"MV WORLD"},{id:"19",text:"Museo Virtuale"},{id:"20",text:"F4 1078 RR 312 MY '09"},{id:"21",text:"BRUTALE 990R MY 2010"},{id:"22",text:"BRUTALE 1090RR MY 2010"},{id:"23",text:"Azienda"},{id:"24",text:"Storia"},{id:"25",text:"Il gruppo"},{id:"26",text:"Competizioni"},{id:"27",text:"Rete MV Agusta"},{id:"28",text:"Iscrizione a visita aziendale"},{id:"29",text:"Visita aziendale"},{id:"30",text:"Rete di vendita"},{id:"31",text:"CRC"},{id:"32",text:"MV Agusta corse"},{id:"33",text:"Factory Club"},{id:"34",text:"Raduni 2005"},{id:"35",text:"Raduni 2006"},{id:"36",text:"Raduni 2007"},{id:"37",text:"Iscrizioni"},{id:"38",text:"Accessories"},{id:"39",text:"More about F4"},{id:"40",text:"Piloti"},{id:"41",text:"Abbigliamento"},{id:"42",text:"Special parts"},{id:"43",text:"Video"},{id:"44",text:"Audio"},{id:"45",text:"Comunicati"},{id:"46",text:"BRUTALE 989R MY'09"},{id:"47",text:"BRUTALE 1078RR MY'09"},{id:"48",text:"CRC"},{id:"49",text:"FACTORY CLUB"},{id:"50",text:"Raduni Passati"},{id:"51",text:"Premi e Gare"},{id:"52",text:"Primati"},{id:"53",text:"F4 MY 2010"},{id:"54",text:"Iscrizione al Factory Club"},{id:"55",text:"Moto da corsa"},{id:"56",text:"Moto da strada"},{id:"57",text:"Test Ride"}];
	        	
//alert("aa" + arrAvailableCategories)        	
        	
	//se non ci sono categorie già utilizzate nella struttura del menu, 
	//unusedCategories = availableCategories
	
	if(arrUsedCategories.size() > 0){
		//ottengo le categorie non utilizzate rimuovendo le Used Categories 
  		//dal array arrAvailableCategories
  		arrUnsusedCategories = ArrayWithout(arrAvailableCategories, arrUsedCategories);
  	}else{
  		arrUnsusedCategories = arrAvailableCategories.clone();
  	}

  	arrUnsusedCategories.each(function(item){
  		var strItemText;
  		var strItemId;
  		var strMetaId;
  		var objUnusedDiv = objUnusedCategoriesCheckboxesDiv;
  		
  		
  		strItemText = item.text;
  		strItemId = item.id;
  		strMetaId = 'metadata_F_e9MF3pE-hg7tKA_jwLOA';
  		
//alert(strMetaId)

  		AddCategoryItem(strItemId, strMetaId, strItemText, 0, objUnusedDiv, false);
  		
  	});
  	
  	objUnusedCategoriesCheckboxesDiv.appendChild(new Element('div', { 'class': 'clear'}));
	
  	//checka le categorie selezionate
  	CheckSelectedCategories();
  	
  	//aggiorna la combo frontPage
	updateFrontPageCombo();

	//aggiorna la combo sub menu
	updateSubMenuCombo();
	
	
	//aggiorna la combo relatedMenu		NON PRESENTE IN MVAGUSTA
	/*try {
		updateRelatedMenu();
	} catch(e){}*/

	
	//Aggancia evento click di ogni checkbox category
	$$("div.CategoryItem input").each(function(cb){
		cb.observe("click",function(){	
			updateFrontPageCombo();
			updateSubMenuCombo();
		});
	});
  	
  	//seleziona valori correnti dei meta utilizzati in editing
  	$$('#cbFrontPage option[value="' + frontPageCategory + '"]')[0].selected=true;
//  	$$('#cbRelatedMenu option[value="' + relatedMenu + '"]')[0].selected=true; 
  	$$('#cbSubMenu option[value="' + subMenuForCategory + '"]')[0].selected=true;  
  	//alert("fatti tutti updater")	
}


function RecurseUl(vUlNode, vCkbNode, vArrNodeList, vLevel){
	var arrLiNodes;
 	var strMetaId = 'metadata_F_e9MF3pE-hg7tKA_jwLOA';
 	var intIndentStep = 20;
 
 
  	//li figli del vUlNode corrente  
  	arrLiNodes = vUlNode.childElements();
  
  	//controllo che vUlNode abbia almeno un figlio (li)
  	if(arrLiNodes.length > 0){
    
    		//variabili per inizializzazione dei nodi Tree
    		var strText;  
		var strId;
		
	  	var objSubMenu;  //eventuali sottonodo ul del li corrente
	  	
	  	//prototype elements per il popolamento del elenco delle categories
		var objInput;
		var objLabel;
		var objDivContainer;
	  
	  
		var i;
	  
	  	//ciclo tutti gli li figli di vUlNode
	  	arrLiNodes.each(function(objMenuItem, index){
            
        		strText = objMenuItem.firstDescendant().firstChild.nodeValue;
        		strId = objMenuItem.id.replace('metaCategory_', '');
        		
        
        		
        		AddCategoryItem(strId, strMetaId, strText, vLevel, vCkbNode, true);
        
                	
                	
        		
        		//inserisco il text di ogni nodo nel array vArrNodeList, i suo elementi 
        		//verranno eliminati dal elenco dei nodi disponibili prima del 
        		//popolamento del treePanel availableCategories
        		vArrNodeList[vArrNodeList.size()] = {id:strId,text:strText};
        		
        		//ogni li ha almeno un sottonodo a con il link se ha più di un sottonodo 
		        //.length > 1 significa che il secondo è un ul
		        if(vLevel < 2 && objMenuItem.childElements().length > 1){
		        	//ricorsione sul UL
		          	objSubMenu = objMenuItem.childElements()[1];
		          
		          	RecurseUl(objSubMenu, vCkbNode, vArrNodeList, vLevel + 1);
		        }
		        
		        
		        
        		
        		
    		});
	}
	
}

function AddCategoryItem(v_strItemId, v_strMetaId, v_strItemText, v_intLevel, vContainer, vLevelizeItemClass){

	var intLevelIndent = 1;
	var strId = v_strItemId;
	var strMetaId = v_strMetaId;
	var strText = v_strItemText;
	var strItemStyleClass = 'CategoryItem';
	var strHtmlTagId = 'metaCategory_' + strId;
	var intIndentStep = 20;
	

	
	var objDivContainer;
	var objInput;
	var objLabel;
	
	
	intLevelIndent += v_intLevel;
	
	
	if(vLevelizeItemClass == true){
		strItemStyleClass += ' CategoryItemLevel' + intLevelIndent;
	}
	
	
	//inizializzo il div contenitore della coppia checkbox/label per la voce di menu corrente
	objDivContainer = new Element('div', 
		{ 'class': strItemStyleClass,
		'style': 'padding-left:' + (intLevelIndent * intIndentStep)  + 'px'});
                	
                	
	//checkbox
        objInput = new Element('input', 
		{ 'type': 'checkbox', 
		'value': strId, 
		'id': strHtmlTagId, 
		'name': strMetaId });
                	
	//label della checkbox	
	objLabel = new Element('label', 
		{ 'for': strHtmlTagId }).update(strText);
		
	//inserisco elemento (div contenitore) dentro il div predisposto (vCkbNode)
	objDivContainer.appendChild(objInput);
	objDivContainer.appendChild(objLabel);
	vContainer.appendChild(objDivContainer);
	
	
}

//-------------------------------------------------------
//
//	restituisce vArray - vWithout
//
//-------------------------------------------------------
function ArrayWithout(vArray, vWithout){
	var arrResult = new Array;
    	var blnFound;
  
  
	//tutte le categorie disponibili  
	vArray.each(function(item){
		blnFound = false;
	
		//categorie già utilizzate
		vWithout.each(function(toRemove){
		    
		    	//alert(toRemove.id);
			if(item.id == toRemove.id){
				blnFound = true;
			}
		
		});
	
		//dategorie disponibili non ancora utilizzate
		if(!blnFound){
		    arrResult[arrResult.size()] = item;
		}
	});
	
	return arrResult;
}

//-------------------------------------------------------
//
//	Aggiorna la combo con la categorie selezionate
//
//-------------------------------------------------------
function updateFrontPageCombo(){
	//old value
	var oldValue=$F('cbFrontPage');
	
	//alert("oldvalueUpdateFrontPageCombo " +  oldValue)	


	$$('#cbFrontPage option').each(function(opt){opt.remove()});
	var opt = new Element('option',{value: '', style: 'font-style:italic; color: #555555'});
	opt.insert('&lt;&lt;None&gt;&gt;');
	$('cbFrontPage').options.add(opt);
	$$("div.CategoryItem input").each(function(cb){
		if (cb.checked){
			var opt = new Element('option',{value: cb.readAttribute("value")});
			opt.insert(cb.parentNode.childElements()[1].innerHTML);
			if (oldValue==cb.getValue()) opt.selected=true;
			$('cbFrontPage').options.add(opt);
		}
	});	
}


//-------------------------------------------------------
//
//	Aggiorna la combo con le categorie di primo livello
//
//-------------------------------------------------------
function updateRelatedMenu(){

	var opt = new Element('option',{value: '', style: 'font-style:italic; color: #555555'});
	opt.insert('&lt;&lt;None&gt;&gt;');
	
	$('cbRelatedMenu').options.add(opt);
	
	$$("div.CategoryItemLevel1 input").each(function(cb){
		var opt = new Element('option',{value: cb.readAttribute("value")});
		opt.insert(cb.parentNode.childElements()[1].innerHTML);
		$('cbRelatedMenu').options.add(opt);
		
	});	

}
//---------------------------------------------------------------------------------------------
//
//	Combo sub-menu
//
//---------------------------------------------------------------------------------------------
function updateSubMenuCombo(){
	//old value
	var oldValue=$F('cbSubMenu');
	$$('#cbSubMenu option').each(function(opt){opt.remove()});
	var opt = new Element('option',{value: '', style: 'font-style:italic; color: #555555'});
	opt.insert('&lt;&lt;None&gt;&gt;');
	$('cbSubMenu').options.add(opt);
	$$("div.CategoryItemLevel3 input").each(function(cb){
		if (cb.checked){
			var opt = new Element('option',{value: cb.readAttribute("value")});
			opt.insert(cb.parentNode.childElements()[1].innerHTML);
			if (oldValue==cb.getValue()) opt.selected=true;
			$('cbSubMenu').options.add(opt);
		}
	});	
	
	$$("div.CategoryItemLevel2 input").each(function(cb){
		if (cb.checked){
			var opt = new Element('option',{value: cb.readAttribute("value")});
			opt.insert(cb.parentNode.childElements()[1].innerHTML);
			if (oldValue==cb.getValue()) opt.selected=true;
			$('cbSubMenu').options.add(opt);
		}
	});		
	$$("div.CategoryItemLevel1 input").each(function(cb){
		if (cb.checked){
			var opt = new Element('option',{value: cb.readAttribute("value")});
			opt.insert(cb.parentNode.childElements()[1].innerHTML);
			if (oldValue==cb.getValue()) opt.selected=true;
			$('cbSubMenu').options.add(opt);
		}
	});			
}