var _ERROR_PAGE_URL="http://www.ti-sentieri.ch/map-visio/Error_Page.php";
var _messageObj=null;

function clear_node(nodo)
{
	for(var i=0;i<nodo.childNodes.length;i++)
	{
		var figlio=nodo.childNodes[i];		
		if(figlio.hasChildNodes())
			clear_node(figlio);
		try{
				nodo.removeChild(figlio);		
				i--;
			}catch(E)
			{
				alert(E+" "+i);
			}
	}
}

function loading_message(visible)
{
	if(visible)
		document.getElementById("loading_message").style.visibility="visible";
	else
		document.getElementById("loading_message").style.visibility="hidden";
}

function modal_loading_message(visible)
{
    if(visible)
    {
        _messageObj = ( _messageObj == null ) ? new DHTML_modalMessage() : _messageObj;	// We only create one object of this class
        _messageObj.setHtmlContent("<center><img src='"+_URL_MAP_VISIO+"icons/loading.gif'></img></center>");
        _messageObj.setSize(100,50);
        _messageObj.setCssClassMessageBox(false);
        _messageObj.setSource(false);	// no html source since we want to use a static message here.
        _messageObj.setShadowDivVisible(false);	// Disable shadow for these boxes	
        _messageObj.display();
    }
    else if(!visible && _messageObj != null)
		_messageObj.close();
            
}

function get_width(factor)
{
	var w=500;
	if (parseInt(navigator.appVersion)>3) {
		w = screen.width;
	}
	else if (navigator.appName == "Netscape" 
		&& parseInt(navigator.appVersion)==3
    && navigator.javaEnabled()
	) 
	{
		var jToolkit = java.awt.Toolkit.getDefaultToolkit();
		var jScreenSize = jToolkit.getScreenSize();
		w = jScreenSize.width;
	}
	
	return w*factor;	
}

function get_height(factor)
{
	var h=500;
	if (parseInt(navigator.appVersion)>3) {
		
		h = screen.height;
	}
	else if (navigator.appName == "Netscape" 
		&& parseInt(navigator.appVersion)==3
    && navigator.javaEnabled()            
	) 
	{
		var jToolkit = java.awt.Toolkit.getDefaultToolkit();
		var jScreenSize = jToolkit.getScreenSize();
		
		h = jScreenSize.height;
	}
	return h*factor;	
}
/*
list = names of tags splitted by ,
obj = the container all page  document
*/
function getElementsByTagNames(list,obj) {
	try{
		if (!obj) var obj = document;
		var tagNames = list.split(',');
		var resultArray = new Array();
 		for( var i=0; i<tagNames.length;i++ ) {
			var tags = obj.getElementsByTagName(tagNames[i]);
			for( var j=0; j < tags.length; j++ ) {
				resultArray.push(tags[j]);
          	}
	  }
	  
	  var testNode = resultArray[0];
	  if (!testNode) return [];
	  if (testNode.sourceIndex) {
	          resultArray.sort(function (a,b) {
              	return a.sourceIndex - b.sourceIndex;
	          });
	  }
	  else if (testNode.compareDocumentPosition) {
	          resultArray.sort(function (a,b) {
               	return 3 - (a.compareDocumentPosition(b) & 6);
	          });
	  }
	 }catch(e){
	 	alert("Utils.getElementsByTagNames() "+e);
	 	return false;
	 }
  return resultArray;
}

/*
tags names of tags splited input,select
*/
function auto_encode_parameters(tags,obj){
  try{
      var params="";
      var elements = getElementsByTagNames(tags,obj);
      for(var i=0; i< elements.length; i++){
          var e = elements[i];
          if((e.tagName == "INPUT" && (e.type == "text" || e.type=="hidden" )) 
                || (e.tagName == "SELECT") ){
              var value="";
              if(e.tagName == "SELECT" && e.value==-1){
                  value="";
              }else{
                  value=e.value;
              }
              value = isNaN(value) ? encodeURIComponent(value) : value;
              params+="&"+e.id+"="+value;
          }else if (e.tagName == "TEXTAREA"){
              value = "";
              value =e.value;
              value = isNaN(value) ? encodeURIComponent(value) : value;
              params+="&"+e.id+"="+value;
          }else if (e.tagName == "INPUT" && e.type == "radio"){
              value="";
              if(e.checked){
                  value = e.value;
                  value = isNaN(value) ? encodeURIComponent(value) : value;
                  params+="&"+e.id+"="+value;
              }
          }
      }
  }catch(e){
      alert("Utils.auto_encode_parameters() "+e);
      return false;
  }
  return params;
}



/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "-";
var minYear=1000;
var maxYear=2500;

function isInteger(s){
    var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this;
}


// questa la funzione da chiamare per validare la data.
function isDate(dtStr){
  var daysInMonth = DaysArray(12)
  var pos1=dtStr.indexOf(dtCh)
  var pos2=dtStr.indexOf(dtCh,pos1+1)
  var strMonth=dtStr.substring(pos1+1,pos2)
  var strDay=dtStr.substring(0,pos1)
  var strYear=dtStr.substring(pos2+1)
  strYr=strYear
  if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
      for (var i = 1; i <= 3; i++) {
              if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
      }
  month=parseInt(strMonth)
  day=parseInt(strDay)
  year=parseInt(strYr)
  if (pos1==-1 || pos2==-1){
          return false
  }
  if (strMonth.length<1 || month<1 || month>12){
          return false
  }
  if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
          return false
  }
  if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
          return false
  }
  if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
          return false
  }
  return true;
}

function get_selected_option(id)
{
	var opts = document.getElementById(id).options;
	
	for( var i= 0; i < opts.length; i++ )
	{
		var elem = opts[i];
		if(elem.selected)
		{
			return elem.value;
		}
	}
}

function evt_set_tr_over(tr)
{
	tr.className="tr_selected";
}

function evt_set_tr_out(tr)
{
	tr.className="tr";
}
