$(document).ready(function() {
    $('a[@rel*=lightbox]').lightBox();
});

function setBahntyp(bahntyp) {
    $('#bahntyp input').each(function(i){
        if($(this).val() == bahntyp) {
            $(this).attr('checked',true);
            //bahntypToggled(this);
            
            url = '/ajax/setBahntyp/' + bahntyp;
            //alert(url);
            $.ajax({url: url});
        }
        else {
            //alert($(this).val() + '!=' + bahntyp);
        }
    })
}

function bahntypToggled(obj) {
    if($(obj).is(':checked')) {
        //alert('checked');
        
        removeAllItems();
        
        $('#button-list-bahnen').removeAttr('disabled');
        $('#button-list-variablen').removeAttr('disabled');
        
        bahntyp = $(obj).val();
        url = '/ajax/setBahntyp/' + bahntyp;
        //alert(url);
        $.ajax({url: url});
    }
    else {
        //alert('unchecked');
    }
}

function removeAllItems() {
    $('.itemSel').each(function(i) {
        elId = $(this).attr('id');
        
        res = elId.match(/^(Bahnen|Variablen)/);
        if(res.length < 1) {
            return false;
        }
        list = res[0];
        
        res = elId.match(/([0-9]{1,})$/);
        if(res.length < 1) {
            return false;
        }
        id = res[0];
        
        //alert(list + ':' + id);
        
        removeItem(list,id);
    });
    
    //retrieveDataWithoutValidation();
}

function isBahntypToggled() {
    numChecked = $('#bahntyp input:checked').length;
    //alert(items);
    
    if(numChecked == 1) {
        return true;
    }
    else {
        return false;
    }
}

function addSelBahnen() {
	$('#bahnen').append('<div class=""></div>');
}

function showListLayer(prefix) {
    if(!isBahntypToggled()) {
        alert('Bitte wählen Sie zuerst einen Bahntyp aus');
        return false;
    }
    
    layerId = '#list' + prefix;
    $(layerId).addClass('layerVisible').removeClass('layerInvisible');
    
    $('#cover').addClass('coverVisible').removeClass('coverInvisible');
    
    if(prefix == 'Variablen') {
        //alert('Here with prefix' + prefix);
        refreshListVariablen('Variablen');
    }
    else {
        resetList('Bahnen');
    }
}

function toggleToolbar() {
    t = $('#tools');
    
    vis = 'toolsVisible';
    invis = 'toolsHidden';
    
    if(t.hasClass('toolsHidden')) {
        // Invisible -> Visible
        t.addClass(vis).removeClass(invis);
        $('#toolbarToggle').addClass('paneOpen');
    }
    else {
        // Visible -> Invisible
        t.addClass(invis).removeClass(vis);
        $('#toolbarToggle').removeClass('paneOpen');
    }
}

function toggleTool(tool) {
    vis = 'toolsVisible';
    invis = 'toolsHidden';
    
    // Hide all tools
    $('div.tool').addClass(invis).removeClass(vis);
    
    // Show desired tool
    $('#tools' + tool).removeClass(invis).addClass(vis);
}

function refreshListVariablen(prefix) {
    //alert('here');
    
    if(prefix != 'Variablen') {
        return false;
    }
    
    items = getSelectedItems();
    if(items.length < 1) {
        //alert('nothing selected yet');
        getFilteredList('','listRawVariablen','listVariablenRecords');
        return;
    }
    
    str = items.join('/');
    
    //getFilteredList(str,'listRawVariablen','Variablen');
    getFilteredList(str,'listRawVariablen','listVariablenRecords');
    return;
}

function refreshListBahnen() {
    //getFilteredList();
    resetList('Bahnen');
}

/*Bahnen = Array();
Variablen = Array();*/
function setValue(prefix,id) {
    //alert(id);
    
    // Add element
    containerId = '#' + prefix;
    containerId = '#' + prefix + 'Title';
    elementId = prefix + id;
    
    check = '#' + elementId;
    //alert(check);
    if($(check).length) {
        alert('Dieses Element wurde bereits ausgewählt. ('+elementId+')');
        return;
    }
    
    //$(containerId).prepend('<div id="' + elementId + '" class="itemSel">' + elementId + '</div>');
    $(containerId).after('<div id="' + elementId + '" class="itemSel">' + elementId + '</div>');
    
    // Hide selection list
    hideListLayer(prefix);
    
    // Fill element
    //alert('test');
    url = '/ajax/list/' + prefix + '/' + id;
    //alert(url + elementId);
    $('#' + elementId).load(url);
    
    /*cmd = prefix + '[' + prefix + '.length] = ' + id + ';';
    alert(cmd);
    eval(cmd);*/
    
    retrieveDataWithoutValidation();
}

function setValueSavedAbfrage(prefix,id) {
    containerId = '#' + prefix;
    containerId = '#' + prefix + 'Title';
    elementId = prefix + id;
    
    check = '#' + elementId;
    if($(check).length) {
        return;
    }
    
    $(containerId).after('<div id="' + elementId + '" class="itemSel">' + elementId + '</div>');
    
    url = '/ajax/list/' + prefix + '/' + id;
    $('#' + elementId).load(url);
}

function hideListLayer(prefix) {
    layerId = '#list' + prefix;
    $(layerId).removeClass('layerVisible').addClass('layerInvisible');
    
    $('#cover').addClass('coverInvisible').removeClass('coverVisible');
}

