var LightboxForm=new Class({
	initialize:function (name,properties,lightboxProperties) {
		this.name=name;
		this.properties=properties;
		this.lightboxProperties=$merge(LightboxForm.lightboxProperties,lightboxProperties);
	},
	show:function (name,callback) {
		Mantis.FormGenerator.FormGeneratorService.GetFormSource(this.name,this.properties || null,function (source) {
			var form=Element.fromMarkup(source,{ callback:function () {
				new Lightbox(form,this.lightboxProperties).show();
				if (callback) callback();
			}.bind(this) });
		}.bind(this));
	}
});
$extend(LightboxForm,{
	show:function (name,properties,lightboxProperties) { new LightboxForm(name,properties,lightboxProperties).show(); }
});

LightboxForm.lightboxProperties={ };


var QuickFacts_Related=function () {
	var _facts;
	var _back;
	var _next;
	var _current;
	function init() {
		_current = 0;
		_facts = $('QuickFacts').getElements(".fact");
		_back = $('QuickFacts').getElement(".back");
		_next = $('QuickFacts').getElement(".next");
		if(_facts){
			_facts.each(function(item){item.hide();});
			_facts[0].show();			
		}
		_back.hide().addEvent("click",function(){_showFact(_current-1);});
		if(_facts.length>1) {
			_next.show().addEvent("click",function(){_showFact(_current+1);});
		}
		
		$('QuickFacts').setStyle("display","block");
	}
	
	function _showFact(ind){
		if(_facts[ind]) {
			_facts.each(function(item,index){
				if(index==ind) item.show();
				else item.hide();
			});
			_current = ind;
		}
		if(_current>0) _back.show();
		else  _back.hide();
		
		if(_current<(_facts.length-1)) _next.show();
		else _next.hide();

	}
	
	$domready(init);
}();
var Login={
	init:function () {
		Resources.RegisterJsFile(Config.rootUrl+"Js/Controls/LoginForm.js");
		$("login-RememberMe").checked = true;
		$waitUntil(
			function () { return !!$("login-form") && typeof(LoginForm)!="undefined"; },
			function () {
				var form=$("login-form");
				Login.form=new LoginForm($("login-form"),{
					alertOnError:false,
					refreshPageOnLogin:true
				});
				
				Login.form.addEvent('onLoginError', function(e) {
					$('advice-required-login-Password').show();
					Login.resetDropdown();
				});
				
				Login.form.addEvent('onLoggedIn', function(e) {
					$('advice-required-login-Password').hide();
					
				});
				$(form["cancel"]).addEvent("click",function(e) {
					Login.clearMessages();
					$('login-UserName').set("value","");
					$('login-Password').set("value",'');
					Login.resetDropdown();
					TopMenu._loginLB.hide();
				});
				$("login-form-forgot-link").addReplacingEvent("click",function(e) {
					$("login-form-form").hide();
					$("login-form-forgot").show();
					$("login-ForgotUserName").set("value",$("login-UserName").get("value"));
					Login.resetDropdown();
				});
				$(form["forgot-cancel"]).addReplacingEvent("click",function (e) {
					Login.clearMessages();
					$("login-form-form").show();
					$("login-form-forgot").hide();
					$('login-ForgotUserName').set("value","");
					Login.resetDropdown();
					e.hide();
				});
				$(form["forgot-close"]).addReplacingEvent("click",function (e) {
					$("login-form-forgot-feedback").hide();
					Login.clearMessages();
					$("login-form-form").show();
					$("login-form-forgot").hide();
					$('login-ForgotUserName').set("value","");
					Login.resetDropdown();
					
				});
				$(form["forgot-send"]).addReplacingEvent("click",function (e) {
					Login.resetPassword(e);
				});
			}
		);
	},
	resetPassword:function (e) {
		Login.clearMessages();
		var userName=$("login-ForgotUserName").value.trim();
		if (!userName) {
			$('advice-required-login-ForgotUserName').show();
			$("login-ForgotUserName").focus();
			Login.resetDropdown();
			return;
		}
		
		//------------if user is email - turn the filter on
//		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
//		if(!filter.test(userName)){
//			$('invalid-input-login-ForgotUserName').show();
//			$("login-ForgotUserName").focus();
//			Login.resetDropdown();
//			return;
//		}
		UserManager.sendPassword($("login-ForgotUserName").value,function (success) {
			if(success)
			{
				$("login-form-forgot").hide();
				$("login-form-forgot-feedback").show();
//				Login.resetDropdown();
//				$waitUntil(
//					function () { return !$('login-form').getParent('li.login').hasClass('open');},
//					function () {
						Login.clearMessages();
//						$("login-form-form").show();
//						$("login-form-forgot").hide();
//						$("login-form-forgot-feedback").hide();
//						Login.resetDropdown();
//					}
//				);
			}
			else
			{
				$("unregistered-email-login-ForgotUserName").show();
				Login.resetDropdown();
			}
		});
	},
	clearMessages:function() {
		$("unregistered-email-login-ForgotUserName").hide();
		$('advice-required-login-ForgotUserName').hide();
		$('invalid-input-login-ForgotUserName').hide();
		$('advice-required-login-Password').hide();
		Login.resetDropdown();
	},
	resetDropdown:function() {
		var form=$("login-form");
		var dropdown = form.getParent("div.dropdown");
		
		if(dropdown)
		{var container = dropdown.getElement("div.container");
		if(dropdown && container)
		{
			var size = container.getSize().y;
			if(size%2==0) size = size+1;
			dropdown.setStyle('height', size);
			dropdown.getElements('.background').setStyle('height', (size+13)/2);
		}
		}
	}
};
$domready(Login.init,50);
