//-------------------------------------------------
//
//	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){
	
	var objElement = $(vElementId);
	var objLinkElement = $(vLinkElementId);

	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){
	var strCurrentUrl = vCurrentUrl;

        var upone;
        var lineLabel;
        var lineUrl;

        var uptwo;
        var sublineLabel;
        var sublineUrl;

    	var startNode;
        //startNodes = $$('#firstMenu .ul_level2 a[href="' + strCurrentUrl + '"]');
        startNodes = $$('#secondMenu .ul_level2 a[href="' + strCurrentUrl + '"]');

     	if(startNodes.length > 0){
	        upone = startNodes[startNodes.length - 1].ancestors()[2].firstDescendant();
	        uptwo = upone.ancestors()[2].firstDescendant();
	
		lineLabel = uptwo.innerHTML.replace(/\(.*?\)/,'');
	        lineUrl = uptwo.href;
	
		sublineLabel = upone.innerHTML.replace(/\(.*?\)/,'');
	       	sublineUrl = upone.href;
	
	        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;');
	}
}



//-------------------------------------------------
//
//	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 strCurrentMenuStructureHiddenDivName = 'secondMenu';
	var strCurrentMenuCheckboxListDivName = 'usedCategories';
	var strUnusedCategoriesCheckboxListDivName = 'unusedCategories';
	var strCurrentMenuStructureUrl = '/it/interface/menu-structure';
    var objCurrentMenu;
	var objCurrentMenuDiv;
	var objCurrentMenuCheckboxesDiv;
	var objUnusedCategoriesCheckboxesDiv;
	
	//questo array viene popolato al interno della funzione RecurseUl
	var arrUsedCategories = new Array();
			
	//div firstMenu, contenente il menu completo
	objCurrentMenuDiv = $(strCurrentMenuStructureHiddenDivName);
	
	//div che conterrà le checkbox relative al menu corrente
	objCurrentMenuCheckboxesDiv = $(strCurrentMenuCheckboxListDivName);
	
	//div che conterrà le checkbox non utilizzate come menu
	objUnusedCategoriesCheckboxesDiv = $(strUnusedCategoriesCheckboxListDivName);
	
	
	objCurrentMenu = objCurrentMenuDiv.firstDescendant();


	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:"70",text:"iphone"},{id:"69",text:"documenti"},{id:"68",text:"branding"},{id:"67",text:"yixing"},{id:"66",text:"progetti"},{id:"65",text:"interfacce"},{id:"64",text:"community"},{id:"63",text:"news"},{id:"62",text:"libri"},{id:"61",text:"stampa"},{id:"60",text:"fumetti"},{id:"59",text:"riviste"},{id:"58",text:"brochure"},{id:"57",text:"cross media"},{id:"56",text:"monografie"},{id:"55",text:"naming"},{id:"54",text:"blog"},{id:"53",text:"software"},{id:"52",text:"seo"},{id:"51",text:"e-business"},{id:"50",text:"online ad"},{id:"49",text:"territorio"},{id:"48",text:"infanzia"},{id:"47",text:"web marketing"},{id:"46",text:"trasporti"},{id:"45",text:"abbigliamento"},{id:"44",text:"ambiente"},{id:"43",text:"arredamento"},{id:"42",text:"assicurazioni"},{id:"41",text:"auto/moto"},{id:"40",text:"educazione"},{id:"39",text:"sport"},{id:"38",text:"editoria"},{id:"37",text:"finanza"},{id:"36",text:"edilizia"},{id:"35",text:"alimentazione"},{id:"34",text:"tecnologia"},{id:"33",text:"industria"},{id:"32",text:"manifatture"},{id:"31",text:"nautica"},{id:"30",text:"salute"},{id:"29",text:"servizi"},{id:"28",text:"spettacolo"},{id:"27",text:"fotografia"},{id:"26",text:"turismo"},{id:"25",text:"design"},{id:"24",text:"corporate id"},{id:"23",text:"logo design"},{id:"22",text:"multimedia"},{id:"21",text:"b2b"},{id:"20",text:"video"},{id:"19",text:"radio"},{id:"18",text:"web 2.0"},{id:"17",text:"concorsi"},{id:"16",text:"eventi"},{id:"15",text:"e-commerce"},{id:"14",text:"giochi"},{id:"13",text:"advertising"},{id:"12",text:"print"},{id:"11",text:"web"},{id:"10",text:"studio"}]
        	
	//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_' + 'H6IYGzx4wvo4bF9U5RGUFA';

  		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
		updateRelatedMenu();
		
	//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;
  	  		//	B2C
  		
  		//if ($$('#cbFrontPage option[value="' + frontPageCategoryB2C + '"]')[0] != undefined){
  		//	$$('#cbFrontPage option[value="' + frontPageCategoryB2C + '"]')[0].selected=true;
  		//}
  		//$('frontPageB2B').writeAttribute('value',frontPageCategoryB2B);
  		if ($$('#cbRelatedMenu option[value="' + relatedMenu + '"]')[0] != undefined)
	  		$$('#cbRelatedMenu option[value="' + relatedMenu + '"]')[0].selected=true;
  	  	
  	if ($$('#cbSubMenu option[value="' + subMenuForCategory + '"]')[0] != undefined){
  		$$('#cbSubMenu option[value="' + subMenuForCategory + '"]')[0].selected=true;  	
  	}
}