ajaxPending = false;
function typing(str,container,list) {
    //alert('here:' + str + ':' + container);
    
    if(str.length < 2) {
        return false;
    }
    
    if(ajaxPending) {
        window.clearTimeout(typingWaiting);
    }
    
    str = escape(str);
    
    func = "getFilteredList('" + str  + "','" + container  + "','" + list + "')";
    //alert(func);
    typingWaiting = window.setTimeout(func,500);
    ajaxPending = true;
}

function getFilteredList(str,container,list) {
    //alert('here!');
    params = getSelectedItemsAsGetString();
    
    url = '/ajax/' + list + '/' + str + '/' + params;
    $("#" + container).load(url);
}

function resetList(list) {
    if(list === undefined) {
        return false;
    }
    
    params = getSelectedItemsAsGetString();
    
    url = '/ajax/list' + list + '/' + params;
    container = 'listRaw' + list;
    $("#" + container).load(url);
    
    obj = "#inputFilter" + list;
    $(obj).val('Suchbegriff');
}

function showComment(list,id) {
    obj = '#comment' + list + id;
    url = '/ajax/comment/' + list + '/' + id;
    
    //alert(obj + url);
    $(obj).load(url);
    
    obj = '#buttonComment' + list + id;
    $(obj).addClass('invisible');
}

function hideComment(list,id) {
    obj = '#comment' + list + id;
    //$(obj).html('&nbsp;');
    $(obj).html('');
    
    obj = '#buttonComment' + list + id;
    $(obj).removeClass('invisible');
}

function removeItem(list,id) {
    obj = '#' + list + id;
    $(obj).remove();
    
    $.ajax({
        type: 'GET',
        url: '/ajax/remove/' + list + '/' + id
    });
    
    retrieveDataWithoutValidation();
}

var addStringToRetrieveData = '';
var ignoreValidationErrors = false;
function retrieveData() {
    items = getSelectedItems();
    
    if(items.length < 2) {
        if(!ignoreValidationErrors) {
            alert('Bitte wählen Sie mindestens eine Bahn und eine Variable aus.');
        }
        else {
            $('#data').empty();
        }
        
        return false;
    }
    
    params = items.join('/');
    //params = 'arsch';
    
    url = '/ajax/result/' + params;
    if(addStringToRetrieveData.length > 0) {
        url = url + '/' + addStringToRetrieveData;
    }
    //alert(url);
    
    $('#data').load(url);
}

function retrieveDataWithoutValidation() {
    ignoreValidationErrors = true;
    retrieveData();
    ignoreValidationErrors = false;
}

function retrieveDataWithAdditionalArgs(args) {
    addStringToRetrieveData = args;
    retrieveData();
    addStringToRetrieveData = '';
}

function getSelectedItems() {
    /*list = Array();
    
    $('.itemSel').each(
        function (i) {
            this.
        }
        );*/
    
    //google = $('.itemSel').map(function(){return $(this).attr('id')}).get();
    //alert(google);
    
    //$('.itemSel').map(function(){alert($(this).attr('id'))});
    
    return $('.itemSel').map(function(){return $(this).attr('id')}).get();
}

function getSelectedItemsAsGetString() {
    items = getSelectedItems();
    if(items.length < 1) {
        return '';
    }
    
    return items.join('/');
}

function saveSearchAsBookmark(url) {
    datum = new Date();
    datum = datum.toLocaleString();
    title = 'Abfrage Bahndaten vom ' + datum;
    
    if (window.sidebar) {
        // Mozilla Firefox
        window.sidebar.addPanel(title,url,'');
    }
    else if(window.external) {
        // MSIE
        window.external.AddFavorite(url,title);
    }
    else {
        // Safari
        alert('Ihr Browser unterstuetzt diese Funktion nicht.');
    }
}

function saveSearchAsMySearch() {
    items = getSelectedItems();
    params = items.join('/');
    
    url = '/ajax/saveSearch/' + params;
    alert(url);
    
    $('#saveSearchContainer').load(url);
}

function rewriteCsvUrl(type) {
    items = getSelectedItems();
    params = items.join('/');
    
    url = '/attachment/' + type + '/' + params;
    //alert(url);
    
    window.location.href = url;
    
    return false;
}

function adminInplaceEdit(id) {
    url = '/ajax/inplaceEdit/' + id;
    
    $('#' + id).load(url);
}

//function adminInplaceEditValue(obj) {
function e(obj,year) {
    //console.log(obj.id);
    
    url = '/ajax/inplaceEditValue/' + ipeBid + '/' + ipeVid + '/' + year;
    
    //$(obj).click(function(){});
    //$(obj).unbind();
    
    $(obj).removeAttr('onclick');
    $(obj).load(url);
}

function adminSaveInplaceEditValue(obj) {
    //console.log(obj);
    
    elements = new Array();
    $(obj).parent().find(':input').each(function(i) {elements[elements.length] = $(this).val();} );
    params = elements.join('/');
    
    //console.log(params);
    
    //alert(params);
    //return false;
    
    url = '/ajax/inplaceEditValueSave/' + params;
    //alert(url);
    $(obj).parent().load(url);
}

function adminResetInplaceEdit(id) {
    //url = '/ajax/commentHtml/' + id + '/' + Math.floor(Math.random()*1001);
    url = '/ajax/commentHtml/' + id + '/' + new Date().getTime();
    
    $('#' + id).load(url);
}

function adminSaveInplaceEdit(id) {
    //data = $('#inplacEditKommentar').val();
    //data = $('#' + id + ' form').serialize();
    data = $('form.inplaceEdit').serialize();
    url = '/ajax/inplaceEditSave/' + id;
    
    //alert(data);
    $.post(url,data, function(data,textStatus) { alert(data); })
    // alert(id + ' submitted: ' + textStatus + '|' + data)
    
    adminResetInplaceEdit(id);
}
