/// <reference name="MicrosoftAjax.js"/>

var groupAddedUsers = new Array();
var groupAddUsers   = new Array();

var pager = {
    page:1,
    totalhits:0,
    pagesize:6,
    getStartIndex: function () {
        return (pager.page - 1) * pager.pagesize;
    },
    getNumPages: function () {
        var numPages = Math.ceil(pager.totalhits / pager.pagesize);
        return numPages;
    },
    reset: function () {
        pager.page = 1;
        pager.totalhits = 0;
    }
};


function changePage() {
	var searchString = $("input.textSearchUsers").val();
	var titleString = $("input.textSearchUsers").attr("title");

	if ( searchString != titleString ){
		var currentGroupPid = $("input#currentGroupPid").val();
		Designit.ITST.OIO.CMS.WebUI.json_services.UserFunctions.SearchUsers(searchString,currentGroupPid,pager.getStartIndex(),pager.pagesize, receiveUpdatedUsers);
	}
}

function updatePagerLook() {
    if(pager.totalhits < pager.pagesize+1) {
        $("#modalPopupAddMembersPager").hide();
        updatePagerButtons();
    } else {
        updatePagerButtons();
        $("#modalPopupAddMembersPager").fadeIn(400);
    }
}

function updatePagerButtons() {
    // first & previous button
    if(pager.page == 1) {
        $("img#modalPopupPagerBtnFirst").attr({"src":"/Media/Layout/icons/btn-pagination-first-grey.gif"});
        $("img#modalPopupPagerBtnPrevious").attr({"src":"/Media/Layout/icons/btn-pagination-prev-grey.gif"});
    } else {
        $("img#modalPopupPagerBtnFirst").attr({"src":"/Media/Layout/icons/btn-pagination-first.gif"});
        $("img#modalPopupPagerBtnPrevious").attr({"src":"/Media/Layout/icons/btn-pagination-prev.gif"});
    }
    
    // next & last button
    if(pager.page == pager.getNumPages()) {
        $("img#modalPopupPagerBtnNext").attr({"src":"/Media/Layout/icons/btn-pagination-next-grey.gif"});
        $("img#modalPopupPagerBtnLast").attr({"src":"/Media/Layout/icons/btn-pagination-last-grey.gif"});
    } else {
        $("img#modalPopupPagerBtnNext").attr({"src":"/Media/Layout/icons/btn-pagination-next.gif"});
        $("img#modalPopupPagerBtnLast").attr({"src":"/Media/Layout/icons/btn-pagination-last.gif"});
    }
}

function receiveUpdatedUsers(users){
		groupAddUsers = users.users;
		pager.totalhits = users.totalhits;
		updatePagerLook();
		createUserList();
		createAddedUsers();
}

function receiveUpdatedEmailUsers(users){
		for(var i = 0; i<users.totalhits; i++)
		{
		    groupAddedUsers.push(users.users[i]);
		}
		createUserList();
		createAddedUsers();
		$("input.textInviteUsers").val("");
		$("input.textInviteUsers").removeAttr("disabled");
		$("a.btnInviteUsers").removeAttr("disabled");
		
}
	
//(re)draw userlist, left
function createUserList(){
	
	$("table#userList tbody tr").each( function(){
		if ( $(this).hasClass("hidden") ){
			//do nothing - template tr elementer
		} else{
			//nulstil
			$(this).remove();
		}
		
	});
	
	//tomt søgeresultat - vis "Ingen forslag"
	if ( groupAddUsers.length < 1){
		$("table#userList tr:eq(1)").clone().appendTo($("table#userList tbody")).removeClass("hidden");
		$("table#userList tr:last span.medlem-navn:last").html( "Ingen forslag" );
		$("table#userList tr:last span.medlem-gruppe:last").html( "" );
		$("table#userList tr:last span.medlem-buttons:last").html( "" );
	}	
	
	var i;
	for(i = 0; i < groupAddUsers.length; i++) {
		var user = groupAddUsers[i];
		if (i % 2 > 0 ) {
			$("table#userList tr:eq(2)").clone().appendTo($("table#userList tbody")).removeClass("hidden");
		}
		else {
			$("table#userList tr:eq(1)").clone().appendTo($("table#userList tbody")).removeClass("hidden");
		}
		
		$("table#userList tr:last span.medlem-navn:last").html( getUserRealname(user.pid,groupAddUsers) );
		$("table#userList tr:last span.medlem-gruppe:last").html( user.username );
		$("table#userList tr:last span.medlem-buttons:last a").attr("rel", user.pid);
		
	}
	updateUserList();
}