function RecurseUl(vUlNode, vCkbNode, vArrNodeList, vLevel){
	var arrLiNodes;
 	var strMetaId = 'metadata_' + 'H6IYGzx4wvo4bF9U5RGUFA';
 	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_', '');
//alert(strId);
        		

        		
        		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');
	$$('#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);
	$$("#usedCategories 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);
		}
	});	
}
*/

//-------------------------------------------------------
//
//	Inizializza la combo a seleziona multipla utilizzata
//	per la gestione della FrontPageCategory.
//
//	
//
//-------------------------------------------------------
function InitFrontPageMultiSelect(v_strWhereToRender, v_strInitValuesId, v_strPossibleValuesPath, v_strMetaName){


	//
	//namespace dedicato alla gestione della FrontPageCategory
	//dove inserisco gli oggetti globali utilizzati da diverse funzioni
	//
	Ext.namespace('Ext.frontpage');
	
	//variabili globali
	Ext.frontpage.WhereToRender = v_strWhereToRender;	//id del div dentro il quale renderizzare il controllo multiselect
	Ext.frontpage.PossibleValuesPath = v_strPossibleValuesPath;	//percorso degli elementi da ciclare per popolare la combo
	Ext.frontpage.InitValues = v_strInitValuesId;	//id del campo da cui leggere i valori selezionati nella combo multiselect (diverso per B2C e B2B)
	Ext.frontpage.MetaName = v_strMetaName;	//nome del campo con cui postare i valori selezionati per il salvataggio (diverso per B2C e B2B)
	Ext.frontpage.FrontPageRecordType = null;
	Ext.frontpage.DataStore = null;	//store con i possible values della combo multiselect
      	
      	//creo lo store che conterrà elenco delle categorie disponibili
      	Ext.frontpage.DataStore = new Ext.data.SimpleStore({
        	fields: ['id', 'name']
      	});
      	Ext.frontpage.FrontPageRecordType = Ext.data.Record.create(Ext.frontpage.DataStore.recordType);
      	
      	//Riempio lo store leggendo le categorie selezionate
	getFrontPageStoreData();
	
	//
	//creo il componente Multiselect
      	//
      	
      	//costruttore
      	Ext.frontpage.StateMultiSelect = function(config) {
      		//custom configs
      		//	none
      		
      		//richiamo il costruttore della classe base
        	Ext.frontpage.StateMultiSelect.superclass.constructor.call(this, config);
      	};
      	
      	//definizione della nuova classe multiselect
      	Ext.extend(Ext.frontpage.StateMultiSelect, Ext.form.MultiSelectField, {
      		store: Ext.frontpage.DataStore,
      		valueField:'id',
      		displayField:'name',
      		mode: 'local'
      	});
      	
      	//renderizzo il componente multiselect nel div indicato
      	var FrontPageMultiSelect=null;
	Ext.onReady(function(){
		Ext.frontpage.FrontPageMultiSelect = new Ext.frontpage.StateMultiSelect({
	          	renderTo: Ext.frontpage.WhereToRender,
	          	containerHeight: 200,
	          	containerWidth: 400
	        });
	
	
		if($F(Ext.frontpage.InitValues)){
		        //
		        //leggo i valori salvati su db letti da template e setto i valori selezionati nel controllo multiselect
		        //
		        //	NON passare al componente una stringa separata da virgole perchè si incasina, fai lo split
		        //
		        Ext.frontpage.FrontPageMultiSelect.setValues($F(Ext.frontpage.InitValues).split(','));
		}
	});
	
	
	//Aggancia evento click di ogni checkbox category
	$$(Ext.frontpage.PossibleValuesPath).each(function(cb){
		cb.observe("click",function(){
			updateFrontPageMultiSelect(this);
		});
	});
}



