/*#################### FUNZIONI GENERALI #########################################################

 funzioni non incorporate in classi
 
#################################################################################################*/

var versione_lib_funzioni="1.5.0";
var data_lib_funzioni="15/05/2009 14.00.00";

/*########################### variabili browser - v1.0.0 #################################*/

var w3c_H=(document.getElementById)? true: false;
var ie5_H=(w3c_H && document.all)? true : false;
var ns6_H=(w3c_H && (navigator.appName=="Netscape"))? true: false;

/*########################### function getMousePosition - v1.0.0 #################################*/
// getMousePosition(evento,deltaX,deltaY)

function getMousePosition(e,deltaX,deltaY){
 if(!e) e=window.event;
 var vDoc=(document.documentElement && document.documentElement.scrollTop)?document.documentElement:document.body;
 mouseX=(e.pageX)?e.pageX:e.clientX+vDoc.scrollLeft;
 mouseY=(e.pageY)?e.pageY:e.clientY+vDoc.scrollTop;
 mouseY=mouseY-deltaY;
 mouseX=mouseX-deltaX;
}

/*########################### function formatta - v1.0.0 #################################*/
// formatta(id_textarea,tag)

function formatta(el,tag){
 var obj=document.getElementById(el);
 if (document.all) {
  obj.focus();
  var sel=document.selection;
  var rng=sel.createRange();
  rng.colapse;
  rng.text='['+tag+']'+rng.text+'[/'+tag+']';
 } else if(obj.selectionEnd){
  var lng=obj.textLength;
  var from=obj.selectionStart;
  var to=obj.selectionEnd;
  obj.value=obj.value.substring(0,from)+'['+tag+']'+obj.value.substring(from,to)+'[/'+tag+']'+obj.value.substring(to,lng);
 }else{ /*obj.value+=sml;*/ alert("ATTENZIONE! Il browser non supporta l'operazione"); }
  obj.focus();
}

/*########################### function replaceTag - v1.0.0 #################################*/
// formatta(id_textarea,tag)

function replaceTag(str){ 
 var arr= new Array(); var arr2= new Array();
 arr[0]="\\[b\\]"; 			arr2[0]="<b>";
 arr[1]="\\[\\/b\\]";			arr2[1]="</b>";
 arr[2]="\\[i\\]";			arr2[2]="<i>";
 arr[3]="\\[\\/i\\]";			arr2[3]="</i>";
 arr[4]="\\[u\\]";			arr2[4]="<u>";
 arr[5]="\\[\\/u\\]";			arr2[5]="</u>";

 for(i=0;i<arr.length;i++){
  var patt=new RegExp(arr[i],"gi");
  str=str.replace(patt,arr2[i]);
 }
 patt=/\n/g;
 str=str.replace(patt,"<br />");
 return str;
}

/*########################### function cambiaClasse - v1.0.0 ###################################*/
// cambiaClasse(oggetto,classe)
function cambiaClasse(obj,cls){
 var str;
 var clsTmp=obj.className;
 if((clsTmp=="")||(clsTmp==null)){ return cls; }
 if(clsTmp.Trim().indexOf(" ")>0){
  clsTmp=clsTmp.split(" ");
  clsTmp[0]=cls;
  str=clsTmp.join(" ");
 }else{
   str=cls;				  
 } 
 return str;
}

/*########################### funzioni conferma eliminazione #####################################*/
// getElementsByClass(classe, nodo, tag)
function ctrlElimina(indirizzo,str){
 if(str.Trim()=="") str="Attenzione! Se siete sicuri di voler eliminare questi dati premete OK o ANNULLA se non siete sicuri.";
 var a= confirm(str);
 if(a) location.href=indirizzo;
}

function ctrlElinimaReturn(str){
 var tmp;
 if(str.Trim()=="") str="Attenzione! Se siete sicuri di voler eliminare questi dati premete OK o ANNULLA se non siete sicuri.";
 var a= confirm(str);
 tmp=(a) ? true : false;
 return tmp;
}

/*########################### function getElementsByClass - v1.0.0 ###############################*/
// getElementsByClass(classe, nodo, tag)
function getElementsByClass(searchClass,node,tag){
 var classElements = new Array();
 if ( node == null )
  node = document;
 if ( tag == null )
  tag = '*';
 var els = node.getElementsByTagName(tag);
 var elsLen = els.length;
 var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
 for (i = 0, j = 0; i < elsLen; i++){
  if ( pattern.test(els[i].className) ){
   classElements[j] = els[i];
   j++;
  }
 }
 return classElements;
}

/*########################### function addLoadEvent - v1.0.0 #####################################*/
// addLoadEvent(funzione)
function addLoadEvent(func){
 var oldonload = window.onload;
 if (typeof window.onload != 'function'){
  window.onload = func;
 }else{
  window.onload = function(){
   oldonload();
   func();
  }
 }
}

/*########################### function addUnloadEvent - v1.0.0 #####################################*/
// addLoadEvent(funzione)
function addUnloadEvent(func){
 var oldonunload = window.onunload;
 if (typeof window.onunload != 'function'){
  window.onunload = func;
 }else{
  window.onunload = function(){
   oldonunload();
   func();
  }
 }
}

/*########################### function addEvent - v1.0.0 #########################################*/
// addEvent(elemento, tipo_evento, funzione, useCapture)
function addEvent(elm, evType, fn, useCapture){
 if (elm.addEventListener){
  elm.addEventListener(evType, fn, useCapture);
  return true;
 }else if (elm.attachEvent){
  var r = elm.attachEvent('on' + evType, fn);
  return r;
 }else{
  elm['on' + evType] = fn;
 }
}

