var CatalogoId = "content"
var CatalogoName = "Catalogo"
var CatalogoInit = false
var CatalogoDitta = false;  
var CatalogoModo  
var CatalogoCatalogo  
var CatalogoCategoria  
var CatalogoProdotto  
var CatalogoOrdine  
var CatalogoDescending = 0; 
var CatalogoFiltro = [];
var CatalogoFiltroSQL = "";
var CatalogoAddFiltro = false;
var CatalogoRemoveFiltro = false;
var CatalogoMostraFiltro = false;
var CatalogoSearch = "";
var CatalogoBack = "";
var CatalogoPagina
var CatalogoLoaded = false;
var CatalogoStyle = false;
var CatalogoServerPage = "/webiris/AjaxServer/index.aspx";

function Catalogo_init(ajaxIndex)
{
	var response = ajaxObjects[ajaxIndex].responseXML;

  	CatalogoDitta=response.getElementsByTagName("ditta")[0].childNodes[0].nodeValue;
	
	// inizializza il modulo
  	var moduleStyle=response.getElementsByTagName("style")[0].childNodes[0].nodeValue;
	if (CatalogoStyle == false) {
		CatalogoStyle = true;
		//addStyle(ajaxObjects[ajaxIndex].response); 
		addStyle(moduleStyle); 
	}
	if (modulename != "Catalogo" && CatalogoInit==false) {
		modulename = "Catalogo"
	  	CatalogoId=response.getElementsByTagName("contenitore")[0].childNodes[0].nodeValue;

		// moduli contenuti nel "modulo"
		var x = response.getElementsByTagName("struttura")
	  	//for (var i=0;i<x.length;i++) {
		//	var nome=XmlGet(x,0,"nome");
		//	var contenitore=XmlGet(x,0,"contenitore");
		//	eval(nome + "Id='" + contenitore + "'")
		//	eval(nome + "Init=true")
		//	eval(nome+"_initAjax()")
		//}
		mostraStruttura(x)
	}

	clearAjaxSession(ajaxIndex);
	if (CatalogoModo=='list' || CatalogoModo=='sort' || CatalogoModo=='search' || CatalogoModo=='form') 
		Catalogo_listAjax();
}

function Catalogo_showForm(ajaxIndex)
{
	CatalogoLoaded = true;
	replace_html(CatalogoId, ajaxIndex)	
}
    
function Catalogo_showList(ajaxIndex)
{
	CatalogoLoaded = true;
	replace_html(CatalogoId, ajaxIndex)	
	Catalogo_ShowFiltro()
}
function CatalogoFiltroIndexOf(fld, valLow, valHigh) {
	var indice; 
	for (indice in CatalogoFiltro) {
		if (CatalogoFiltro[indice][0] == fld && 
			CatalogoFiltro[indice][1] == valLow && 
			CatalogoFiltro[indice][2] == valHigh)
			return indice;
	}	
	return -1;
}

function CatalogoFiltroSort(a, b) 
{
   	if (a[0] < b[0]) { return -1; }   
	if (a[0] > b[0]) { return 1;}   
	if (a[0] == b[0]) { return 0;}
}

function Catalogo_AddFiltro(fld, valLow, valHigh, unique)
{
	// rimuove la condizione per filtri unici
	if (unique==1) {
		var indice; 
		for (indice in CatalogoFiltro) 
			if (CatalogoFiltro[indice][0] == fld)  
				CatalogoFiltro.splice(indice, 1)
	}

	var index = CatalogoFiltroIndexOf(fld, valLow, valHigh)

	if (index == -1){  
		CatalogoFiltro.push(new Array(fld,valLow,valHigh))
	}

	Catalogo_ShowFiltro()
	if (CatalogoModo=='list' || CatalogoModo=='sort' ) {
		CatalogoAddFiltro = true;
		Catalogo_listAjax();
	}
}

function Catalogo_RemoveFiltro(fld, valLow, valHigh)
{
	var index = CatalogoFiltroIndexOf(fld, valLow, valHigh)
	if (index != -1){  
		CatalogoFiltro.splice(index, 1)
	}

	Catalogo_ShowFiltro()
	if (CatalogoModo=='list' || CatalogoModo=='sort' ) {
		CatalogoRemoveFiltro = true;
		Catalogo_listAjax();
	}
}

