/**
 *
 * @author: Jens Hoffmann <jens.hoffmann@dkd.de> (c) DKD.2oo8
 *
 */

var login = {
	
	loginBoxEFX: null,
	overlayEFX:  null,
	blackEFX:	 null,
	
	loginBoxObj: null,
	overlayObj:  null,
	blackObj:	 null,
	
	init: function() {
		this.getObjects();
	},

	getObjects: function() {
		this.blackObj	 = $(par.loginForm.blackID);
		this.closeObj	 = $$("."+par.loginForm.closeClass);
		this.overlayObj  = $(par.loginForm.overlayID);
		this.loginBoxObj = $(par.loginForm.loginBoxID);
		if (!window.ie) {
			this.blackEFX	 = new Fx.Style(par.loginForm.blackID, 'opacity', { duration: 500 });
			this.loginBoxEFX = new Fx.Style(par.loginForm.loginBoxID, 'opacity', { duration: 500 });		
		} else {
			
			// Resize overlay because width and height (100%) is not working
			if (window.ie6) {
				this.blackObj.setStyle('width', (window.getScrollWidth() - 21) + "px");
			}
			if (window.ie7) {
				this.blackObj.setStyle('width', (window.getScrollWidth()) + "px");
				$$("iframe.login-invisibleFix")[0].setStyle("display","none");
			}
			
			this.blackObj.setStyle('height', (window.getScrollHeight()-113) + "px");
			
			// Set filter after resizing
			this.blackObj.setStyle("background-image", "none");
			this.blackObj.setStyle("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', src='/fileadmin/hobsons/images/login/bg-overlay-ie6.png', sizingMethod='scale')");
		}
	},

	open: function(referrerUrl, loginType) {
		//Show Data if FireFox and FireBug or running
		if (window.gecko && typeof(console) == 'object') {
			console.log("referrerUrl: %o", referrerUrl);
			console.log("loginType: %o", loginType);
		}

		// Scroll to top
		new Fx.Scroll(window, {
				wait: false,
				duration: 1000,
				transition: Fx.Transitions.Quad.easeInOut
			}).toTop();		
		
		//Show LoginBox overlay
		this.setReferrerUrl(loginType, referrerUrl);
		this.setLoginType(loginType);
		this.fadeOverlayIN(loginType);
	},
	
	setReferrerUrl: function(loginType, referrerUrl) {
		$("redirect_"+loginType).setProperty('value',referrerUrl);
	},
	
	setLoginType: function(loginType){
		$(loginType).setStyle('display','block');
	},

	fadeOverlayIN: function(loginType) {
		
		if(!loginType) {
			$(par.loginForm.loginType[0]).setStyle('display', 'block');
		}
		
		// When the Menu is closed, open it
		if (this.overlayObj.getStyle("display") !== "block") {
				
			if (window.ie) {
				
				this.overlayObj.setStyle('display', 'block');
				this.blackObj.setStyle('display', 'block');
				this.loginBoxObj.setStyle('display', 'block');
				this.overlayObj.setStyle('visibility', 'visible');
				this.blackObj.setStyle('visibility', 'visible');
				this.loginBoxObj.setStyle('visibility', 'visible');
				
			} else {
				
				this.overlayObj.setStyle('display', 'block');
				this.blackEFX.start(0, 1).chain(function(){
					this.loginBoxEFX.start(0, 1);
				}.bind(this));
			}
		}
	},
	
	fadeOverlayOUT: function() {
		// When the Menu is open, close it
		if (this.overlayObj.getStyle("display") !== "none") {
			
			if (window.ie) {
				
				this.overlayObj.setStyle('display', 'none');
				this.blackObj.setStyle('display', 'none');
				this.loginBoxObj.setStyle('display', 'none');				
				
			} else {
			
				this.loginBoxEFX.start(1, 0).chain(function(){
					this.blackEFX.start(1, 0).chain(function(){
						this.overlayObj.setStyle('display', 'none');
					}.bind(this));
				}.bind(this));
			}
			
			par.loginForm.loginType.each(function(el){
				$(el).setStyle('display','none');
			});
			
		}
	},
	
	focusInput: function(objects, obj) {
		objects.each(function(el){
			el.addClass('unactive');
			el.removeClass('active');
		});
		obj.addClass('active');
		obj.removeClass('unactive');
	},
	
	lostFocus: function(obj) {
		obj.addClass('unactive');
		obj.removeClass('active');
	},
	
	focusSearch: function(obj) {
		if (obj.getProperty("value") == par.search.value) {
			obj.setProperty("value", "");
		}
		obj.addClass("active");
	},
	
	blurSearch: function(obj) {
		if (obj.getProperty("value") == "" || obj.getProperty("value") == null) {
			obj.setProperty("value", par.search.value);
		}
		obj.removeClass("active");
	}

};