//opdaterer listen over added users
function createAddedUsers(){
	$("table#groupAddedMembers tbody tr").each( function(){
		if ( !$(this).hasClass("hidden") ){
			$(this).remove();
		} else{
			//do nothing - template tr elementer
		}
	});
	
	//tomt søgeresultat - vis "Ingen forslag"
	if ( groupAddedUsers.length < 1){
		$("tr#addedMemberListItemOdd").clone().prependTo($("table#groupAddedMembers tbody")).removeClass("hidden").addClass("ingenTilmeldte");
		$("table#groupAddedMembers tbody tr:first span.medlem-navn:first").html( "Ingen inviterede" );
		$("table#groupAddedMembers tbody tr:first span.medlem-gruppe:first").html("");
		$("table#groupAddedMembers tbody tr:first div.medlem-remove-buttons:first").html("");
	} else{
		
	}
	
	var j;
	for(j = 0; j < groupAddedUsers.length; j++) {
		var user = groupAddedUsers[j];
		
		/*
		user.renderMethod
		0 = searchUser (Brugere fundet via normal søgning
		1 = existingEmailUser (Brugere fundet via e-mail tilføj, som allerede er på digitaliser.dk)
		2 = newUser (Brugere fundet via e-mail tilføj, som IKKE allerede er på digitaliser.dk)
		3 = wrongEmail (Den indtastede e-mail adresse er ikke tilladt)
		*/
		
		
		if( (j % 2) > 0){
			$("tr#addedMemberListItemOdd:first").clone().prependTo("table#groupAddedMembers tbody");				
		} else{
			$("tr#addedMemberListItemEven:first").clone().prependTo("table#groupAddedMembers tbody");
		}
		$("table#groupAddedMembers tbody tr:first").removeClass("hidden").addClass("newAddedUser");
		if(user.renderMethod == 0)
		{
		    $("table#groupAddedMembers tbody tr:first div.medlem-remove-buttons a").attr("rel", user.pid);
		    $("table#groupAddedMembers tbody span.medlem-navn:first").html( getUserRealname(user.pid,groupAddedUsers));
		}
		else if(user.renderMethod == 1)
		{
		    $("table#groupAddedMembers tbody tr:first div.medlem-remove-buttons a").attr("rel", user.pid);
		    if (user.memberOfCurrentGroup) {
		        $("table#groupAddedMembers tbody span.medlem-navn:first").html(user.email + "<br />(Er medlem af gruppen)");
		    }
		    else if (user.memberStatus == 2) { // "APPLICANT"
		        $("table#groupAddedMembers tbody span.medlem-navn:first").html(user.email + "<br />(Har ansøgt om gruppemedlemsskab)");
		    }
		    else if (user.memberStatus == 1) { // "INVITED"
		        $("table#groupAddedMembers tbody span.medlem-navn:first").html(user.email + "<br />(Er tidl. inviteret til gruppen)");
		    }
		    else {
		        $("table#groupAddedMembers tbody span.medlem-navn:first").html(user.email + "<br />(Er bruger på digitalisér.dk)");
		    }
		}
		else if(user.renderMethod == 2)
		{
		    $("table#groupAddedMembers tbody tr:first div.medlem-remove-buttons a").attr("rel",user.email);
		    $("table#groupAddedMembers tbody span.medlem-navn:first").html(user.email);
		}
		else if(user.renderMethod == 3)
		{
		    $("table#groupAddedMembers tbody tr:first div.medlem-remove-buttons a").attr("rel", user.email);
		    $("table#groupAddedMembers tbody span.medlem-navn:first").html( user.email + "<br />(Ugyldig e-mail - ignoreres)");
		}
	}
}

//opdaterer ikoner i userList
/* user.memberStatus

   1 == INVITED
   2 == APPLICANT
  
 */
function updateUserList(){
	    $("table#userList").find("tr").each( function()
	    {
	    
            var pid = $(this).find("span.medlem-buttons a").attr("rel");
            var user = getUserObject(pid);
            
            if (isInAddedUsers(pid)) 
            {
		        $(this).find("img").addClass("groupMemberAdded").attr({"src":"/media/Layout/icons/btn-plus-grey.gif"});
		        $(this).find("span.medlem-status").html("Er tilføjet");
	        } 
	        else if (isInCurrentUseres(pid)) 
	        {
	            $(this).find("img").addClass("groupMemberAdded").attr({"src":"/media/Layout/icons/btn-plus-grey.gif"});
	            $(this).find("span.medlem-status").html("Er allerede medlem");  
	        }
	        else if (user != null && user.memberStatus == 2) 
	        {
	            $(this).find("img").addClass("groupMemberAdded").attr({"src":"/media/Layout/icons/btn-plus-grey.gif"});
	            $(this).find("span.medlem-status").html("Har allerede ansøgt");  
	        } 
	        else if (user != null && user.memberStatus == 1) 
	        {
	            $(this).find("img").addClass("groupMemberAdded").removeClass("groupMemberAdded").attr({"src":"/media/Layout/icons/btn-plus.gif"});
	            $(this).find("span.medlem-status").html("Er allerede inviteret");  
	        } 
	        else 
	        {
		        $(this).find("img").removeClass("groupMemberAdded").attr({"src":"/media/Layout/icons/btn-plus.gif"});
	        }
        });
	
    //opdaterer tabs med total hit count
    updateTabResults( pager.totalhits );
}
	
