var sidebarCover = {
    el: null,
    fxopac: 0,
	posY: 0,	
	
	getAbsPos: function(elm) {
		var doc = elm;
		while (doc && !doc.getElementById) {
			doc = doc.parentNode;
		}
		if (elm.getBoundingClientRect) {
			var r = elm.getBoundingClientRect();
			return {
				'x': r.left + (doc.body.scrollLeft || doc.documentElement.scrollLeft || 0),
				'y': r.top + (doc.body.scrollTop || doc.documentElement.scrollTop || 0),
				'width': r.right-r.left,
				'height': r.bottom-r.top
			};
		}
		else
		if (doc.getBoxObjectFor) {
			return doc.getBoxObjectFor(elm);
		}
		else {
			var el = elm;
			var left = 0, top = 0;
			do {
				left += elm.offsetLeft || 0;
				top += elm.offsetTop || 0;
				elm = elm.offsetParent;
			} while (elm);
			return { 'x': left, 'y': top, 'width': el.offsetWidth, 'height': el.offsetHeight };
		}
	},

    create: function() {
        if(document.body && document.getElementById("fw-sidebar")) {
            sidebarCover.el = document.createElement("div");
            var sidebar = document.getElementById("fw-sidebar");

			// We can't run getAbsPos until we know that SiteBuilder has settled down and is ready
			var sidebarTest = sidebar.getBoundingClientRect();
			if (sidebarTest.top == 0 && sidebarTest.left == 0) {
				window.setTimeout(sidebarCover.create, 500);
			    return;
            } 

			var pos = sidebarCover.getAbsPos(sidebar);

            sidebarCover.el.setAttribute("id", "sidebar_blocking_cover");
            sidebarCover.el.style.cssText = 'position: absolute; top: ' + pos.y + 'px; left: ' + pos.x + 'px; height: ' + pos.height + 'px; width: ' + pos.width + 'px; background-color: #000;' +
                '-ms-filter: "alpha(opacity=0)"; filter: alpha(opacity=0); opacity: 0; -moz-border-radius: 4px; -webkit-border-radius: 4px; cursor: pointer; cursor: hand;';
            sidebarCover.el.onclick = sidebarCover.clickEvent;
            sidebarCover.el.onmouseover = sidebarCover.mouseoverEvent;
            sidebarCover.el.onmouseout = sidebarCover.mouseoutEvent;
            sidebarCover.el.innerHTML = '<div id="sidebar_cover_explanation" style="color: #fff; font-size: 12px; padding-top: 37px; margin-top: 30px; font-weight: bold; text-align: center;' + 
										'background: transparent url(\'http://images.webs.com/static/projects/pagebuilder/graphics/edit_sidebars_icon.png\') no-repeat center top;">Click to manage Sidebar</div>';
            
            document.body.appendChild(sidebarCover.el);
        } else {
            /* Keep checking for Sidebars, --expletive deleted-- :D */
            window.setTimeout(sidebarCover.create, 500);
        }
    },

    /* Homegrown fade function - this is extremely stupid, but we have no global Fx library to depend on in SB */
    animateIn: function(obj) {
        if(sidebarCover.fxopac < 80) {
            obj.style.filter = "alpha(opacity: 80)";
            obj.style.opacity = "0.8";
        } else {
            sidebarCover.fxopac = 0;
        }
    },

    blocker: null,
    explanation: null,

    mouseoverEvent: function(e) {
        if(sidebarCover.blocker === null || sidebarCover.explanation === null) {
            sidebarCover.blocker = document.getElementById("sidebar_blocking_cover");
            sidebarCover.explanation = document.getElementById("sidebar_cover_explanation");
        }

		if (!e) var e = window.event;
		var fromEl = e.relatedTarget || e.fromElement;
			
		if (fromEl != sidebarCover.blocker && fromEl != sidebarCover.explanation) {
			if(e.pageX || e.pageY) {
				sidebarCover.posY = e.pageY;
			} else if (e.clientX || e.clientY) {
				sidebarCover.posY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
			}
	        return sidebarCover.animateIn(sidebarCover.el);
		}
    },
    
    mouseoutEvent: function(e) { 
		if (!e) var e = window.event;
		var toEl = e.relatedTarget || e.toElement;
		
		if (toEl != sidebarCover.blocker && toEl != sidebarCover.explanation) {
        	sidebarCover.el.style.filter = "alpha(opacity:0)"; 
        	sidebarCover.el.style.opacity = 0; 
		}
    },
    
    clickEvent: function() { return (parent.document.location ? parent.document.location = "/s/sidebars/index" : document.location = "/s/sidebars/index"); }
};

webs.loadEvent(sidebarCover.create);

webs.loadEvent(function() {
    var fw_titlelink = document.getElementById('fw-titlelink');
    if(fw_titlelink && typeof onExitToSB !== "function" && typeof parent.showEditSiteTitle === "function") {
        fw_titlelink.onmousedown = function(e) {
            /* Odd Sitebuilder event bubbling conditions - kill --everything-- */
            if(!e) var e = window.event;

            e.cancelBubble = true;
            e.returnValue = false;

            if(e.stopPropagation) {
                e.stopPropagation();
                e.preventDefault();
            }

            if (typeof parent.showEditSiteTitle !== 'undefined')
                parent.showEditSiteTitle(e);
            return false;
        };
    }
});

