/*
    events: scroll
*/

jQuery.fn.slideNavigation = function(options) {
    
    var defaults = {
        offset:30
    };
    var options = jQuery.extend(defaults, options);
    
    return this.each(function() {
        
        var obj = jQuery(this);
        var top = obj.offset().top;
        
        jQuery(window)
            .scroll(function(){
                
                if ( jQuery(this).scrollTop() >= top-options.offset ) {
                    
                    obj
                        .stop(true,false)
                        .animate({
                            "top":""+ (jQuery(this).scrollTop()+options.offset) +"px"
                        })
                    ;
                    
                } else {
                
                    obj
                        .stop(true,false)
                        .animate({
                            "top":""+ top +"px"
                        })
                    ;
                
                }
                
            })
        ;
                
    });
};



/*
    events: none
*/

jQuery.fn.checkBackground = function(options) {
    
    var defaults = {};
    var options = jQuery.extend(defaults, options);
    
    return this.each(function() {
        
        var obj = jQuery(this);
        
        if (getCookie("style") == 'black') {
            
            jQuery("body")
                .addClass("black")
            ;
            
        }
        
        function getCookie(c_name) {
            var i,x,y,ARRcookies=document.cookie.split(";");
            for (i=0;i<ARRcookies.length;i++) {
                x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
                y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
                x=x.replace(/^\s+|\s+$/g,"");
                if (x==c_name) {
                    return unescape(y);
                }
            }
        }
                
    });
};


/*
    events: click
*/

jQuery.fn.toggleBackground = function(options) {
    
    var defaults = {};
    var options = jQuery.extend(defaults, options);
    
    return this.each(function() {
        
        var obj = jQuery(this);
        
        obj
            .click(function(){
                
                jQuery("body")
                    .toggleClass("black")
                ;
                
                if (jQuery("body").hasClass("black")) {
                    setCookie("style","black",365);
                } else {
                    setCookie("style","white",365);
                }
                
                return false;
                
            })
        ;
        
        function setCookie(c_name,value,exdays) {
            var exdate=new Date();
            exdate.setDate(exdate.getDate() + exdays);
            var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
            document.cookie=c_name + "=" + c_value;
        }
                
    });
};





/*
    events: mousemove, mouseleave
*/

jQuery.fn.tooltip = function(options) {
    
    var defaults = {
        offset: 10,
        speed: 300,
        delay: 300
    };
    var options = jQuery.extend(defaults, options);
    
    return this.each(function() {
        
        var obj = jQuery(this);
        var separator = " – ";
        var stringArr = obj.attr("title").split(separator);
        var title = "";
        var init = true;
        
        for (var i=0; i<stringArr.length; i++) {
            
            if (i==0) {
                title += '<strong>'+ stringArr[i] +'</strong>';
            } else {
                title += separator + stringArr[i];
            }
            
        }
        
        obj
            .removeAttr("title")
        ;
        
        if (stringArr != "") {
            
            obj
                .mousemove(function(e){
                    
                    if (init) {
                        
                        init = false;
                        
                        jQuery("div#jq-tpl div.jq-tpl-tooltip")
                            .html(title)
                            .css({
                                "top":""+ adjust(e).top +"px",
                                "left":""+ adjust(e).left +"px"
                            })
                            .delay(options.delay)
                            .fadeIn(options.speed)
                        ;
                        
                    } else {
                    
                        jQuery("div#jq-tpl div.jq-tpl-tooltip")
                            .css({
                                "top":""+ adjust(e).top +"px",
                                "left":""+ adjust(e).left +"px"
                            })
                        ;
                    
                    }
                    
                })
                .mouseleave(function(e){
                    
                    jQuery("div#jq-tpl div.jq-tpl-tooltip")
                        .html("")
                        .stop(true,true)
                        .fadeOut(0)
                    ;
                    
                    init = true;
                
                })
            ;
            
            function adjust(e) {
                
                var wWidth = jQuery(window).width();
                var width = jQuery("div#jq-tpl div.jq-tpl-tooltip").outerWidth();
                var left = e.pageX + options.offset;
                var top = e.pageY + options.offset;
                
                if ( left + width >= wWidth ) {
                    left = left - width - options.offset*2;
                }
                
                var values = {
                    "top":top,
                    "left":left
                }
                
                return values;
                
            }
            
        }
            
    });
};




/*
    events: mousemove
*/

