var javascriptPath = "myweb2go/js/ntlsapi";

//document.write('<script type="text/javascript" src="' + javascriptPath + '/base.js"><\/script>');
document.write('<script type="text/javascript" src="myweb2go/js/ajax.js"><\/script>');
document.write('<script type="text/javascript" src="js/datechooser/date-functions.js"><\/script>');
document.write('<script type="text/javascript" src="js/datechooser/datechooser.js"><\/script>');

var Myweb2mailUtils = {
  executeUrl : function(id, origurl, options) {
        var $j = jQuery;
        var opts = {
        	workingText: _L['vorbereite'], //Was auf Modal-Window angezeigt werden soll
        	method: 'get', //Request Method
        	updateNode: '', //Element zu Updaten
        	hideEntryOnSuccess: '', //Was ausgeblendet werden soll
        	onSuccess: function(){}
        };
        options = $j.extend(opts, options);
        
        var workingText = options.workingText;
        ModalInfo.set({text: workingText});
        var split = origurl.split("?");
        var url = split[0];
        var args = split[1] || '';
        var method = options.method;
        if(options.updateNode) {
        	var onSuccess = function(req) {
	                if(isNaN(req.responseText)) {
	                    var html = req.responseText;
	                    $j('#'+options.updateNode).html(html);
	                    window.scrollTo(0,0);
	                    ModalInfo.destr();
	                    if($j.browser.msie){
	                        try {
	                            document.recalc();
	                        }
	                        catch (e) {
	                            alert(e);
	                        }
	                    }
	                    // HACK: http://sourceforge.net/forum/message.php?msg_id=3797289
	                    __FCKeditorNS = null;
	                    FCKeditorAPI = null;
	                    loadFCKeditorAreas();
	                    Myweb2mailUtils.initjQquery();
	                    if (options.onSuccess && typeof options.onSuccess == 'function') {
	                    	var datensatz = $j.parseJSON(req.getResponseHeader('X-Json'));
	                        options.onSuccess(req, datensatz);
	                    }
	                }
	                else {
	                    var text = AjaxNtls.errorText(req.responseText);
	                    ModalInfo.set({text: text, showProgress: false});
	                    window.setTimeout('ModalInfo.destr()',400);
	                }
            	};
            var opts = {
            		type: method,
                    data: args + '&_remote=1&_normalForm=1',
                    complete: onSuccess
            	};
            var settings = $j.extend({url:url}, opts);
            $j.ajax(settings);
        }
        else {
        	var onSuccess = function(req) {
        			var json = $j.parseJSON(req.getResponseHeader('X-Json')) || $j.parseJSON(req.responseText);
        			var datensatz = $j.parseJSON(req.getResponseHeader('X-Json')) || json.datensatz;
	                if((req.responseText && req.responseText=="1") || (json && json.success=="1")) {
	                    if(!options.hideInfo && datensatz._info.length > 0) {
	                        var texte = datensatz._info.join("<br>");
	
	                        ModalInfo.set({text: texte, showProgress: false});
	                    }
	                    if(options.onSuccess && typeof options.onSuccess == 'function') {
	                        options.onSuccess(req, datensatz);
	                    }
	                    if(options.hideEntryOnSuccess) {
	                        $j('#'+options.hideEntryOnSuccess).fadeOut(); 
	                        VALUE = $j('#__to').val();
                        	var val = $j('#__to').val();
                            $j('#__to').val(--val); 
                        	var val = $j('#__total').val();
                            $j('#__total').val(--val);
	                    }
	                }else if(json && json.success=="-1"){
	                    var text = json.message.join('<br/>');
	                    $j('#errors').html(text);
	                    window.setTimeout('ModalInfo.destr()',400);	                	
	                }
	                else if(req.responseText=="-1") {
	                }
	                else {
	//                    alert(req.responseText);
	                }
	                if (!options.hideInfo)
	                    window.setTimeout("ModalInfo.destr()", 400);
	            };
            var opts = {
            		type: method,
                    data: args + '&_remote=1',
                    complete: onSuccess
                  };
            var settings = $j.extend({url:url}, opts);
            $j.ajax(settings);
        }
    },
    
     deleteEntry : function(id, url, options) {
            var $j = jQuery;
            options = options || {};
            var newWorkingText = options.workingText || _L['dialog.loeschen.single.title'];
            var questionText = options.questionText || _L['dialog.loeschen.single.text'];
            var newHideEntryOnSuccess = options.hideEntryOnSuccess || 'entry' + id;
            var onConfirm = function(){
                 Myweb2mailUtils.executeUrl(id, url + '&confirmed=1&test=1', { 
                	method:'post',
                    workingText : newWorkingText,
                    hideEntryOnSuccess : newHideEntryOnSuccess,
                    onSuccess: function(){}
                 });   
                };
            var oConfirmConf = {title: newWorkingText, content: questionText, ok: onConfirm};
            Myweb2mailUtils.fnConfirmDialog(oConfirmConf);
    },
    
    fnConfirmDialog: function(options){
        var $ = jQuery;
        var oDialog = $('<div/>');
        var oOptions = options || {};
        var dialogWidth = options.width || '';
        var strContent = options.content || '';
        oDialog.html(strContent);
        var strTitle = options.title || $(oDialog.children()[0]).attr('title') || '';
        var fnOnOk = options.ok || function(){};
        var fnCloseDialog = function(){
                $(this).dialog('destroy');
                oDialog.remove();
            };
        var fnOkClick = function(){
                fnOnOk();
                $(this).dialog('close');
            };
        var fnCencelClick = function(){
                $(this).dialog('close');
            };
        var oDialogConfig = {buttons: {'Nein': fnCencelClick, 'Ja': fnOkClick},
                            close: fnCloseDialog,
                            width: dialogWidth};
        var rtr = oDialog.attr('title', strTitle)
                   .dialog(oDialogConfig);
        return rtr;
    },
    
    /**
     * Erstellt Upload-Form fuer jQuery-Upload
     */
    createUploadForm: function(opts){
    	var $ = jQuery;
    	var prop = {text: _L['upload'],
    				name: 'file'}; 
    	opts = $.extend(prop, opts);
    	var form = $('<form method="POST" enctype="multipart/form-data"/>').appendTo('body');
    	var file = $('<input type="file" name="'+opts.name+'" multiple>').appendTo(form);
    	var control = $('<div class="jq_upload_btn">'+opts.text+'</div>').appendTo(form);
    	$('<button></button>').appendTo(form);
    	return form;
    },
    
    rules : {
        '*[command] .commandclick:click' : function(el,ev) {
            var p = el.up('*[command]');
            eval(p.getAttribute('command'));  
        },
    // belegt die checkbox mit class mchooserall mit der Funktion das alle, Checkbox mit der class mchooser ihr "folgen" 
    'input.mchooserall:click': function(element,ev) {
            Event.stop(ev);
            mChooserBoxSelect(element.checked);
    },
    'input.mchooserselectall:click': function(element,ev) {
            Event.stop(ev);
            mChooserBoxSelect(true);
    },
    'input.mchooserdeselectall:click': function(element,ev) {
            Event.stop(ev);
            mChooserBoxSelect(false);
    },
    'a.ajaxcmd:click' : function(el,ev) {
        Event.stop(ev);
        var updateNode = el.getAttribute('updateNode');
        var position = el.getAttribute('position');
        var method = el.getAttribute('href') || '';
        var argsStr = el.getAttribute('args') || '{}';
        var args = argsStr.evalJSON();
        var onSuccess = el.getAttribute('onSuccess');
        var callback = function(req, json) {
            if(updateNode && $(updateNode)) {
                if(!position) {
                    $(updateNode).update(req.responseText);
                }
                else {
                    var pargs = {};
                    pargs[position] = req.responseText;
                    $(updateNode).insert(pargs);
                }
                Myweb2mailUtils.initjQquery();
                if(onSuccess) {
                    eval(onSuccess);
                }
            }
        };
        AjaxNtls.executeMethod(null, { method: method , args: args }, callback);
    }
    }
};

