/**
* Changes the checked value of checkboxes
* checked_action can be "all", "none" or "toggle"
**/
function change_checkboxes_by_class(class_name, checked_action) {
    $$('input.' + class_name + '[type="checkbox"]').each(function(item) {
        switch(checked_action) {
            case "all":
                item.checked = true;
                break;
            case "none":
                item.checked = false;
                break;
            case "toggle":
                item.checked = !item.checked;
                break;
        }
    });
}

function set_internal_dialog_position() {
    x = (document.all)?document.body.scrollLeft:window.pageXOffset;
    y = (document.all)?document.body.scrollTop:window.pageYOffset;

    /*var m = get_mouse_pos(event);*/
    $('internal_dialog').style.top = (y + 50) +'px';
    //$('internal_dialog').style.left = (x + 50) + 'px';
    $('dialog_iframe').style.top = "0px";//$('internal_dialog').style.top;
    $('dialog_iframe').style.left = "0px";//$('internal_dialog').style.left;
    $('dialog_iframe').style.width = "100%";//$('internal_dialog').style.width;
    $('dialog_iframe').style.height = "800";//$('internal_dialog').style.height;
    $('dialog_iframe').style.padding = "0";//$('internal_dialog').style.padding;
    $('dialog_iframe').style.marginLeft = "0";//$('internal_dialog').style.marginLeft;

}

function auto_complete_on_select(element, selectedElement) {
    var entityParts = selectedElement.id.split('::');
    //var bak         = entityParts[0];
    var entityType  = entityParts[0];
    var entityId    = entityParts[1];
    //if (bak != null) {
    //  document.getElementById(bak).value = element.value;
    //}
    obj = ['continent_t', 'country_t', 'region_t', 'winery_t', 'brand_t', 'wine_t']
    fld = ['name', 'id', 'name_for_id']
    for (i=0; i<obj.length; i++) {
        for (j=0; j<fld.length; j++) {
            tgt = obj[i] + '_' + fld[j];
            src = entityType + '::' + entityId + '::' + tgt;
            src_obj = document.getElementById(src);
            tgt_obj = document.getElementById(tgt);
            if (src_obj != null && tgt_obj != null) {
                tgt_obj.value = src_obj.value;
            }
        }
    }
/*document.getElementById(entityType).value = entityId;*/
}

function eval_js(div_id) {
    d = document.getElementById(div_id);
    scripts = d.getElementsByTagName("script");
    for (i = 0; i < scripts.length; i++) {
        s = scripts[i];
        eval(s.innerHTML);
    }
}

function show_wnw_modal_dialog(dialog_html) {
    show_modal_dialog(dialog_html, true);
    set_internal_dialog_position();
}

function set_wnw_dialog_size(w, h) {
    set_dialog_size(w, h);
}

function hide_wnw_modal_dialog() {
	
    hide_modal_dialog();
    document.getElementById("dialog_iframe").style.visible = false;
    document.getElementById("dialog_iframe").style.top = "0px";
    document.getElementById("dialog_iframe").style.left = "0px";
    document.getElementById("dialog_iframe").style.height = "0px";
    document.getElementById("dialog_iframe").style.width = "0px";
    document.getElementById("dialog_iframe").style.padding = "0px";
	  
}

function clear_entry_fields() {
    fields = ['continent_t_name', 'country_t_name', 'region_t_name', 'winery_t_name', 'brand_t_name', 'wine_t_name'];
    for (i=0; i < fields.length; i++) {
        fld = document.getElementById(fields[i]);
        if (fld != null) {
            fld.value = '';
        }
    }
}

function select_by_text_auto_complete(element, selectedElement) {
    auto_complete_on_select(element, selectedElement);
    show_sbt_selection_details(selectedElement.id);
}
function show_sbt_selection_details(selected) {
  
    new Ajax.Request('/select_by_text/details_for_selection',{
        asynchronous:true,
        evalScripts:true,
        parameters:'selection=' + selected + '&select_upto=' + $("select_upto").value + '&select_controller=' + $("select_controller").value + '&select_action=' + $("select_action").value
    });
}

function set_field_value(field_id, field_val) {
    fld = document.getElementById(field_id);
    if (fld != null) {
        fld.value = field_val;
    }
}

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft,curtop];
}

var AjaxIndicator = {}

AjaxIndicator = {
    active: function() {
        Element.show('d_ajax_indicator');
    },
    inactive: function(form) {
        Element.hide('d_ajax_indicator');
    }
}

function mark_all_checkboxes(parent_dom_id, status)
{
   
    $$('#' + parent_dom_id + ' input[type=checkbox]').each(function(input)
    {
        input.checked = status;
    });
        
}

function check_checkbox_status(parent_dom_id) {
    var all_are_checked = true;
    $$('#' + parent_dom_id + ' input[type=checkbox]').each(function(input)
    {
        if(input.checked == false)
            all_are_checked = false;
    });
    return all_are_checked;
}