//-------------------------------------------------------
//
//	svuota lo store dei valori
//	e lo riempie con quelli selezionati dal elenco dei
//	valori possibili
//
//-------------------------------------------------------
function getFrontPageStoreData(){
	
	Ext.frontpage.DataStore.removeAll();
	
	FrontPageRecordType = Ext.frontpage.FrontPageRecordType;


	$$(Ext.frontpage.PossibleValuesPath).each(function(cb){
		if (cb.checked){
			
			objRecAux = new FrontPageRecordType ({"id":cb.readAttribute("value"), "name":Ext.util.Format.htmlDecode(cb.parentNode.childElements()[1].innerHTML)});		
			Ext.frontpage.DataStore.add(objRecAux);
		}
	});	
	
	
}

//-------------------------------------------------------
//
//	aggiorna la combo multiselect sia nei
//	possibleValues che nei selectedValues
//
//	viene chiamata ad ogni click sulle checkbox della
//	categorie
//
//-------------------------------------------------------
function updateFrontPageMultiSelect(obj){
	//
	//	aggiorno i possibleValues selezionabili nella combo multiselect
	//
	getFrontPageStoreData();	//aggiorno lo store
	Ext.frontpage.FrontPageMultiSelect.buildMenu();	//refresh della combo
	
	//
	//	se è appena stato dececcata una checkbox che compariva tra i
	//	valori selezionati nella multiselect, dobbiamo aggiornare il
	//	suo campo values ed eliminare quello appena cliccato
	//
	
	// id e value della checkbox appena cliccata
	var objValue = obj.readAttribute("value");
	var objLabel = obj.parentNode.childElements()[1].innerHTML;
	
	//valori selezionati nella combo multiselect
	var oldSelectedValues = Ext.frontpage.FrontPageMultiSelect.getValue();
	
	var arrOldSelectedValues = new Array();
	
	if(oldSelectedValues){
		arrOldSelectedValues = oldSelectedValues.split(',');
		
		//ciclo array dei valori selezionati e quando incontro
		//il valore appena cliccato lo rimuovo
		var i = 0;
		arrOldSelectedValues.each(function(item){
				
			if(item == objValue){
				arrOldSelectedValues.splice(i,1);
			}
			
			i++;
		});
				
		//setto i valori selezionati della combo multiselect con elenco appena aggiornato
		Ext.frontpage.FrontPageMultiSelect.setValues(arrOldSelectedValues);
	}
}

function FrontPageSelectedValues(){
	return Ext.frontpage.FrontPageMultiSelect.getValue();
}

function setFrontPageField(){
	var strFrontPage = FrontPageSelectedValues();
	var strMetaName = Ext.frontpage.MetaName;
	var hidd;
	
	strFrontPage.split(',').each(function(item){
		hidd = new Element('input',{type: 'hidden', name: strMetaName, value: item});
		$(Ext.frontpage.WhereToRender).insert(hidd);
	});
}






//-------------------------------------------------------
//
//	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);
		}
	});	
}





//---------------------------------------------------------------------------
//
//	Riempi la combo dei prodotti con cui è possibile confrontare il
//	prodotto corrente, legge i valori possibili dal elenco
//	Similar Products.
//
//	Sia il Value che il Text delle option sono il titolo del prodotto
//	perchè nella vista in cui vado a fare la ricerca dei dati tecnici,
//	il title è la chiave.
//
//---------------------------------------------------------------------------
function writeCompareProductCombo(destinationId, emptyValue){
	var comboToFill = $(destinationId);

	comboToFill.length = 0;
	comboToFill.disable();

	var firstLevelLi = $$("#similarProducts > ul > li");

    	if (firstLevelLi.length > 0) {

	        if(emptyValue != ''){
	            emptyOption = new Element('option', {"value": ''});
	            emptyOption.insert(emptyValue.replace(/ /g, "&nbsp;"));
	            comboToFill.insert(emptyOption);
	        }
	
	
	        firstLevelLi.each(function(e){
			var optionValue = '';
	            	var optionText = '';
	
	            	optionValue = e.select("a")[0].readAttribute("href");
			optionText = e.select("a")[0].innerHTML;
	
	            	var optionelem = new Element('option', {"value": optionText});
	            	optionelem.insert(optionText.replace(/ /g, "&nbsp;"));
	
	            	comboToFill.insert(optionelem);
		});
	
	        comboToFill.enable();
	}else{
        	comboToFill.disable();
        	$('threadToolComparator').hide();
    	}	
}

////////////////////////////////////////////////
//		COMPARATORE PRODOTTI
//ottengo gli userDefined3 dei due prodotti poi
//creo una hash che raccoglie le caratteristiche
//di entrambi e le mette a confronto
////////////////////////////////////////////////

