
/*
	==========================================================================
	Modulo:			FJs-Object
	Descrizione:	Funzioni per la gestione degli oggetti
	Data creazione:	04/06/2005
	Elenco funzioni:
					
					
	==========================================================================
	The Software, including this file, is subject to the End User License
	Agreement.
	Copyright (c) 2003 - 2008 PcSitter. All rights reserved 
	==========================================================================
*/
var BName = navigator.appName;
var NBrowser = "";
if (BName.indexOf("Microsoft")!=-1)
	NBrowser="IE";
else
	NBrowser="NIE";
/**FUNZIONI PER LA GESTIONE DEGLI OGGETTI*/
/**
--------------------------------------------------------------------------
	Nome:			f_Change_Image
	Descrizione:	Funzione per l'alternanza delle immagini 
	Argomenti:		
					vObject : l'oggetto immagine 
					
	Return: 	
	Autore:			Garnero P.
	Modifiche:		07/10/2005
	--------------------------------------------------------------------------
	Note: es. <img src="percorso immagine 1" border="0" lowsrc="percorso immagine 2" onmouseover="f_Change_Image(this)"onmouseout="f_Change_Image(this)"> 
	--------------------------------------------------------------------------
*/
var CtrImage=0;
function f_Change_Image(vObject){	
	var ImageTemp="";
	if(CtrImage==1)	{	
		var ImageTemp=vObject.src;		
		vObject.src=vObject.lowsrc;
		vObject.lowsrc=ImageTemp;
		CtrImage=0;	
		
	}else{		
		var ImageTemp=vObject.src;		
		vObject.src=vObject.lowsrc;
		vObject.lowsrc=ImageTemp;
		CtrImage=1;			
	}

}
/**
--------------------------------------------------------------------------
	Nome:			f_Change_Stile
	Descrizione:	Funzione per l'alternanza dello Stile 
	Argomenti:		
					vObject : l'oggetto a cui variare lo stile
					
	Return: 	
	Autore:			Garnero P.
	Modifiche:		07/10/2005
	--------------------------------------------------------------------------
	Note: es. 
	--------------------------------------------------------------------------
*/
function f_Change_Stile(vObject,vSclass){	
	var vTempStile=vObject.className;
	if(vTempStile!=vSclass)	{	
		vObject.className=vSclass;
	}else{		
		vObject.className=vSclass+"_Sel";
	}

}
/**
--------------------------------------------------------------------------
	Nome:			f_GetPosLeft
	Descrizione:	Funzione per la restituzione e verifica della posizione left dell 'oggetto passato
	Argomenti:		
					el : oggetto
					
					
	Return: 		ol :restituisce la posizione left
	Autore:			Garnero P.
	Modifiche:		14/05/2005
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_GetPosLeft (el) {
	var ol = el.offsetLeft;
	while ((el = el.offsetParent) != null) { 
		ol += el.offsetLeft; 
		}
	return ol;
}
/**
--------------------------------------------------------------------------
	Nome:			f_GetWindowPosLeft
	Descrizione:	Funzione per la restituzione e verifica della posizione left dell 'oggetto passato
	Argomenti:		
					el : oggetto
					
					
	Return: 		ol :restituisce la posizione left detratta del valore di scroll della pagina
	Autore:			Garnero P.
	Modifiche:		14/05/2005
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_GetWindowPosLeft (el) {
	var vScrollL = 0;
	if (NBrowser!="NIE")
		vScrollL = document.body.scrollLeft;
	else
		vScrollL = window.pageXOffset;
	return f_GetPosLeft(el)-vScrollL;
	}	
/**
--------------------------------------------------------------------------
	Nome:			f_GetPosTop
	Descrizione:	Funzione per la restituzione e verifica della posizione Top dell 'oggetto passato
	Argomenti:		
					el : oggetto
					
					
	Return: 		ot :restituisce la posizione Top 
	Autore:			Garnero P.
	Modifiche:		14/05/2005
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_GetPosTop (el) {
	var ot = el.offsetTop;
	while((el = el.offsetParent) != null) { 
		ot += el.offsetTop; 
		}
	return ot;
}
/**
--------------------------------------------------------------------------
	Nome:			f_GetWindowPosTop
	Descrizione:	Funzione per la restituzione e verifica della posizione Top dell 'oggetto passato
	Argomenti:		
					el : oggetto
					
					
	Return: 		ot :restituisce la posizione Top detratta del valore di scroll della pagina
	Autore:			Garnero P.
	Modifiche:		14/05/2005
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_GetWindowPosTop(el) {
	var vScrollT = 0;
	if (NBrowser!="NIE")
		vScrollT = document.body.scrollTop;
	else
		vScrollT = window.pageYOffset;
	return f_GetPosTop(el)-vScrollT;
}
/**
--------------------------------------------------------------------------
	Nome:			f_Focus
	Descrizione:	Funzione del Focus
	Argomenti:		
					vObject : loggeto destinatario del Focus 
					
	Return: 	
	Autore:			Garnero P.
	Modifiche:		27/08/2005
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/

 function f_Focus(vObject){
 	vObject.focus();
 
 }
/**
--------------------------------------------------------------------------
	Nome:			f_SelImput
	Descrizione:	Funzione del Focus
	Argomenti:		
					vObject : loggeto destinatario del Focus 
					
	Return: 	
	Autore:			Garnero P.
	Modifiche:		27/08/2005
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/

 function f_SelImput(vObject){
	if(IE)
 	vObject.select();
	else
	vObject.value="";
 
 }
/**
--------------------------------------------------------------------------
	Nome:			f_KeyDown
	Descrizione:	Funzione per la gestione dinamica di una combo box
	Argomenti:		
					e : l'evento
				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		27/08/2005
	--------------------------------------------------------------------------
	Note: onkeypress='f_KeyPress();' onkeydown='f_KeyDown();' onblur='f_Clear();' onfocus='f_Clear();'
     <input type="hidden" name="keys" value="">
	--------------------------------------------------------------------------
*/

