function toggle_display()
{
        a = toggle_display.arguments;

        for(i = 0; i < a.length; i++)
        {
                obj = document.getElementById(a[i]);

                if(obj.style.display == '')
                {
                        obj.style.display = 'none';
                }
                else
                {
                        obj.style.display = '';
                }
        }
}

function hide_display()
{
        a = hide_display.arguments;

        for(i = 0; i < a.length; i++)
        {
                obj = document.getElementById(a[i]);
                obj.style.display = 'none';
        }
}

function show_display()
{
        a = show_display.arguments;

        for(i = 0; i < a.length; i++)
        {
                obj = document.getElementById(a[i]);
                obj.style.display = '';
        }
}

function typeprecision(obj, prec)
{
  var v = obj.value;

    var nw = '';
    var zw = '';
    var comma = 0;
    var cnt = 0;

    for(var i = 0; i < v.length; i++)
    {
        zw = v.substr(i,1);
        if(zw == '-' && nw.length == 0)
        {
            nw += zw;
        }
        else if(zw >= '0' && zw <= '9')
        {
            if(comma == 0 || cnt < prec)
            {
                nw += zw;
                if(comma==1) cnt++;
            }
        }
        else if(prec > 0 && (zw == '.' || zw == ','))
        {
            if(comma == 0)
            {
                nw += zw;
                comma++;
            }
        }
    }

    if(nw != v)
    {
        obj.value = nw;
    }
}
// general settings

numberformat_komma = ',';
numberformat_tausend = '.';

function format_number(number, decimals)
{
  dec_point = numberformat_komma;
  thousands_sep = numberformat_tausend;

  var exponent = "";
  var numberstr = number.toString ();
  var eindex = numberstr.indexOf ("e");
  if (eindex > -1)
  {
    exponent = numberstr.substring (eindex);
    number = parseFloat (numberstr.substring (0, eindex));
  }

  if (decimals != null)
  {
    var temp = Math.pow (10, decimals);
    number = Math.round (number * temp) / temp;
  }
  var sign = number < 0 ? "-" : "";
  var integer = (number > 0 ?
      Math.floor (number) : Math.abs (Math.ceil (number))).toString ();

  var fractional = number.toString ().substring (integer.length + sign.length);
  dec_point = dec_point != null ? dec_point : ".";
  fractional = decimals != null && decimals > 0 || fractional.length > 1 ?
               (dec_point + fractional.substring (1)) : "";
  if (decimals != null && decimals > 0)
  {
    for (i = fractional.length - 1, z = decimals; i < z; ++i)
      fractional += "0";
  }

  thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ?
                  thousands_sep : null;
  if (thousands_sep != null && thousands_sep != "")
  {
    for (i = integer.length - 3; i > 0; i -= 3)
      integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
  }

  return sign + integer + fractional + exponent;
}

function maxlength(obj, maxlen, area)
{
    if(obj.value.length > maxlen)
    {
        obj.value = obj.value.substr(0, maxlen);
    }
    document.getElementById(area).innerHTML = maxlen - obj.value.length;
}


function calc_sum(obj, a, b, output)
{
    var x,y,z;
    x = parseFloat(obj.form.elements[a].value);
    y = parseFloat(obj.form.elements[b].value);
    if(isNaN(x) || isNaN(y))
    {
        z = 'n/a';
    }
    else
    {
        z = format_number(x + y, 0);
    }

    document.getElementById(output).innerHTML = z;
}

function calc_area(obj,a, b, output, scale)
{
    var x,y,z;
    if(scale==null){
      scale=1;
    }
    x = parseFloat(obj.form.elements[a].value);
    y = parseFloat(obj.form.elements[b].value);
    if(isNaN(x) || isNaN(y))
    {
        z = 'n/a';
    }
    else
    {
        z = format_number(x * y / scale, 4);
    }

    document.getElementById(output).innerHTML = z;
    calc_nutzenauslastung();
}

function calc_nutzenauslastung()
{
    var x,y,nutzenx,nutzeny,nutzen_anzahl_lp,z;

    x = parseFloat(document.forms['tab_b'].elements['x'].value);
    y = parseFloat(document.forms['tab_b'].elements['y'].value);
    nutzenx = parseFloat(document.forms['tab_b'].elements['nutzenx'].value);
    nutzeny = parseFloat(document.forms['tab_b'].elements['nutzeny'].value);
    nutzen_anzahl_lp = parseInt(document.forms['tab_b'].elements['nutzen_anzahl_lp'].value);

    if(isNaN(x) || isNaN(y) || isNaN(nutzenx) || isNaN(nutzeny) || isNaN(nutzen_anzahl_lp))
    {
        z = 'n/a';
    }
    else
    {
        z = 100 * (x * y * nutzen_anzahl_lp) / (nutzenx * nutzeny), 2;
        z = format_number(z, 2);
    }

    document.getElementById('nutzenauslastung').innerHTML = String(z);
}

