/**
 * Class ZooActions
 *
 */
ZooActions = Class.create();
Object.extend(ZooActions.prototype, {

    /**
     * Initializes this class
     *
     */
    initialize: function() {
        this.url = HTML_ROOT + 'ajax/ajaxZoo.php?mode=actions';
    },

    /**
     * Sendsa user the fever
     *
     * @param evtElm domnode which called this function
     * @param user_id int Id of the user to send fever to
     * @param name string Name of the user who gets the fever
     */
    sendFever: function(evtElm, user_id, name) {
        // prepare the ajax url to call
        var params = '&action=sendFever';
        params += '&to='+user_id;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestName = name;
        this.latestEvtElm = evtElm;
        
        new Ajax.Request(url, {'onSuccess':this.sendFeverOnSuccess.bind(this)});        
        
        return false;
    },
    
    /**
     * Called after adding a user to the current users buddy list
     *
     */
    sendFeverOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        //var textNode = Builder.node('span', 'Reisefieber wurde gesendet');
        var imgNode = Builder.node('img', {'src':HTML_ROOT + 'pix/icons-admin/thermo.gif', 'class':'icon'});
		var textNode = Builder.node('span', ' Mit Reisefieber angesteckt');
        
        Element.remove(this.latestEvtElm);
        parentObj.appendChild(imgNode);
        parentObj.appendChild(textNode);
//        parentObj.appendChild(textNode);
        new Effect.Highlight(parentObj);
        
        
    },

    /**
     * Adds a user to the current users buddy list
     *
     * @param evtElm domnode which called this function
     * @param user_id int Id of the user to add
     * @param name string Name of the user who is added
     */
    addToMyBuddies: function(evtElm, user_id, name) {
        // prepare the ajax url to call
        var params = '&action=addToMyBuddies';
        params += '&userid='+user_id;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestUserId = user_id;
        this.latestName = name;
        
        new Ajax.Request(url, {'onSuccess':this.addToMyBuddiesOnSuccess.bind(this)});        
        
        return false;
    },
    
    /**
     * Called after adding a user to the current users buddy list
     *
     */
    addToMyBuddiesOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
//        var onclickTxt = 'return zooActions.removeFromMyBuddies(this,'+this.latestUserId+',\''+this.latestName+'\');'
//        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt}, 'Von Freundesliste entfernen');
		var imgNode = Builder.node('img', {'src':HTML_ROOT + 'pix/icons-admin/freunde-hinzu.gif', 'class':'icon'});
		var textNode = Builder.node('span', ' Freundschaftseinladung versendet');
        
        Element.remove(this.latestEvtElm);
        parentObj.appendChild(imgNode);
        parentObj.appendChild(textNode);
        new Effect.Highlight(parentObj);        
    },

    /**
     * Remove a user from the current users buddy list
     *
     * @param evtElm domnode which called this function
     * @param user_id int Id of the user to add
     * @param name string Name of the user who is added
     */
    removeFromMyBuddies: function(evtElm, user_id, name) {
        // prepare the ajax url to call
        var params = '&action=removeFromMyBuddies';
        params += '&userid='+user_id;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestUserId = user_id;
        this.latestName = name;
        
        new Ajax.Request(url, {'onSuccess':this.removeFromMyBuddiesOnSuccess.bind(this)});        
        
        return false;
    },
    
    /**
     * Called after removing a user from the current users buddy list
     *
     */
    removeFromMyBuddiesOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        var onclickTxt = 'return zooActions.addToMyBuddies(this,'+this.latestUserId+',\''+this.latestName+'\');';
        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt});
        var imgNode = Builder.node('img', {'src':HTML_ROOT + 'pix/icons-admin/freunde-hinzu.gif', 'class':'icon'});
        var txtNode = Builder.node('span', ' Zu meinen Freunden hinzufügen');
        linkNode.appendChild(imgNode);
        linkNode.appendChild(txtNode);
        
        
        Element.remove(this.latestEvtElm);
