﻿/// <reference path="http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.min-vsdoc.js"/>

//window._emailRegex = /^[a-z0-9]+([-+\.]*[a-z0-9]+)*@[a-z0-9]+([-\.][a-z0-9]+)*$/i;
window._emailRegex = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/i;
var currentSearch = false;
function clearSearchFlag() {
    currentSearch = false;
}

$(function() {
    //set the incarnate service URL
    var IncarnateServiceURL = "http://incarnate.visitmix.com/incarnate.svc/";

    //list the services you want to use for incarnation
    //note that you can get the list of services supported by the instance of the incarnate service
    //you are using by calling incarnate.svc/providers (json) or incarnate.svc/providers.xml
    var providers = ["Twitter", "MySpace", "Facebook", "YouTube", "XBoxLive"];

    var avatars = [];
    //index is state variable for paging
    var index = 0;
    var searchTerm;
    var fadeDuration = 300;
    $("#IncarnateUserName").blur(function() {
        if (currentSearch == true) return;
        setTimeout("clearSearchFlag();", 1000);
        currentSearch = true;
        $("#IncarnateLoader").show();
        Incarnate();
    });

    $("#IncarnateButton").click(function() {
        if (currentSearch == true) return;
        setTimeout("clearSearchFlag();", 1000);
        currentSearch = true;
        $("#IncarnateLoader").show();
        Incarnate();
    });

    $("body").focus(function() {
        $("#IncarnateResultsContainer").fadeOut(fadeDuration);

    });

    function Incarnate() {

        //clear out all state
        index = 0;
        avatars = [];

        //don't search for empty string
        if ($("#IncarnateUserName").val() == "") {
            $("#IncarnateResultsContainer").fadeOut(fadeDuration);
            return;
        }
        searchTerm = $("#IncarnateUserName").val()

        if (window._emailRegex.test(searchTerm)) {
            //do gravatar
            $.getJSON(IncarnateServiceURL + "GetHash?email=" + searchTerm + "&callback=?",
            function(data) {
                //populate img tag                
                $("#IncarnateImg").attr("src", "http://gravatar.com/avatar.php?gravatar_id=" + data + "&d=http%3A%2F%2Fwww.visitmix.com%2FContent%2Fimg%2Fdefault_gravatar.gif");
                //populate hidden field for form submit
                $("#avatarImgSrc").attr("value", "http://gravatar.com/avatar.php?gravatar_id=" + data + "&d=http%3A%2F%2Fwww.visitmix.com%2FContent%2Fimg%2Fdefault_gravatar.gif");
                $("#IncarnateLoader").hide();

            });
            return;
        }
        if (searchTerm.indexOf("@") > 0) {
            $("#IncarnateResultsContainer").hide();

            return;
        }
        $("#IncarnateResultsContainer").empty();
        var cancelDiv = $('<div style="height:16px;margin:2px 2px 0 0;"><img style="margin-left:8px;" src="http://incarnate.blob.core.windows.net/images/lockup_small.png"/><span style="float:right;cursor:pointer; "><img src="http://incarnate.visitmix.com/images/close.png"/></span></div>');
            cancelDiv.click(function() {
            $("#IncarnateResultsContainer").hide();

        });
        $("#IncarnateResultsContainer").append(cancelDiv);

        //use incarnate service
        $(providers).each(function(name, value) {

            $.getJSON(IncarnateServiceURL + value + "/" + searchTerm + "?callback=?",
            function(data) {
                if (data != null) {
                    if (searchTerm == $("#IncarnateUserName").val()) {
                        $("#IncarnateResultsContainer").fadeIn(fadeDuration);
                        $("#IncarnateLoader").hide();

                        var vCardDiv = $('<div class="IncarnateResult" style="margin:5px;"></div>');
                        vCardDiv.append('<img style="margin:3px;" width="48" src="' + data + '" />');
                        vCardDiv.append('<img style="margin:0px 0px 20px 10px;" src="http://incarnate.cloudapp.net/images/16X16/' + value + '.png"/>');
                        vCardDiv.click(function() {
                            //clear all values

                            $("#avatarImgSrc").attr("value", data);
                            $("#IncarnateImg").attr("src", data);


                            $("#IncarnateResultsContainer").fadeOut(fadeDuration);

                        });
                        vCardDiv.hover(function() {
                            vCardDiv.attr("class", "hover");

                        },
                            function() {
                                vCardDiv.attr("class", "offhover");
                            }

                        );


                        $("#IncarnateResultsContainer").append(vCardDiv);



                    }
                }

            });
        });

    }
});