//////////////////////////////////////
// LIBRERIA FUNZIONI JAVASCRIPT     //
//////////////////////////////////////

//Variabile globale per indicare se siamo in Internet Explorer o no
var ie = (navigator.appName.indexOf('Microsoft Internet Explorer') > -1);

/* GENERALIZZATO - NON CONSIDERARE PER NUOVO */
//Limita il numero di caratteri per una textarea da impostare sul onKeypress.
//  ARGOMENTI:
//      limite      -> numero indicante il max caratteri
//      objTextA    -> l'oggetto textarea (this)        
function limitaTextArea(limite,objTextA){
	if(objTextA.value.length > limite){
		objTextA.value = objTextA.value.slice(0,limite)
	}
}

/* GENERALIZZATO - NON CONSIDERARE PER NUOVO */
//Limita la digitazione in una text al keypress su caratteni numerici
//  ARGOMENTI:
//      nessuno 
function fn_numericKey(e){
    //alert(event.keyCode);
	var key;

	if(ie){
		key = event.keyCode;
	}else{
		key = e.which;
	}
	
	//12-06-2006 - Gestita pressione del TAB, canc, ctrl ecc...
	if((key < 48 || key > 58) &&
	    (key != 8 && key != 13 && key != 9 && key != 46 && key != 17 && key != 36)) return false;
}

//30-05-2006
//Funzione che esclude l'inserimento di caratteri passati in codice come argomento da richiamare sul keypress
function CheckCharByKeyCode( sCodes /*es. '89|78|8|9'*/ ){
	
	var arrCodes = sCodes.split("|");
	for(var k = 0;k < arrCodes.length;k++){
		if(arrCodes[k] == event.keyCode){
            return false;
		}
	}
	
	return true;
}


function fnSubmitForm(oForm,sAction){
	oForm.action = sAction;
	oForm.method = 'post';
	oForm.submit();		
}

///////////////////////////
//FUNZIONI PER IMMAGINI ///
///////////////////////////

// Rollover di un'immagine, attenzione le immagini di rollover devono finire con _act.jpg
// Argomenti:
//	objImg	-> Oggetto immagine passato alla funz. come this
function img_rollover(objImg){
	var pos = objImg.src.lastIndexOf(".");
	var imgname = objImg.src;
	imgname = imgname.slice(0,pos);
	objImg.src = imgname + "_act.jpg";
}

// Rollout di un'immagine, attenzione le immagini di rollover devono finire con _act.jpg
// Argomenti:
//	objImg	-> Oggetto immagine passato alla funz. come this
function img_rollout(objImg){
	var pos = objImg.src.lastIndexOf("_act.jpg");
	var imgname = objImg.src;
	imgname = imgname.slice(0,pos);
	objImg.src = imgname + ".jpg";
}

//Versione vecchia ///
function fnDettaglioFoto(arg,larghezza,altezza){
	var id = arg.lastIndexOf(".")
	arg = arg.slice(0,id)
	window.open(arg +".jpg","FOTO","menubar='no',dependent='yes',alwaysRaised='yes',directories='no',height=" + altezza + ",width=" + larghezza + "")
}

//Versione vecchia 2///
function fnDettaglioFoto2(arg,larghezza,altezza){
	var id = arg.lastIndexOf(".")
	arg = arg.slice(0,id - 1)
	window.open(arg +"B.jpg","FOTO","menubar='no',dependent='yes',alwaysRaised='yes',directories='no',height=" + altezza + ",width=" + larghezza + "")
}

//Crea un dettaglio di un'immagine sostituendo l'estensione gif con jpg ///
function fnDettaglioFoto3(arg){
	var loadLimit = 2000;
//	var loadLimit = 3000;
	
	var BigImg = new Image();
	var id = arg.src.lastIndexOf(".");
	var argWithoutExt = arg.src.slice(0,id);
	
	//Precarico l'immagine
	var newsrc = argWithoutExt + '.jpg';	
	BigImg.src = newsrc;

	//Attendo il caricamento dell'immagine
	var n = 0;
	do{
		n++;
		window.status = "Attendere caricamento immagine... " + n;
		if(n >= loadLimit){
			window.status = "Immagine di dimensioni eccessive...";
			return;
		}
		
		//BigImg.src = newsrc;

	}while(BigImg.width == 0 && BigImg.height == 0)	
//	}while(!BigImg.complete)
	
	window.status = "";
	
	var width = BigImg.width;
	var height = BigImg.height;

	OpenImgWindow(BigImg.src, height, width);

	window.status = (BigImg.complete)?"Completa":"...";
	
}

//Rimando alla funzione fnDettaglioFoto3
function fnDettaglioFotoExt(arg){
	fnDettaglioFoto3(arg);
}

