var id = null;

$(document).ready(function(){
    if(typeof(functions_to_call) != 'undefined')
    {
        callFunctions(functions_to_call)
    }

    var email_confirmation = $(jqid('email_confirmation'));
    if(email_confirmation.val() != undefined)
    {
        //var submit_value = $(jqid('submit_button')).text();
        //var cancel_value = $(jqid('cancel_button')).text();
        $(jqid('email_confirmation')).dialog({
            bgiframe: true,
            resizable: false,
            draggable: false,
            height: 200,
            width: 400,
            modal: true,
            overlay: {
                backgroundColor: '#000',
                opacity: 0.5
            },
            buttons: {
                'Senden': function() {
                    $(this).dialog('close');
                    sendRequest('function=handleMsgDiv&value=submit', 16);
                },
                'nicht Senden': function() {
                    $(this).dialog('close');
                    sendRequest('function=handleMsgDiv&value=cancel', 16);
                }
            }
        });
    }

    var ressource_planning_width = $(jqid('ressource_planning_width'));
    if(ressource_planning_width.val() != undefined)
    {
        function setRessourcePlanningWidth()
        {
            var width = parseInt($(jqid('ressource_planning_width')).val()) * 108.58;
            $(jqid('content')).css('width', width+"px");
            $(jqid('header_row')).css('width', width-10+"px");
        };
        function setRessourcePlanningHeight()
        {
            var val = parseInt($(jqid('ressource_planning_height')).val());
            var height = (val * 136.5) - 3*val;
            $('.content_height').css('height', height+"px");
        };
        setRessourcePlanningWidth();
        setRessourcePlanningHeight();

        ressource_planning_width.keyup(function() {
            setRessourcePlanningWidth();
        });
        $(jqid('ressource_planning_height')).keyup(function() {
            setRessourcePlanningHeight();
        });

        // check all/uncheck alle Tage eines Jobs
        $('.check_all_days').click(function(){
            $('.day_in_job_'+$(this).attr('ref')).attr('checked', 'checked');
        });
        $('.uncheck_all_days').click(function(){
            $('.day_in_job_'+$(this).attr('ref')).attr('checked', '');
        });
    };

    var tabs = $(jqid('tabs'));
    if(tabs.val() != undefined)
    {
        $(jqid('tabs')).tabs();
    };


    var alternate_rows = $('.alternate_rows');
    if(alternate_rows.val() != undefined)
    {
        $(".alternate_rows:odd").css("background-color", "#FFFFFF");
        $(".alternate_rows:even").css("background-color", "#D9D9D9");
    }

    $('.feedback_file_upload').MultiFile({
        STRING: {
            accept: 'jpg|jpeg',
            denied:'Es dürfen nur Bilder vom Typ jpg hochgeladen '
        }
    });

    var tag_dialog = $(jqid('dialog'));
    if(tag_dialog.val() != undefined)
    {
        tag_dialog.dialog({
            bgiframe: true,
            autoOpen: false,
            //			height: 300,
            width: 580,
            modal: true,
            draggable: true,
            open: function(event, ui) {
                $(jqclass('ui-dialog')).hide();
                var data  = "function=fillTagDialog&value="+id;
                sendRequest(data, 10);
            },
            buttons: {
                'Abbrechen': function() {
                    $(this).dialog('close');
                },
                'Tags speichern': function()
                {
                    saveTags();
                    var input = $(jqid('tag_search')).val();
                    $(this).dialog('close');
                }
            }
        });

        $('.tag_button').click(function() {
            id = this.id;
            tag_dialog.dialog('open');
        })


        $(jqid('choose_start')).click(function(){
            var action_select = $(jqid('choice')+' option:selected').val();
            if(action_select == 99999)
            {
                var selection = new Array;
                var choose = $(jqclass('choose'));
                for(var i = 0 ; i < choose.length ; i++)
                {
                    if(choose[i].checked == true)
                    {
                        selection.push(choose[i].value);
                    }
                }
                id = selection;
                tag_dialog.dialog('open');
                return false;
            }
        });

        $("#search_tags").autocomplete("ajax.server.php", {
            highlight: false,
            scroll: true,
            scrollHeight: 300,
            multiple: true,
            multipleSeparator: ", ",
            element_id: 'suggestion'
        });
    }

    var tablesorter = $('.tablesort');

    if(tablesorter.val() != undefined)
    {
        tablesorter.tablesorter();
    }


    $('.tooltip').live('click', function(event){
        $(this).qtip({
            overwrite: true,
            content:
            {
                title: $(this).attr('title'),
                ajax:
                {
                    method: 'get',
                    url: "ajax.server.php?"+$(this).attr("rel"),
                    data: {
                        ids: $(jqid($(this).parent().attr('rel'))).val()
                    }
                }
            },
            show: {
                delay: 50,
                ready: true,
                event: 'click'
            },
            hide: {
                fixed: true
            },
            style: {
                classes: 'ui-tooltip-light',
                widget: true,
                tip: {
                    corner: true
                }
            },
            position: {
                target: 'mouse',
                adjust: {
                    mouse: false,
                    screen: true
                }
            }
        },
        event);
    });
    
    if($('#sms_message').val() != undefined) {
        smsCounter($('#sms_message'));
        $('#sms_message').bind('keyup', function() {
            smsCounter($(this));
        });
    }
});


var gsm7bitChars = "@£$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑÜ§¿abcdefghijklmnopqrstuvwxyzäöñüà";
var gsm7bitExChar = "^{}\\[~]|€";

function smsCounter(element) {
    // hole den Wert und filtere direkt alle falschen Zeichen raus
    var message = sanitizeSMS(element.val());
    if(message != element.val()) {
        element.val(message);
    }
    
    var char_count = smsCharCount(message);
    char_count = char_count[0];
    
    // bei mehr als 160 Zeichen hat eine SMS nur noch 152 Zeichen
    var sms_count = char_count > 160 ? Math.ceil(char_count / 152) : 1;
    
    // Anzahl der benutzten Zeichen setzen
    $('#sms_char_counter').html(char_count +' Zeichen');
    $('#char_count').val(char_count);

    // Anzahl der verwendeten SMS setzen
    $('#sms_counter').html(sms_count +' SMS');
    $('#sms_count').val(sms_count);
}

/**
 * schmeißt alle Zeichen, die nicht GSM 7 Bit sind aus der SMS raus
 */
function sanitizeSMS(message) {
    var new_message = [];
    for (var i = 0, len = message.length; i < len; i++) {
        if(gsm7bitChars.indexOf(message.charAt(i)) > -1 || gsm7bitExChar.indexOf(message.charAt(i)) > -1) {
            new_message.push(message.charAt(i));
        }
    }
    return new_message.join('');    
}

function smsCharCount(message) {
    var gsm7bitUnits = 0;
    var utf16codeUnits = 0;
    
    for (var i = 0, len = message.length; i < len; i++) {
        if (gsm7bitUnits != null) {
            if (gsm7bitChars.indexOf(message.charAt(i)) > -1) {
                gsm7bitUnits++;
            } else if (gsm7bitExChar.indexOf(message.charAt(i)) > -1) {
                gsm7bitUnits += 2;
            } else {
                gsm7bitUnits = null;
            }
        }
        utf16codeUnits += message.charCodeAt(i) < 0x10000 ? 1 : 2;  
    }
    return [gsm7bitUnits, utf16codeUnits];
}
