﻿/// <reference path="jquery-1.2.6.js"/>
/// <reference path="json2.js"/>
/// <reference path="Plugins/jquery.facebox.js"/>

jQuery(document).ready(function() {
    jQuery().bind('onrecpop onprojectpop', {}, function(e, eventid, eventvalue) {
        if (eventid == 'ignore')
            handleRecIgnore(eventvalue);
        else if (eventid == 'sendto')
            sendRecToUsers(eventvalue);

    });
});

var FORWARD_REC_TYPEID = 1;
var ADD_TO_PROJECT_TYPEID = 2;
var TRANSFER_PROJECT_OWNERSHIP = 3;
var INLINE = 4;

function sendRecToUsers(recid) {
    handleRecSendTo(FORWARD_REC_TYPEID, recid, 0);
}

function addInlineUser() {

    var arrSelectedUsers = new Array();
    var selected = jQuery('#usersSelected');
    selected.find('.untext').each(function() {
        arrSelectedUsers.push(jQuery(this).text());
    });

    handleRecSendTo(INLINE, 0, 0, arrSelectedUsers);
}

function addProjectUser(projid) {

    var arrSelectedUsers = new Array();
    var selected = jQuery('#usersSelected');
    selected.find('.untext').each(function() {
        arrSelectedUsers.push(jQuery(this).text());
    });

    handleRecSendTo(ADD_TO_PROJECT_TYPEID, 0, projid, arrSelectedUsers);
}

function setProjectOwner(projid) {
    var newOwner = jQuery('#newProjectOwner').text();
    
    var arrSelectedUsers = new Array();
    var selected = jQuery('#usersSelected');
    selected.find('.untext').each(function() {
        arrSelectedUsers.push(jQuery(this).text());
    });

    // Create a function similar to handleRecSendTo, except it is just the left-hand side,
    // and selecting one user unselects any others that were selected.
    // The list of users is determined by what's currently selected.
    // If nobody is currently selected, put up a message and exit this function.
    handleRecSendTo(TRANSFER_PROJECT_OWNERSHIP, 0, projid, arrSelectedUsers, newOwner);
}