//DA VEDERE CON FIREFOX ////
function OpenImgWindow(img, height, width){

//	VERSIONE NORMALE, aveva bisogno dell'ausilio di BigImg.asp
//	window.open("BigImg.asp?img=" + img,"FOTO","status='no',menubar='no',dependent='yes',alwaysRaised='yes',directories='no',height=" + height + ",width=" + width + "")
	
	//Centro la finestra ///
	var l = Math.floor((screen.width-width)/2);
	var t = Math.floor((screen.height-height)/2);
	
//	VERSIONE FICA ///
	var w = window.open("","FOTO","top=" + t + ",left=" + l + "scrollbars='no;'status='no',menubar='no',dependent='yes',alwaysRaised='yes',directories='no',height=" + height + ",width=" + width + "");
	
	w.document.write("<html>");
	w.document.write("<head>");
	w.document.write("<title>Foto</title>");
	w.document.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">");
	w.document.write("</head>");
	w.document.write("<body style=\"margin-top:0px;margin-left:0px;\">")
	w.document.write("<img id=\"img\" src=\"" + img + "\" />");
	w.document.write("</body>");
	w.document.write("</html>");
}


/////////////////////////////////////////
// Controlla che un form sia compilato //
/////////////////////////////////////////

function checkForm(objForm){
	if(!objForm.requiredFields){
		return true;
	}else{
		objForm.requiredFields = objForm.requiredFields.toLowerCase()
		
		//Scansione degli elementi del form
		
		for(var i = 0;i < objForm.elements.length;i++){
			//Se nell'elenco di campi obbligatori non c'è l'elemento
			//corrente si continua con un nuovo elemento

			if(("," + objForm.requiredFields).indexOf("," + objForm.elements[i].name.toLowerCase()) == - 1){
				continue; //Riparte il ciclo
			}
			
			switch(objForm.elements[i].type){
				case "textarea":
				case "text":
				
					if(objForm.elements[i].value.match(/^\s*$/)){ //Se è vuoto o con uno spazio...
						alert(objForm.elements[i].names + ' è un campo obbligatorio!');
						
						//imposto il focus sul controllo
						objForm.elements[i].focus();
						return false;
					}
				break;
				
				case "select-one":
					if(objForm.elements[i].selectedIndex == -1 ||
						!objForm.elements[i].options[objForm.elements[i].selectedIndex].value){
						alert(objForm.elements[i].names + " è obbligatorio!");
						
						//imposto il focus sul controllo
						objForm.elements[i].focus();
						return false;
					}
				break;
			}
		}
	}
	return true;
}

///////////////////////////////////////////////////
//Rileva se il browser supporta Remote scripting //
///////////////////////////////////////////////////
function isRemoteScrAble(){
	
	if(navigator.appName != "Microsoft Internet Explorer"){
		return false;
	}	

	if(!detectJVM(false,true)){
		return false;
	}
	
	return true;
}

//////////////////////////////
//Rileva la presenta di JVM // Booleana ///
//////////////////////////////
function detectJVM(msgenable, siteenable){

	if(!navigator.javaEnabled()){
	
		var msg;
		switch(navigator.userLanguage){
			case "it":
				msg = "Il tuo browser non supporta Java, scaricare il plugin da www.java.com";
			case "en":
				msg = "Your browser doesn't support Java, download the plugin from www.java.com";
								
		}		
		
		if(msgenable){alert(msg);}
		if(siteenable){window.open("http://www.java.com");}
		
		return false;
	}
	return true;
}

////////////////////////////////////
//Rileva se il browser è Explorer //
////////////////////////////////////
function isExplorer(){
    return ie;
}

//////////////////////////////////
//PER MUOVERE I MESSAGGI IN DIV //
//////////////////////////////////
function scrollDetector(divId,fromTop){
    try{	
	    var oDiv = document.getElementById(divId);
		
	    var misura;
	    
/* Tolto Netscape perchè Firefox si è rincoglionito e mi da Netscape pur non essendolo */
/*	    if(navigator.appName == "Netscape"){
		    misura = document.documentElement.scrollTop + fromTop;
	    }else{*/
		   misura = document.body.scrollTop + fromTop;
//	    }       
			
			
		    misura = misura.toString() + "px";
		    
		    oDiv.style.top = misura;
    }catch(e)
      {
        
    }
}

//Avvia il detect dello scroll
function StartScrollDetection(divId,fromTop)
{
    setInterval("scrollDetector('" + divId + "'," + fromTop + ")",250);
}

/***************************************************************/
/* Funzione per prendere un elemento dalla pagina tramite l'id */
/***************************************************************/
function GetPageElement(elementId)
{
    var objElemento;
    
    if(document.getElementById)
        objElemento = document.getElementById(elementId);
    else
        objElemento = document.all[elementId];
        
    return objElemento;
}