﻿// Initialize this and store globally for tracking state.
var galleryMode = false;
var usersList;
var currentTab = 1;
var currentPage = 1;
var lastPage = 1;
var pageSize = 0;

var themeFolder = "App_Themes/" + $('#hidCurrentTheme').val();

Sys.onReady(function() {

    pageSize = $('#hidPageSize').val();
    
    //mark first tab
    markTab(1);
    checkTabCommand();

    usersList = Sys.get("$usersListView");

    $addHandler(Sys.get("#switchMode"), "click", function() {
        Sys.Observer.setValue(window, "galleryMode", !galleryMode);
        usersList.set_itemTemplate(galleryMode ? "#galleryTemplate" : "#gridTemplate");
        return false;
    });

    getUsers();
    getUsersCount();

});

function getUsers() {
    AspNetDating.Services.SearchService.GetUsers(currentTab, currentPage, pageSize, loadUsers);
}

function loadUsers(result) {
    var hasResults = result != null && result.length > 0;
    toggleSwitchModeVisible(hasResults);
    toggleClearTabVisible(hasResults);
    $get('noResults').style.display = hasResults? "none" : "block";

    usersList.set_data(result);
}

function getUsersCount() {
    AspNetDating.Services.SearchService.GetUsersCount(currentTab, loadPaging);
}

function loadPaging(result) {
    lastPage = Math.ceil(result / pageSize);
    updatePaging();
}

//Paging

function updatePaging() {

    var startRowIndex = 1;
    var endRowIndex = lastPage;
    var bpagerNext = $get("bpagerNext");
    var bpagerBack = $get("bpagerBack");

    $clearHandlers(bpagerNext);
    $clearHandlers(bpagerBack);

    var i = 0;
    for (i = 0; i < 10; i++) {
        $clearHandlers($get("bpager" + (i + 1)));
    }

    if (lastPage > 1) {

        Sys.UI.DomElement.setVisible($get("bottomPager"), true);

        var IX = Math.floor((currentPage - 1) / 10);
        endRowIndex = ((IX + 1) * 10 - 1);
        startRowIndex = (IX * 10);

        if (endRowIndex >= lastPage)
            endRowIndex = lastPage - 1;

        //pagerNext
        if (((lastPage - 1) > endRowIndex)) {
            Sys.UI.DomElement.setVisible(bpagerNext, true);
            bpagerNext.innerHTML = '...';
            bpagerNext.name = endRowIndex + 2;
            $addHandler(bpagerNext, 'click', GotoPage);
        }
        else {
            Sys.UI.DomElement.setVisible(bpagerNext, false);
        }

        //pagerBack
        if (startRowIndex >= 10) {

            if (endRowIndex - startRowIndex < 9)
                startRowIndex = endRowIndex - 9;

            Sys.UI.DomElement.setVisible(bpagerBack, true);
            bpagerNext.innerHTML = '...';
            bpagerBack.name = startRowIndex;
            $addHandler(bpagerBack, 'click', GotoPage);


        }
        else {
            Sys.UI.DomElement.setVisible(bpagerBack, false);
        }

        //pagers
        var pageIndex = 1;
        for (i = 0; i < 10; i++) {

            pageIndex = startRowIndex + i;

            var bpager = $get("bpager" + (i + 1));

            if (pageIndex <= endRowIndex) {

                Sys.UI.DomElement.setVisible(bpager, true);
                $addHandler(bpager, 'click', GotoPage);
                bpager.innerHTML = pageIndex + 1;
                bpager.name = pageIndex + 1;
                Sys.UI.DomElement.removeCssClass(bpager, 'active');

                if (pageIndex + 1 == currentPage) {
                    Sys.UI.DomElement.toggleCssClass(bpager, 'active');
                }
            }
            else {
                Sys.UI.DomElement.setVisible(bpager, false);

            }

        }


    }
    else {
        Sys.UI.DomElement.setVisible($get("bottomPager"), false);
    }

}