jQuery.fn.flipImg = function(options) {
    
    var defaults = {
        delay: 300
    };
    var options = jQuery.extend(defaults, options);
    
    return this.each(function() {
        
        var obj = jQuery(this);
        var c = 0;
        var cc = 1;
        var chId = c;
        var length = obj.children("a").length;
        var status = false;
        
        if (length > 1) {
        
            // first link/image
            obj
                .children("a:first")
                .children("img")
                .clone()
                .appendTo(obj)
                .attr("id","jq-flipImgId"+ c++ +"")
                .hide()
            ;
            
            var img = new Image();
            img.onload = function() {
                
                obj
                    .find("a:first span.ajax-overlay")
                    .css({
                        "width":""+ obj.find("a:first img").width() +"px",
                        "height":""+ obj.find("a:first img").height() +"px"
                    })
                ;
                
            };
            img.src = obj.find("a:first img").attr("src");
            
            // search for all links/images but first
            obj
                .children("a:not(:first)")
                .each(function(){
                    
                    var id = c++;
                    
                    var img = new Image();
                    img.onload = function() {
                        
                        jQuery(img)
                            .appendTo(obj)
                            .attr("id","jq-flipImgId"+ id +"")
                            .hide()
                        ;
                        
                        cc++;
                        
                        if (cc == length) {
                            
                            obj
                                .children("a:not(:first)")
                                .remove()
                            ;
                            
                            obj
                                .find("a:first span.ajax-overlay")
                                .delay(options.delay)
                                .fadeOut(0,function(){
                                    
                                    obj
								        .children('a:first')
								        .addClass('jq-flipImg-loaded')
								    ;
                                    
                                    status = true;
                                    
                                    jQuery(this)
                                        .remove()
                                    ;
                                    
                                })
                            ;
                            
                        }
                        
                    };
                    img.src = jQuery(this).attr("href");
                    
                })
            ;
            
            obj
                .mousemove(function(e){
                    
                    if (status) {
                        
                        var pos = parseInt((e.pageX - obj.offset().left) / obj.width() * length);
                        
                        if (pos >= length) {
                            pos = length - 1;
                        }
                        
                        if (chId != pos) {
                        
                            obj
                                .children("a:first")
                                .children("img")
                                .attr({
                                    "src":obj.children("img#jq-flipImgId"+ pos +"").attr("src")
                                })
                            ;
                            
                            chId = pos;
                            
                        }
                    
                    }
                    
                })
            ;
        
        } else {
            
            var img = new Image();
            img.onload = function() {
                
                obj
                    .find("a:first span.ajax-overlay")
                    .css({
                        "width":""+ obj.find("a:first img").width() +"px",
                        "height":""+ obj.find("a:first img").height() +"px"
                    })
                ;
                
                obj
                    .find("a:first span.ajax-overlay")
                    .delay(options.delay)
                    .fadeOut(0,function(){
                        
                        jQuery(this)
                            .remove()
                        ;
                        
                    })
                ;
                
            };
            img.src = obj.find("a:first img").attr("src");
            
        }
            
    });
};




/*
    events: click
*/