function check_and_disable(obj)
{
    var a = check_and_disable.arguments;
    var b = 2;
    var c = false;

    if(a[1] == 'radio')
    {
        if(obj.value == a[2])
            c = true;
        b++;
    }
    else if(a[1] == 'checkbox')
    {
        c = obj.checked;
    }
    else if(a[1] == 'inputlagenmin')
    {
        c = false;
        if(!isNaN(obj.value) && parseInt(obj.value) >= a[2])
        {
            c = true;
        }

        if(c)
        {
            obj.form.elements['test'][0].checked = false;
            obj.form.elements['test'][1].checked = true;

            document.getElementById('lagenabh3').className = 'dimmed';
            obj.form.elements['lagenabh4'].disabled = true;
            obj.form.elements['lagenabh4'].readOnly = true;
        }
        else
        {
            document.getElementById('lagenabh3').className = '';
            obj.form.elements['lagenabh4'].disabled = false;
            obj.form.elements['lagenabh4'].readOnly = false;
        }

        b++;
    }
    else if(a[1] == 'karbondruck')
    {
        c = (obj.form.elements['karbondruck_top'].checked || obj.form.elements['karbondruck_bottom'].checked);
    }
    else if(a[1] == 'oberflaeche')
    {
    c = (obj.form.elements['oberflaeche'].value == 4);
    }
    else
    {
        return true;
    }

    for(var i = b; i < a.length; i++)
    {
        if (document.getElementById(a[i]))
        {
            if(c)
            {
                document.getElementById(a[i]).className = '';
            }
            else
            {
                document.getElementById(a[i]).className = 'dimmed';
            }
        }
        else
        {
            //form element
            if(obj.form.elements[a[i]][0])
            {
                //radio
                for(var j = 0; j < obj.form.elements[a[i]].length; j++)
                {
                    if(c)
                    {
                        obj.form.elements[a[i]][j].disabled = false;
                        obj.form.elements[a[i]][j].readOnly = false;
                    }
                    else
                    {
                        obj.form.elements[a[i]][j].disabled = true;
                        obj.form.elements[a[i]][j].readOnly = true;
                    }
                }
            }
            else
            {
                //other
                if(c)
                {
                    obj.form.elements[a[i]].disabled = false;
                    obj.form.elements[a[i]].readOnly = false;
                }
                else
                {
                    obj.form.elements[a[i]].disabled = true;
                    obj.form.elements[a[i]].readOnly = true;
                }
            }
        }
    }

    return true;
}

function move_selection(obj_a,obj_b)
{
    var i, j;
    var s = new Array();

    for(i = 0; i < obj_a.options.length; i++)
    {
        if(obj_a.options[i].selected)
        {
            s[s.length] = obj_a.options[i].value;
            myentry = new Option(obj_a.options[i].text, obj_a.options[i].value, true, false);
            obj_b.options[obj_b.options.length] = myentry;
        }
    }

    for(i = 0; i < s.length; i++)
    {
        for(j = 0; j < obj_a.options.length; j++)
        {
            if(obj_a.options[j].value == s[i])
            {
                obj_a.options[j] = null;
                break;
            }
        }
    }
}

function select_all(obj_name)
{
    var obj = document.getElementById(obj_name);
    if (obj) {
        var i;
        for(i = 0; i < obj.options.length; i++)
        {
            obj.options[i].selected = true;
        }
    }
}

function showSubmenu(id){
//  targetelement=document.getElementById('submenu');
  others='sub';
  for(i=0; i<4; i++){
    sourceelement=document.getElementById(others+i);
    sourceelement.style.display='none';
  }
  sourceelement=document.getElementById(id);
  sourceelement.style.display='block';
}
// check if an object (ele) has a class (cls)
function hasClass(ele,cls) {
    return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
// add class (cls) to an object (ele)
function addClass(ele,cls) {
    if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
// remove class (cls) from object (ele)
function removeClass(ele,cls) {
    if (hasClass(ele,cls)) {
        var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
        ele.className=ele.className.replace(reg,' ');
    }
}
//change lang
function changeLang(ele) {

    // add param lang to current url
    // setup.php will handle that
    var new_url = '';
    // check if we have to replace or add param
    if (self.location.href.indexOf('lang=de')!=-1) {
        new_url = self.location.href.replace('lang=de','lang='+ele.value);
    } else if (self.location.href.indexOf('lang=en')!=-1) {
        new_url = self.location.href.replace('lang=en','lang='+ele.value);
    } else {
        // add param
        // check which kind of param sign is needed
        if (self.location.href.indexOf('?')== -1){
            new_url = self.location.href+'?lang='+ele.value+'&switch';
        } else {
            new_url = self.location.href+'&lang='+ele.value+'&switch';
        }
    }
    // add param to force changing language
    if (new_url.indexOf('&switch')==-1) {
        new_url = new_url+'&switch';
    }


    // check if form_was_changed is set (e.g. in editor)
    if(window.form_was_changed){
        // warning for loosing data
        if (!checksure(new_url)) {
            // on cancel switch lang, set back lang selector
            if (ele.value == "de") {
                ele.value = "en";
            } else {
                ele.value = "de";
            }
        }
    } else {
        // reload page with new lang (param)
        document.location.href=new_url;
    }
}

/* get_url_param ()
 *
 * writes all url get params to an global array
 * and returns the value for requested param
 *
 * parameter - name of url parameter
 * return - value of url parameter
 */
function get_url_param(param) {

    // set array if not done before and return value of requested parameter
    if (!window.http_get_vars) {
        http_get_vars = new Array();
        var the_get_string = document.location.search.substr(1,document.location.search.length);
        if(the_get_string != '') {

            the_get_array = the_get_string.split('&');
            for(i=0;i<the_get_array.length;++i) {
                var value = '';
                var value_array = the_get_array[i].split('=');
                if(value_array.length>1){
                    value = value_array[1];
                }
                http_get_vars[unescape(value_array[0])]=unescape(value);
            }
            if(!http_get_vars[param]){
                //alert('set and no value');
                return 'undefined';
            } else {
                //alert('set and value');
                return http_get_vars[param];
            }
        } else {
            return 'undefined';
        }
    // if array was set, return value of requested parameter
    } else {
        if(!http_get_vars[param]){
            //alert('no value');
            return 'undefined';
        } else {
            //alert('value');
            return http_get_vars[param];
        }
    }
}