function Catalogo_ShowFiltro()
{
	CatalogoFiltro.sort(CatalogoFiltroSort)
	var filter = ""
	var rfilter = ""
	fld = ""	
	for (i=0; i<CatalogoFiltro.length; i++) {
		if (CatalogoFiltro[i][0]!=fld) {
			if (fld!="") {
				filter += " AND (";
				rfilter += "&nbsp;&nbsp;";
			} else {
				filter += " (";
			}
		} else {
			filter += " OR (";
			rfilter += "&nbsp;o&nbsp;";
		}
		fld = CatalogoFiltro[i][0];

		if (CatalogoFiltro[i][1] == CatalogoFiltro[i][2]) {
			filter += CatalogoFiltro[i][0] + " = " + sqlfield(CatalogoFiltro[i][1]) ;
			rfilter += "<a href='#' onclick='Catalogo_RemoveFiltro(\"" + CatalogoFiltro[i][0] + "\", \"" + CatalogoFiltro[i][1] + "\", \"" + CatalogoFiltro[i][2] + "\")'>" + CatalogoFiltro[i][0] + " = " + CatalogoFiltro[i][1] + "&nbsp;<img src='/webiris/userfiles/" + CatalogoDitta + "/modules/Catalogo/delete-small.gif' alt='Elimina' /></a>" ;
		} else {
			filter += CatalogoFiltro[i][0] + " between " + sqlfield(CatalogoFiltro[i][1]) + " and " + sqlfield(CatalogoFiltro[i][2]);
			rfilter += "<a href='#' onclick='Catalogo_RemoveFiltro(\"" + CatalogoFiltro[i][0] + "\", \"" + CatalogoFiltro[i][1] + "\", \"" + CatalogoFiltro[i][2] + "\")'>" + CatalogoFiltro[i][0] + " tra " + CatalogoFiltro[i][1] + " e " + CatalogoFiltro[i][2] + "&nbsp;<img src='/webiris/userfiles/" + CatalogoDitta + "/modules/Catalogo/delete-small.gif' alt='Elimina' /></a>" ;
		}
		filter += ")"
	}

	var R = document.getElementById("removefiltro");
	if (R != null){
		if (rfilter != "") {
			R.innerHTML = rfilter;
			R.style.display = "block"
		} else {
			R.style.display = "none"
		}
	}


	CatalogoFiltroSQL = escape(filter);
}

function Catalogo_MostraFiltro(fld)
{
	if (CatalogoModo=='list' || CatalogoModo=='sort' ){
		CatalogoMostraFiltro = fld
		Catalogo_listAjax();
	}
}

function Hide_MostraFiltro()
{
	var R = document.getElementById("filtrocompleto");
	if (R != null){
		R.style.display = "none"
	}
	var o = document.getElementById("filtromostra");	
	if (o != null){
		o.id = ""
		o.className = "filtrobordo"
	}
}

function sqlfield( fld )
{
	if(isNaN( fld )) {
		var f = fld
		f = f.replace(".", "");
		f = f.replace(",", ".");
		if(!isNaN( f )) 
			fld = f
	}

	if(isNaN( fld ))
		fld = "''" + fld + "''";
	
	return fld;
}

//function Catalogo_initAjax(modo, catalogo, categoria, prodotto, pagina, ordine )
//{

