function show_rows(start_showing_from, number_rows_to_show, max_rows_to_add, row_id_name, count_id_name, button_id_name) {
    var i=0;
    if (start_showing_from < max_rows_to_add) {
        for (i=start_showing_from; i<(start_showing_from+number_rows_to_show); i++) {
            document.getElementById(row_id_name + '_' + i).style.cssText = 'display: table-row;';
        }
        document.getElementById(count_id_name).innerHTML = start_showing_from+number_rows_to_show-1;
        if (start_showing_from+number_rows_to_show >= max_rows_to_add) {
            document.getElementById(button_id_name).disabled = true;
        }
        return (start_showing_from+number_rows_to_show);
    } else {
        document.getElementById(button_id_name).disabled = true;
        return start_showing_from;
    }
}
function element_form_attribute(element_name, attribute) {
    var form_found = false;
    var f = 0;
    var e = 0;
    while ((f < document.forms.length) && (form_found == false)) {
        e = 0;
        while ((e < document.forms[f].elements.length) && (form_found == false)) {
            if (document.forms[f].elements[e].name == element_name) {
                form_found = true;
                return document.forms[f].getAttribute(attribute);
            }
            e++;
        }
        f++;
    }
}
function form_element_enable(form_name, element_name, enable_state) {
    document.forms[form_name].elements[element_name].disabled = !enable_state;
}
function checkbox_graphical_state(form_name, checkbox_name, graphical_checkbox_id, class_name_checked, class_name_not_checked) {
    if (document.forms[form_name].elements[checkbox_name].value == 1) {
        document.forms[form_name].elements[checkbox_name].value = 0;
        document.getElementById(graphical_checkbox_id).className = class_name_not_checked;
    } else {
        document.forms[form_name].elements[checkbox_name].value = 1;
        document.getElementById(graphical_checkbox_id).className = class_name_checked;
    }
}
function time_seconds_counter(element_id, redirection_address) {
    var seconds = document.getElementById(element_id).innerHTML;
    if ((seconds-1) < 0) {
        location.href = redirection_address;
    } else {
        document.getElementById(element_id).innerHTML = parseInt(seconds-1);
        setTimeout("time_seconds_counter('"+element_id+"', '"+redirection_address+"');", 1000);
    }
}



function element_enable(element_id, force_enable) {
    if (force_enable == undefined) {
        if (document.getElementById(element_id).disabled == false) {
            document.getElementById(element_id).disabled = true;
        } else {
            document.getElementById(element_id).disabled = false;
        }
    } else {
        document.getElementById(element_id).disabled = force_enable;
    }
    return false;
}

function element_display(element_id, force_visibility) {
    if (force_visibility == undefined) {
        if ((document.getElementById(element_id).style.display == 'none') || (document.getElementById(element_id).style.display == '')) {
            document.getElementById(element_id).style.display = 'block';
        } else {
            document.getElementById(element_id).style.display = 'none';
        }
    } else {
        document.getElementById(element_id).style.display = force_visibility;
    }
    return false;
}

function element_value(element_id, attrib, valueSet) {
    if (valueSet != undefined) {
        switch (attrib) {
            default          : { document.getElementById(element_id).setAttribute(attrib, valueSet); break; }
            case 'value'     : { document.getElementById(element_id).value = valueSet; break; }
            case 'val'       : { document.getElementById(element_id).value = valueSet; break; }
            case 'innerHTML' : { document.getElementById(element_id).innerHTML = valueSet; break; }
            case 'html'      : { document.getElementById(element_id).innerHTML = valueSet; break; }
            case 'checked'   : { document.getElementById(element_id).checked = valueSet; break; }
        }
        return false;
    } else {
        switch (attrib) {
            default          : { return document.getElementById(element_id).getAttribute(attrib); break; }
            case 'value'     : { return document.getElementById(element_id).value; break; }
            case 'val'       : { return document.getElementById(element_id).value; break; }
            case 'innerHTML' : { return document.getElementById(element_id).innerHTML; break; }
            case 'html'      : { return document.getElementById(element_id).innerHTML; break; }
            case 'checked'   : { return document.getElementById(element_id).checked; break; }
        }
        return '';
    }
}

function element_option_value(element_id, attrib, valueSet) {
    if (valueSet != undefined) {
        switch (attrib) {
            default          : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].setAttribute(attrib, valueSet); break; }
            case 'value'     : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].value = valueSet; break; }
            case 'val'       : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].value = valueSet; break; }
            case 'innerHTML' : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].innerHTML = valueSet; break; }
            case 'html'      : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].innerHTML = valueSet; break; }
            case 'selected'  : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].selected = valueSet; break; }
            case 'label'     : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].label = valueSet; break; }
            case 'text'      : { document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].text = valueSet; break; }
        }
        return false;
    } else {
        switch (attrib) {
            default          : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].getAttribute(attrib); break; }
            case 'value'     : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].value; break; }
            case 'val'       : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].value; break; }
            case 'innerHTML' : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].innerHTML; break; }
            case 'html'      : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].innerHTML; break; }
            case 'selected'  : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].selected; break; }
            case 'label'     : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].label; break; }
            case 'text'      : { return document.getElementById(element_id).options[document.getElementById(element_id).options.selectedIndex].text; break; }
        }
        return '';
    }
}