function updateTabResults( total ){
	//$("span#modalAddMemberPopupTotalCount").html("Søg medlem ("+total+")");
	$("span#modalAddMemberPopupAddedCount").html( "Tilføjede medlemmer (" + groupAddedUsers.length + ")" );
}
	
//sletter bruger fra arrayet "groupAddedUsers"
function removeUser(pid){
	for (i = 0; i < groupAddedUsers.length; i++) {
		if (groupAddedUsers[i].pid == pid) {
			groupAddedUsers.splice(i,1); // Removes 1 element from index i
			break;
		}
		else if(groupAddedUsers[i].email == pid) {
		    groupAddedUsers.splice(i,1); // Removes 1 element from index i
			break;
		}
	}
}
	
//tilføjer en bruger til arrayet "groupAddedUsers"
function addUser(pid){
	if( !(isInAddedUsers(pid)) ){
		groupAddedUsers.push( getUserObject(pid) );
		$("tr.ingenTilmeldte").remove();
	} else{
		//Brugeren er der allerede!
	}
}
	
//giver et user objekt
function getUserObject(pid){
	for (i = 0; i < groupAddUsers.length; i++) {
		if (groupAddUsers[i].pid == pid) {
			return groupAddUsers[i];
		}
	}
}

function getUserRealname(pid,users){
	var userRealname = "Ukendt navn";
	for (i = 0; i < users.length; i++) {
		if (users[i].pid == pid) {
			userRealname = users[i].firstname + ' ' + users[i].surname;
		}
	}
	return userRealname;
}

//er bruger med id'et PID er i arrayet "groupAddedUsers"
function isInAddedUsers(pid){
	for (i = 0; i < groupAddedUsers.length; i++) {
		if (groupAddedUsers[i].pid == pid) {
			return true;
		}
	}
	return false;
}

//undersøger om den pågældende bruger er i den eksisterende brugerliste, i.e. medlemmer for gruppen 
function isInCurrentUseres(pid){
	for (i = 0; i < groupAddUsers.length; i++) {
		if ( (groupAddUsers[i].pid == pid) && groupAddUsers[i].memberOfCurrentGroup ) {
			return true;
		}
	}
	return false;
}