//dato il nome del primo prodotto ottengo il suo userDefined3 (le caratteristiche)
function compareProduct(firstProduct,secondProduct,vAssetUrl,strButtonLoader){

	var strSecondProduct = secondProduct.replace(/(.*)\/([^\/]*)/,"$2");
	
	var userDef3_1 = "";
	var userDef3_2 = "";
	
	$('compareProductsButton').fade({
		afterFinish:function(){
			$('compareProductsLoader').appear();
		}
	});		
			
	
	//richiama uno snippet che dato il nome del prodotto restituisce il relativo userDefined3 (quindi le caratteristiche)
	new Ajax.Request('/themes/default/templates/collaboration-systems/thread-templates/generic-content-thread-template/comparatore-userdefined3',
	  {
	    method:'post',
	    parameters: {prodTitle: firstProduct},
	    onSuccess: function(transport1){
	      userDef3_1 = transport1.responseText;
	
	      //una volta ottenuto lo userDefined3 del primo prodotto carico quello del secondo
	      loadUserDefined3(userDef3_1,strSecondProduct,vAssetUrl,firstProduct);
	    }
	  });
	
	return false;
	
}

//dato il nome del secondo prodotto ottengo il suo userDefined3 (le caratteristiche)
function loadUserDefined3(vUserDef3_1,vSecondProduct,vAssetUrl,vFirstProd){

	//richiama uno snippet che dato il nome del prodotto restituisce il relativo userDefined3 (quindi le caratteristiche)
	 new Ajax.Request('/themes/default/templates/collaboration-systems/thread-templates/generic-content-thread-template/comparatore-userdefined3',
	  {
	    method:'post',
	    parameters: {prodTitle: vSecondProduct},
	    onSuccess: function(transport2){
	      userDef3_2 = transport2.responseText;
	
	      //una volta ottenuto lo userDefined3 del secondo prodotto creo la hash che le contiene entrambe
	      loadComparedFeatures(vUserDef3_1, userDef3_2,vAssetUrl,vFirstProd,vSecondProduct);
	    }
	  });	
	
}

//dati due campi userDefined3 viene generato un div contenente i dati di entrambi
function loadComparedFeatures(vUserDef3_1,vUserDef3_2,vAssetUrl,vFirstProd,vSecondProd){

	//categoria associate al prodotto corrente
	var strAssetUrl = vAssetUrl.replace(/\/(.*)/,"$1");
	var strCat = 

	//richiamo uno snippet che scorrendo i due campi userDefined3 genera una hash con chiave, valore1, valore2 e poi la visualizza
	//in una tabella
	new Ajax.Request('/themes/default/templates/collaboration-systems/thread-templates/generic-content-thread-template/schede-comparate',
	  {
	    method:'post',
	    parameters: {product1: vFirstProd,product2: vSecondProd,userDef3_1: vUserDef3_1, userDef3_2: vUserDef3_2,cat: strCat},
	    onSuccess: function(transport2){
	      features = transport2.responseText;
	
	
	      $('comparedFeatures').update(features);
	
	      //dopo aver aggiornato il div nascosto lo visualizzo con la shadowbox
	      showComparedFeatures();
	    }
	  });
}

//visualizza tramite shadowbox il div nascosto contenente la comparazione delle caratteristiche
function showComparedFeatures(){

    Shadowbox.open({
        content:    $('productFeaturesCompare').innerHTML,
        player:     "html",
        title:      "",
        height:     800,
        width:      650
    });

			
	$('compareProductsLoader').fade({
		afterFinish:function(){
			$('compareProductsButton').appear();			
		}
	});


}

//-----------------------------------------------------
//
//	containerId:	id del div che contiene i due link (lock e unlock) e il loader
//	obj:	riferimento al link cliccato
//	Lock:	boolean, true=voglio loccare il thread
//
//-----------------------------------------------------
function ToggleLock(containerId, obj, Lock){
	var container;
	var objLoader;
	var objLock;
	var objUnlock;
	
	container = $(containerId);
	
	
	objLoader = container.select('.loader')[0];
	objLockDescription = container.select('.lock-description')[0];
	objUnlockDescription = container.select('.unlock-description')[0];
	objLock = container.select('.lock')[0];
	objUnlock = container.select('.unlock')[0];
	
	objLock.hide();
	objUnlock.hide();
	objLoader.show();
	
	new Ajax.Request(obj.href, {
		method: 'get',
	  	onSuccess: function(transport) {
	  		objLoader.hide();
	  		if(Lock){
	  			objLockDescription.hide();
	  			objUnlockDescription.show();
	  			objUnlock.show();
	  		}else{
	  			objUnlockDescription.hide();
	  			objLockDescription.show();
	  			objLock.show();
	  		}	
		}
	});
	
	
	
	return false;
}