function element_visibility(element_id, force_visibility) {
    if (force_visibility == undefined) {
        if ((document.getElementById(element_id).style.visibility == 'hidden') || (document.getElementById(element_id).style.visibility == '')) {
            document.getElementById(element_id).style.visibility = 'visible';
        } else {
            document.getElementById(element_id).style.visibility = 'hidden';
        }
    } else {
        document.getElementById(element_id).style.visibility = force_visibility;
    }
    return false;
}

function element_class_variate(element_id, class1, class2) {
    if ((document.getElementById(element_id).className == class2) || (document.getElementById(element_id).className == '')) {
        document.getElementById(element_id).className = class1;
    } else {
        document.getElementById(element_id).className = class2;
    }
    return false;
}

function element_class(element_id, className) {
    document.getElementById(element_id).className = className;
    return false;
}

function copy_title(elementFrom, element_id_to) {
    document.getElementById(element_id_to).title = elementFrom.title;
    return false;
}

function element_css(element_id, css) {
    document.getElementById(element_id).style.cssText = css;
    return false;
}

function element_value_variate(element_id, attrib, valueSet1, valueSet2) {
    var actualVal = valueSet1;
    switch (attrib) {
        case 'value'     : { actualVal = document.getElementById(element_id).value; break; }
        case 'val'       : { actualVal = document.getElementById(element_id).value ; break; }
        case 'innerHTML' : { actualVal = document.getElementById(element_id).innerHTML; break; }
        case 'html'      : { actualVal = document.getElementById(element_id).innerHTML; break; }
    }
    if (actualVal == valueSet1) {
        var valueSet = valueSet2;
    } else {
        var valueSet = valueSet1;
    }
    switch (attrib) {
        case 'value'     : { document.getElementById(element_id).value = valueSet; break; }
        case 'val'       : { document.getElementById(element_id).value = valueSet; break; }
        case 'innerHTML' : { document.getElementById(element_id).innerHTML = valueSet; break; }
        case 'html'      : { document.getElementById(element_id).innerHTML = valueSet; break; }
    }
    return false;
}

function control_image_size(imageID, maxWidth, maxHeight) {
    var image = document.getElementById(imageID);
    if (maxWidth > 0 && maxHeight > 0) {
        var ratio = maxHeight/maxWidth;
        if (image.height/image.width > ratio){
            if (image.height > maxHeight){
                image.width = Math.round(image.width*(maxHeight/image.height));
                image.height = maxHeight;
            }
        } else {
            if (image.width > maxWidth){
                image.height = Math.round(image.height*(maxWidth/image.width));
                image.width = maxWidth;
            }
        }
    } else {
        if (maxWidth == 0 && maxHeight > 0 && image.height > maxHeight) {
            image.height = maxHeight;
        } else {
            if (maxWidth > 0 && maxHeight == 0 && image.width > maxWidth) {
                image.width = maxWidth;
            }
        }
    }
}
function reload_image(imageID, imageSrc, maxWidth, maxHeight) {
    document.getElementById(imageID).src = imageSrc;
    control_image_size(imageID, maxWidth, maxHeight);
}

function scroll_to(id, speed){
    $('html,body').animate({scrollTop: $("#"+id).offset().top}, (speed || 'slow'));
}

function run_in_window(url, width, height, name) {
    if (width == undefined) {
        width = 640;
    }
    if (height == undefined) {
        height = 480;
    }
    if (name == undefined) {
        name = "displayWindow";
    }
    var windowWidth = window.innerHeight;
    var windowHeight = window.innerHeight;
    if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
        windowWidth = document.documentElement.clientWidth;
    } else {
        windowWidth = document.getElementsByTagName('body')[0].clientWidth;
    }
    if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientHeight != 'undefined' && document.documentElement.clientHeight != 0) {
        windowHeight = document.documentElement.clientHeight;
    } else {
        windowHeight = document.getElementsByTagName('body')[0].clientHeight;
    }
    var left = Math.floor(windowWidth/2)-Math.floor(width/2);
    var top = Math.floor(windowHeight/2)-Math.floor(height/2);
    var newWindow = window.open(url,name,'width='+width+',height='+height+',left='+left+',top='+top+',toolbar=no,location=no,directories=no,menubar=no,status=yes,scrolling=no,scrollbars=no,resizable=no' );
}

function scroll_refresh() {
    window.scrollBy(0,1);
    window.scrollBy(0,-1);
}