function handleRecSendTo(typeid, recid, projid, arrSelectedUsers, singleSelectedUser) {

    if (typeof (arrSelectedUsers) == 'undefined')
        arrSelectedUsers = new Array();

    jQuery('#userselectbox').hide();

    jQuery.ajaxDotNet(window.ShoprService + "GetSendToControl",
    {
        data: { pType: typeid, pRecID: recid, pProjID: projid, pMembers: arrSelectedUsers, pSelectedUserName: singleSelectedUser || "[none]" },
        success: function(o) {
            if (o != null) {

                if (typeid == INLINE) {
                    jQuery('#userselectbox').html(o.d);
                    jQuery('#userselectbox').html(o.d).slideDown(100);
                }
                else {
                    jQuery.facebox.settings.width = 700;
                    jQuery.facebox(o.d);
                }

                jQuery('.sf_boxmini').bind('click', {}, function(e) {
                    var username = jQuery(this).find('.username').html();
                    var userimage = jQuery(this).find('#userimage').attr('src');

                    if (jQuery(this).hasClass('sfbox_selected')) {
                        jQuery(this).removeClass('sfbox_selected');

                        jQuery('#usersel_' + username).remove();

                        //jQuery('#forwardsel').append(jQuery(strFriends));
                    }
                    else {
                        if (typeid == TRANSFER_PROJECT_OWNERSHIP) {
                            // deselect whoever's currently selected.
                            jQuery('.sfbox_selected').removeClass('sfbox_selected');
                            jQuery('#forwardsel').children().remove();
                        }

                        //if (jQuery('#forwardsel').find('.frienditem').size() < 4) {
                        jQuery(this).addClass('sfbox_selected');

                        //add to selected region
                        var strFriends = "<div id='usersel_" + username + "' class='frienditem' onclick=\"onRemoveSelected('" + username + "');\"><div class='friendimage'><img src='" + userimage + "'></div>";
                        strFriends += "<div class='emailname'>" + username + "</div></div>";
                        jQuery('#forwardsel').append(jQuery(strFriends));

                        //}
                    }
                });

                //catch if closed by clicking "ok" delete button
                jQuery().unbind('closeWithData.facebox');
                jQuery().bind('closeWithData.facebox', {}, function(e, data) {
                    var arr = new Array();
                    var comment = jQuery('.recSendCommentText').val();
                    var selected = jQuery('.sfbox_selected');
                    var makeprivate = jQuery('#chkMakePrivate').attr('checked');

                    if (typeid != TRANSFER_PROJECT_OWNERSHIP && jQuery('#forwardsel').children().size() < 1) {
                        alert("You must select at least one user.");
                        return;
                    }
                    jQuery('#forwardsel').find('.emailname').each(function() {
                        arr.push(jQuery(this).html());
                    });

                    if (typeid == FORWARD_REC_TYPEID)
                        forwardRec(recid, arr, comment, makeprivate);
                    else if (typeid == ADD_TO_PROJECT_TYPEID)
                        addtoProject(projid, arr, makeprivate);
                    else if (typeid == TRANSFER_PROJECT_OWNERSHIP)
                        transferProjectOwnership(projid, arr);

                });

                //select already selected
                if (typeid == ADD_TO_PROJECT_TYPEID) {
                    var userlist = jQuery('#SelectUserList');
                    var selUser = null;
                    for (var i = 0; i < arrSelectedUsers.length; i++) {
                        selUser = userlist.find("#boxmini__" + arrSelectedUsers[i]);
                        var un = arrSelectedUsers[i];
                        //add to right selected
                        if (un.indexOf('@') > -1) {
                            var strFriends = "<div class='frienditem' onclick='onRemoveSelectedEmail(this);'><div class='friendimage'><img src='/MemberImages/email25.gif'></div>";
                            strFriends += "<div class='emailname'>" + un + "</div></div>";
                            jQuery('#forwardsel').append(jQuery(strFriends.replace(/@/, "@ ")));
                        }

                        if (selUser != null)
                            jQuery('#boxmini_' + arrSelectedUsers[i]).click();
                    }

                }
                else if (typeid == TRANSFER_PROJECT_OWNERSHIP) {
                    var userlist = jQuery('#SelectUserList');
                    var selUser = userlist.find("#boxmini_" + singleSelectedUser);
                    //add to right selected
                    if (singleSelectedUser.indexOf('@') > -1) {
                        var strFriends = "<div class='frienditem' onclick='onRemoveSelectedEmail(this);'><div class='friendimage'><img src='/MemberImages/email25.gif'></div>";
                        strFriends += "<div class='emailname'>" + singleSelectedUser + "</div></div>";
                        jQuery('#forwardsel').append(jQuery(strFriends.replace(/@/, "@ ")));
                    }

                    if (selUser != null)
                        jQuery('#boxmini_' + singleSelectedUser).click();
                }

            }
        },
        error: onCommonError
    });
}

function onRemoveSelectedEmail(el) {
    jQuery(el).remove();
}

function onRemoveSelected(username) {
    jQuery('#boxmini_' + username).removeClass('sfbox_selected');
    jQuery('#usersel_' + username).remove();
}

function addtoProject(projid, arr, makeprivate) {
    jQuery.facebox.close();
    addMembersToArea(arr);
}

function transferProjectOwnership(projid, arr) {
    jQuery.facebox.close();
    addNewOwnerToArea(arr);
}

function addtoProjectFromJSON(jsonMembers) {
    addMembersToArea(jsonMembers);
}

function addMembersToArea(arr) {
    var selected = jQuery('#usersSelected');
    selected.children().remove();
    for (var i = 0; i < arr.length; i++) {
        var username = arr[i].replace(/ /, "");
        if (selected.find("#id_" + username).size() < 1) {
            
            selected.append("<div id='id_" + username + "' class='projusersel'><a href='#' onclick='removeMemberFromArea(this);'><div style='float:left;padding-top:2px;cursor:pointer;'><img src='/images/closesmallbox.gif' /></div></a>&nbsp;<span class='untext'>" + username + "</span></div");
        }
    }
}

function removeMemberFromArea(obj) {
    var el = jQuery(obj).parent();
    var username = el[0].id.substring(3);
    el.remove();
    jQuery("#owner_" + username).remove();
//    //jQuery(obj).parent().remove();
}

function addNewOwnerToArea(arr) {
    var selected = jQuery('#newProjectOwner');
    selected.children().remove();
    for (var i = 0; i < arr.length; i++) {
        var username = arr[i].replace(/ /, "");
        if (selected.find("#id_" + username).size() < 1) {
            selected.append("<div id='owner_" + username + "' class='projusersel'><span class='untext'>" + username + "</span></div");
        }
    }
}

