// JavaScript Document

    function get_user_agent(){
	    var useragent = navigator.userAgent;
	    if (useragent.indexOf("MSIE") != -1) return "msie";
	    if (useragent.indexOf("Firefox") != -1) return "firefox";
	    return "";
    }

    function get_body_dim(){
        var res = new Array(0, 0);
        res[0] = document.body.clientWidth;
		res[1] = document.body.clientHeight;
        return res;
    }
    
    function get_navigator_clientdim(){
        var res = new Array(0, 0);
        res[0] = document.documentElement.clientWidth;
		res[1] = document.documentElement.clientHeight; 
        return res;
    }

    function set_layer_content(layer, visible, content){
        layer.innerHTML = content;
        if(visible)
            layer.style.visibility = "visible";
        else
            layer.style.visibility = "hidden";
    }


    function char_counter(max, object, layer){
	    var txt = object.value;
	    if(txt.length > max) {
		    txt = txt.substr(0,max);
		    object.value = txt;
	    }
	    set_layer_content(layer,true,'caratteri ' + txt.length + ' di ' + max);
	    return true;
    }

    //validate a date
    function is_date(variable, separator){
        //Autodetecting yearlength
        yearlength = 0;
        if (variable.length == 8) yearlength = 2;
        if (variable.length == 10) yearlength = 4;
        if (yearlength == 0) return false;
        if(!((variable.charAt(2) == separator) && (variable.charAt(5) == separator))) return false;
        day = variable.substr(0,2);
        month = variable.substr(3,2);
        year = variable.substr(6,yearlength);
        if (yearlength == 2) year = "20" + year;
        switch(month){
            case '01':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '02':
                    if (!(
                    ((day >= 1) && (day <= 28) && (year % 4 != 0)) ||
                    ((day >= 1) && (day <= 29) && (year % 4 == 0))
                    )) return false;
                    break;
            case '03':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '04':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '05':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '06':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '07':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '08':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '09':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '10':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '11':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '12':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            default:
                return false;
        }
        if (!((year >= 1900) && (year <= 2100))) return false;
        return true;
    }

    //deprecated
    function get_type(variable){
        //checking if is null
        if (typeof(variable) == 'null') return 'null';
        //checking if is boolean
        if (typeof(variable) == 'boolean') return 'boolean';
        //checking if is integer
        variable_int = parseInt(variable);
        if (!(isNaN(variable_int) || (variable_int != variable))) return 'integer';
        //checking if is float
        variable_float = parseFloat(variable);
        if (!(isNaN(variable_float) || (variable_float != variable))) return 'float';
        //checkinf if is string
        if (typeof(variable) == 'string') return 'string';
        return 'undefined';
    }
    

    //gets variable type
    function get_var_type(variable){
        //checking if is null
        if (typeof(variable) == 'null') return 'null';
        //checking if is boolean
        if (typeof(variable) == 'boolean') return 'boolean';
        //checking if is integer
        variable_int = parseInt(variable);
        if (!(isNaN(variable_int) || (variable_int != variable))) return 'integer';
        //checking if is float
        variable_float = parseFloat(variable);
        if (!(isNaN(variable_float) || (variable_float != variable))) return 'float';
        //checkinf if is string
        if (typeof(variable) == 'string') return 'string';
        return 'undefined';
    }
    
    function is_null(variable){
        return get_var_type(variable) == 'null'; 
    }
    
    function is_boolean(variable){
        return get_var_type(variable) == 'boolean'; 
    }
    
    function is_bool(variable){
        return is_boolean(variable); 
    }
    
    function is_integer(variable){
        return get_var_type(variable) == 'integer'; 
    }
    
    function is_int(variable){
        return is_integer(variable); 
    }
    
    function is_float(variable){
        return get_var_type(variable) == 'float'; 
    }
    
    function is_string(variable){
        return get_var_type(variable) == 'string'; 
    }
    
    function is_undefined(variable){
        return get_var_type(variable) == 'undefined'; 
    }
    
    

    function back(){
            window.history.back();
        }
        
    function popup_wnd(popupwnd, url, left, top, width, height, features)
    {
      if(popupwnd)
      {
        if(!popupwnd.closed) popupwnd.close();
      }
      if(features == null)
        return window.open(url, '', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
      else
        return window.open(url, '', features + ',width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
    }

    function cookie_enabled(){
        var cookieEnabled=(navigator.cookieEnabled)? true : false;
        //if not IE4+ nor NS6+
        if (typeof navigator.cookieEnabled=="undefined" && !cookieEnabled){
            document.cookie="testcookie"
            cookieEnabled = (document.cookie.indexOf("testcookie")!=-1)? true : false
        }
        return cookieEnabled;
    }

    function navigate(href){
        window.location.href = href;
    }


    function strip_html_tags(src){
        return src.replace(/(<([^>]+)>)/ig,"");
    }

    function decode_html_amped_chars(src){
        src = src.replace(/&amp;/ig,"&");
        src = src.replace(/&nbsp;/ig," ");
        src = src.replace(/&quote;/ig,'"');
        src = src.replace(/&lt;/ig,"<");
        src = src.replace(/&gt;/ig,">");
        src = src.replace(/&iexcl;/ig,"¡");
        src = src.replace(/&cent;/ig,"¢");
        src = src.replace(/&pound;/ig,"£");
        src = src.replace(/&curren;/ig,"¤");
        src = src.replace(/&yen;/ig,"¥");
        src = src.replace(/&brvbar;/ig,"¦");
        src = src.replace(/&sect;/ig,"§");
        src = src.replace(/&uml;/ig,"¨");
        src = src.replace(/&copy;/ig,"©");
        src = src.replace(/&ordf;/ig,"ª");
        src = src.replace(/&laquo;/ig,"«");
        src = src.replace(/&not;/ig,"¬");
        src = src.replace(/&shy;/ig,"­");
        src = src.replace(/&reg;/ig,"®");
        src = src.replace(/&macr;/ig,"¯");
        src = src.replace(/&deg;/ig,"°");
        src = src.replace(/&plusmn;/ig,"±");
        src = src.replace(/&sup2;/ig,"²");
        src = src.replace(/&sup3;/ig,"³");
        src = src.replace(/&acute;/ig,"´");
        src = src.replace(/&micro;/ig,"µ");
        src = src.replace(/&para;/ig,"¶");
        src = src.replace(/&middot;/ig,"•");
        src = src.replace(/&cedil;/ig,"¸");
        src = src.replace(/&sup1;/ig,"¹");
        src = src.replace(/&ordm;/ig,"º");
        src = src.replace(/&raquo;/ig,"»");
        src = src.replace(/&frac14;/ig,"¼");
        src = src.replace(/&frac12;/ig,"½");
        src = src.replace(/&frac34;/ig,"¾");
        src = src.replace(/&iquest;/ig,"¿");
        src = src.replace(/&Agrave;/ig,"À");
        src = src.replace(/&Aacute;/ig,"Á");
        src = src.replace(/&Acirc;/ig,"Â");
        src = src.replace(/&Atilde;/ig,"Ã");
        src = src.replace(/&Auml;/ig,"Ä");
        src = src.replace(/&Aring;/ig,"Å");
        src = src.replace(/&Elig;/ig,"Æ");
        src = src.replace(/&Ccedil;/ig,"Ç");
        src = src.replace(/&Egrave;/ig,"È");
        src = src.replace(/&Eacute;/ig,"É");
        src = src.replace(/&Ecirc;/ig,"Ê");
        src = src.replace(/&Euml;/ig,"Ë");
        src = src.replace(/&Igrave;/ig,"Ì");
        src = src.replace(/&Iacute;/ig,"Í");
        src = src.replace(/&Icirc;/ig,"Î");
        src = src.replace(/&Iuml;/ig,"Ï");
        src = src.replace(/&ETH;/ig,"Ð");
        src = src.replace(/&Ntilde;/ig,"Ñ");
        src = src.replace(/&Ograve;/ig,"Ò");
        src = src.replace(/&Oacute;/ig,"Ó");
        src = src.replace(/&Ocirc;/ig,"Ô");
        src = src.replace(/&Otilde;/ig,"Õ");
        src = src.replace(/&Ouml;/ig,"Ö");
        src = src.replace(/&times;/ig,"×");
        src = src.replace(/&Oslash;/ig,"Ø");
        src = src.replace(/&Ugrave;/ig,"Ù");
        src = src.replace(/&Uacute;/ig,"Ú");
        src = src.replace(/&Ucirc;/ig,"Û");
        src = src.replace(/&Uuml;/ig,"Ü");
        src = src.replace(/&Yacute;/ig,"Ý");
        src = src.replace(/&THORN;/ig,"Þ");
        src = src.replace(/&szlig;/ig,"ß");
        src = src.replace(/&agrave;/ig,"à");
        src = src.replace(/&aacute;/ig,"á");
        src = src.replace(/&acirc;/ig,"â");
        src = src.replace(/&atilde;/ig,"ã");
        src = src.replace(/&auml;/ig,"ä");
        src = src.replace(/&aring;/ig,"å");
        src = src.replace(/&aelig;/ig,"æ");
        src = src.replace(/&ccedil;/ig,"ç");
        src = src.replace(/&egrave;/ig,"è");
        src = src.replace(/&eacute;/ig,"é");
        src = src.replace(/&ecirc;/ig,"ê");
        src = src.replace(/&euml;/ig,"ë");
        src = src.replace(/&igrave;/ig,"ì");
        src = src.replace(/&iacute;/ig,"í");
        src = src.replace(/&icirc;/ig,"î");
        src = src.replace(/&iuml;/ig,"ï");
        src = src.replace(/&eth;/ig,"ð");
        src = src.replace(/&ntilde;/ig,"ñ");
        src = src.replace(/&ograve;/ig,"ò");
        src = src.replace(/&oacute;/ig,"ó");
        src = src.replace(/&ocirc;/ig,"ô");
        src = src.replace(/&otilde;/ig,"õ");
        src = src.replace(/&ouml;/ig,"ö");
        src = src.replace(/&divide;/ig,"÷");
        src = src.replace(/&oslash;/ig,"ø");
        src = src.replace(/&ugrave;/ig,"ù");
        src = src.replace(/&uacute;/ig,"ú");
        src = src.replace(/&ucirc;/ig,"û");
        src = src.replace(/&uuml;/ig,"ü");
        src = src.replace(/&yacute;/ig,"ý");
        src = src.replace(/&thorn;/ig,"þ");
        src = src.replace(/&yuml;/ig,"ÿ");
        return src;
    }


    function strip_html(src){
        return decode_html_amped_chars(strip_html_tags(src));
    }

    //deprecated
    function get_file_ext(fname){
        //calculating extension
        dotpos = fname.lastIndexOf('.');
        return fname.substring(dotpos + 1, fname.length);
    }

    function str_reverse(str) {
        var result = "";
        for (var i = 0; i <= str.length; i++) {
            result = str.charAt (i) + result;
        }
        return result;
    }

    //case sensitive in array
    function in_array(value, search_array){
        for (var i = 0; i < search_array.length; i++){
            if(search_array[i] == value) return true;
        }
        return false;
    }

    //case isensitive in array
    function in_array_i(value, search_array){
        for (var i = 0; i < search_array.length; i++){
            if(lower_case(search_array[i]) == lower_case(value)) return true;
        }
        return false;
    }

    function lower_case(str){
        str = String(str);
        return str.toLowerCase();
    }

    function upper_case(str){
        str = String(str);
        return str.toUpperCase();
    }

    function get_month_daycount(month, year){ //if year is given it takes cares of the february leap day
        var month = Number(month);
        var year = year == null ? null : Number(year);
        result = 0;
        if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
            result = 31;
        }
        if(month == 4 || month == 6 || month == 9 || month == 11){
            result = 30;
        }
        if(month == 2){
            result = 28;
            if(year && (year % 4 == 0)) result++;
        }
        return result;
    }

    function get_date_daycount(day, month, year){ //if year is given it takes cares of the february leap day  
        var day = Number(day);
        var month = Number(month);
        var year = year == null ? null : Number(year);
        if(day == 0 || month == 0) return 0;
        month_daycount = get_month_daycount(month, year);
        if(day > month_daycount) day = month_daycount;
        result = 0;
        for(var i = 1; i < month; i++){
            result += get_month_daycount(i, year);
        }
        result += day;
        return result;
    }
    
    function get_daycount_date(daycount, year){ //if year is given it takes cares of the february leap day
        var curr_daycount = 0;
        var result_month = 0;
        var result_day = 0;
        for(var i = 1; i <= 12; i++){
            month_daycount = get_month_daycount(i, year);
            if(curr_daycount + month_daycount < daycount)
                curr_daycount += month_daycount;
            else{
                var result_month = i;
                var result_day = daycount - curr_daycount;    
                break;
            }
        }    
        return [result_day, result_month];        
    }

    function number_format(number, decimals, dec_point){
        if(dec_point == '') dec_point = '.';
        //getting value as number
        value = Number(number);
        value_str = String(value);
        //formatting value
        point_pos = value_str.indexOf('.');
        comma_pos = value_str.indexOf(',');
        if(point_pos >= 0 && comma_pos >= 0){
            return null;
        }
        if(point_pos == -1 && comma_pos == -1){
            value_int_str = value_str;
            value_dec_str = '0';
        }
        if(point_pos == -1 && comma_pos >= 0){
            value_int_str = value_str.substring(0, comma_pos);
            value_dec_str = value_str.substring(comma_pos + 1, value_str.length);
        }
        if(point_pos >= 0 && comma_pos == -1){
            value_int_str = value_str.substring(0, point_pos);
            value_dec_str = value_str.substring(point_pos + 1, value_str.length);
        }
        value_dec_str = String(Math.round(Number(value_dec_str) / Math.pow(10, value_dec_str.length - decimals)));
        return value_int_str + dec_point + str__rpad(value_dec_str, decimals, '0');
    }
    
    function max(num1, num2){
        if(num1 > num2) 
            return num1;
        else
            return num2;
    }
    
    function min(num1, num2){
        if(num1 < num2) 
            return num1;
        else
            return num2;
    }
    
    
    function dom__appendChild(parent, element){
        var elm = document.createElement('div');
        elm.appendChild(element);
        parent.innerHTML = parent.innerHTML + elm.innerHTML;
    }
    
    
    