var login = (function() {

    /* Variables */
    var loginUrl = "/login?p_p_id=AltiboxLogin_WAR_portletslogin10SNAPSHOT&p_p_lifecycle=0&p_p_mode=view&saveLastPath=0&_AltiboxLogin_WAR_portletslogin10SNAPSHOT_struts_action=/login/login&p_p_state=exclusive&_AltiboxLogin_WAR_portletslogin10SNAPSHOT_redirect=";
    var partnerUrl =  "/login?p_p_id=AltiboxLogin_WAR_portletslogin10SNAPSHOT&p_p_lifecycle=0&p_p_mode=view&saveLastPath=0&_AltiboxLogin_WAR_portletslogin10SNAPSHOT_struts_action=/login/login&p_p_state=exclusive&action=authenticate/choosepartner";
    var ajaxLoader = "/web-altibox_red-theme/images/ajaxloaders/loaderSmall.gif";
    var errorMsg = "<div>Innlogging er midlertidig deaktivert, vennligst pr&oslash;v igjen siden.</div>";
    var wMessage = "<div style='position:absolute; left: 285px; top: 80px;' class='loginWaitMessage'>\
                      <img src='"+ajaxLoader+"'/>\
                    </div>";
    var pMessage = "<div>\
                         For &aring; benytte denne funksjonaliteten m&aring; du logge inn p&aring; din lokale Altibox leverand&oslash;rs nettside. \
                         Det er ikke mulig &aring; logge inn p&aring; Altibox.no. <br/>\
                         <a href='http://www.altibox.no/omaltibox/leverandorer'>Velg din lokale Altiboxpartner her.</a>\
                    </div>"

    var url;
    var redirurl;
    
    function trigger() {
        var redirurl = window.location.href;
        var host = window.location.host;
        var login = false;
    
        if (host.match("^"+"www.altibox.no") == "www.altibox.no") {
            //url = partnerUrl;
            handleError(pMessage);
            return;
        } else {
            url = loginUrl+redirurl;
            login = true;
        }
        show(login);
    }

    function show(login) {
        $.ajax({
            url: url,
            type: "GET",
            timeout: 2000,
			success: function(data) {
			    if (login) handleSuccess(data);
			    else handleError(data);
			},
    		error: function(xmlReq, txtStatus, errThrown){
                handleError(errorMsg);
            }
    	});
    }
    
    function showWaitMessage() {
        lightbox.replaceContent(wMessage);
        lightbox.hideCloseButton();
    }
    
    /* Handle success */
    function handleSuccess(data) {
    	var login = $(data);
    	
        // Update actions and links
    	var form = $("#credentials", login);
    	if (form.length > 0) {
        	var faction = form.attr('action');
	        form.attr('action',faction);
	        login.find("a").each(function() {
		        var link = $(this).attr('href').replace("p_p_state=exclusive","p_p_state=normal");
		        $(this).attr('href', link);
	        });		
		    lightbox.show(login.html(), function(lb) {
		        var checkAndBindSubmit = function() {
		            $('#credentials input#username').focus();
                    $('#credentials.errors').fadeIn("slow");
                    $('#credentials').submit(function() {
                	    var data = $(this).serialize();
                	    $.ajax({
                	        url: faction,
                	        type: "POST",
                	        data: data,
                	        success: function(data) {
                	            if ($(data).find('#credentials').length > 0) {
                    	            lightbox.replaceContent(data, function() {
                    	                checkAndBindSubmit();
                    	            });
                    	        } else {
                    	            window.location.reload();
                    	        }
                	        },
                	        error: function(xmlReq, txtStatus, errThrown) {
                	            window.location.reload();
                	        }
                	    });
                	    showWaitMessage();
                	    return false;
                	});
                };
                checkAndBindSubmit();
		    }, 700, 300, function() {
                window.location.reload();
            });
		} else {
		    handleError(errorMsg);
		}
    }
    
    /* Handle error */
    function handleError(msg) {
        lightbox.show(msg);
    }

    return {
        trigger:trigger,
        showWaitMessage:showWaitMessage
    }

})();