// function checks status for all checkboxes inside parent_dom_id
// and set appropriate value for object_for_update
// it is used in profile/edit
function set_status_for_object(check, parent_dom_id, object_for_update) {
    if(check && check_checkbox_status(parent_dom_id))
        $(object_for_update).value = 'true';
    else
        $(object_for_update).value = 'false';

}

function selected_values(ctr_id) {
    ctr = $(ctr_id);
    result = '';
    for (var cnt=0; ctr.options[cnt]; cnt++) {
        o = ctr.options[cnt];
        if (o.selected == true) {
            result = result + o.value + ';';
        }
    }
    return result;
}

function selected_count(ctr_id) {
    matches = 0;
    ctr = $(ctr_id);
    for (var cnt=0; ctr.options[cnt]; cnt++) {
        o = ctr.options[cnt];
        if (o.selected == true) {
            matches = matches + 1;
        }
    }
    return matches;
}

/*
function get_mouse_pos(evt) {
    if(!evt) evt = window.event;
    var pos = {left: evt.clientX, top: evt.clientY};
    var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ?
    window.document.documentElement : window.document.body || null;
    if (body) {
        pos.left += body.scrollLeft;
        pos.top += body.scrollTop;
    }
    return pos;
}
*/

function updateMarkerPos(obj){
    $("event_lat")["value"] = obj.getLatLng().lat();
    $("event_lng")["value"] = obj.getLatLng().lng();
}

function updateMarkerPos(obj, name){
    $(name + "_lat")["value"] = obj.getLatLng().lat();
    $(name + "_lng")["value"] = obj.getLatLng().lng();
}

/* outflow functions */

//Abhängig vom gewählten Typus werden Elemente ausgeblendet oder versteckt
function choose_outflow_type(){
    
    var sold_type = $('bottle_sold_type');

    switch(sold_type.value){
  
        case 'sell':
            //zeige den Preis an
            show_hide_id('sell_price',false);
            show_hide_id('sell_who',false);
            show_hide_id('sell_sum',false);
            show_hide_id('give_who',true);
            calculate_row_sum();
            break;
        case 'gift':
            show_hide_id('sell_price',true);
            show_hide_id('sell_who',true);
            show_hide_id('sell_sum',true);
            show_hide_id('give_who',false);
    
            break;
        default:
            show_hide_id('sell_price',true);
            show_hide_id('sell_who',true);
            show_hide_id('sell_sum',true);
            show_hide_id('give_who',true);
            $('bottle_sell_price_amount').value = "0";
    
            break;
    }
}

function show_hide_id(id_value,hide_node){
    if(hide_node){
        Element.hide(id_value);
    }else{
        Element.show(id_value);
    }
}

/* Funktion berechnet den Einzelpreis oder die Gesamtsumme */
function calculate_row_sum(){

    var outgoing_bottles = 0;
  
    //hole alle vorhandenen inputs von flaschen aus dem array
    //gehe zuerst durch den Array mit den Input feldern
    for (var i=0; i < bottle_input_fields.length; i++) {
    
        bi_field = bottle_input_fields[i];
    
        //dann prüfen wir für jedes einzelne input feld ob denn auch eine zahl drinne steht
        //dann prüfen wir ob die anzahl der eingegebenen Flaschen nicht größer ist als die vorhandene Anzahl
        if ($(bi_field).value >= 0 && $(bi_field).value <= max_bottle_for_field[i]){
        
            if($(bi_field).value > 0){//muss an dieser Stelle eingefügt werden, da 0 auch durchkommt wenn gar nichts im Feld steht
                outgoing_bottles = outgoing_bottles + parseInt($(bi_field).value);//summiere die Werte auf
                $(bi_field).style.border="1px solid #808080";
            }
        } else {
            //wenn nicht dann änder den style des feldes aber nicht wenn gar nichts drinn steht
            if ($(bi_field).value != ""){
                $(bi_field).style.border ="1px solid RED";
            }
      
        }
    }
  
    //erneuer den wert in der Anzeige für die Anzahl der abgehenden Flaschen
    if( outgoing_bottles >= 0){
        $('display_bottle_count').innerHTML = outgoing_bottles;
    } else {
        $('display_bottle_count').innerHTML = "0";
        $('bottle_price_total').value = "";
        $('bottle_sell_price_amount').value = "";
    }

    //Anfang von Berechnung nur wenn sell eingetragen wurde als sold_type und wenn eines der beiden felder disabled wurde
    if ($('bottle_sold_type').value == 'sell' &&  outgoing_bottles > 0 && $('bottle_price_total').disabled || $('bottle_sell_price_amount').disabled ) {
    
        if( single_price_available){
            //Berechne den Preis Gesamtsumme = Einzelpreis * Flaschen
            //id_whole_sum.value = string_rounded_for_currency(id_single_price.value * outgoing_bottles);
            $('bottle_sell_price_amount').value = $('bottle_sell_price_amount').value.replace(/,/g,".");
            $('bottle_price_total').value = string_rounded_for_currency(parseFloat($('bottle_sell_price_amount').value) * parseFloat(outgoing_bottles));
        }else{
            //Berechne den Preis Einzelpreis = Gesamtsumme/Flaschen
            $('bottle_price_total').value = $('bottle_price_total').value.replace(/,/g,".");
            $('bottle_sell_price_amount').value = string_rounded_for_currency(parseFloat($('bottle_price_total').value) / parseFloat(outgoing_bottles));
      
        }
    } else if($('bottle_sell_price_amount').disabled){
        $('bottle_price_total').value = "";
    } else if($('bottle_sell_price_amount').disabled){
        $('bottle_sell_price_amount').value = "";
    }
}