NtlsLib.addCSS('css/jquery-ui-1.8.4.custom.css');
jQuery(document).ready(function(){
    Myweb2mailUtils.initjQquery();
    jQuery.extend(Rules, Myweb2mailUtils.rules);
    EventSelectors.start(Rules);
});

var TextAreaUtils =  {
  openFCKDialog : function(textarea) {
        this.node = $(textarea);
        var test = window.open('FCKeditor/editor/plugins/inserttrackinglink/myweb2mailmark.php?textarea=1', "FCKLink", "width=400,height=150,resizable=no,toolbar=no");
    },
  inserText : function(text) {
	this.insertAtCursor(this.node, text);
    },
  insertAtCursor : function(myField, myValue) {
//IE support
	if (document.selection) {
	    myField.focus();
	    
//in effect we are creating a text range with zero
//length at the cursor location and replacing it
//with myValue
	    sel = document.selection.createRange();
	    sel.text = myValue;
	}
	
//Mozilla/Firefox/Netscape 7+ support
	else if (myField.selectionStart || myField.selectionStart == '0') {
	    
//Here we get the start and end points of the
//selection. Then we create substrings up to the
//start of the selection and from the end point
//of the selection to the end of the field value.
//Then we concatenate the first substring, myValue,
//and the second substring to get the new value.
	    var startPos = myField.selectionStart;
	    var endPos = myField.selectionEnd;
	    myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);
	} else {
	    myField.value += myValue;
	}
    } 
};