function handleCommand(sender, e) {

    var redirectToLogin = $('#hidRedirectToLogin').val();
    switch (e.get_commandName()) {

        case "showUser":
            if (redirectToLogin == "True")
                document.location.href = "register.aspx";
            else
                showUser(e.get_commandArgument());
            break;
        case "sendMessage":
            if (redirectToLogin == "True")
                document.location.href = "register.aspx";
            else
                showUser(e.get_commandArgument());
            break;
        case "sendPreWritten":
            if (redirectToLogin == "True")
                document.location.href = "register.aspx";
            else
                showUser(e.get_commandArgument());
            break;
        case "startChat":
            //startChat(sender, e); 
            break;
        default: return;
    }

}

function GotoPage(ev) {

    var pageIndex = parseInt(ev.target.name);
    currentPage = pageIndex;

    getUsers();
    updatePaging();
}

Sys.converters.boolToString = function(value, binding) {
    return value ? binding.trueValue : binding.falseValue
}

function isOnlineConvert(isOnline) {

    if (isOnline == 1) {
        return "images/online.jpg";
    }
    else {
        return "images/offline.jpg";
    }
}

function interestedInTitleConvert(gender) {

    if (gender == "גבר") {
        return "מחפש:";
    }
    else if (gender == "אישה") {
        return "מחפשת:";
    }
    else {
        return "מחפשים:";
    }
}

function sloganConvert(slogan) {
    var line1 = "";
    var line2 = "";
    var maxLine1 = 17;
    var maxLength = 43;
    var words = new Array();

    var spaceIndex = slogan.indexOf(" ", 0);

    if (spaceIndex == -1 || spaceIndex > maxLine1) {
        slogan = slogan.substring(0, maxLine1) + " " + slogan.substring(maxLine1, slogan.length);
    }

    words = slogan.split(" ");
    var i = 0;
    for (i = 0; i < words.length; i++) {
        var word = words[i];
        if (i != 0)
            word = " " + word;
        if (line1.length + word.length <= maxLine1) {
            line1 += word;
        }
        else {
            line2 += word;
        }
    }

    slogan = line1 + line2;

    if (slogan.length > maxLength) {
        slogan = slogan.substring(0, maxLength-3) + "...";
    }

    return slogan;
}





function themeUrl(imageName) {

    var url = themeFolder + "/images/" + imageName;

    return url;
}

function titleConvert(name, age) {
    
    return name + " (" + age + ")";
}

function titleGalleryConvert(name) {

        return name.substring(0, 11);
    
}

function toggleSwitchModeVisible(visible) {
    Sys.UI.DomElement.setVisible($get("switchModes"), visible);
}

function toggleClearTabVisible(visible) {
    //show/hide tab clear button , CustomSearch = 12 , AddMeToFavorites = 6
    Sys.UI.DomElement.setVisible($get("clearTab"), (visible && currentTab > 4 && currentTab != 6 && currentTab != 12));
}

function toggleFilterVisible() {
    var filterVisible = $get('hidFilterVisible').value == "True";
    Sys.UI.DomElement.setVisible($get("searchFilter"), (filterVisible && (currentTab <= 4 || currentTab == 12)));
}

//Tabs
function checkTabCommand() {
    var tabId = $get("hidTabCommand").value;

    if ((typeof tabId != "undefined") && tabId != "" && tabId != "0") {
        currentTab = tabId;
        markTab(currentTab);
    }

}

function clickTab(id) {

    currentTab = id;
    markTab(id);

    currentPage = 1;
    lastPage = 1;

    getUsers();
    getUsersCount();

}

function markTab(id) {

    var customTab = $get("tabCustom");

    for (i = 1; i <= 4; i++) {
        $get("tab" + i).className = '';
    }

    if (id <= 4) {
        $get("tab" + id).className = 'active';
        if ($get('customTabLink') != null) 
            $get('customTabLink').className = 'custom';
    }
    else { //custom tab.

        var tabClicked = $get("tab" + id);

        customTab.innerHTML = "<a id=\"customTabLink\" href=\"#\" class=\"active_custom\" onclick=\"clickTab(" + id + ");\">" + tabClicked.innerHTML + "</a>"
        customTab.style.display = "block";
    }
    
    //show or hide filter block
    toggleFilterVisible();

}




function clearTab() {
    $.post("clearTab.ashx?id=" + currentTab, {}, function(response) {
    $.post("setTab.ashx?id=" + currentTab, {}, function(response) {
        document.location.href = "/Home.aspx";
    });
    });
}