/*@FILE INFORMATION
----------------------------------------
Author:		Mark Wise 
File:		Overlay_1.0.1.js 
Created:	12/9/09 3:59 PM
Updated:	1/20/10 5:34 PM

/*@END--------------------------------*/

var Overlay = new Class({

	//CONSTRUCTOR
	initialize: function(ele, att){
	
		//Create instance of Block class
		this.block = new Block(ele);
			
		//Register close button event
		var obj = $(ele).getElement(".close_overlay");
		if(obj){
			obj.addEvent("click", function(){
				this.hide();		
					
			}.bindWithEvent(this));
			
		}
		
		//Initialize overlay mask
		this.styles = att.styles || null;
		this.events = att.events || null;
		this.mask = new Element("div", {
			styles: {
				"display": "none",
				"position": "absolute",
				"top": 0,
				"left": 0,
				"background-image": "url(/assets/mootools_extended/images/transparent.gif)"
				
			}
				
		});
		if(this.styles) this.mask.setStyles(this.styles);
		if(this.events) this.mask.addEvents(this.events);
		this.mask.inject(document.body);
					
	},
	
	//SHOW OVERLAY
	show: function(){
		if(this.mask.getStyle("display") == "none"){
			//Hide select elements in IE6 so overlays are on top
			this.toggleSelectElements(true);
			//Update overlay index
			OverlayManager.setOverlayIndex(OverlayManager.getOverlayIndex() + 2);
			//Set overlay mask properties
			this.mask.setStyles({
				"z-index": OverlayManager.getOverlayIndex() - 1,
				"width": $Viewport.relativeWidth(),
				"height": $Viewport.absoluteHeight(),
				"display": "block"
															
			});
			//Set block elements display to block so styles can be adjusted
			this.getElement().setStyle("display", "block");
			//IE6 1px bug fix; Adjust side elements width and height
			this.block.updateIE6();			
			//Center block element within the viewport
			$Viewport.align(this.getElement());
			//Set block elements styles
			this.getElement().setStyles({
				"z-index": OverlayManager.getOverlayIndex(),
				"visibility": "visible"
							
			});
													
		}
						
	},
	
	//HIDE OVERLAY
	hide: function(){
		if(this.mask.getStyle("display") == "block"){
			//Update overlay index
			OverlayManager.setOverlayIndex(OverlayManager.getOverlayIndex() - 2);
			//Show select elements
			this.toggleSelectElements();
			//Hide overlay mask
			this.mask.setStyle("display", "none");
			//Hide overlay
			this.getElement().setStyles({
				"display": "none",
				"visibility": "hidden"
				
			});
				
		}
			
	},
	
	//HIDE SELECT BOXES FROM IE6
	toggleSelectElements: function(a){
		if(navigator.userAgent.indexOf("MSIE 6") != -1){
			if(OverlayManager.getOverlayIndex() < 2){	
				var select = document.getElementsByTagName("select");
				var i = 0;
				var l = select.length;
				var v = (a)? "hidden" : "visible";
				
				for(; i<l; i++){
					select[i].style.visibility = v;
							
				}
			
			}
					
		}
		
	},
	
	//GET BLOCK ELEMENT
	getElement: function(){
		return this.block.getElement();
		
	}
	
});