function f_KeyDown(){
    // Delete Key resets previous search keys
    if(window.event.keyCode == 46)
        f_Clear();
}
/**
--------------------------------------------------------------------------
	Nome:			f_KeyPress
	Descrizione:	Funzione per la gestione dinamica di una combo box
	Argomenti:		
					e : l'evento
				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		27/08/2005
	--------------------------------------------------------------------------
	Note: onkeypress='f_KeyPress();' onkeydown='f_KeyDown();' onblur='f_Clear();' onfocus='f_Clear();'
     <input type="hidden" name="keys" value="">
	--------------------------------------------------------------------------
*/
function f_KeyPress(){
    var vSndr = window.event.srcElement;
    var vPre =  document.getElementById("txtCmb").value;
    var vKey = window.event.keyCode;
    var vChar = String.fromCharCode(vKey);
    // "i" -> ignoreCase
    var vRe = new RegExp("^" + vPre + vChar, "i"); 

    for(var i=0; i<vSndr.options.length; i++){
        if(vRe.test(vSndr.options[i].text)) {
            vSndr.options[i].selected=true;
            document.getElementById("txtCmb").value += vChar;
            window.event.returnValue = false;
            break;
        }
    }
}
/**
--------------------------------------------------------------------------
	Nome:			f_Clear
	Descrizione:	Funzione per la gestione dinamica di una combo box
	Argomenti:		
					e : l'evento
				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		27/08/2005
	--------------------------------------------------------------------------
	Note: onkeypress='f_KeyPress();' onkeydown='f_KeyDown();' onblur='f_Clear();' onfocus='f_Clear();'
     <input type="hidden" id="txtCmb" value="">
	--------------------------------------------------------------------------
*/
function f_Clear(){
    document.getElementById("txtCmb").value = "";
}
/**FUNZIONI PER LA GESTIONE DEL MOUSE*/
/**
--------------------------------------------------------------------------
	Nome:			f_VerMouseArea
	Descrizione:	Verifica se il mouse è in una determinata area 
	Argomenti:		
					MousePX : posizione Left del Mouse
					MousePY : posizione Top del Mouse
					mX     : valore minimo Left
					MX     : valore Massimo di Left
					mY     : valore minimo di Top
					MY     : valore Massimo di Top
					
	Return: 		true se il maouse è nell area stabilita dalle coordinate
	Autore:			Garnero P.
	Modifiche:		7/10/2005
	--------------------------------------------------------------------------
	Note: funzione che và associata alla funzione getMouseXY per i Browser <IE 6 o Non IE
	--------------------------------------------------------------------------
*/
function f_VerMouseArea(SelMousePX,SelMousePY,mX,MX,mY,MY){
	var State = false;
	if(SelMousePX>mX && SelMousePX<MX && SelMousePY>mY && SelMousePY<MY )
		State =true;
	return State;
}
/**
--------------------------------------------------------------------------
	Nome:			f_getMouseXY
	Descrizione:	Memorizza nelle Variabli Globali la posizione del Mouse 
	Argomenti:		
					
					
	Return: 	
	Autore:			Garnero P.
	Modifiche:		7/10/2005
	--------------------------------------------------------------------------
	Note: tempX e tempY sono le variabili a dichiarazione globale per la posizione del mouse
	--------------------------------------------------------------------------
*/
var G_MousePX = 0
var G_MousePY = 0
var IE = document.all?true:false
document.onmousemove = f_getMouseXY;
function f_getMouseXY(e) {
	if (IE) { 
	 G_MousePX = event.clientX 
     G_MousePY = event.clientY    
  } else {  
    G_MousePX = e.pageX- window.pageXOffset
    G_MousePY = e.pageY-window.pageYOffset
  }  
	  // catch possible negative values in NS4
	  if (G_MousePX < 0){G_MousePX = 0}
	  if (G_MousePY < 0){G_MousePY = 0} 
  return true
}
/**
--------------------------------------------------------------------------
	Nome:			f_Right
	Descrizione:	Funzione per la gestione del Tasto DX
	Argomenti:		
					e : l'evento
				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		27/08/2005
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
/**     document.onmousedown=f_Right;
		document.onmouseup=f_Right;
		if (document.layers) window.captureEvents(Event.MOUSEDOWN);
		if (document.layers) window.captureEvents(Event.MOUSEUP);
		window.onmousedown=f_Right;
		window.onmouseup=f_Right;*/
