///////////////////////////////////////////////////////////////////////////
//
// FUNCTIONS STANDARD
//
// (c) copyright 2008-2009  Dominik Dobosz
//
// Owner: Rafał Mazur { m | marketing & internet
//
///////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////
//
// SELECT
//
///////////////////////////////////////////////////////////////////////////

function remove_selected(select_object){
    var i = 0;
    for (i = select_object.options.length-1; i >= 0; i--) {
        if (select_object.options[i].selected) {
            select_object.options[i] = null;
        }
    }
}

function select_all(select_object){
    var i = 0;
    for (i = 0; i < select_object.options.length; i++) {
        select_object.options[i].selected = true;
    }
}


function select_value_in_select(form_name, select_id, value_id) {
    var f = 0;
    var found_value = false;
    var formObject = document.getElementById(form_name);
    while ((f < formObject.elements[select_id].options.length) && (found_value == false)) {
        if (formObject.elements[select_id].options[f].value == value_id) {
            formObject.elements[select_id].options[f].selected = true;
            found_value = true;
        } else {
            f++;
        }
    }
}


function select_add_option_from_select(selectToAdd, selectFromAdd) {
    var optionAddValue = selectFromAdd.options[selectFromAdd.options.selectedIndex].value;
    var optionAddLabel = selectFromAdd.options[selectFromAdd.options.selectedIndex].label;

    var foundAlready = false;
    var f = 0;
    while ((f < selectToAdd.options.length) && (foundAlready == false)) {
        if (selectToAdd.options[f].value == optionAddValue) {
            foundAlready = true;
        } else {
            f++;
        }
    }

    if (foundAlready == false) {
        selectToAdd.options[selectToAdd.options.length] = new Option(optionAddLabel, optionAddValue);
    }

    selectFromAdd.focus();
}



///////////////////////////////////////////////////////////////////////////
//
// CHECKBOXES
//
///////////////////////////////////////////////////////////////////////////
function check_uncheck_all_checkboxes(form_name, id_name_part, state) {
    var name = '';
    var if_found = 0;
    var i = 0;
    for (i=0; i<document.getElementById(form_name).elements.length; i++) {
        if (id_name_part != '') {
            name = document.getElementById(form_name).elements[i].name;
            if (name != undefined) {
                if_found = name.search(id_name_part);
                if (if_found > -1) {
                    document.getElementById(form_name).elements[i].checked = state;
                }
            }
        } else {
            document.getElementById(form_name).elements[i].checked = state;
        }
    }
}

///////////////////////////////////////////////////////////////////////////
//
// RADIOBUTTON
//
///////////////////////////////////////////////////////////////////////////

//funkcja do sprawdzania powiazanych radiobuttonów
function check_uncheck_radiobuttons(form_name, elements_title, elements_value) {
    for (i=0; i<document.getElementById(form_name).elements.length; i++) {
        if (((document.getElementById(form_name).elements[i].tooltipText == elements_title) || (document.getElementById(form_name).elements[i].title == elements_title)) && (document.getElementById(form_name).elements[i].type == 'radio')) {
            document.getElementById(form_name).elements[i].disabled = ((elements_value == '') || (elements_value == 'none') || (elements_value == 'no'));
            if (((elements_value == '') || (elements_value == 'none') || (elements_value == 'no')) && (document.getElementById(form_name).elements[i].value == elements_value)) {
                document.getElementById(form_name).elements[i].checked = true;
            }
        }
    }
}

//funkcja do zaznaczania radiobuttonów o konkretnej wartoci dla danego title
function check_uncheck_radiobuttons_of_value(form_name, elements_title, elements_value, supporting_elements_title) {
    for (i=0; i<document.getElementById(form_name).elements.length; i++) {
        if (((document.getElementById(form_name).elements[i].tooltipText == elements_title) || (document.getElementById(form_name).elements[i].title == elements_title)) && (document.getElementById(form_name).elements[i].type == 'radio')) {
            document.getElementById(form_name).elements[i].disabled = ((elements_value == '') || (elements_value == 'none') || (elements_value == 'no'));
            if (document.getElementById(form_name).elements[i].value == elements_value) {
                document.getElementById(form_name).elements[i].checked = true;
            } else {
                document.getElementById(form_name).elements[i].checked = false;
            }
        }
        if (((document.getElementById(form_name).elements[i].tooltipText == supporting_elements_title) || (document.getElementById(form_name).elements[i].title == supporting_elements_title)) && (document.getElementById(form_name).elements[i].type == 'radio')) {
            if (document.getElementById(form_name).elements[i].value == elements_value) {
                document.getElementById(form_name).elements[i].checked = true;
            } else {
                document.getElementById(form_name).elements[i].checked = false;
            }
        }
    }
}


///////////////////////////////////////////////////////////////////////////
//
// INPUT / TEXTAREA / CHECKBOX / RADIOBUTTON
//
///////////////////////////////////////////////////////////////////////////

function insert_value_to_field(something, form_name, field_handle) {
    document.getElementById(form_name).elements[field_handle].value = something;
}


function fill_fields_with_this_value(form_name, value_to_write, fields_to_fill) {
    var i = 0;
    for (i=0; i<fields_to_fill.length; i++) {
        document.getElementById(form_name).elements[fields_to_fill[i]].value = value_to_write;
    }
}