function fnShowAjaxDialogInfo(url, conf){
    var $ = jQuery;
    conf = conf || {};
    var oDialog = $('<div/>');
    var onClose = function(){
        oDialog.dialog('remove');
        oDialog.remove();
    };
    var oDialogConf = $.extend({close: onClose, width: 455}, conf);
    var fnSetInfo = function(req){
        oDialog.html(req);
        oDialog.attr('title', $(oDialog.children()[0]).attr('title'));
        oDialog.dialog(oDialogConf);
    };
    $.ajax({
        url: url,
        success: fnSetInfo
    });
    return false;
}

function get_loadingTableString(text, options) {
    var options = options || {};
    
    var loadingTable = '<table id="loadingtable" style="height:100%;width:100%">';
    loadingTable += '<tr>';
    loadingTable += '<td style="text-align:center;vertical-align:middle">';
    if(options['type']=='new') {
        loadingTable += '<img src="themes/alert/progress.gif">';
    }
    else {
        loadingTable += '<img src="grafik/icons/working.gif">';
    }
    loadingTable += '</td></tr>';
    if( text ) {
        loadingTable += '<tr><td style="text-align:center;vertical-align:middle">';
        loadingTable += text;
        loadingTable += '</td></tr>';
    }
    loadingTable += '</table>';
    return loadingTable;
}

// Aendert das Passwort des angemeldeten Mandanten oder Mandantenbenutzers.
function mChooserBoxSelect(select) {
	var $ = jQuery;
    $('input.mchooser:not(:disabled)').each(function() {
        $(this).attr("checked", "checked");
    });
}
/*
 * jQuery Tools innerhalb myweb2mail 
 */
