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 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);
var UserManager = (function() {
    //var _countriesLB;
    //var _languagesLB;
    function init() {

        $$(".user-login").addReplacingEvent("click", function(e) {
            UserManager.openLogin();
        });
        $$(".user-logout").addReplacingEvent("click", function(e) {
            UserManager.logout();
        });

        var sTextF = $("searchText");

        if (sTextF != null) {
            $("searchButton").addReplacingEvent("click", function(e) {
                UserManager.search(sTextF);
            });

            sTextF.addReplacingEvent("click", function(e) {
                if ((sTextF.value == "") || (sTextF.value == $("EnterKeyword").innerHTML)) {
                    sTextF.value = "";
                }
            });
            sTextF.addEvent("keypress", function(e) {
                if (e.key && !e.shift) switch (e.key) {
                    case "enter":
                        UserManager.search(sTextF);
                        return;
                }
            });
        }

        //setUpCountriesLB();

        if ($("languagesDD") != null) {
            $("languagesDD").hide();
            $("langs").addReplacingEvent('click', function() {
                $("languagesDD").show();
            });
        }
    }


    $domready(init);

    function setUpCountriesLB() {
        var tempId1;
        var tempId2;
        var countriesList = $("countries-lightbox").getElements(".country-link");
        var languagesList = $("languages-lightbox").getElements(".lang-link");
        UserManager._countriesLB = new Lightbox($("countries-lightbox"), { opacity: 0.5, backgroundColor: '#04234b', containerClass: '', hideOnEnter: false, hideOnEsc: false });
        UserManager._languagesLB = $("languages-lightbox");
        if (UserManager._languagesLB) {
            UserManager._languagesLB.hide();
            UserManager._languagesLB.getElements("ul").each(function(item, index) {
                item.hide();

                tempId1 = item.id.split("-")[0];
                item.getElement("a").addReplacingEvent("click", function(item) {
                    UserManager.setUpCookie(tempId1, item.id);
                });
            });
        }
        //		countriesList.each(function(item,index){
        //			item.addReplacingEvent("click",function(){
        //				setUpCurrentCountry(item);
        //			});
        //		});

        //make check if country + language was selected:
        //if not - show LB & save in cookie;
        var currCountry = UserManager._get_cookie("country");
        var currLang = UserManager._get_cookie("language");

        //if no cookie & more then 1 site is online
        if ((countriesList.length > 1) && (languagesList.length > 1) && ((!currCountry) || (!currLang))) {
            UserManager._countriesLB.show();
        }

        //else
        //retrive from cookie

        $("languagesDD").getElements("li").each(function(item) {
            tempId1 = item.id.split("-")[0];
            item.getElement("a").addReplacingEvent("click", function() {
                tempId2 = this.id.split("-")[0];
                UserManager.setUpCookie2(tempId1, tempId2);
            });
        });

    }

    function setUpCurrentCountry(t) {
        UserManager._languagesLB.hide();
        countriesList.each(function(item, index) {
            item.removeClass("on");
            if (item.id + "-code") $(item.id + "-code").hide();
        });
        t.addClass("on");
        if (t.id + "-code") {
            UserManager._languagesLB.setStyle("top", t.offsetTop + 25 + "px");
            $(t.id + "-code").show();
            UserManager._languagesLB.show();
        }

    }

    function loginLoaded() {
        new Lightbox(UserManager._loginFormElement).show();
    }


    return {
        openLogin: function() {
            // if already got source
            if (UserManager._loginFormElement) loginLoaded();
            // otherwise fetch source from server
            else Mantis.Web.Services.UserService.GetLoginFormSource(function(source) {
                UserManager._loginFormElement = Element.fromMarkup(source);
                loginLoaded();
            });
        },
        openResetPassword: function() {
            UserManager.openLogin();
        },
        logout: function() {
            WebService.AuthenticationService.logout();
        },
        sendPassword: function(userName, callback) {
            Mantis.Web.Services.UserService.SendPassword(userName, function(success) {
                if (callback) callback(success);
            });
        },
        search: function(textField) {
            var sText = textField;

            if ((sText.value == "") || (sText.value == $("EnterKeyword").innerHTML)) {
                sText.value = $("EnterKeyword").innerHTML;
            }
            else {
                //alert(Config.siteUrl + "search-results.aspx?" + escape(sText.value));
                location.href = Config.siteUrl + "search-results/" + escape(sText.value);
            }
        },

        _get_cookie: function(cookie_name) {
            var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');
            if (results)
                return (unescape(results[2]));
            else
                return null;
        }
		,
        setUpCookie: function(country, language) {
            var currCountry = UserManager._get_cookie("country");
            var currLang = UserManager._get_cookie("language");
            if ((currCountry != country) || (currLang != language)) {
                var dateIt = new Date("January 1, 2030");
                var expires = "expires=" + dateIt.toGMTString();
                document.cookie = "country=" + country + ";" + expires + "; ";
                document.cookie = "language=" + language + ";" + expires + "; ";
            }

            if (UserManager._languagesLB) UserManager._languagesLB.hide();
            if (Lightbox != null) Lightbox.hide();

            location.href = location.href; //TODO:don't work;\
        },
        setUpCookie2: function(country, language) {
            //alert(country+"---"+language);
            var currCountry = UserManager._get_cookie("country");
            var currLang = UserManager._get_cookie("language");
            if ((currCountry != country) || (currLang != language)) {
                var dateIt = new Date("January 1, 2030");
                var expires = "expires=" + dateIt.toGMTString();
                document.cookie = "country=" + country + ";" + expires + "; ";
                document.cookie = "language=" + language + ";" + expires + "; ";
            }
            $("languagesDD").hide();
            location.href = location.href; //TODO:don't work;\
        }

    }
})();