/*########################### function creaAttributo - v1.0.0 ####################################*/
// creaAttributo(elemento, attributo, valore)
function creaAttributo(element, attribute, value) {
 var elem;
 var attr;
 elem = document.getElementById(element);
 if(elem != null){
  attr = document.createAttribute(attribute);
  attr.value = value;
  elem.setAttributeNode(attr);
 }
}

/*########################### funzioni LAYER  ####################################################*/
// Layer(layerName,bool)				se 0 style.visibility="hidden" 
//										se 1 style.visibility="visible"
// Layer_display(layerName,flag) 		se 0 style.display="none"
//										se 1 style.display="block"
//										se 2 style.display="inline"
// LayerWrite(layerName,stringa)		scrive nel DIV stringa
function Layer(layerName,flag){
 var tmp=(flag) ? "visible" : "hidden";
 document.getElementById(layerName).style.visibility = tmp;
}

function Layer_display(layerName,flag){
 var tmp;
 if(flag==0){ 
  tmp="none";
 }else if(flag==1){
  tmp="block";
 }else if(flag==2){
  tmp="inline";
 }
 document.getElementById(layerName).style.display = tmp;
}

function LayerWrite(_layer, _testo){
 if (document.layers)
  with (document.layers[_layer].document) { open(); write(_testo); close(); }
 else if (document.getElementById)
  document.getElementById(_layer).innerHTML=_testo;
 else _layer.innerHTML=_testo
}

/*########################### funzioni JSDIR ####################################################*/
// location.QS
// array.Randomize
// array.swap
// array.inArray
// string.Trim
// string.RTrim
// string.LTrim
// function Stringa(_num,_strinput)
var Keys = unescape(location.search.substr(1)).split("&");
for (var _Id in Keys)
	Keys[_Id]=Keys[_Id].split("=");
location.Key = Keys;
function QueryString(_key){
 var _QSvalue;
 for (var _Id in location.Key)
  if (location.Key[_Id][0]==_key)
   return location.Key[_Id][1];
}
location.QS=QueryString;

function Randomize(){
 _RandCicli=100+parseInt(10000*Math.random());
 var _RandArrlen=this.length;
 while (_RandCicli-- > 0)
  this.Swap(0,parseInt(_RandArrlen*Math.random()));
 return this;
}

Array.prototype.Randomize=Randomize;

function Swap(_swa,_swb){
 _temp=this[_swa];
 this[_swa]=this[_swb];
 this[_swb]=_temp;
 return this;
}

Array.prototype.Swap=Swap;

function Stringa(_num,_strinput){
 var _stringa="";
 var _str=this.length?this.toString():_strinput?_strinput.toString():" ";
 var _num=parseInt(_num);
 while (_num-->0)
  _stringa+=_str;
 return _stringa;
}

Array.prototype.inArray = function (value){
 var i;
 for (i=0; i < this.length; i++){
  if (this[i] === value){
   return true;
  }
 }
 return false;
};

String.prototype.Stringa=Stringa;

function Trim(){ return this.replace(/\s+$|^\s+/g,""); }
function LTrim(){ return this.replace(/^\s+/,""); }
function RTrim(){ return this.replace(/\s+$/,""); }
	
String.prototype.Trim=Trim;	
String.prototype.RTrim=RTrim;	
String.prototype.LTrim=LTrim;


/*########################### funzioni COOKIE ####################################################*/
// setCookie(nome,valore,giorni)
// getCookie(nome)
// delCookie(nome)

function setCookie(sNome, sValore, iGiorni) {
 var dtOggi = new Date();
 var dtExpires = new Date();
 dtExpires.setTime(dtOggi.getTime() + 24 * iGiorni * 3600000);
 document.cookie = sNome + "=" + escape(sValore) + "; expires=" + dtExpires.toGMTString();
}

function getCookie(sNome) {
 var asCookies = document.cookie.split("; ");
 for (var iCnt = 0; iCnt < asCookies.length; iCnt++){
  var asCookie = asCookies[iCnt].split("=");
  if (sNome == asCookie[0]){
   return (unescape(asCookie[1]));
  }
 }
 return("");
}

function delCookie(sNome){
 setCookie(sNome, "");
}

/*########################### funzioni menu_tasto_dx ####################################################*/
// menu_tasto_dx

function menu_tasto_dx(e,nomeDiv,nomeDiv2) {
 try{
  getMousePosition(e,10,10);
  Layer_display(nomeDiv,2); 
  var pos=document.getElementById(nomeDiv2);
 }catch(e){  alert(e); } 
  pos.style.left = mouseX+"px";
  pos.style.top = mouseY+"px";

 return false;
}

/*#################################### PARSER XML ###########################################*/
function leggiXML(str){
 var xmlDoc;
 try{
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(str);
 }catch(e){
  try{
   parser=new DOMParser();
   xmlDoc=parser.parseFromString(str,"text/xml");
  }catch(e) {alert(e.message)}
 }
 return xmlDoc;
}

/*#################################### PARSER XML ###########################################*/
function getFY(D) { 
 var YE
 YE = Math.round(D.getTime() / 31556952000) + 1970
 return YE + (D.getYear()-YE)%100 
}

if ('function' != typeof Date.prototype.getFullYear){
 Date.prototype.getFullYear = function(){
				return (this.getYear() % 1900) + 1900;
			      }
}