jQuery.fn.slideshow = function(options) {
    
    var defaults = {
        speed: 600,
        delay: 500,
        preload: 1,
        opacity: 0.7
    };
    var options = jQuery.extend(defaults, options);
    
    return this.each(function() {
        
        var obj = jQuery(this);
        
        var curId = 1;
        var actId = 1;
        var min = 1;
        var max = parseInt(obj.find("div.img-container div.thumb a").length);
        
        var loadedId = new Array();
        var animation = true;
        var delay = options.delay;
        
        
        checkPrevNextDisplay();
        
        
        if (options.preload > max) {
            options.preload = max;
        }
        
        
        obj
            .find("div.img-container div.thumb a")
            .slice(0, options.preload)
            .each(function(index){
                
                if (index == 0) {
                    obj
                        .find("div.img-info span.img-counter span:first")
                        .text( (min < 10) ? "0"+ min : min )
                    ;
                    obj
                        .find("div.img-info span.img-counter span:last")
                        .text( (max < 10) ? "0"+ max : max )
                    ;
                    obj
                        .find("div.img-info span.img-id")
                        .text(obj.find("div.thumb a").eq(0).children().attr("alt"))
                    ;
                    
                    if (obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="home"]').length != 0) {
                    
                        obj
                            .find("div.img-info a.img-subpage")
                            .attr('href',obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="href"]').val())
                            .html(obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="title"]').val() + obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="subtitle"]').val())
                        ;
                        
                    }
                    
                }
                
                var src = jQuery(this).attr("href");
                
                // Image
                if (jQuery(this).find('object.jq-data').children('param[name="type"]').val() == 'image') {
                
                    jQuery('<img />')
                        .load(function () {
                            
                            loadedId.push(parseInt(index+1));
                            
                            if (index == 0) {
                                jQuery(this)
                                    .prependTo(obj.find("div.img-detail ul li").eq(1))
                                    .parent()
                                    .css({
                                        "width":""+ obj.find("div.img-detail ul li").eq(1).children().width() +"px"
                                    })
                                ;
                                
                                if (obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="home"]').length != 0) {
                                    obj
                                        .find("div.img-detail ul li")
                                        .eq(1)
                                        .append('<a href=""></a>')
                                        .children('a')
                                        .css({
                                            'width':''+ obj.find("div.img-detail ul li").eq(1).children('img').width() +'px',
                                            'height':''+ obj.find("div.img-detail ul li").eq(1).children('img').height() +'px',
                                            'position':'absolute',
                                            'bottom':'0',
                                            'left':'0',
                                            'background':'url(fileadmin/gfx/clear.gif) repeat scroll 0 0 transparent'
                                        })
                                        .attr({
                                            'href':obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="href"]').val(),
                                            'title':obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="title"]').val() + obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="subtitle"]').val()
                                        })
                                    ;
                                    
                                    if (options.genTooltip) {
                                    
                                        obj
                                            .find("div.img-detail ul li")
                                            .eq(1)
                                            .children('a')
                                            .tooltip({
			                                	"offset":10,
			                                	"speed": 300,
			                                	"delay": 300
			                                })
                                        ;
                                    
                                    }
                                    
                                }
                                
                            }
                            
                            checkLastPreload();
                     
                        })
                        .attr({
                            'src': src
                        })
                    ;        
                
                // Movie
                } else if (jQuery(this).find('object.jq-data').children('param[name="type"]').val() == 'movie') {
                    
                    loadedId.push(parseInt(index+1));
                    
                    if (index == 0) {
                        jQuery('<iframe src="'+ src +'?title=0&amp;byline=0&amp;portrait=0&amp;color=ff0000" width="700" height="450" frameborder="0"></iframe>')
                            .prependTo(obj.find("div.img-detail ul li").eq(1))
                            .parent()
                            .css({
                                "width":""+ obj.find("div.img-detail ul li").eq(1).children().width() +"px"
                            })
                        ;
                    }
                    
                    checkLastPreload();
                    
                }
                    
            })
        ;
        
        
        
        
        function checkLastPreload() {
            
            if ( loadedId.length == options.preload ) {
            
                obj
                    .find("div.img-detail span.ajax-overlay")
                    .delay(delay)
                    .fadeOut(0,function(){
                        
                        animation = false;
                        
                    })
                ;
            
            }
            
        }
        
        
        function checkPrevNextDisplay() {
            
            if (actId == max) {
                obj
                    .find("div.img-detail span.next")
                    .fadeOut(options.speed)
                ;
            } else {
                obj
                    .find("div.img-detail span.next")
                    .fadeIn(options.speed)
                ;
            }
            
            if (actId == min) {
                obj
                    .find("div.img-detail span.prev")
                    .fadeOut(options.speed)
                ;
            } else {
                obj
                    .find("div.img-detail span.prev")
                    .fadeIn(options.speed)
                ;
            }
            
        }
        
        
        // thumb eventlistener
        obj
            .find("div.thumb a, div.img-detail span.prev, div.img-detail span.next")
            .click(function(){
                
                if (jQuery(this).hasClass("next")) {
                    if (curId < max) {
                        actId = parseInt(curId + 1);
                    }
                } else if (jQuery(this).hasClass("prev")) {
                    if (curId > min) {
                        actId = parseInt(curId - 1);
                    }
                } else {
                    actId = parseInt(obj.find("div.img-container div.thumb a").index(jQuery(this)))+1;
                }
                
                
                if ( !animation && actId != curId ) {
                    
                    animation = true;
                    
                    obj
                        .find("div.img-info span.img-counter span:first")
                        .text( (actId < 10) ? "0"+ actId : actId )
                    ;
                    
                    obj
                        .find("div.img-info span.img-id")
                        .text(obj.find("div.img-container div.thumb a").eq(actId-1).children('img').attr("alt"))
                    ;
                    
                    if (obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="home"]').length != 0) {
                    
                        obj
                            .find("div.img-info a.img-subpage")
                            .attr('href',obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="href"]').val())
                            .html(obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="title"]').val() + obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="subtitle"]').val())
                        ;
                    
                    }
                    
                    checkPrevNextDisplay();
                    
                    if ( jQuery.inArray(actId, loadedId) == -1 ) {
                        loadedId.push(actId);
                        delay = options.delay;
                        obj
                            .find("div.img-detail span.ajax-overlay")
                            .fadeTo(0,options.opacity)
                        ;
                    } else {
                        delay = 0;
                    }
                    
                    var src = obj.find("div.img-container div.thumb a").eq(actId-1).attr("href");
                    
                    if ( actId > curId) {
                        var actRight = "auto";
                        var actLeft = "0px";
                        var curRight = "0px";
                        var curLeft = "auto";
                        var index = 2;
                    } else {
                        var actRight = "0px";
                        var actLeft = "auto";
                        var curRight = "auto";
                        var curLeft = "0px";
                        var index = 0;
                    }
                    
                    curId = actId;
                    
                    if (obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="type"]').val() == 'image') {
                        
                        jQuery('<img />')
                            .load(function () {
                                
                                var loadedElement = jQuery(this);
                                
                                obj
                                    .find("div.img-detail span.ajax-overlay")
                                    .delay(delay)
                                    .fadeOut(0,function(){
                                        
                                        loadedElement
                                            .prependTo(obj.find("div.img-detail ul li").eq(index))
                                            .css({
                                                "right":actRight,
                                                "left":actLeft
                                            })
                                            .parent()
                                            .css({
                                                "width":"0px"
                                            })
                                            .animate({
                                                "width":""+ obj.find("div.img-detail ul li").eq(index).children('img').width() +"px"
                                            }, options.speed, "swing",function(){
                                                
                                                if (obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="home"]').length != 0) {
                                                
                                                    obj
                                                        .find("div.img-detail ul li")
                                                        .eq(index)
                                                        .append('<a href=""> </a>')
                                                        .children('a')
                                                        .css({
                                                            'width':''+ obj.find("div.img-detail ul li").eq(index).children('img').width() +'px',
                                                            'height':''+ obj.find("div.img-detail ul li").eq(index).children('img').height() +'px',
                                                            'position':'absolute',
                                                            'bottom':'0',
                                                            'left':'0',
                                                            'background':'url(fileadmin/gfx/clear.gif) repeat scroll 0 0 transparent'
                                                        })
                                                        .attr({
                                                            'href':obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="href"]').val(),
                                                            'title':obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="title"]').val() + obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="subtitle"]').val()
                                                        })
                                                    ;
                                                    
                                                    if (options.genTooltip) {
                                                    
                                                        obj
                                                            .find("div.img-detail ul li")
                                                            .eq(index)
                                                            .children('a')
                                                            .tooltip({
			                                                	"offset":10,
			                                                	"speed": 300,
			                                                	"delay": 300
			                                                })
                                                        ;
                                                    
                                                    }
                                                                                                    
                                                }
                                                
                                                if (index == 2) {
                                                    obj
                                                        .find("div.img-detail ul")
                                                        .append("<li></li>")
                                                    ;
                                                } else if (index == 0) {
                                                    obj
                                                        .find("div.img-detail ul")
                                                        .prepend("<li></li>")
                                                    ;
                                                }
                                                
                                                animation = false;
                                                
                                            })
                                        ;
                                        
                                        obj
                                            .find("div.img-detail ul li")
                                            .eq(1)
                                            .children()
                                            .css({
                                                "right":curRight,
                                                "left":curLeft
                                            })
                                            .parent()
                                            .animate({
                                                "width":"0px"
                                            }, options.speed, "swing", function(){
                                                
                                                jQuery(this)
                                                    .remove()
                                                ;
                                                
                                            })
                                        ;
                                        
                                    })
                                ;
                                
                            })
                            .attr({
                                'src': src
                            })
                        ;        
                    
                    } else if (obj.find("div.img-container div.thumb a").eq(actId-1).find('object.jq-data').children('param[name="type"]').val() == 'movie') {
                        jQuery('<iframe src="'+ src +'?title=0&amp;byline=0&amp;portrait=0&amp;color=ff0000" width="700" height="450" frameborder="0"></iframe>')
                            .prependTo(obj.find("div.img-detail ul li").eq(index))
                            .css({
                                "right":actRight,
                                "left":actLeft
                            })
                            .parent()
                            .css({
                                "width":"0px"
                            })
                        ;
                        
                        obj
                            .find("div.img-detail span.ajax-overlay")
                            .delay(delay)
                            .fadeOut(0,function(){
                        
                                obj
                                    .find("div.img-detail ul li")
                                    .eq(index)
                                    .animate({
                                        "width":""+ obj.find("div.img-detail ul li").eq(index).children().width() +"px"
                                    }, options.speed, "swing",function(){
                                        
                                        if (index == 2) {
                                            obj
                                                .find("div.img-detail ul")
                                                .append("<li></li>")
                                            ;
                                        } else if (index == 0) {
                                            obj
                                                .find("div.img-detail ul")
                                                .prepend("<li></li>")
                                            ;
                                        }
                                        
                                        animation = false;
                                        
                                    })
                                ;
                                
                                obj
                                    .find("div.img-detail ul li")
                                    .eq(1)
                                    .children()
                                    .css({
                                        "right":curRight,
                                        "left":curLeft
                                    })
                                    .parent()
                                    .animate({
                                        "width":"0px"
                                    }, options.speed, "swing", function(){
                                        
                                        jQuery(this)
                                            .remove()
                                        ;
                                        
                                    })
                                ;
                            
                            })
                        ;
                        
                    }
                    
                }
                
                return false;
                
            })
        ;
        
        
    });
};

