/* ---------------------------------------------- */
/* (c) 2009-2010 stoffn.de / Ingmar Decker        */
/* author: Ingmar Decker,  www.webdecker.de       */
/* ---------------------------------------------- */

window.addEvent('domready', function(){

    // Image detail page
    addImageDetailEvents();
 
    // Faves...
    addFaveEvents();      
    addRmFaveEvents();  
       
    // Voting
    addVoteEvents();  
    
    // Board hrefs... 
    addWindowOpenEvents();
 

    // Form, loader ani ...
    addLoaderEvents();


});
// ----------------------------------------------------------------
// Generic helpers
addAjaxClickEvent = function(onclickElem, actionName, targetId, afterFunc) {
    var eventClassName = 'event-' + actionName;
    if (!onclickElem.hasClass(eventClassName)) {
        onclickElem.addClass(eventClassName);
        onclickElem.addEvent('click', function(event) {
            var r = new Request.HTML({'url': '/ajax.php', 'update': targetId, 'onComplete': afterFunc});
            r.get({'stoffnajax':actionName, 'href':onclickElem.href});
            return false;
        });
    }    
}

addAjaxPostEvent = function(onclickElem, formId, actionName, targetId, afterFunc) {
    var eventClassName = 'event-' + actionName;
    if (!onclickElem.hasClass(eventClassName)) {
        onclickElem.addClass(eventClassName);
        onclickElem.addEvent('click', function(event) {
            if ($(document).getElement('input#stoffnajax')) {
                $(document).getElement('input#stoffnajax').setProperty('value', actionName);
            }
            var r = new Request.HTML({url: '/ajax.php', update: targetId, 'onComplete': afterFunc});
            r.post($(formId));          
        });
    }
}

// ----------------------------------------------------------------
addTestEvents = function() {
    if ($(document).getElement('div.testtest')) {
        $(document).getElements('div.testtest').each(addTestEvent);
    }
}
addTestEvent = function(onclickElem, index) {
    var id = onclickElem.getProperty('id');
    addAjaxClickEvent(onclickElem, 'test', id, addTestEvents)
}

// ----------------------------------------------------------------
// Ajax events

addFaveEvents = function () {
    if ($(document).getElement('a.fave')) {
        $(document).getElements('a.fave').each(addFaveEvent);
    }
}
addFaveEvent = function(onclickElem, index) {
    addAjaxClickEvent(onclickElem, 'fave', 'mod_stoffn_my_faves', addRmFaveEvents)
}

addRmFaveEvents = function () {
    if ($(document).getElement('a.rmfave')) {
        $(document).getElements('a.rmfave').each(addRmFaveEvent);
    }
}
addRmFaveEvent = function(onclickElem, index) {
    addAjaxClickEvent(onclickElem, 'rmfave', 'mod_stoffn_my_faves', addRmFaveEvents)
}

addVoteEvents = function () {
    if ($(document).getElement('a.vote')) {
        $(document).getElements('a.vote').each(addVoteEvent);
    }
    if ($(document).getElement('a.joincontest')) {
        $(document).getElements('a.joincontest').each(addJoinEvent);
    }
    if ($(document).getElement('a.quitcontest')) {
        $(document).getElements('a.quitcontest').each(addQuitEvent);
    }
}
addVoteEvent = function (onclickElem, index) {
    var vp = onclickElem.getParent('span.voting');
    var vid = vp.getProperty('id');
    addAjaxClickEvent(onclickElem, 'vote', vid, addVoteEvents);
}
addJoinEvent = function (onclickElem, index) {
    var vp = onclickElem.getParent('span');
    var vid = vp.getProperty('id');
    addAjaxClickEvent(onclickElem, 'joincontest', vid, addVoteEvents);
}
addQuitEvent = function (onclickElem, index) {
    var vp = onclickElem.getParent('span');
    var vid = vp.getProperty('id');
    addAjaxClickEvent(onclickElem, 'quitcontest', vid, addVoteEvents);
}
// ----------------------------------------------------------------
// Image details page events

addImageDetailEvents = function() {    
    if ($(document).getElement('.rm')) {
        $(document).getElements('.rm').addEvent('click', function(event) {
            var check = false;
            var cls = this.getProperty('class');
            if (cls.search(/lang_de/) >= 0) {
                check = confirm("Dieses Element wirklich löschen?");
            } else if (cls.search(/lang_en/) >= 0) {
                check = confirm("Are you sure to remove this item?");
            } else  {
                check = confirm("Dieses Element wirklich löschen?");
            }
            if (!check) return false;
            return true;            
        });
    }
    
    if ($(document).getElement('.unpublish')) {
        $(document).getElements('.unpublish').addEvent('click', function(event) {
            var check = false;
            var cls = this.getProperty('class');
            if (cls.search(/lang_de/) >= 0) {
                check = confirm("Dieses Motiv wirklich nicht mehr öffentlich zeigen?");
            } else if (cls.search(/lang_en/) >= 0) {
                check = confirm("Are you sure that you do not want to show this theme publicly anymore?");
            } else  {
                check = confirm("Dieses Motiv wirklich nicht mehr öffentlich zeigen?");
            }
            if (!check) return false;
            return true;            
        });
    }

    if ($(document).getElement('.offtake')) {
        $(document).getElements('.offtake').addEvent('click', function(event) {
            var check = false;
            var cls = this.getProperty('class');
            if (cls.search(/lang_de/) >= 0) {
                check = confirm("Dieses Motiv wirklich nicht mehr zum Bedrucken anbieten?");
            } else if (cls.search(/lang_en/) >= 0) {
                check = confirm("Are you sure that you do not want to offer this theme for printing anymore?");
            } else  {
                check = confirm("Dieses Motiv wirklich nicht mehr zum Bedrucken anbieten?");
            }
            if (!check) return false;
            return true;            
        });
    }
}

// ----------------------------------------------------------------
// Other funcs

addWindowOpenEvents = function() {
    if ($(document).getElement('div.comment a')) {
        $(document).getElements('div.comment a').addEvent('click', function(event) {
            window.open(this.href);
            return false;
        });
    }
}    

addLoaderEvents = function() {
    if ($(document).getElements('form')) {
        $(document).getElements('form').addEvent('submit', function(event) {
            if (!this.target) {
                showLoader();
            }
        });
    }
}    

showLoader = function () {
        var wrapper = $(document).getElement('div#wrapper');
        wrapper.setStyle('opacity', 0);
        $(document).getElement('div#loader').setStyle('display', 'block');
}

hideLoader = function () {
        var wrapper = $(document).getElement('div#wrapper');
        wrapper.setStyle('opacity', 1);
        $(document).getElement('div#loader').setStyle('display', 'none');
}


showOverinfo = function(event, id, caller) {
    if ($(document).getElement('div#overinfo-' + id)) {
        e = new Event(event);    
        info = $(document).getElement('div#overinfo-' + id);
        info.setStyle('display', 'block');
        info.setStyle('top', e.page.y + 'px');
        info.setStyle('left', e.page.x + 'px');
    }
}

hideOverinfo = function(event, id, caller) {
    if ($(document).getElement('div#overinfo-' + id)) { 
        info = $(document).getElement('div#overinfo-' + id);
        info.setStyle('display', 'none');     
    }
}


 
