﻿// extend jQuery
$.fn.textOrNA = function(text) {
    this.text(text ? text : "N/A");
};

function hidePopup() {
    $('#popup').hide();
    location.replace("#");
    $('.bo .popup').removeClass("popup");
}

var popupInitialized = false;
var popupUsername;

function formatLogoUrl(url) {
    return url + "@170x80scp.ashx";
}

function showCompany(username) {
    log(username);

    var popup = $('#popup');

    // initialize
    if (!popupInitialized) {
        popupInitialized = true;
        $('.close', popup).click(function() { hidePopup(); this.blur(); });
        popup.css({ right: "15%", "top": 200 });
        $("#c-industry").click(function() { setFilter($(this).text()); this.blur(); });
        $("#c-agenda-add").click(function() {
            addToAgenda(popupUsername);
        });
        $("#c-agenda-remove").click(function() {
            removeFromAgenda(popupUsername);
        });
        $('#c-brochure').click(function() {
            logEvent("brochure", popupUsername);
        });
        $("#c-url").click(function() {
            logEvent("website", popupUsername);
        });
    }

    hidePopup();
    var booths = $('.c' + username).addClass("popup");

    var company = companies[username];
    if (!company) return;
    popupUsername = username;
    logEvent("popup", username)
    location.replace("#" + username);

    if (company.advertiser)
        popup.addClass("adv");
    else
        popup.removeClass("adv");

    if (company.logo) {
        var newLogo = $('#c-logo').clone().attr("src", formatLogoUrl(company.logo));
        newLogo.replaceAll('#c-logo').show();
    }
    else $('#c-logo').hide();

    $("#c-title").textOrNA(company.name);
    $("#c-booths").textOrNA(getCompanyBooths(username));
    $("#c-address").text(company.address);
    $("#c-city").textOrNA(company.city);
    $("#c-state").textOrNA(company.state);
    $("#c-zip").textOrNA(company.zip);
    $("#c-phone").textOrNA(company.phone);
    $("#c-fax").textOrNA(company.fax);

    updatePopupAgenda();

    // brochure link
    if (company.brochure && !kiosk)
        $('#c-brochure').show().attr("href", company.brochure);
    else
        $('#c-brochure').hide();

    // url
    if (company.url) {

        var url = company.url.substr(0, 7) == "http://" || company.url.substr(0, 8) == "https://" ? company.url : "http://" + company.url;
        $("#c-url").text(url).attr("href", url).show();
        if (kiosk) {
            $("#c-url").removeAttr("href");
        }

    } else
        $("#c-url").hide();

    // industry
    $("#c-industry").text(company.industry ? company.industry : "");

    // services
    $("#c-services").text(company.services ? company.services : "");

    popup.show();


    // position booth
    var boff = booths.offset();
    var btop = boff.top;
    var bleft = boff.left;
    var bbot = btop + booths.height();
    var bright = bleft + booths.width();

    var poff = popup.offset();
    var ptop = poff.top;
    var pleft = poff.left;
    var pbot = ptop + popup.height();
    var pright = pleft + popup.width();

    var bottomDelta = pbot - btop;
    var topDelta = ptop - bbot;

    var leftDelta = pleft - bright;
    var rightDelta = pright - bleft;

    if (bottomDelta > 0 && topDelta < 0 && leftDelta < 0 && rightDelta > 0) {
        var moveY = 0;
        var moveX = 0;
        // currently we'll do only left/right movements
        if (rightDelta < -leftDelta) {
            moveX = rightDelta;
        } else {
            moveX = leftDelta;
        }

        //        if (bottomDelta < -topDelta && bottomDelta < rightDelta && bottomDelta < -leftDelta) {
        //            // move using bottomDelta
        //            moveY = bottomDelta;
        //        } else if (-topDelta < rightDelta && -topDelta < -leftDelta) {
        //            moveY = topDelta;
        //        } else if (rightDelta < -leftDelta) {
        //            moveX = rightDelta;
        //        } else {
        //            moveX = leftDelta;
        //        }

        log("moveX = " + moveX + "; moveY = " + moveY);
        moveMap(moveX, moveY);
    }
}

function updatePopupAgenda() {
    if ($.inArray(popupUsername, agenda) != -1) {
        $("#c-agenda-add").hide();
        $("#c-agenda-remove").show();
    } else {
        $("#c-agenda-remove").hide();
        $("#c-agenda-add").show();
    }
}