function Catalogo_initAjax(params)
{
	modo = params['modo'];
	if (modo == 'default') modo = 'list';  
	catalogo = params['catalogo'];
	categoria = params['categoria'];
	prodotto = params['prodotto'];
	pagina   = params['pagina'];
	ordina   = params['sort'];
	ordine   = params['ordine'];
	cerca    = params['search'];
	callback = params['callback'];

	if (modo == "null" || typeof(modo) == "undefined") modo = "list";
    if (catalogo == "null" || typeof(catalogo) == "undefined") catalogo = "";
    if (categoria == "null" || typeof(categoria) == "undefined") categoria  = "";
    if (prodotto == "null" || typeof(prodotto) == "undefined") prodotto  = "";
    if (ordina == "null" || typeof(ordina) == "undefined") ordina  = false;
    if (ordine == "null" || typeof(ordine) == "undefined") ordine  = "";
    if (pagina == "null" || typeof(pagina) == "undefined") pagina  = "1";
    if (cerca == "null" || typeof(cerca) == "undefined") cerca  = false;
    if (callback == "null" || typeof(callback) == "undefined") callback  = "";

	// reset tipo ordinamento e filtro
	if (CatalogoModo != modo || CatalogoCatalogo != catalogo || CatalogoCategoria != categoria|| CatalogoOrdine != ordine) {
		CatalogoDescending = 1;
		CatalogoFiltro = [];
		CatalogoFiltroSQL = "";
	}
	CatalogoDescending = (ordina) ? ((CatalogoDescending==0) ? 1: 0) : CatalogoDescending;

    CatalogoModo = modo;  
	CatalogoCatalogo = catalogo;
	CatalogoCategoria = categoria;
    CatalogoProdotto = prodotto; 
    CatalogoOrdine = ordine; 
    CatalogoPagina = pagina; 
    CatalogoSearch = (cerca) ? cerca : CatalogoSearch; 
    CatalogoBack = callback; 
	if (CatalogoModo=='sort')
		if (CatalogoDescending==0)
			CatalogoDescending = 1;
		else
			CatalogoDescending = 0;
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = newAjaxSession(ajaxIndex, CatalogoId, 'init')
	ajaxObjects[ajaxIndex].isBookmark = false;
	ajaxObjects[ajaxIndex].requestFile = CatalogoServerPage;
	ajaxObjects[ajaxIndex].setVar('module', CatalogoName);
	ajaxObjects[ajaxIndex].onCompletion = function(){ Catalogo_init(ajaxIndex); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

function Catalogo_formAjax(id)
{
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = newAjaxSession(ajaxIndex, CatalogoId, 'form')
	ajaxObjects[ajaxIndex].requestFile = CatalogoServerPage;
	ajaxObjects[ajaxIndex].setVar('module', CatalogoName);
	ajaxObjects[ajaxIndex].setVar('id', id);
	ajaxObjects[ajaxIndex].onCompletion = function(){ Catalogo_showForm(ajaxIndex); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}


function Catalogo_listAjax()
{
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = newAjaxSession(ajaxIndex, CatalogoId, 'list')
	ajaxObjects[ajaxIndex].requestFile = CatalogoServerPage;
	ajaxObjects[ajaxIndex].setVar('module', CatalogoName);
	ajaxObjects[ajaxIndex].setVar('modo',CatalogoModo);
	ajaxObjects[ajaxIndex].setVar('catalogo',CatalogoCatalogo);
	ajaxObjects[ajaxIndex].setVar('categoria',CatalogoCategoria);
	ajaxObjects[ajaxIndex].setVar('prodotto',CatalogoProdotto);
	ajaxObjects[ajaxIndex].setVar('ordine',CatalogoOrdine);
	ajaxObjects[ajaxIndex].setVar('descending',CatalogoDescending);
	ajaxObjects[ajaxIndex].setVar('pagina',CatalogoPagina);
	ajaxObjects[ajaxIndex].setVar('filtro',CatalogoFiltroSQL);
	ajaxObjects[ajaxIndex].setVar('cerca',CatalogoSearch);
	ajaxObjects[ajaxIndex].setVar('callback',CatalogoBack);

	if (CatalogoMostraFiltro) {
		ajaxObjects[ajaxIndex].setVar('mostrafiltro',CatalogoMostraFiltro);
	}
	if (CatalogoMostraFiltro || CatalogoAddFiltro || CatalogoRemoveFiltro) {
		ajaxObjects[ajaxIndex].isBookmark = false;
	}
	CatalogoAddFiltro = false;
	CatalogoRemoveFiltro = false;
	CatalogoMostraFiltro = false;

	ajaxObjects[ajaxIndex].onCompletion = function(){ Catalogo_showList(ajaxIndex); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

/************************************************************************************************************

	Slide show

************************************************************************************************************/
function showPreview(newSrc, target)
{
	var previewImage
	var images = document.getElementById(target).getElementsByTagName('IMG');
	if(images.length>0){
	    previewImage = images[0];
	}else{
	    previewImage = document.createElement('IMG');
        document.getElementById(target).appendChild(previewImage);	
	}
	//document.getElementById('largeImageCaption').style.display='none';
	previewImage.src = newSrc;
	return false;
}

function SlideShow(ditta, targetDocument, previewPane){	

    this._Document = targetDocument ;

    this.ditta = ditta ;

    this.arrowImageWidth = 35;	// Height of arrow image in pixels;
	this.arrowLeft = false;
	this.arrowRight = false;

    this.thumbWidth = 100;
	this.displayWaitMessage=true;	// Display a please wait message while images are loading?
	
	this.previewImage = false;
	this.previewImageParent = false;
	this.slideSpeed = 0;
	this.previewImagePane = false;
	this.slideEndMarker = false;
	this.slideImageWidth = 0;
	this.galleryContainer = false;
	this.imageGalleryCaptions = new Array();
	this.previewPane = this._Document.getElementById(previewPane);
	if (!this.previewPane) {
	  	alert("Preview Pane not found in structure.")
		return;
	}	
	
	this.getTopPos = function(inputObj)
	{		
	
	  var returnValue = inputObj.offsetTop;
	  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetTop;
	  return returnValue;
	}
	
	this.getLeftPos = function(inputObj)
	{

	  var returnValue = inputObj.offsetLeft;
	  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
	  return returnValue;
	}
		
	this.hideWaitMessageAndShowCaption = function()
	{
		this._Document.getElementById('waitMessage').style.display='none';	
		//this._Document.getElementById('largeImageCaption').innerHTML = imageGalleryCaptions[imageIndex];
		//this._Document.getElementById('largeImageCaption').style.display='block';
		
	}	

    this.slidePreviewPane = function()
    {
	    var leftPos = this.previewImagePane.style.left.replace(/[^\-0-9]/g,'')/1;	
	    
	    if((leftPos - this.slideSpeed + this.slideImageWidth) >= 0) {
	        leftPos = leftPos - this.slideSpeed;
	    }
	    if(leftPos>0)leftPos=0;
 	    this.previewImagePane.style.left = leftPos + 'px';
    }

	this.revealThumbnail = function()
	{
		this.style.filter = 'alpha(opacity=100)';
		this.style.opacity = 1;
	}
	
	this.hideThumbnail = function()
	{
		this.style.filter = 'alpha(opacity=80)';
		this.style.opacity = 0.8;
	}
	
	this.initGalleryScript = function()
	{
		var targetImg = this.previewPane.getElementsByTagName('IMG');

		this.arrowLeft = this._Document.getElementById('arrow_left_image');
		this.arrowRight = this._Document.getElementById('arrow_right_image');
		this.previewImageParent = this._Document.getElementById('theImages');

		this.previewImagePane = this._Document.getElementById('theImages').getElementsByTagName('DIV')[0];
		this.previewImagePane.style.top = '0px';

		this.galleryContainer  = this._Document.getElementById('galleryContainer');
		
		var agent = navigator.userAgent.toLowerCase();
		if (agent.indexOf("msie") != -1) {
			this.galleryContainer.style.left = targetImg[0].offsetLeft.toString() + "px" ;
			//this.galleryContainer.style.width = targetImg[0].offsetWidth.toString() + "px" ;
			this.galleryContainer.style.width = "auto" ;
		} else {
			this.galleryContainer.style.left = (targetImg[0].offsetLeft - 16).toString() + "px" ;
			this.galleryContainer.style.width = (targetImg[0].offsetWidth + 14).toString() + "px" ;
		}

		this.thumbWidth = Math.round(targetImg[0].offsetWidth / 6);
	  
        this.previewImageParent.style.width = (targetImg[0].offsetWidth - this.thumbWidth).toString() +  "px";

		var images = this.previewImagePane.getElementsByTagName('IMG');
		var k = images[0].width / images[0].height 
		for(var no=0;no<images.length;no++){
			images[no].onmouseover = this.revealThumbnail;
			images[no].onmouseout = this.hideThumbnail;
			images[no].width = this.thumbWidth;
			this.slideImageWidth += images[no].width;
			if (this.slideImageWidth < images[no].left){
			   this.slideImageWidth = images[no].left;
		    }
		}	

	    this.slideImageWidth -= this.thumbWidth / 2;

		this.arrowLeft.style.width = Math.round(this.thumbWidth / 2).toString() + "px"  
		this.arrowRight.style.width = Math.round(this.thumbWidth / 2).toString() + "px"
		this.arrowLeft.style.height = Math.round(this.thumbWidth / k).toString() + "px" 
		this.arrowRight.style.height = Math.round(this.thumbWidth / k).toString() + "px"

		this.arrowLeft.previewImagePane = this.previewImagePane;
		this.arrowLeft.previewImageParent = this.previewImageParent;
	    this.arrowLeft.slideSpeed = (this.thumbWidth)*-1; 
	    this.arrowLeft.direction  = "left"
        this.arrowLeft.onclick = this.slidePreviewPane;
        this.arrowLeft.slideImageWidth = this.slideImageWidth; 

		this.arrowRight.previewImagePane = this.previewImagePane;
		this.arrowRight.previewImageParent = this.previewImageParent;
	    this.arrowRight.slideSpeed = this.thumbWidth; 
	    this.arrowRight.direction  = "right"
        this.arrowRight.onclick = this.slidePreviewPane;
        this.arrowRight.slideImageWidth = this.slideImageWidth; 
	}

	this.Init = function() {
        var container = this._Document.getElementById('galleryContainer');
        var html = "<div id=\"arrow_left\"><img src=\"/webIris/userfiles/" + this.ditta + "/modules/Catalogo/arrow-left.gif\" id=\"arrow_left_image\"></div>"
	    html += "<div id=\"theImages\">"
	    html += "<div>"
        html += "</div>"
	    html += "</div>"
	    html += "<div id=\"arrow_right\"><img src=\"/webIris/userfiles/" + this.ditta + "/modules/Catalogo/arrow-right.gif\" id=\"arrow_right_image\"></div>"
	    container.innerHTML = html;
	}

	this.Add = function(image, imagebig) {
	    var container = this._Document.getElementById('theImages').getElementsByTagName('DIV')[0];
	    container.innerHTML += "<a href=\"#\" onclick=\"return showPreview('/" + imagebig + "', '" + this.previewPane.id + "')\"><img src=\"/" + image + "\" ></a>"	
	}
    
    this.Init();
}	


