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;
                }
            }else if (e.tagName == "INPUT" && e.type == "checkbox"){
                value="";
                if(e.checked){
                    value = true;
                }else{
                    value = false;
                }
                params+="&"+e.id+"="+value;
            }
        }
    }catch(e){
        alert("Utils.auto_encode_parameters() "+e);
        return false;
    }
    return params;
}
//encod paramters and seprate them with the give seperator a=b sep c=d ...
function auto_encode_multiple_parameters(tags,obj,separator){
  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+=separator+e.id+"="+value;
          }else if (e.tagName == "TEXTAREA"){
              value = "";
              value =e.value;
              value = isNaN(value) ? encodeURIComponent(value) : value;
              params+=separator+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+=separator+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 regexp = RegExp("^[-+]?\\d+$");

    if(!regexp.test(s)){
        return false;
    }
/*    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";
}
function MultiArray(rows,cols)
{
    var i;
    var j;
    var a = new Array(rows);
    for (i=0; i < rows; i++)
    {
        a[i] = new Array(cols);
        for (j=0; j < cols; j++)
        {
            a[i][j] = null;
        }
    }
    return(a);
}

function validate_parameters(to_check,obj){
    for(var field in to_check) {
        if(!obj.getElementById(field)){
            alert('Campo '+field+' non esiste!');
            return false;
        }else if(!to_check[field].check_value(obj.getElementById(field).value)){
            alert('Campo '+field+' non valido!');
            return false;
        }
    }
    return true
}