﻿
// Initialize auto-resize Textareas
//google.setOnLoadCallback(function() {
$(document).ready(function() {
    if ($(".messages").length > 0) {
        $(".messages").effect("highlight", {}, 3000);
    }
    
    if ($('#control-panel').length > 0) {
        $("#control-panel").scrollFollow({ speed: 1000, easing: 'linear' });
    }

    if ($("a.external").length > 0) {
        $("a.external").click(function() { this.target = "_blank"; });
    }

    //$('a[href^="mailto:"]').amail('(at)', '(dot)');

});

function lxCreateDateTimeSelector(sSelHidden, sSelDate, sSelTime) {
    var onDTEntryChange = function() {
        $(sSelHidden).val($(sSelDate).val() + " " + $(sSelTime).val());
    }

    $(sSelDate).dateEntry({ spinnerImage: '' });
    $(sSelDate).dateEntry().change(onDTEntryChange);
    $(sSelTime).timeEntry({ spinnerImage: '' });
    $(sSelTime).timeEntry().change(onDTEntryChange);
}
/*
function lxSyncDateTimeSelectors(sSelDateFrom, sSelTimeFrom, sSelDateTo, sSelTimeTo) {

    function customRange(input) {
        var fromDateTime = lxMergeDateTime($(sSelDateFrom).dateEntry('getDate'), $(sSelTimeFrom).timeEntry('getTime'));
        var toDateTime = lxMergeDateTime($(sSelDateTo).dateEntry('getDate'), $(sSelTimeTo).timeEntry('getTime'));

        return {
            minDate: (input.id == $(sSelDateTo).attr('id') ? fromDateTime : null),
            minTime: (input.id == $(sSelTimeTo).attr('id') ? fromDateTime : null),
            maxDate: (input.id == $(sSelDateFrom).attr('id') ? toDateTime : null),
            maxTime: (input.id == $(sSelTimeFrom).attr('id') ? toDateTime : null)
        };
    };

    $(sSelDateFrom).dateEntry('change', { beforeShow: customRange });
    $(sSelTimeFrom).timeEntry('change', { beforeShow: customRange });
    $(sSelDateTo).dateEntry('change', { beforeShow: customRange });
    $(sSelTimeTo).timeEntry('change', { beforeShow: customRange });
}
*/

function lxSyncDateTimeSelectors(sSelDateFrom, sSelTimeFrom, sSelDateTo, sSelTimeTo) {
    var onDateEntryChange = function(evt) {
        var fromDateTime = lxMergeDateTime($(sSelDateFrom).dateEntry('getDate'), $(sSelTimeFrom).timeEntry('getTime'));
        var toDateTime = lxMergeDateTime($(sSelDateTo).dateEntry('getDate'), $(sSelTimeTo).timeEntry('getTime'));

        if (fromDateTime > toDateTime) {
            $(sSelDateTo).dateEntry('setDate', fromDateTime);
            $(sSelTimeTo).timeEntry('setTime', fromDateTime);
        }

        if (toDateTime < fromDateTime) {
            $(sSelDateFrom).dateEntry('setDate', toDateTime);
            $(sSelTimeTo).dateEntry('setTime', toDateTime);
        }
        
    }
    
    $(sSelDateFrom).change(onDateEntryChange);
    $(sSelTimeFrom).change(onDateEntryChange);
    $(sSelDateTo).change(onDateEntryChange);
    $(sSelTimeTo).change(onDateEntryChange);
    
}

function lxMergeDateTime(dDate, dTime) {
    var dateTime = new Date(dDate);
    dateTime.setHours(dTime.getHours());
    dateTime.setMinutes(dTime.getMinutes());
    dateTime.setSeconds(dTime.getSeconds());

    return dateTime;
}

function lxCheckNotNull(o, n) {

    if (o.val() == null || o.val().length == 0) {
        o.addClass('ui-state-error');
        updateTips("\"" + n + "\" darf nicht leer sein.");
        return false;
    } else {
        return true;
    }
    
}

function lxCreateNewDialog(sSelActionLink, sActionUrl, sSelDropDown, sTitle, fMyOnSuccess) {
    var elActionLink = $(sSelActionLink);
    var elDropDown = $(sSelDropDown);
    
    var createDialogContainer = function(elDropDown, sTitle) {
        var id = elDropDown.attr('id') + "_Dialog";
        var el = $(document.createElement("div"));
        el.attr('id', id);
        el.attr('title', sTitle);

        elDropDown.after(el);
        return el;
    }
    var elDialogContainer = createDialogContainer(elDropDown, sTitle);

    var handleSuccess = function(content) {
        var div = document.createElement('div');
        div.innerHTML = content; 
    
        if ($(div).children('.invalid-state').length > 0) {
            elDialogContainer.html(content);
        } else {
            fMyOnSuccess(content);
            elDialogContainer.dialog('close');
        }
    }

    var doCancel = function() {
        elDialogContainer.dialog('close');
    }

    var doSave = function() {
        $.ajax({
            url: sActionUrl,
            type: "post",
            cache: false,
            //data: $("form[action='" + sActionUrl + "']").serialize(),
            data: elDialogContainer.find('form').serialize(),
            success: handleSuccess
        });
    }

    elDialogContainer.load(elActionLink.attr('href')).dialog({
        bgiframe: false,
        draggable: true,
        width: 740,
        height: 540,
        modal: true,
        buttons: {
            Speichern: doSave,
            Abbrechen: doCancel
        }
    });
}

function html_entity_decode(str)
{
    var el = $(document.createElement('textarea'));
    el.html(str);
    var sRet = el.val();
    el.parent().remove(el);
    return sRet;
}

$.fn.amail = function(sAt, sDot, sRepl) {

    if (!sAt)
        sAt = '||';

    if (!sDot)
        sDot = '|';

    if (!sRepl)
        sRepl = 'NOSPAM';

    var mail = $(this).text().replace(sAt, '@').replace(sDot, '.').replace(sRepl, '');


    this.each(function() {

        el = $(this);
        el.each(function() {
            el.attr('href', 'mailto:' + mail);
            if (el.attr('title')) {
                el.html(el.attr('title'));
            } else {
                el.html(mail);
            }
        });
    });

};

function lxActionFormSubmit(elForm, elContentTarget, elHighlight) {

    if (elContentTarget == null)
        elContentTarget = $(elForm).closest(".module-content");

    if (elHighlight == null)
        elHighlight = elContentTarget;
    
    var handleSuccess = function(sContent) {
        elContentTarget.html(sContent);
        $(elHighlight).effect("highlight", {}, 2000);
    };

    $.ajax({
        url: $(elForm).attr("action"),
        type: "post",
        cache: false,
        data: $(elForm).serialize(),
        success: handleSuccess
    });
}