var ModalInfo;
var fnShowAjaxDialogForm;
(function($) {
    $('a.removeitem').live('click', function(evt) {
    	evt.preventDefault();
	    var par = $(this).parents('.item:first');
	    par.fadeOut(function() {par.remove()} );
	});
    
    $('a.showmode, .actions a').live('click', function(evt) {
        var updateNode = $(this).attr('updateNode') || 'mainContainer';
        var onSuccess = $(this).attr('onSuccess') || 'doOnLoad';
        var href = $(this).attr("href");
        var state = href.match(/state=(\d+)/i);
    	if($(this).attr('target') == '_blank' 
    		|| !state
    		|| state[1] == "324")
    		return;
		evt.preventDefault();
		state = state[1];
		var id = href.match(/id=(\d+)/i);
        switch(state){
        	case "34":
        		Myweb2mailUtils.deleteEntry(id[1], href);
        		break;
        	case "889":
        		VorlageUtils.sendTestmailForm(id, href, {workingText : 'Testmail wird versendet'});
        		break;
        	case "112":
        	case "600":
        	case "601":
        	case "6":
        		href = href+"&__recount=1";
        	default:
	        	Myweb2mailUtils.executeUrl(0, href, {updateNode: updateNode, onSuccess: onSuccess});
        }
    });
    
    $('.get_help_c').live('click', function(){
        var help_handle = $('#helpwindow');
        var config = {height: help_handle.height() , 
                      width:  help_handle.width()};
        if(help_handle.text().search(/\w/)==-1){
            help_handle.append($L('alt.hilfe'));
        }
        help_handle.dialog(config);
    });
    
    fnShowAjaxDialogForm = function(url, args, options){
	options = options || {};
        var oDialog = $('<div/>');
        var fnDialogRemove = function(){
            oDialog.dialog('remove');
            oDialog.remove();
        };

        var fnExecDialog = function(req){
            oDialog.html(req);
            var callBack = options.onShow || function(e){};
            var form = oDialog.find('form');
            var buttons = $.extend({},
		{ "OK":
    	          function() {
			form.submit();
              }
            }, options.extraButtons || {});
            var oDialogConf = {};

            var title = oDialog.find(':first').attr('title');
            oDialog.find(':first').removeAttr('title');
            oDialog.attr('title', title);
            oDialogConf.close = fnDialogRemove;
            oDialogConf.width = 'auto';
            oDialog.find('*[type=submit]').hide();
            oDialogConf.buttons = buttons;
            oDialog.find('*[type=file],*[type=submit],*[type=button]').button();
            oDialog.dialog(oDialogConf);
            callBack(oDialog);
        };
        $.ajax({
            url:url,
            type: "GET",
            data: args,
            success: fnExecDialog
        });
        
    };
    
    ModalInfo = {
        init: function(){
            ModalInfoObj = $('#modal_dialog').css({"opacity": 0.5});
        },
        set: function(config){
            config = config || {};
            var loader =  config.showProgress || true;
            var text =  config.text || 'Verarbeite ...';
            ModalInfoObj.find('.modal_dialog_info').html(text);
            if(loader)
                ModalInfoObj.find('.modal_dialog_progress').show();
            else
                ModalInfo.find('.modal_dialog_progress').hide();
            ModalInfoObj.show();   
            },
            
        destr: function(){
                ModalInfoObj.hide();
            }
    };
    
    Myweb2mailUtils.initTooltips = function(tooltip) {
        var tips = [{selector: 'table *[tooltip]', tip: '<div class="tabletooltip"/>'},
                    {selector: 'form *[tooltip]', tip: '<div class="formtooltip"/>'},
                    {selector: '*[tooltip]', tip: '<div class="allgemeintooltip"/>'}];
        if(tooltip) 
            tips = tooltip;
        $('.tip').hide();
        var id = null;
        var gen_id = function(str){
            var r=0;
            var c=0;
            while(c<str.length)
                r+=str.charCodeAt(c++);
            return 'tipId_'+r.toString(16);
        };
        var conf = {
                delay: 0,
                events: {image: 'mouseover, mouseout'}
        };
        var set_tip = function(tip, html){
            var tooltip = $(tip) || $('<div/>');
            if($('*[id='+id+']').length == 0){
                tooltip.html(html)
                        .attr('id', id)
                        .appendTo(document.body)
                        .hide()
                        .addClass('tip');
            }            
        };
        var set_tooltips = function(tip){
            var elems = $(tip.selector);
            elems.each(function(){
                try{
                    var t = jQuery(this);
                    if(t.html() == (t.attr('title') || t.attr('tooltip')) || t.attr('tooltip')=='')
                        return;
                    if(t.attr('tooltip'))
                        t.attr('title', t.attr('tooltip'));
                    id = gen_id(t.attr('title'));
                    if(t.attr('tooltipclass')){
                        var _tip = $('<div/>').attr('class', t.attr('tooltipclass'));
                    }else{
                        var _tip = tip.tip;
                    };
                    if(t.attr('tooltipposition')){
                        conf.position = t.attr('tooltipposition');
                    }else{
                        delete conf.position;
                    };
                    set_tip(_tip, t.attr('title'));
                    conf.tip = '#'+id;
                    t.removeAttr('tooltip');
                    t.removeAttr('title');
                    t.tooltip(conf);
                }catch(e){}
            });
        };
        $(tips).each(function(i,v){
            set_tooltips(v);
        });
        
    };
    
    Myweb2mailUtils.fnConfirmDeleteSelected = function(){
        var handles = $('.delete_selected');
        var fnConfirm = function(){
            var handle = $(this);
            var onOk = function(){
                handle.parents('form').submit();
            };
            var oConfirmConf = {title: _L['dialog.loeschen.mult.title'],
                                content:  _L['dialog.loeschen.mult.text'],
                                ok: onOk};
            Myweb2mailUtils.fnConfirmDialog(oConfirmConf);
            return false;
        };
        handles.each(function(){
            var handle = $(this);
            handle.click(fnConfirm)
        });
    }
    
    Myweb2mailUtils.initPasswordChange = function(selector){
        var pass_c = $('.ch_pass_c');
        var aendernClick = function(){
            var allFields = $(this).find('input:text, input:password');
            var msg = new Array();
            var form = $(this).find('form')[0];
            var dialog = $(this);
            allFields.removeClass('ui-state-error');
            var errors = {
                'password_old':  _L['dialog.passwort.error.alttes.passwort'],
                'password_new_confirm': _L['dialog.passwort.error.double.new']
            };
            allFields.each(function(k,o){
                if($F(o)==''){
                    msg.push(eval("errors."+$(o).attr('id')));
                    $(o).addClass('ui-state-error');
                }
            });
            if (msg.length > 0) {
                  var obj = dialog.find('.submit_error');
                  obj.html(msg.join('<br>'));
                  return false;
            }
            var myAjax = new Ajax.Request(
                'changepassword.php',
                {
                  method : 'get', 
                  parameters: Form.serialize(form), 
                  onSuccess: function(req, json) {
                        dialog.find('.submit_error').html(json);
                        if (req.responseText == "1") { // alles OK
                            try {
                                Effect.Pulsate('.submit_error');
                                Effect.DropOut('passwordDiv', { queue : 'end'});
                            } catch (e) {}
                        }
                    }
                }
            );           
            return true;
        };
        var config = {
                autoOpen: true,
                buttons: {'Ändern': aendernClick},
                width: 'auto'
        };
        var execDialog = function(){
            var url = 'changepassword.php?state=111&_remote=1';
            if($(this).attr('m_id'))
                url = url+'&m_id='+$(this).attr('m_id');
            $.ajax({url:url,
                success:function(data){
                    var dialog=$('<div/>');
                    dialog.html(data)
                    var form = dialog.find('form');
                    dialog.attr('title',form.attr('title'));
                    form.removeAttr('title');
                    dialog.dialog("destroy");
                    
                    var allFields = dialog.find('input:text, input:password');
                    allFields.addClass("text ui-widget-content ui-corner-all");
                    dialog.dialog(config);
                }});
        };
        pass_c.unbind('click');
        pass_c.click(execDialog);
    };
    
    Myweb2mailUtils.initDatepicker = function(conf){
        conf = conf || {};
        conf.format = conf.format || 'dd.mm.yy';
        conf.changeMonth = conf.changeMonth || true;
        conf.changeYear = conf.changeYear || true;
        conf.showOptions = conf.showOptions || {direction: 'left'};
		conf.showOn = "button";
		conf.buttonImage = "grafik/icons/calendar.png";
        var selector = conf.selector || 'input.datepicker, input.datepicker_zukunft';
        var pickerConf = conf;
        var els = $(selector);
        els.each(function(){
            var e = $(this);
            if(e.hasClass('datepicker')){
                e.toggleClass('datepicker');
            };
            if(e.hasClass('datepicker_zukunft')){
                pickerConf.minDate = new Date();
                e.toggleClass('datepicker_zukunft');
            };
            e.datepicker(pickerConf);
        });
    };

    Myweb2mailUtils.initjQquery = function(){
        this.initTooltips();
        this.initPasswordChange();
        this.initDatepicker();
        this.fnConfirmDeleteSelected();
        ModalInfo.init();
    };
    
    AjaxNtls.executeMethod = function(url, request, callBackHandler) {
        var url = url || location.href;
        request = this.createMethodRequestArgs(request);
        onSuccess = function(req){
        	var datensatz = $j.parseJSON(req.getResponseHeader('X-Json'));
        	callBackHandler(req, datensatz);
        };
        $.ajax({url: url,
            method: 'post',
            data: request,
            complete: callBackHandler});
    };

})(jQuery);

