// this js contains all functions to make the wizard login work.
// it will only work via ajax calls to the server.

dojo.require("dijit.Dialog");
dojo.addOnLoad(function(){
     createLoginDialog();
 });

function createLoginDialog(){
    content=document.getElementById("hiddenLoginDialog").innerHTML;
    if (dijit.byId('loginDialog')){
        return;
    }
    var loginDialog = new dijit.Dialog({id:"loginDialog", title:"Inloggen voor gebruikers", style:"z-index: 999999999"});
    loginDialog.startup();
    loginDialog.setContent(content);
    document.getElementById("hiddenLoginDialog").innerHTML = '';
}

function showInloggen(){
	document.getElementById("loginDialog_title").innerHTML = "Inloggen voor gebruikers";
	document.getElementById("all_login_wizard_inloggen").style.display = "block";
	document.getElementById("all_login_wizard_password").style.display = "none";
	foldObjectById('loginErrors');
	foldObjectById('loginAjaxErrors');
}

function handleNotLoggedIn(response,ioArgs){
	openInloggen();
	handleLoginErrorMessage("Uw bent niet meer ingelogd graag opnieuw inloggen om deze bewerking af te ronden.");
}

function openInloggenRedirect() {
	document.getElementById("targeturl").value = "";
	document.getElementById("redirect_after_login").value = "true";
	showInloggen();
	hideFlash();
	dijit.byId('loginDialog').show();
}

function openInloggenRedirectToUrl(url) {
	document.getElementById("targeturl").value = url;
	document.getElementById("redirect_after_login").value = "true";
	showInloggen();
	hideFlash();
	dijit.byId('loginDialog').show();
}

function openInloggen() {
	document.getElementById("targeturl").value = "";
	document.getElementById("redirect_after_login").value = "false";
	showInloggen();
	hideFlash();
	dijit.byId('loginDialog').show();
}

function showPasswordForgot(){
	document.getElementById("loginDialog_title").innerHTML = "Wachtwoord opvragen";
	document.getElementById("all_login_wizard_inloggen").style.display = "none";
	document.getElementById("all_login_wizard_password").style.display = "block";
}

function testTheLoginForm(){
	var oke = false;
	var loginForm =  document.getElementById("wizardLoginForm");
	var statusUsername = ensureStringObjectId("username");
	var statusPassword = ensureStringObjectId("password");
	if(statusUsername && statusPassword){
    	foldObjectById('loginErrors');
		oke = true;
	}else{
        unFoldObjectById('loginErrors');
	}
	if(oke){
	    loginUser();
	}
}

function testTheLoginFormOnSubmit(){
	testTheLoginForm();
	return false;
}

function submitWizardFormEnter(event){
	if (!event) { // IE comaptibility
		event = window.event;
	}
	if (event.keyCode == '13') {
		testTheLoginFormOnSubmit();
	}
}

function testLostPwForm(){
	var wizardPasswordForm =  document.getElementById("wizardPasswordForm");
	var emailstatus = ensureEmailAddressObjectId("email");
	if(emailstatus){        	
		foldObjectById('passwordErrors');
		wizardPasswordForm.submit();
	}else{
        unFoldObjectById('passwordErrors');
	}
}	

function handleLoginErrorMessage(errormessage){
	document.getElementById("loginAjaxErrorsMessage").innerHTML = errormessage;
	unFoldObjectById("loginAjaxErrors");
	addCSSClassById("username","all_input_string_error");
	addCSSClassById("password","all_input_string_error");
}

function loginUser(){
    dojo.xhrGet(getLoginUser);
}

var getLoginUser = {
    url: "/jobsrep/ctrl/ajaxSubmitController/?registeredaction=1023",
    handleAs: "json",
    preventCache: true,
    load: function(response, ioArgs) {
		var errors = response.errors;
        var theDataObject = response.data.login_data;
        if(theDataObject.login_valid == "true"){
        	if(theDataObject.person_id && theDataObject.person_id!=""){
           		WM_setCookie("person_id", theDataObject.person_id, 8760, "/", "", false);
        	}
            if( theDataObject.extra_roles && theDataObject.extra_roles!=""){
                WM_setCookie("extra_roles", theDataObject.extra_roles, 8760, "/", "", false);
            }
        	if(theDataObject.default_menu_id && theDataObject.default_menu_id!=""){
       			WM_setCookie("default_menu_id", theDataObject.default_menu_id, 8760, "/", "", false);
        	}
        	if(theDataObject.dienst_company_id && theDataObject.dienst_company_id != "" && theDataObject.dienst_company_id != "-1") {
        		WM_setCookie("dienst_company_id", theDataObject.dienst_company_id, 8760, "/", "", false);
        	}
        	if(theDataObject.viadesk_session_id && theDataObject.viadesk_session_id != "") {
        		WM_setCookie("viadeskSessionId", theDataObject.viadesk_session_id, 8760, "/", theDataObject.viadesk_domain, false);
        	}
        	if(document.getElementById("redirect_after_login").value=="true"){
        		if(document.getElementById("targeturl").value==""){
        			document.location = theDataObject.redirect_url;
        		}
        		else {
        			document.location = document.getElementById("targeturl").value;
        		}
        	}else{
        		dijit.byId('loginDialog').hide();
        	}
        }
        else {
        	handleLoginErrorMessage(errors[0].error);
        }
        
        return response; 
     },
     error: function(response, ioArgs) {
    	 return response; 
     },
     timeout: 4000,
     form: "wizardLoginForm"
};  

function checkRightsForMenu(url){
	document.getElementById("targeturl").value = url;
	dojo.xhrGet(getLoginStatus);
}

var getLoginStatus = {
    url: "/jobsrep/ctrl/ajaxSubmitController/?registeredaction=1025",
    handleAs: "json",
    preventCache: true,
    sync: true,
    load: function(response, ioArgs) {
        var theDataObject = response.data.menu_info;
        if(theDataObject.needlogin=="true"){
        	document.getElementById("loginAjaxInfoMessage").innerHTML = theDataObject.message;
        	unFoldObjectById("loginInfoMessage");
        	openInloggenRedirectToUrl(document.getElementById("targeturl").value);
        }else{
        	document.location = document.getElementById("targeturl").value;
        }
        return response; 
     },
     error: function(response, ioArgs) {
        return response; 
     },
     timeout: 4000,
     form: "rightchecker"
};  



$(document).ready(function () {
	 var ahref=document.getElementsByTagName("a");
	 for (var i=0; i<ahref.length; i++) {
		 if(ahref[i].rel=="checkforrights"){
			 ahref[i].href = "javascript:checkRightsForMenu('"+ahref[i].href+"')";
		 }
	 }
});	