$(document).ready(function() {

    $("div.modalPopupClose, a.modalPopupClose").click(clearAndClose);

    //$("div.popupbox-header span.right").css({width:"auto"});

    $("a.btnSaveAddedUsers").click(saveAddedUsers);

    function saveAddedUsers() {
        //example of calling AddUsersToGroup(string[] userPids, string groupPid)
        var currentGroupPid = $("input#currentGroupPid").val();
        Designit.ITST.OIO.CMS.WebUI.json_services.UserFunctions.AddUsersToGroup(groupAddedUsers, currentGroupPid, saveAddedUsersResult);
        $(this).closest('.content').find('div.left-main-content').addClass('hidden');
        $(this).closest('.content').find('div.right-main-content').addClass('hidden');
        $(this).closest('.content').find('div.right-main-content').after('<div class="loader" style="width: 100%; text-align:center"><img src="/media/Layout/ajax-loader.gif" alt="Inviterer brugere" /></div>');

        return false;
    }

    function clearAndClose() {
        $(this).closest('.content').find('.loader').remove();
        $(this).closest('.content').find('.left-main-content').removeClass('hidden');
        $(this).closest('.content').find('.right-main-content').removeClass('hidden');
        $("a.btnSaveAddedUsers").click(saveAddedUsers);
        clear()
        $("#modalAddGroupMembers").jqmHide();
        return false;
    }

    function clear() {
        $("input.textSearchUsers").attr("value", "");
        groupAddedUsers = [];
        createAddedUsers();
        performNewSearch();
    }

    function closeAndResetWindow() {
        $("#modalAddGroupMembers").jqmHide();
        window.location.reload();
    }

    function saveAddedUsersResult(result) {
        $("a.btnSaveAddedUsers").unbind('click', saveAddedUsers);
        $("a.btnSaveAddedUsers").click(closeAndResetWindow);
        $("a.btnSaveAddedUsers span").html('Luk vindue');
        $("a.modalPopupClose").addClass('hidden');
        clear();
        var errorBoxId = "modalAddGroupMemberid" + Math.floor(Math.random() * 1000);
        var errorBox = NOTICE.getNoticeBoxInfo(result.errorMessage, errorBoxId);
        $("a.btnSaveAddedUsers").closest('.content').find('.loader').remove();
        $("#modalAddGroupMembers .errorBoxPin").after(errorBox);
    }

    $("input.textSearchUsers").hint();

    $("input.textSearchUsers").keydown(function(e) {
        if (e.keyCode == 13) {
            performNewSearch();
            return false;
        }
    });

    $("input.textInviteUsers").keydown(function(e) {
        if (e.keyCode == 13) {
            performEmailSearch();
            return false;
        }
    });



    //$("table.groupAddedMembers tbody").find("span.medlem-navn").css({width:"220px"}); 
    $("table.groupAddedMembers tbody").find("span.medlem-buttons").css({ margin: "0 0 0 0" });

    $(".oio-tabs-box-liquid").click(function(event) {

        if ($(event.target).parent().is("a.btnNext")) {
            if (pager.page < pager.getNumPages()) {
                pager.page++;
                changePage();
            }
            return false;
        }
        if ($(event.target).parent().is("a.btnLast")) {
            if (pager.page < pager.getNumPages()) {
                pager.page = pager.getNumPages();
                changePage();
            }
            return false;
        }
        if ($(event.target).parent().is("a.btnPrevious")) {
            if (pager.page > 1) {
                pager.page--;
                changePage();
            }
            return false;
        }
        if ($(event.target).parent().is("a.btnFirst")) {
            if (pager.page > 1) {
                pager.page = 1;
                changePage();
            }
            return false;
        }


        //klikker på søg
        if ($(event.target).parent().is("a.btnSearchUsers")) {
            performNewSearch();
            return false;
        }

        //klikker på tilføj
        if ($(event.target).parent().is("a.btnInviteUsers")) {
            performEmailSearch();
            return false;
        }


        //Trykker på remove user
        if ($(event.target).hasClass("groupMemberRemove")) {
            var tempPID = $(event.target).parents("tr").find("div.medlem-remove-buttons a").attr("rel");
            removeUser(tempPID);

            $(event.target).parents("tr").fadeOut(300, function() {
                createAddedUsers();
            });

            createUserList();

            return false;
        }

        //trykker på add user knap
        if ($(event.target).hasClass("groupMemberAdd")) {
            if ($(event.target).hasClass("groupMemberAdded")) { return false; }

            var userPID = $(event.target).parent("a").attr("rel");
            addUser(userPID);

            //html
            if ((groupAddedUsers.length % 2) > 0) {
                $("tr#addedMemberListItemEven").clone().prependTo("table#groupAddedMembers tbody").fadeIn(400, function() { $(this).removeClass("hidden"); });
            } else {
                $("tr#addedMemberListItemOdd").clone().prependTo("table#groupAddedMembers tbody").fadeIn(400, function() { $(this).removeClass("hidden"); });
            }

            $("table#groupAddedMembers tbody span.medlem-navn:first").html(getUserRealname(userPID, groupAddedUsers));
            $("table#groupAddedMembers tbody tr:first div.medlem-remove-buttons a").attr("rel", userPID);
            $("table#groupAddedMembers tbody tr:first").addClass("newAddedUser").removeAttr("id");


            updateUserList();
            return false;
        }

    });

});

var newSearch = true;
function performNewSearch() {
		var searchString = $("input.textSearchUsers").val();
		var titleString = $("input.textSearchUsers").attr("title");

		if ( searchString != titleString ){
			var currentGroupPid = $("input#currentGroupPid").val();
			pager.reset();
			newSearch = true;
			Designit.ITST.OIO.CMS.WebUI.json_services.UserFunctions.SearchUsers(searchString,currentGroupPid,pager.getStartIndex(),pager.pagesize, receiveUpdatedUsers);
		}
}

function performEmailSearch() {
		var searchString = $("input.textInviteUsers").val();
		var titleString = $("input.textInviteUsers").attr("title");

		if ( searchString != titleString ){
			var currentGroupPid = $("input#currentGroupPid").val();
			Designit.ITST.OIO.CMS.WebUI.json_services.UserFunctions.SearchEmailUsers(searchString,currentGroupPid, receiveUpdatedEmailUsers);
		}
		$("input.textInviteUsers").val("");
		$("input.textInviteUsers").val("Finder og tilføjer brugerne");
		$("input.textInviteUsers").attr("disabled", "disabled");
		$("a.btnInviteUsers").attr("disabled", "disabled");
}