function disable_sum_field(){
  
    //wenn der wert des single_price == ""
    if($('bottle_sell_price_amount').value == "" ){ //|| $('bottle_sell_price_amount').value == '0,00' || $('bottle_sell_price_amount').value == '0.00'){
        $('bottle_price_total').disabled = false;
        $('bottle_price_total').value = "";
        single_price_available = false;
    
    }else{
        $('bottle_price_total').disabled = true;
        single_price_available = true;
        calculate_row_sum();//starte gleich eine neue Berechnung
    }
}

function disable_single_price_field(){

    //wenn eine Gesamtsumme eingetragen wurde
    if($('bottle_price_total').value != ""){
        //$('bottle_sell_price_amount').value = "0,00";
        $('bottle_sell_price_amount').disabled = true;
        single_price_available = false;
        calculate_row_sum();
    
    }else{
        $('bottle_sell_price_amount').value = "";
        $('bottle_sell_price_amount').disabled = false;
        $('bottle_price_total').disabled = false;
        single_price_available = true;
    
    }
    
}

function add_available_bottle( count ){
    if(available_bottles >=0 && count > 0 ){
        available_bottles += parseInt(count);
        max_bottle_for_field.push(count);
    }
}
  
  
//welche input_felder sind für die einzelnen Flaschen
function add_bottle_input_id(text_field_id){
    bottle_input_fields.push(text_field_id);
}

/* END OF outflow functions */


// helper function to hide all other 'join group..', 'leave event..', 'accept invitation..' fields
function toggle_feedback_field(field_id){
    element = $(field_id);
    visible = Element.visible(element);
    $$('.feedback_field').each(function(it){
        it.hide();
    })
    Element[visible ? 'hide' : 'show'](element);
}


function wnw_toggle_blind(div_id, start_text, toggle_text){
    element = $(div_id);
    old_visible = Element.visible(element);
    if (old_visible) {
        $(div_id+'_img').src = "/images/Pfeil_oeffnen.png"
        $(div_id+'_a_ref').innerHTML = start_text
    } else {
        $(div_id+"_img").src = "/images/Pfeil_schliessen.png"
        $(div_id+"_a_ref").innerHTML = toggle_text
    }
    Effect.toggle(div_id, 'slide', {
        delay: 0
    });
    return false;
}

function show_tour() {
    new Ajax.Request('/home/tour', {
        asynchronous:true,
        evalScripts:true,
        onComplete:function(request){
            AjaxIndicator.inactive()
        },
        onFailure:function(request){
            AjaxIndicator.inactive()
        },
        onLoading:function(request){
            AjaxIndicator.active()
        }
    })
}

function show_tour_autostart() {
    new Ajax.Request('/home/tour?autostart=true', {
        asynchronous:true,
        evalScripts:true,
        onComplete:function(request){
            AjaxIndicator.inactive()
        },
        onFailure:function(request){
            AjaxIndicator.inactive()
        },
        onLoading:function(request){
            AjaxIndicator.active()
        }
    })
}

function set_error_block_position() {
    if($('block_of_notice')) {
        $('block_of_notice').style.left = (document.documentElement.clientWidth/2 - 132) + "px";
    }
}


var Cookie = {
    get: function( name )
    {
        var escaped_name = escape( name ).replace( "*", "\\*" ).replace( "+", "\\+" );
        var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escaped_name + '=([^;\\s]*)'));
        return (cookie ? unescape(cookie[2]) : null);
    },
    set: function(name, value, path, days)
    {
        var expires = '';
        if ( typeof( days ) == 'undefined' ) days = 10 * 365; //by default set the expiration date as 10 years
        if ( days > 0 ){
            var date = new Date();
            date.setTime(date.getTime() + ( days * 24 * 60 * 60 * 1000 ));
            expires = "; expires=" + date.toGMTString();
        }
        document.cookie = name + "=" + escape(value) + expires + "; path=" + escape(path ? path : '/');
    },
    erase: function(name)
    {
        Cookie.set( name, '', -1 );
    }
}

function show_login_window(){
    set_wnw_dialog_size('400px', '180px');
    show_wnw_modal_dialog('<div class="additional_form"><a href="javascript:hide_wnw_modal_dialog()">X</a></div>'+$('login_block').innerHTML);
    if ($('internal_dialog').down('#login')) {
        $('internal_dialog').down('#login').focus();
    }
}

// IE does not submit form by enter. Do it by JS
function submit_login_form(){
    if ($('internal_dialog').down('#button_submit')) {
        $('internal_dialog').down('#button_submit').click();
    }
}