///////////////////////////////////////////////////////////////////////////
//
// DATE
//
///////////////////////////////////////////////////////////////////////////

function date_inc(form_name, element_with_date, element_to_write, inc_in_days) {

    if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        var oldDate = new Date(document.getElementById(form_name).elements[element_with_date].value);
    } else {
        var readedDate = document.getElementById(form_name).elements[element_with_date].value;
        var sliceDate = readedDate.split("-");
        sliceDate[0] = parseInt(sliceDate[0]);
        sliceDate[1] = parseInt(sliceDate[1]);
        sliceDate[2] = parseInt(sliceDate[2]);
        var trueDate = sliceDate.join(",");
        var oldDate = new Date(trueDate);
    }
    var newDate = new Date();
    newDate.setTime(oldDate.getTime() + (inc_in_days*24*60*60*1000));

    var month = newDate.getMonth()+1;
    var day = newDate.getDate();
    if (month < 10) { month = '0'+month; }
    if (day < 10) { day = '0'+day; }
    document.getElementById(form_name).elements[element_to_write].value = newDate.getFullYear() + '-' + month + '-' + day;
}



///////////////////////////////////////////////////////////////////////////
//
// FORMS
//
///////////////////////////////////////////////////////////////////////////
function form_submit_on_enter(formObject, event) {
    if (form_submit_on_enter_ok(formObject, event)) {
        formObject.submit();
    }
}

function form_submit_on_enter_ok(formObject, event) {
    var targ;
    if (event.keyCode == 13) {
        if (event.target) {
            targ = event.target;
        } else if (event.srcElement) {
            targ = event.srcElement;
        }
        if (targ.nodeType == 3) {
            // defeat Safari bug
            targ = targ.parentNode;
        }
        if (targ.type != 'textarea') {
            return true;
        }
        return false;
    }
    return false;
}


function prevent_bubble(event){
   if (event && event.stopPropagation) //if stopPropagation method supported
       event.stopPropagation()
   else
       event.cancelBubble = true
}

function run_click_enter(elementToRunClick, event) {
    var targ;
    if (event.keyCode == 13) {
        if (event.target) {
            targ = event.target;
        } else if (event.srcElement) {
            targ = event.srcElement;
        }
        if (targ.nodeType == 3) {
            // defeat Safari bug
            targ = targ.parentNode;
        }
        if (targ.type != 'textarea') {
            document.getElementById(elementToRunClick).click();
        }
    }
}


function form_submit(formName) {
    document.getElementById(formName).submit();
}

function parse_float_value($id){  
     var value = $('#'+$id).val($('#'+$id).val().replace(',', '.')).val();    
     if (!/^[0-9]+(\.([0-9]{1})?([0-9]{1})?)?$/.test(value)) { 
        value = parseFloat(value);
        if (isNaN(value)) {
            value = 0;
        } else {
            value = Math.floor(value * 100) / 100;
        }
            
         $('#'+$id).val(value);
    }

}

function list_remove_selected(formName, elementActions, elementAction) {
    var selectedCount = 0;
    for (f = 0; f < document.getElementById(formName).elements.length; f++) {
        if ((document.getElementById(formName).elements[f].type == 'checkbox') && (document.getElementById(formName).elements[f].name == elementActions)) {
            if (document.getElementById(formName).elements[f].checked == true) {
                selectedCount++;
            }
        }
    }
    var removeProceed = false;
    if (selectedCount == 0) {
        alert('Proszę zaznaczyć przynajmniej jeden rekord, który ma zostać usunięty.');
    } else {
        if (selectedCount == 1) {
            if (confirm('Uwaga! Czy na pewno chcesz usunąć zaznaczoną pozycję?')) {
                removeProceed = true;
            }
        } else {
            if (confirm('Uwaga! Czy na pewno chcesz usunąć zaznaczone pozycje?')) {
                removeProceed = true;
            }
        }
    }
    if (removeProceed == true) {
        document.getElementById(formName).elements[elementAction].value = 'delete';
        document.getElementById(formName).submit();
        return false;
    }
}

function get_field_from_form(form_name, field_name) {
    var f = 0;
    var found_value = false;
    var formObject = document.getElementById(form_name);
    while ((f < formObject.elements.length) && (found_value == false)) {
        if (formObject.elements[f].name == field_name) {
            return formObject.elements[f];
        } else {
            f++;
        }
    }
    return null;
}

function element_move_down(element) {
    var nextElement = element.nextSibling;

    if ((nextElement != undefined) && (nextElement != null) && (nextElement.nodeType == 1)) {
        var parent = element.parentNode;
        parent.insertBefore(nextElement,element);
        return true;
    } else {
        return false;
    }
}

function element_move_up(element) {
    var previousElement = element.previousSibling;

    if ((previousElement != undefined) && (previousElement != null) && (previousElement.nodeType == 1)) {
        var parent = element.parentNode;
        parent.insertBefore(element,previousElement);
        return true;
    } else {
        return false;
    }
}

function element_scroll_bottom(element) {
    document.getElementById(element).scrollTop = document.getElementById(element).scrollHeight;
}