function f_Right(e) {
	if(IE  && (event.button == 2 || event.button == 3)){
		alert("Spiacente il tasto destro del mouse è disabilitato!");
		return false;
	}else if(IE=false && (e.which == 3 || e.which == 2))
		return false;
	return true;
}
/**FUNZIONI PER LA GESTIONE TASTI*/
document.onkeydown = f_getKey;
document.onkeyup =f_getKey;
var G_KeySel=0;
function f_getKey(e){
	if(IE )
		G_KeySel = event.keyCode;
	else
		G_KeySel = e.which 
}
/**FUNZIONI PER LA GESTIONE POP UP*/
/**
--------------------------------------------------------------------------
	Nome:			f_OpenNew
	Descrizione:	Funzione per l'apertura di un file in una nuova finestra
	Argomenti:		
					 page: il file da aprire
				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
var WindHeight= 400;
var WindWidth = 800;
function f_OpenNew(page,selHeight,selWidth,selLeft,selTop) {
	var fHeight=200;
	var fWidth =350;	
	var maxHeight = WindHeight-400;
	var maxWidth  = WindWidth-300;
	if(selLeft!=null)
		fX=selLeft;
	else
		fX=150;
	if(selTop!=null)	
		fY=selTop;
	else
		fY=50;
	var MaxW =fX-selWidth;
	var MaxH =fY-selHeight;	
	if (fX>=maxWidth)
		 fX=MaxW;
	if (fY>=maxHeight)
		 fY=MaxH;
	if (selHeight=="Max"){
		fHeight= "fullscreen=yes";
		fWidth= "";
	}else{
		fHeight= " height="+selHeight;
		fWidth= ",width="+selWidth;
	}	
	//window.open(page,"", "toolbar=yes,location=no,directories=no,status=yes,menubar=yes,scrollbars=yes,resizable=no,dependent=yes,"+fHeight+" "+fWidth+",left="+fX+",top="+fY);	
	window.open(page,"", "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,dependent=yes,"+fHeight+" "+fWidth+",left="+fX+",top="+fY);
	 
}
/**
--------------------------------------------------------------------------
	Nome:			f_OpenElenco
	Descrizione:	Funzione per l'apertura di un file in una nuova finestra
	Argomenti:		
					 page: il file da aprire
				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_OpenElenco(vFieldName,page,strDati,ctr) {
	if(window.event.keyCode == 13 ){	
	  f_ViewElenco(vFieldName,page,strDati,ctr);	  
	}
}
/**
--------------------------------------------------------------------------
	Nome:			f_ViewElenco
	Descrizione:	Funzione per l'apertura di un file in una nuova finestra
	Argomenti:		
					 page: il file da aprire
				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_ViewElenco(vFieldName,page,strDati,ctr) {
	var blopen=false;
	var vCField   =this.document.all[vFieldName];
	var vtxtField =this.document.all["txt"+vFieldName];
	var vAField   =this.document.all["A"+vFieldName];
	var temp=vtxtField.value;
	var OffSetX=15;
	var OffsetY=3;
	var X= f_GetWindowPosLeft(vAField) - document.body.scrollLeft + window.screenLeft;
	X+=OffSetX;
	var Y = f_GetWindowPosTop(vAField) - document.body.scrollTop +window.screenTop;
	Y+=OffsetY
	if(temp.length>=ctr){	
	  page +="?Descrizione="+vtxtField.value+strDati+"&vFieldName="+vFieldName;
	  f_OpenNew(page,300,250,X,Y);
	  return true;
	}else if(temp.length<ctr)
		alert("Inserire almeno n° "+ctr+" caratteri per visualizzare l'elenco");
	else
	 	return true;
}
/**
--------------------------------------------------------------------------
	Nome:			f_Upload
	Descrizione:	Funzione per la gestione del caricamento file
	Argomenti:		
					vYearName : nome del campo contenente i valori
					ctr : stato del controllo sulla data
					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Upload(vFieldName,strUrl){
	//var page="../PComuni/FUpload.asp?FPath="+strUrl+"&vField="+vFieldName;
	var page="../GComuni/FUpload.asp?FPath="+strUrl+"&vField="+vFieldName;
    var fHeight=" height="+300;
    var fWidth =",width="+450;
	var X= f_GetWindowPosLeft(document.getElementById("LoadFile")) - document.body.scrollLeft + window.screenLeft;
	X+=10;
	var Y = f_GetWindowPosTop(document.getElementById("LoadFile")) - document.body.scrollTop +window.screenTop;
	Y+=15	
	  f_OpenNew(page,300,450,X,Y);
	return true;
}
/**FUNZIONI PER LA GESTIONE URL*/
/**
--------------------------------------------------------------------------
	Nome:			f_Redirect
	Descrizione:	Funzione per il redirect 
	Argomenti:		
					strUrl : indirizzo a cui fare il redirect
					
	Return: 	
	Autore:			Garnero P.
	Modifiche:		07/10/2005
	--------------------------------------------------------------------------
	Note: es. 
	--------------------------------------------------------------------------
*/
function f_Redirect(strUrl){
	document.location.href=strUrl;
}

	
