Mediabiz = {};

Mediabiz.Statistics = {

    generateSeed: function() {

        return (Math.random()*100000);
	},

	/**
	 * Reset all relevant count pixels for mediabiz tracking.
	 * Currently ivw and own count.
	 */
	setCountPixel: function() {

		Mediabiz.Statistics.Emv.refreshPixel();
		Mediabiz.Statistics.Ivw.refreshPixel();
	}
};

Mediabiz.Statistics.Emv = {

    baseUrl: '',
	id     : 'mediabizPixel',

	setBaseUrl: function(url) {

	    this.baseUrl = url;
	},

	refreshPixel: function() {

	    var elem   = document.getElementById(this.id);
		var seed   = Mediabiz.Statistics.generateSeed();
		var newSrc = this.baseUrl + '&seed=' + seed;

		if(elem != null) {

		    elem.src = newSrc;
		}
	},

	refreshMediaPixel: function(u) {

	    var elem   = document.getElementById(this.id);
		var seed   = Mediabiz.Statistics.generateSeed();
		var newSrc = u + '&seed=' + seed;

		if(elem != null) {

		    elem.src = newSrc;
		}
	},

    init: function() {

        this.initAccordion();
        this.initAjaxPaging();
        this.initLinks();
        this.initPaging();
        this.initYuiTabs();
        this.initZoom();
    },

    initAccordion: function() {

        ac1 = YAHOO.util.Dom.getElementsByClassName('accordion');
        ac2 = YAHOO.util.Dom.getElementsByClassName('accordion_v2');
        ta  = YAHOO.util.Dom.getElementsByClassName('toggleall_accordion');
        var _this = this;

        for(i=0; i<ac1.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ac1[i], function(el){ return (el.tagName == 'DT') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }

        for(i=0; i<ac2.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ac2[i], function(el){ return (el.tagName == 'DT') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }

        for(i=0; i<ta.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ta[i], function(el){ return (el.tagName == 'A') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }
    },

    initAjaxPaging: function() {

        ap = YAHOO.util.Dom.getElementsByClassName('pager');
        var _this = this;
        for(i=0; i<ap.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ap[i], function(el){ return (el.tagName == 'A') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }
    },

    initLinks: function() {

        links = YAHOO.util.Dom.getElementsByClassName('countLink');
        var _this = this;

        for(i=0; i<links.length; i++) {

            YAHOO.util.Event.addListener(links[i], "click", function() { _this.clickedActive(this); });
        }
    },

    initPaging: function() {

        pagingPrev = YAHOO.util.Dom.getElementsByClassName('prev');
        pagingNext = YAHOO.util.Dom.getElementsByClassName('next');
        close      = YAHOO.util.Dom.getElementsByClassName('close');
        var _this = this;

        for(i=0; i<pagingPrev.length; i++) {

            YAHOO.util.Event.addListener(pagingPrev[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<pagingNext.length; i++) {

            YAHOO.util.Event.addListener(pagingNext[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<close.length; i++) {

            YAHOO.util.Event.addListener(close[i], "click", function() { _this.clickedActive(this); });
        }
    },

    initYuiTabs: function() {

        yuiTabs = YAHOO.util.Dom.getElementsByClassName('yui-nav');
        var _this = this;
        for(i=0; i<yuiTabs.length; i++) {

            children = YAHOO.util.Dom.getChildren(yuiTabs[i]);
            YAHOO.util.Event.addListener(children, "click", function() { _this.clickedActive(this); });
        }
    },

    initZoom: function() {

        zoom      = YAHOO.util.Dom.getElementsByClassName('zoom');
        zoomNoimg = YAHOO.util.Dom.getElementsByClassName('zoomNoimg');
        zoomEan   = YAHOO.util.Dom.getElementsByClassName('zoomean');
        var _this = this;

        for(i=0; i<zoom.length; i++) {

            YAHOO.util.Event.addListener(zoom[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<zoomNoimg.length; i++) {

            YAHOO.util.Event.addListener(zoomNoimg[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<zoomEan.length; i++) {

            YAHOO.util.Event.addListener(zoomEan[i], "click", function() { _this.clickedActive(this); });
        }
    },

    clickedActive: function(element) {

        if(!YAHOO.util.Dom.hasClass(element, 'active')) {

            this.refreshPixel();
        }
    }
};

Mediabiz.Statistics.Ivw = {

    baseUrl: '',
	id     : 'ivwPixel',

	setBaseUrl: function(url) {

	    this.baseUrl = url;
	},

	refreshPixel: function() {

	    var elem   = document.getElementById(this.id);
		var seed   = Mediabiz.Statistics.generateSeed();
		var newSrc = this.baseUrl + '&d=' + seed;

		if(elem != null) {

		    elem.src = newSrc;
		}
	},

    init: function() {

        this.initAccordion();
        this.initAjaxPaging();
        this.initLinks();
        this.initPaging();
        this.initYuiTabs();
        this.initZoom();
    },

    initAccordion: function() {

        ac1 = YAHOO.util.Dom.getElementsByClassName('accordion');
        ac2 = YAHOO.util.Dom.getElementsByClassName('accordion_v2');
        ta  = YAHOO.util.Dom.getElementsByClassName('toggleall_accordion');
        var _this = this;

        for(i=0; i<ac1.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ac1[i], function(el){ return (el.tagName == 'DT') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }

        for(i=0; i<ac2.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ac2[i], function(el){ return (el.tagName == 'DT') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }

        for(i=0; i<ta.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ta[i], function(el){ return (el.tagName == 'A') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }
    },

    initAjaxPaging: function() {

        ap = YAHOO.util.Dom.getElementsByClassName('pager');
        var _this = this;
        for(i=0; i<ap.length; i++) {

            children = YAHOO.util.Dom.getChildrenBy(ap[i], function(el){ return (el.tagName == 'A') });
            for(j=0; j<children.length; j++) {

               YAHOO.util.Event.addListener(children[j], "click", function() { _this.clickedActive(this); });
            }
        }
    },

    initLinks: function() {

        links = YAHOO.util.Dom.getElementsByClassName('countLink');
        var _this = this;

        for(i=0; i<links.length; i++) {

            YAHOO.util.Event.addListener(links[i], "click", function() { _this.clickedActive(this); });
        }
    },

    initPaging: function() {

        pagingPrev = YAHOO.util.Dom.getElementsByClassName('prev');
        pagingNext = YAHOO.util.Dom.getElementsByClassName('next');
        close      = YAHOO.util.Dom.getElementsByClassName('close');
        var _this = this;

        for(i=0; i<pagingPrev.length; i++) {

            YAHOO.util.Event.addListener(pagingPrev[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<pagingNext.length; i++) {

            YAHOO.util.Event.addListener(pagingNext[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<close.length; i++) {

            YAHOO.util.Event.addListener(close[i], "click", function() { _this.clickedActive(this); });
        }
    },

    initYuiTabs: function() {

        yuiTabs = YAHOO.util.Dom.getElementsByClassName('yui-nav');
        var _this = this;
        for(i=0; i<yuiTabs.length; i++) {

            children = YAHOO.util.Dom.getChildren(yuiTabs[i]);
            YAHOO.util.Event.addListener(children, "click", function() { _this.clickedActive(this); });
        }
    },

    initZoom: function() {

        zoom      = YAHOO.util.Dom.getElementsByClassName('zoom');
        zoomNoimg = YAHOO.util.Dom.getElementsByClassName('zoomNoimg');
        zoomEan   = YAHOO.util.Dom.getElementsByClassName('zoomean');
        var _this = this;

        for(i=0; i<zoom.length; i++) {

            YAHOO.util.Event.addListener(zoom[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<zoomNoimg.length; i++) {

            YAHOO.util.Event.addListener(zoomNoimg[i], "click", function() { _this.clickedActive(this); });
        }

        for(i=0; i<zoomEan.length; i++) {

            YAHOO.util.Event.addListener(zoomEan[i], "click", function() { _this.clickedActive(this); });
        }
    },

    clickedActive: function(element) {

        if( !YAHOO.util.Dom.hasClass(element, 'active') ) {

            this.refreshPixel();
        }
    }
};

/**
 * lädt die IVW relevanten zahlen aus der Tabelle mediabiz_de.countvalues
 * @notice: punkte werden durch _ ersetzt
 * sprich aus ivw.year wird ivw_year
 *
 * um die funktion getAllIvw aufzurufen muss im template ein Callback objekt definiert werden
 */
Mediabiz.Statistics.Countvalues = {

    requestUrl: '/statistics/countvalues/',

	/**
	 * hier muss ein Callback objeckt übergeben werden, dass success (und failure) implementiert, in diesem werden
	 * dann alle werde abgearbeitet die vom AjaxController des Moduls Statistic (action: countvalues) zurückgeliefert
	 * werden
	 *
	 * @param callback class
	 */
	getAllIvw: function(cb) {

	    if('undefined' == typeof(cb)) {

	        cb = Mediabiz.Statistics.Countvalues.Callback;
		}
        YAHOO.util.Connect.asyncRequest('GET', this.requestUrl + 'allIvw', cb, null)
	}
};

Mediabiz.Statistics.Countvalues.Callback = {

    success: function(o) {

        alert('please implement callback (now using Mediabiz.Statistics.Countvalues.Callback from statistics.js)');
	},

	failure: function(o) {}
}