function scrollToSubForm(subform_id){

    var subform = document.getElementById(subform_id);
    if(subform) {
    
        var x = 0;
        var y = 0;
              
        while(subform != null){
            x += subform.offsetLeft;
            y += subform.offsetTop;
            subform = subform.offsetParent;
        }
                        		      
        window.scrollTo(x, y);
    }
}

function showSubForm(subform_id, flag) {
    var subform = document.getElementById(subform_id);
    if(subform) {
        subform.style.display = flag ? 'block': 'none';
    } 
}

function showSubFormSilently(subform_id, flag) {
    var subform = document.getElementById(subform_id);
    if(subform) {
        subform.style.display = flag ? 'block': 'none';
    }
}

function setInnerHTML(element_id, html) {
    var element = document.getElementById(element_id);
    if(element) {
        element.innerHTML = html
    }
}

function showSubForms(subforms, flag) {
    for( i=0; i < subforms.length; i++) {
        var id = subforms[i]
        showSubForm(id, flag)
    }
}

function selectSubForm(subform_id, subforms) {
    //
    // shows given form by id and hide others from a subforms list 
    //
    for( i=0; i < subforms.length; i++) {
        var id = subforms[i]
        showSubForm(id, id == subform_id)
    }
}

function selectSubFormAtStep(subform_id, subforms) {
    //
    // shows given form by id and hide others from a subforms list 
    //
    var found = false;
    for( i=0; i < subforms.length; i++) {
        var id = subforms[i];
        showSubForm(id, !found);
        found = id == subform_id | found;
    }
}

function selectRadioItem(item_id, items_ids) {
        for( i=0; i < items_ids.length; i++) {
            var item = document.getElementById(items_ids[i]);
            if(!item) continue
            if(items_ids[i] == item_id) {
                item.style.backgroundColor = '#444';
            } else {
                item.style.backgroundColor = 'transparent';
            }
        }
}


function disableField(field_id, value) {
    //
    // makes form field choosen by id disabled depending of given boolean value
    //
    var field = document.getElementById('id_'+field_id);
    if(field) {
        field.disabled = value;
        field.style.backgroundColor = field.disabled ? '#222' : '#444';
        field.style.borderColor = field.disabled ? '#666': '#888';
    }
    var label = document.getElementById('label_'+field_id);
    if(label)
        label.style.color = field.disabled ? '#888' : '#FFF';
    
}


function disableFields(fields_list, value) {
    for( i=0; i < fields_list.length; i++) 
        disableField(fields_list[i], value)
    
}

function cleanField(field_id) {
    var field = document.getElementById(field_id);
    if(field)
        field.value = '';
}

function cleanFields(fields_list) {
    for( i=0; i < fields_list.length; i++) 
        cleanField(fields_list[i])
}

function addTableRow(table_id, columns) {
    var tbody = document.getElementById(table_id).getElementsByTagName("TBODY")[0];
    var row = document.createElement("tr")
    for(i = 0; i < columns.length; i++) {
        td = document.createElement("td");
        td.appendChild(columns[i]);
        row.appendChild(td);
    }
    tbody.appendChild(row);
}

function buildSearchURL(url_prefix, query) {
    return url_prefix + query + '/';
}

function getSearchURL(url_prefix, field_id) {
    return buildSearchURL(url_prefix, document.getElementById(field_id).value);
}

function anchorActive(anchor) {
    anchor.style.cursor = 'default'; 
}

function anchorUnactive(anchor) {
}

function setupSubmitButton(value) {
    document.getElementById('id_submit_button').style.display = value ? 'inline' : 'none';
}

function checkSearch(e, url_prefix, field_id, target_id) {
    var keynum
    var keychar
    var numcheck

    if(window.event) {
        // IE
        keynum = e.keyCode
    } else if(e.which) 
    {
        // Netscape/Firefox/Opera
        keynum = e.which
    }
    
    if(keynum == 13) {
        http_send(getSearchURL(url_prefix, field_id), target_id);
        return false;
    }
    return true;
}

function popup(url, name) {
    window.open(url, name, 'width=500, height=600, toolbar=no, resizable=no, scrollbars=yes')
}

function popup_small(url, name) {
    window.open(url, name, 'width=500, height=300, toolbar=no, resizable=no, scrollbars=yes')
}


function getElementsByClassName(cn){
  var arr = new Array(); 
  var els = document.getElementsByTagName("*");
  var exp= new RegExp("^(.* )?"+cn+"( .*)?$", "g");
  for (var i = 0; i < els.length; i++ ){
    if (exp.test(els[i].className)){
      arr.push(els[i]);
    }
  }
  return arr;
}

function showElementsByClassName(cn, flag) {
    var elements = getElementsByClassName(cn);
    for(var i=0; i < elements.length; i++) 
        elements[i].style.display = flag ? 'block': 'none';           
}

function clickHelp(obj_id) {
    obj = document.getElementById(obj_id)
    if(obj) {
        showElementsByClassName('short-help', obj.checked);
        obj.checked = !obj.checked;
    }
}

