/*Ændring: PCL */
var UrlPlayNow;
var UrlPlayNext;
var UrlPlayLast;
/*slut*/
var jkoutlinemenu = {

    effectduration: 50, //duration of animation, in milliseconds
    outlinemenulabels: [],
    outlinemenus: [], //array to contain each block menu instances
    zIndexVal: 1000, //starting z-index value for drop down menu
    $shimobj: null,

    addshim: function() {
        $(document.body).append('<IFRAME id="outlineiframeshim" src="' + (location.protocol == "https:" ? 'blank.htm' : 'about:blank') + '" style="display:none; left:0; top:0; z-index:999; position:absolute; filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)" frameBorder="0" scrolling="no"></IFRAME>')
        this.$shimobj = $("#outlineiframeshim")
        // alert(this.$shimobj.attr("src"))
    },

    alignmenu: function(e, outlinemenu_pos) {
        var outlinemenu = this.outlinemenus[outlinemenu_pos]
        var $anchor = outlinemenu.$anchorobj
        var $menu = outlinemenu.$menuobj
        var menuleft = ($(window).width() - (outlinemenu.offsetx - $(document).scrollLeft()) > outlinemenu.actualwidth) ? outlinemenu.offsetx : outlinemenu.offsetx - outlinemenu.actualwidth + outlinemenu.anchorwidth //get x coord of menu
        var menutop = ($(window).height() - (outlinemenu.offsety - $(document).scrollTop() + outlinemenu.anchorheight) > outlinemenu.actualheight) ? outlinemenu.offsety + outlinemenu.anchorheight : outlinemenu.offsety - outlinemenu.actualheight //get y coord of menu
        
        //$menu.css({ left: (menuleft - 8) + "px", top: (menutop - 22) + "px" })


    	var offset = $anchor.offset();
                
        if (isIE)
        	offset.top = offset.top - 6;
        else
        	offset.top = offset.top - 10;
        	
        offset.left = offset.left -8;
        $menu.appendTo(document.body).css(offset);
        
        this.$shimobj.css({ width: outlinemenu.actualwidth + "px", height: outlinemenu.actualheight + "px", left: menuleft + "px", top: menutop + "px", display: "block" })
    },

    showmenu: function(e, outlinemenu_pos, lmid) {


        var outlinemenu = this.outlinemenus[outlinemenu_pos]
        var $menu = outlinemenu.$menuobj
        var $menuinner = outlinemenu.$menuinner
        var $anchor = outlinemenu.$anchorobj
        if ($menu.css("display") == "none") {
            this.alignmenu(e, outlinemenu_pos)
            $menu.css("z-index", ++this.zIndexVal)
            /*Ændring: PCL */
            var indexNumber = parseInt(outlinemenu_pos) + 1;
            var getlm = $anchor.find(".plgetlm").html();
            
            //Add onclick event to <a> tags in div 'mymenu'
            $menu.find("a#playNow").unbind('click');
            $menu.find("a#playNow").bind('click', function(e) {
            	addPlaylistOrder(getlm,0);
            	jkoutlinemenu.hidemenu(e, outlinemenu_pos);
            });

            $menu.find("a#playNext").unbind('click');
            $menu.find("a#playNext").bind('click', function(e) {
            	addPlaylistOrder(getlm,1);
            	jkoutlinemenu.hidemenu(e, outlinemenu_pos);
            });

            $menu.find("a#playLast").unbind('click');
            $menu.find("a#playLast").bind('click', function(e) {
            	addPlaylistOrder(getlm,2);
            	jkoutlinemenu.hidemenu(e, outlinemenu_pos);
            });
            /*slut*/

            $menu.show(this.effectduration, function() {
                $menuinner.css('visibility', 'visible')
            })
        }
        else if ($menu.css("display") == "block" && e.type == "click") { //if menu is hidden and this is a "click" event (versus "mouseout")
            this.hidemenu(e, outlinemenu_pos)
        }
        return false
    },

    hidemenu: function(e, outlinemenu_pos) {
    	//alert(outlinemenu_pos);
        var outlinemenu = this.outlinemenus[outlinemenu_pos]
        var $menu = outlinemenu.$menuobj
        var $menuinner = outlinemenu.$menuinner
        $menuinner.css('visibility', 'hidden')
        this.$shimobj.css({ display: "none", left: 0, top: 0 })
        $menu.hide(this.effectduration)
    },

    definemenu: function(anchorid, menuid, revealtype, optwidth, optheight) {
        var $ = jQuery

        this.outlinemenulabels.push([anchorid, menuid, revealtype, optwidth, optheight])
    },

    render: function($) {
    

        for (var i = 0, labels = this.outlinemenulabels[i]; i < this.outlinemenulabels.length; i++, labels = this.outlinemenulabels[i]) {
            this.outlinemenus.push({ $anchorobj: $("#" + labels[0]), $menuobj: $("#" + labels[1]), $menuinner: $("#" + labels[1]).children('ul:first-child'), revealtype: labels[2], lm: $("#" + labels[0]).attr('title') })
            var outlinemenu = this.outlinemenus[i]
         
            outlinemenu.$anchorobj.add(outlinemenu.$menuobj).attr("_outlinemenupos", i + "pos")
            
            outlinemenu.$menuobj.css(parseInt(labels[3]) > 10 ? { width: parseInt(labels[3]) + "px"} : {})
            outlinemenu.$menuobj.css(parseInt(labels[4]) < outlinemenu.$menuobj.height() ? { height: parseInt(labels[4]) + "px", overflow: "scroll", overflowX: "hidden"} : {})
            outlinemenu.actualwidth = outlinemenu.$menuobj.outerWidth()
            outlinemenu.actualheight = outlinemenu.$menuobj.outerHeight()
            outlinemenu.offsetx = outlinemenu.$anchorobj.offset().left
            outlinemenu.offsety = outlinemenu.$anchorobj.offset().top
            outlinemenu.anchorwidth = outlinemenu.$anchorobj.outerWidth()
            outlinemenu.anchorheight = outlinemenu.$anchorobj.outerHeight()
            outlinemenu.$menuobj.css("z-index", ++this.zIndexVal).hide()
            outlinemenu.$menuinner.css("visibility", "hidden")

            outlinemenu.$anchorobj.bind(outlinemenu.revealtype == "click" ? "click" : "mouseenter", function(e) {
            	     outlinemenu.$menuobj.bind("mouseleave", function(e) {
                    jkoutlinemenu.hidemenu(e, parseInt(this.getAttribute("_outlinemenupos")))
                })
            	
            return jkoutlinemenu.showmenu(e, parseInt(this.getAttribute("_outlinemenupos")), this.getAttribute("title"))
            })
            /*outlinemenu.$anchorobj.bind("mouseleave", function(e){
            var $menu=jkoutlinemenu.outlinemenus[parseInt(this.getAttribute("_outlinemenupos"))].$menuobj
            if (e.relatedTarget!=$menu.get(0) && $(e.relatedTarget).parents("#"+$menu.get(0).id).length==0){ //check that mouse hasn't moved into menu object
            jkoutlinemenu.hidemenu(e, parseInt(this.getAttribute("_outlinemenupos")))
            }
            })*/

        } //end for loop

        /* $(document).bind("click", function(e) {
        for (var i = 0; i < jkoutlinemenu.outlinemenus.length; i++) {
        jkoutlinemenu.hidemenu(e, i)
        }
        }) //end document.click
        */

        $(window).bind("resize", function() {
            for (var i = 0; i < jkoutlinemenu.outlinemenus.length; i++) {
                var outlinemenu = jkoutlinemenu.outlinemenus[i]
                outlinemenu.offsetx = outlinemenu.$anchorobj.offset().left
                outlinemenu.offsety = outlinemenu.$anchorobj.offset().top
            }
        })
        jkoutlinemenu.addshim()
    }

}

jQuery(document).ready(function($){
	jkoutlinemenu.render($)
})
