﻿FNG.INV.EditEventInit = function(){
    
    //local settings
    var settings = {
        html : {
            addInputHtml : "<p><label>jmeno/email</label><input /> <input /></p>"
        }
    };
    
    //send invitation more form init
    var n = function(settings){
    
        //delete guest
        $(".delete_guest").click(function(){
            var t = $(this); //this shortcut
            var s = FNG.Util.String; //string util shortcut
            var d = s.splitHashLink(t.attr("href")); //id of guest uer
            var u = "../../ajax/deleteGuest"; //ajax link
            var o = {guestId : d}; //post object pairs
            var cb = function(d){ //callback
                
                FNG.AjaxUtil.Message(d.message, "#guest_list_wrp");
                
                if(d.status == 1){
                    d.methods.init(d);
                }
            }
            
            $.post(u, o, cb, "json"); //post
            
        });
        
        //shortcuts
        var W = $("#add_event_guests_wrp");

        //TODO: this could be a plugin
        //comma separated list from a email/name pari of inpust
        var m = function(settings){
            var gcr = 5;
            $("#more_email_fields_btn").click(function(){

                var ac = ""; //alt class

                //checks for odd/even rows
                if(gcr%2){
                    ac = " alt";
                }

                //appens a new row
                $("#guest_invite_table").append("<tr class=\"contact_set" + ac + "\"><td>" + gcr + "</td><td><input /></td><td><input /></td><td> <input id=\"ie_" + gcr + "\" /></td><td id=\"ie_" + gcr + "_t\"></td></tr>");

                //bind val click for the new row:
                $("#ie_" + gcr).change(bidVal);

                //adds one for the future row
                gcr = gcr + 1;
                return false;
            });

            //binds validation click
            var bidVal = function(){
                var T = $(this); //this current elemnt
                var e = T.val(); //value
                var i = T.attr("id"); //id of the input
                var ET = $("#" + i + "_t"); //target indicator
                
                //check if email validates and create indicator
                if(FNG.Util.String.isEmail(e)){
                    ET.html("<img src=\"../../Content/images/icons/icon_check.png\"/>");
                }
                else{
                    ET.html("<img src=\"../../Content/images/icons/icon_delete.gif\"/>");
                }
            };

            //email validator init
            var evi = function(){
                $(".contact_set").each(function() {
                    var t = $(this); //this
                    var I = $('input', t); //input pair
                    $(I[2]).change(bidVal);
                });
            }();
                
            //Get values from the other form
            var p = function(){
                var se = FNG.INV.Session.Event;
 
                $("#template_id").val(se.template);
                $("#event_guid2").val(se.guid);
                $("#event_id").val(se.id);
            };
            
            //AJAX submit infitations
            (function(o){

                var NE = $("#invite_guests_form");
                var L = FNG.AjaxUtil; //TODO: move levelup

                //custon callback function
                var c = {
                    s : function(){
                            //runs 'OnBeforeSubmit' fuction
                            p();
                            var e = FNG.INV.GetCsvEmails(".contact_set");
                            $("#csvEmails").val(e);
                            L.LoaderOn(); //loader image off
                        }, 
                    e : function(d){
                            L.LoaderOff(); //loader image off
                            W.hide(); //hides to aviod double submit
                            L.Message(d.message); //message
                            //detects sucess code
                            if(d.status == 1){
                                d.methods.init(d.data);
                            }else{
                                W.fadeIn("fast");
                            }
                        }
                    };
                
                NE.FngForm({clickCall : c.s, callBack : c.e});
            }())
 
            
            $('#email_tab_wrp2').FngTabs();
            $('#edit_tab_wrp2').FngTabs();
            
            //more emails nav init "void"
            (function(){
            
                /* show/hide/more logic
                --------------------------------------*/
                var E = $("#invite_more"); //selects elements
                var C = $("#cancel_email_inport_btn");
                var M = $("#more_email_fields_btn");
                
                var h = function(){
                    E.removeClass("current");
                    //W.hide();
                    W.slideUp("fast")
                    return false;
                }
                
                var s = function () {
                    //W.show();
                    W.slideDown("fast");
                    E.addClass("current");
                    return false;
                }

                C.click(h);
                E.click(s);
                //E.toggle(s, h);
                
            }());

    }(settings);
        
        
    //edit form init
    var b = function(){ 
        var a = FNG.AjaxUtil;
        //edit
        var al = FNG.Util.String.linkParams();
        var g = al[3];
        
        var l = "/ajax/getEvent/" + g + "";
        var F = $("#new_event_step_1"); //edit_event_wrp
        var W = $("#edit_event_wrp"); //

        //loads template
        $.getJSON(l, function(d){
        
            //store event data in a session
            FNG.INV.Session.Event = d.data.event;
        
            //click call
            var cc = function(d){
                //W.hide();
                W.slideDown("fast");
            }
            //callback
            var cb = function(r){
                a.Message(r.message);
                //W.show();
                W.slideUp("fast");
                
                //Reloads the page to show changes
                if(r.status == 1){
                    window.location.reload();
                }
            }
            
            //populates message filed of the invite form
            $("#emails_message").val(d.data.event.description);
            
            //binds submit data, and populates fields
            F.FngForm({clickCall : cc, callBack : cb}).FngPopForm({formFields : d.data.event});
        });
        
        //init for edit for sub view
        var ew = function(){
            var C = $("#edit_event_btn_cancel");
            var E = $("#edit_event_btn");
            
            var h = function(){
                E.removeClass("current");
                W.slideUp("fast");
                //W.hide();
            }
            
            var s = function () {
                //W.show();
                W.slideDown("fast");
                E.addClass("current");
                return false;
            }

            C.click(h);
            E.click(s);
            //E.toggle(s, h);
        
        }();
        
        
        //updates template placehodlers
        $(".changer").change(function(){
            var T = $(this);
            var v = T.val();
            var n = T.attr("name");
            $("#temp_" + n).text(v);
        });
        
        // Datepicker
        $('#datepicker').datepicker({
            dayNamesMin: ['Ne', 'Po', 'Ut', 'St', 'Ct', 'Pa', 'So'],
            inline: true
        });

        $.datepicker.regional['cs'] = {
            closeText: 'Zavřít',
            prevText: '&#x3c;Dříve',
            nextText: 'Později&#x3e;',
            currentText: 'Nyní',
            monthNames: ['leden','únor','březen','duben','květen','červen',
            'červenec','srpen','září','říjen','listopad','prosinec'],
            monthNamesShort: ['led','úno','bře','dub','kvě','čer',
            'čvc','srp','zář','říj','lis','pro'],
            dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
            dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
            dayNamesMin: ['ne','po','út','st','čt','pá','so'],
            dateFormat: 'dd/mm/yy', firstDay: 1,
            isRTL: false};
            
            $.datepicker.setDefaults($.datepicker.regional['cs']);
        
        }();

    }(settings);
    
    
    //RSVP void
    (function(){
        //FNG.INV.NewEventFormInit('#rsvp_form'); //ajaxFrom initer
        
        var NE = $("#rsvp_form");
        var L = FNG.AjaxUtil;

        //custon callback function
        var c = {
            s : function(){

            }, 
            e : function(d){
                    L.LoaderOff(); //loader image off
                    NE.hide(); //hides to aviod double submit
                    L.Message(d.message, "#rsvp_form"); //message
                    
                    //detects sucess code
                    if(d.status == 1){
                        d.methods.init(d.data);
                    }else{
                        NE.fadeIn("fast");
                    }
                }
            };
        
        NE.FngForm({clickCall : c.s, callBack : c.e, submit : "#submit_rsvp"});
        
        var e = $(".response_nav a"); //selects elements
        e.click(function(){ 
            var t = $(this);
            
            var s = FNG.Util.String; //util shorcut
            var l = t.attr("href"); //link
            var n = l.replace("#", ""); //gets rid of #
            $("#rsvp_code").val(n); //populates form hiddne fileds
            
            e.removeClass("current");
            t.addClass("current");
        return false;
        });
    }());
};

$(document).ready(function(){
    FNG.INV.EditEventInit();
});