function getInlineMembers(memberElementClientID) {

    var arr = new Array();

    if (jQuery('#getusers').css("display") != "none") {
        if (jQuery('#userselectbox').find('#forwardsel').find('.emailname').length < 1) {
            alert('If you mark a question as private, you must select followers to share it with.');
            return false;
        }
    }

    //had to remove this.. Fucks up viewstate. Spend many hours on this!!
    jQuery('#divSimilar').remove();
    var userbox = jQuery("#userselectbox").remove();

    userbox.find('#forwardsel').find('.emailname').each(function() {
        arr.push(jQuery(this).html());
    });

    document.getElementById(memberElementClientID).value = JSON.stringify({ members: arr, owner: "" });

}

function getMemberValues(memberElementClientID) {
    var usernameconcat = "";
    var selected = jQuery('#usersSelected');
    var count = selected.find('.untext').size();
    var aMembers = new Array();
    selected.find('.untext').each(function(i) {
        aMembers.push(jQuery(this).text());
    });
    // alert(count);
//    selected.find('.untext').each(function(i) {
//        if (i < (count - 1))
//            usernameconcat += jQuery(this).text() + "|";
//        else
//            usernameconcat += jQuery(this).text();
//    });

    ownerText = jQuery('#newProjectOwner').find('.untext').text();

    document.getElementById(memberElementClientID).value = JSON.stringify({ members: aMembers, owner: ownerText });
      // usernameconcat; //'ctl00_ContentPlaceHolderMain_projMgt_hdnMembers'
    
    return true;
 }

 function forwardRec(recid, arrUsers, comment, makeprivate) {
    jQuery.ajaxDotNet(window.ShoprService + "FowardRecommendations",
    {
        data: { RecID: recid, Users: arrUsers, Comment: comment, makePrivate: makeprivate },
        success: function(o) {
            if (o != null) {
                jQuery.facebox.close();
            }
            else {
            }
        },
        error: onCommonError
    });
}

function deleteRecommendation(recid) {

    var str = "<div style='font-size:20px;padding:10px;'>Do you really want to delete this recommendation?</div>";
    str += "<div style='width: 350px; text-align: center;'><a href='javascript:void(0);' onclick='jQuery.facebox.closeWithData();' ><img src='/images/yes45.gif' /></a>&nbsp;&nbsp;<a href='javascript:void(0);' onclick='jQuery.facebox.close();'><img src='/images/no45.gif' /></a></div>";
    jQuery.facebox(str);
    jQuery().unbind('closeWithData.facebox');
    jQuery().bind('closeWithData.facebox', {}, function(e, data) {
        jQuery.facebox.closeNoEvent();
        jQuery.ajaxDotNet(window.ShoprService + "DeleteRecommendation", {
            data: { recid: recid },
            success: function(o) {
                if (o != null) {
                    window.location.href = "http://www.shopr.com/recommendations/";

                }
            },
            error: onCommonError
        });
    });
}

function handleRecIgnore(recid) {

        jQuery.ajaxDotNet(window.ShoprService + "IgnoreRecommendation",
            {
                data: { recid: recid },
                success: function(o) {
                    if (o != null) {
                        jQuery('#rec' + recid).hide(700, function() {

                            jQuery('#rec' + recid).remove();
                            var obj = jQuery('.product:hidden:first')
                            if (obj.size() > 0) {
                                obj.css('backgroundColor', '#FAFAD2');
                                obj.fadeIn(2000, function() {
                                    setTimeout(obj.animate({ backgroundColor: "#FFFFFF" }), 5000);
                                });

                                //try to get some more!!
                                //this number should be one more than what is displayed on the page
                                if (jQuery('.product').size() == 7) {

                                    jQuery.ajaxDotNet(window.ShoprService + "GetMoreRecommendations",
                                    {
                                        data: { lastRecID: recid },
                                        success: function(o) {
                                            if (o != null) {
                                                var products = jQuery(o.d).find('.product');
                                                products.hide();
                                                jQuery('#RecommendationList').append(products);
                                            }
                                            else {
                                            }
                                        },
                                        error: function(o) {
                                            var str;
                                            if (o.responseText !== undefined) {
                                                str = "<li>Transaction id: " + o.tId + "</li>";
                                                str += "<li>HTTP status: " + o.status + "</li>";
                                                str += "<li>Status code message: " + o.statusText + "</li>";
                                                alert(str);
                                            }
                                        }
                                    });

                                }

                            }
                        });

                    }
                    else {
                    }
                },
                error: onCommonError
            });

    //});
}