//        parentObj.appendChild(imgNode);
        parentObj.appendChild(linkNode);
        new Effect.Highlight(parentObj);        
    }    ,
    
    
    addSubscription: function(evtElm, threadid) {
        // prepare the ajax url to call
        var params = '&action=addSubscription';
        params += '&threadid='+threadid;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestThreadId = threadid;
        
        new Ajax.Request(url, {'onSuccess':this.addSubscriptionOnSuccess.bind(this)});        
        
        return false;
    },

    addSubscriptionOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        var onclickTxt = 'return zooActions.rmSubscription(this,'+this.latestThreadId+');'
        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt}, 'Thema nicht mehr abonnieren');
        
        Element.remove(this.latestEvtElm);
        parentObj.appendChild(linkNode);
        new Effect.Highlight(linkNode);        
    },

    rmSubscription: function(evtElm, threadid) {
        // prepare the ajax url to call
        var params = '&action=rmSubscription';
        params += '&threadid='+threadid;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestThreadId = threadid;
        
        new Ajax.Request(url, {'onSuccess':this.rmSubscriptionOnSuccess.bind(this)});        
        
        return false;
    },
    
    rmSubscriptionOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        var onclickTxt = 'return zooActions.addSubscription(this,'+this.latestThreadId+');'
        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt}, 'Thema abonnieren');
        
        Element.remove(this.latestEvtElm);
        parentObj.appendChild(linkNode);
        new Effect.Highlight(linkNode);        
    },
    
    /**
     * BLOG-ABOs
     **/
    
    
    addBlogSubscription: function(evtElm, threadid) {
        // prepare the ajax url to call
        var params = '&action=addBlogSubscription';
        params += '&blogid='+threadid;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestThreadId = threadid;
        
        new Ajax.Request(url, {'onSuccess':this.addBlogSubscriptionOnSuccess.bind(this)});        
        
        return false;
    },

    addBlogSubscriptionOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        var onclickTxt = 'return zooActions.rmBlogSubscription(this,'+this.latestThreadId+');'
        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt}, 'Blog nicht mehr abonnieren');
        
        Element.remove(this.latestEvtElm);
        parentObj.insertBefore(linkNode, $('abo_hilfe'));
        parentObj.insertBefore(Builder.node('text', ' '), $('abo_hilfe'));
        $('abo_bild').src = HTML_ROOT + 'pix/icons-admin/blog-keinabo.gif';
        new Effect.Highlight(linkNode);        
    },

    rmBlogSubscription: function(evtElm, threadid) {
        // prepare the ajax url to call
        var params = '&action=rmBlogSubscription';
        params += '&blogid='+threadid;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestThreadId = threadid;
        
        new Ajax.Request(url, {'onSuccess':this.rmBlogSubscriptionOnSuccess.bind(this)});        
        
        return false;
    },
    
    rmBlogSubscriptionOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        var onclickTxt = 'return zooActions.addBlogSubscription(this,'+this.latestThreadId+');'
        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt}, 'Blog abonnieren');
        
        Element.remove(this.latestEvtElm);
        parentObj.insertBefore(linkNode, $('abo_hilfe'));
        parentObj.insertBefore(Builder.node('text', ' '), $('abo_hilfe'));
        $('abo_bild').src = HTML_ROOT + 'pix/icons-admin/blog-abo.gif';
        new Effect.Highlight(linkNode);        
    },
    
        
    addVisited: function(evtElm) {
    	if (currentCountryId == 0)
    		return false;
        // prepare the ajax url to call
        var params = '&action=addVisited';
        params += '&cid='+currentCountryId;
        url = this.url + params;

        // remember the latest deleted id   
        this.latestEvtElm = evtElm;
        
        new Ajax.Request(url, {'onSuccess':this.addVisitedOnSuccess.bind(this)});        
        
        return false;
    },
    
    /**
     * Called after adding a user to the current users buddy list
     *
     */
    addVisitedOnSuccess: function() {
        //var parentObj = Element.up(this.latestEvtElm);
        //var textNode = Builder.node('a', 'Als besuchtes Ziel gespeichert.');
        
        //Element.remove(this.latestEvtElm);
        //parentObj.appendChild(textNode);
        var oldContent = this.latestEvtElm.innerHTML;
        var latestEvtElmRestore = this.latestEvtElm;
        this.latestEvtElm.innerHTML = 'Als besuchtes Ziel gespeichert';
        new Effect.Highlight(this.latestEvtElm, { afterFinish: function() { $('subcontent').style.display = 'none'; latestEvtElmRestore.innerHTML = oldContent; } } );
        
    },    
    addVisitTo: function(evtElm) {
    	if (currentCountryId == 0)
    		return false;
        // prepare the ajax url to call
        var params = '&action=addVisitTo';
        params += '&cid='+currentCountryId;
        url = this.url + params;

        // remember the latest deleted id   
        this.latestEvtElm = evtElm;
        
        new Ajax.Request(url, {'onSuccess':this.addVisitToOnSuccess.bind(this)});        
        
        return false;
    },
    
    /**
     * Called after adding a user to the current users buddy list
     *
     */
    addVisitToOnSuccess: function() {
        //var parentObj = Element.up(this.latestEvtElm);
        //var textNode = Builder.node('a', 'Als Reiseziel gespeichert.');
        
        //Element.remove(this.latestEvtElm);
        //parentObj.appendChild(textNode);
        var oldContent = this.latestEvtElm.innerHTML;
        var latestEvtElmRestore = this.latestEvtElm;
        this.latestEvtElm.innerHTML = 'Als Reiseziel gespeichert';
        new Effect.Highlight(this.latestEvtElm, { afterFinish: function() { $('subcontent').style.display = 'none'; latestEvtElmRestore.innerHTML = oldContent; } } );
        
        
    },
    
    
    enterGroup: function(evtElm, groupid) {
        // prepare the ajax url to call
        var params = '&action=enterGroup';
        params += '&group='+groupid;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestGroupId = groupid;
        
        new Ajax.Request(url, {'onSuccess':this.enterGroupOnSuccess.bind(this)});        
        
        return false;
    },

    enterGroupOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        var onclickTxt = 'return zooActions.leaveGroup(this,'+this.latestGroupId+');';
        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt});
        var imgNode = Builder.node('img', {'src':HTML_ROOT + 'pix/icons-admin/gruppe-austreten.gif', 'class':'icon'});
        var txtNode = Builder.node('span', ' Aus dieser Gruppe austreten');
        linkNode.appendChild(imgNode);
        linkNode.appendChild(txtNode);
        
        Element.remove(this.latestEvtElm);
        parentObj.appendChild(linkNode);
        new Effect.Highlight(parentObj);     
        if ($('myzoobar') != null)
	        new Effect.Appear($('myzoobar'), {duration:1, delay:0});   
    },

    leaveGroup: function(evtElm, groupid) {
        // prepare the ajax url to call
        var params = '&action=leaveGroup';
        params += '&group='+groupid;
        url = this.url + params;

        // remember the latest deleted id        
        this.latestEvtElm = evtElm;
        this.latestGroupId = groupid;
        
        new Ajax.Request(url, {'onSuccess':this.leaveGroupOnSuccess.bind(this)});        
        
        return false;
    },
    
    leaveGroupOnSuccess: function() {
        var parentObj = Element.up(this.latestEvtElm);
        var onclickTxt = 'return zooActions.enterGroup(this,'+this.latestGroupId+');';
        var linkNode = Builder.node('a', {'href':'#', 'onclick':onclickTxt});
        var imgNode = Builder.node('img', {'src':HTML_ROOT + 'pix/icons-admin/gruppe-beitreten.gif', 'class':'icon'});
        var txtNode = Builder.node('span', ' Dieser Gruppe beitreten');
        linkNode.appendChild(imgNode);
        linkNode.appendChild(txtNode);
        
        Element.remove(this.latestEvtElm);
        parentObj.appendChild(linkNode);
        new Effect.Highlight(parentObj);
        if ($('myzoobar') != null)
	        new Effect.Fade($('myzoobar'), {duration:1, delay:0});
    }
    
});

var zooActions;

// initialize classes and run function when document has completed loading
Event.observe(window, 'load', function(e){
    // instances of core classes
    zooActions = new ZooActions();
});