YAHOO.namespace("avro.cultuur.favorieten");

YAHOO.avro.cultuur.favorieten = function() {
    var Event = YAHOO.util.Event;   
    var Dom = YAHOO.util.Dom;
    var form = document.forms['favorietenform'];
    var pageField = Dom.get("startPage");

    var aantalFavorietenCallback = {
        success: function(obj) {
            var subtabmenu = Dom.get("subtabmenu-aantal-favorieten");
            if (subtabmenu) {
                subtabmenu.innerHTML = obj.responseText;
            }
        },
        failure: function(obj) {
            
        },
        cache: false
    }
    var laatsteFavorietCallback = {
        success: function(obj) {
            var laatstefavoriet = Dom.get("laatstefavoriet");
            if (laatstefavoriet) {
                laatstefavoriet.innerHTML = obj.responseText;
            }
        },
        failure: function(obj) {
            
        },
        cache: false
    }
    var postFavorietCallback = {
        success: function(obj) {
            var link = this.argument["target"];
            Dom.replaceClass(link, "voegtoe-favorieten", "favoPlaced");
            link.innerHTML = "geplaatst in favorieten";
            var subtabmenu = Dom.get("subtabmenu-aantal-favorieten");
            if (subtabmenu) {
                YAHOO.util.Connect.asyncRequest('GET', 'actions/getaantalfavorieten', aantalFavorietenCallback);
            }
            var laatstefavoriet = Dom.get("laatstefavoriet");
            if (laatstefavoriet) {
                YAHOO.util.Connect.asyncRequest('GET', 'actions/laatstefavoriet', laatsteFavorietCallback);
            }
        },
        failure: function(obj) {
            
        },
        argument: []
    }
    var deleteFavorietCallback = {
        success: function(obj) {
            YAHOO.util.Connect.asyncRequest('GET', 'actions/favorietenaankeilers', aankeilersCallback);
            var subtabmenu = Dom.get("subtabmenu-aantal-favorieten");
            if (subtabmenu) {
                YAHOO.util.Connect.asyncRequest('GET', 'actions/getaantalfavorieten', aantalFavorietenCallback);
            }
        },
        failure: function(obj) {
            
        },
        argument: []
    }

    var aankeilersCallback = {
        success: function(obj) {
            var aankeilers = Dom.get("favorieten-aankeilers-placeholder");
            aankeilers.innerHTML = obj.responseText;
            YAHOO.avro.cultuur.favorieten.init();
        },
        failure: function(obj) {

        },
        cache: false
    }

    var verwijderFavoriet = function(event) {
        Event.preventDefault(event);
        var itemid = this.href.substring(this.href.indexOf("#item", 0) + 5);
        deleteFavorietCallback.argument["itemid"] = itemid;
        YAHOO.util.Connect.asyncRequest('POST', 'actions/deletefavoriet', deleteFavorietCallback, 'id=' + this.rel);
    }
    
    var bewaarFavoriet = function(event) {
        Event.preventDefault(event);
        postFavorietCallback.argument["target"] = this;
        var c = YAHOO.util.Connect.asyncRequest('POST', 'actions/postfavoriet', postFavorietCallback, 'item=' + this.rel);
    }
    
    var loginPopup = function(event) {
        YAHOO.util.Cookie.set("nl.avro.cultuurgids.settings.loginRedirect", "addfav");
        YAHOO.util.Cookie.set("nl.avro.cultuurgids.settings.loginRedirect.item", this.rel);
        Event.preventDefault(event);
        openLoginClick(event);
    }

    var loginFavorieten = function(event) {
        Event.preventDefault(event);
        YAHOO.util.Cookie.set("nl.avro.cultuurgids.settings.loginRedirect", "mijnfav");
        openLoginClick(event);
    }

    var pageClick = function(event) {
        pageField.value = this.rel;
        submitForm(event);
    }

    var submitForm = function(event) {
        Event.preventDefault(event);
        form.submit();
    }

    var checkLogin = function() {
        var loggedIn = YAHOO.util.Cookie.get("nl.avro.cultuurgids.settings.loggedin");
        if (loggedIn && loggedIn == "true") {
            var refs = Dom.getElementsByClassName("plaatsFavorieten");
            for (var i = 0; i < refs.length; i++) {
                var ref = refs[i];
                var refCallback = {
                    success: function(obj) {
                        var ref = this.argument["target"];
                        if (obj.responseText == "true") {
                            Dom.addClass(ref, "favoPlaced");
                            ref.innerHTML = "geplaatst in favorieten";
                        } else {
                            Dom.addClass(ref, "voegtoe-favorieten");
                            Event.addListener(ref, "click", bewaarFavoriet);
                        }
                    },
                    failure: function(obj) {

                    },
                    argument: [],
                    cache: false
                }
                refCallback.argument["target"] = ref;
                YAHOO.util.Connect.asyncRequest('GET', 'actions/getfavorietitem?item=' + ref.rel, refCallback);
            }
        } else {
            Dom.addClass(Dom.getElementsByClassName("plaatsFavorieten"), "login-popup");
        }
    }

    return {
      init: function() {
          checkLogin();
          Event.addListener(Dom.getElementsByClassName("voegtoe-favorieten", "a"), "click", bewaarFavoriet);
          Event.addListener(Dom.getElementsByClassName("login-popup", "a"), "click", loginPopup);
          Event.addListener(Dom.getElementsByClassName("login-mijnfav", "a"), "click", loginFavorieten);
          Event.addListener(Dom.getElementsByClassName("verwijder-favorieten", "a"), "click", verwijderFavoriet);
//          Event.addListener(Dom.getElementsByClassName("pagebutton", "a"), "click", pageClick);
      } 
    };

}();

YAHOO.util.Event.onDOMReady(YAHOO.avro.cultuur.favorieten.init);


