/***********************************
* product-toolbar.js
*
* Creates events for the product toolbar
*
* @author eculver
* @version 1.0
* @since 10/24/08
************************************/

// create the events once the page is done loading
// within the profile-tabs element
$(document).ready(function(){
    // product hover event
    $(".product").hover(
        function() {
            $(this).children(".product-toolbar").css("visibility", "visible");
        },
        function() {
            $(this).children(".product-toolbar").css("visibility", "hidden");
        }
    );
    
    // add to coolmine image hover event
    $(".product-toolbar-image").hover(
        function() {
            $(this).addClass("product-toolbar-cm-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "block");
        },
        function() {
            $(this).removeClass("product-toolbar-cm-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "none");
        }
    );
    
    // add to coolmine click event
    $(".product-toolbar-cm-image").click(
        function() {
            // get this product id that is buried within parent
            var productId = $(this).parent(".product-toolbar").attr("id").replace("toolbar-", "");
            
            // make the request
            addToFavorites(productId);
        }
    );
    
    // inactive add to coolmine click event
    $(".product-toolbar-cm-image-inactive").click(
        function() {
            //var afterAlert = 'window.location = "' + WEBROOT + '/login";';
            //showAlert('Please login before proceeding', afterAlert);
            //window.location = WEBROOT + '/login';
            showLoginAlert();
        }
    );
    
    // cool image hover event
    $(".product-toolbar-cool-image").hover(
        function() {
            $(this).addClass(".product-toolbar-cool-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "block");
        },
        function() {
            $(this).removeClass(".product-toolbar-cool-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "none");
        }
    );
    
    // ---------------- //
    // voting additions //
    // ---------------- //
    
    // vote image hover event
    $(".product-toolbar-vote-image").hover(
        function() {
            $(this).addClass("product-toolbar-vote-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "block");
        },
        function() {
            $(this).addClass("product-toolbar-vote-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "none");
        }
    );
        
    // vote on image hover event (shows remove controls)
    $(".product-toolbar-vote-image-on").hover(
        function() {
            $(this).addClass("product-toolbar-vote-remove-hover");
            $(this).siblings(".product-toolbar-text").css("display", "block");
        },
        function() {
            $(this).removeClass("product-toolbar-vote-remove-hover");
            $(this).siblings(".product-toolbar-text").css("display", "none");
        }
    );
    
    // toolbar on hover event (swaps images)
    $(".product-toolbar-on").parent(".product").hover(
        function () {
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").removeClass("product-toolbar-vote-image");
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").addClass("product-toolbar-vote-remove-image");
        },
        function () {
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").removeClass("product-toolbar-vote-remove-image");
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").addClass("product-toolbar-vote-image");
        }
    );
    
    // vote image click event (performs vote)
    $(".product-toolbar-vote-image").click(
        function() {            
            // get this product id that is buried within parent
            var productId = $(this).parent(".product-toolbar").attr("id").replace("toolbar-", "");
            var categoryId = $(this).parent(".product-toolbar").attr("category-id");
            
            // add product id to pendingVotes array 
            //pendingVotes.push(productId);
            
            // make the request
            submitProductVote(productId, categoryId, 1);
        }
    );
    
    // vote image click event (removes vote)
    $(".product-toolbar-vote-image-on").click(
        function() {            
            // get this product id that is buried within parent
            var productId = $(this).parent(".product-toolbar-on").attr("id").replace("toolbar-", "");
            var categoryId = $(this).parent(".product-toolbar-on").attr("category-id");
            
            // make the request
            deleteProductVote(productId, categoryId);
        }
    );
    
});

/***********************************
* updateAddToCoolmineButton
*
* updates the add to coolmine button 
* after a user has added a product 
* to their coolmine using the product
* toolbar
************************************/
function updateAddToFavoritesButton(product_id) {
    $("#toolbar-"+product_id).children(".product-toolbar-image").removeClass("product-toolbar-cm-image");
    $("#toolbar-"+product_id).children(".product-toolbar-image").removeClass("product-toolbar-cm-image-hover");
    $("#toolbar-"+product_id).children(".product-toolbar-image").addClass("product-toolbar-cool-image");
    
    // make this toolbar stay visible
    $("#toolbar-"+product_id).css("visibility", "visible");
    
    // unbind all hover and click events from this toolbar's children
    $("#toolbar-"+product_id).children(".product-toolbar-image").unbind();
    $("#product-"+product_id).unbind();

    // add new click events to toolbar
    $("#toolbar-"+product_id).children(".product-toolbar-cool-image").click(
        function() {
            window.location = WEBROOT + "/profile";
        }
    );
    
    // set its class to be inactive
    $("#toolbar-"+product_id).removeClass("product-toolbar");
    $("#toolbar-"+product_id).addClass("product-toolbar-inactive");
    
    // set the product toolbar text
    $("#toolbar-"+product_id).children(".product-toolbar-cm-text").html("<div>Go to Favorites</div>");
    
    // set class on product toolbar text
    $("#toolbar-"+product_id).children(".product-toolbar-text").removeClass("product-toolbar-cm-text");
    $("#toolbar-"+product_id).children(".product-toolbar-text").addClass("product-toolbar-cool-text");    
    
    // add hover event to new toolbar image
    $("#toolbar-"+product_id).children(".product-toolbar-image").hover(
        function() {
            $(this).addClass("product-toolbar-cool-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "block");
        },
        function() {
            $(this).removeClass("product-toolbar-cool-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "none");
        }
    );
}

/***********************************
* updateVoteButton
*
* updates the vote button after a 
* user has voted on a product via 
* the product vote toolbar.
************************************/
function updateVoteButton(product_id, variable_id) {
    // update the vote button image
    $("#toolbar-"+product_id).children(".product-toolbar-image").removeClass("product-toolbar-vote-remove-image");
    $("#toolbar-"+product_id).children(".product-toolbar-image").addClass("product-toolbar-vote-image");
    
    // make this toolbar stay visible
    $("#toolbar-"+product_id).css("visibility", "visible");
    
    // unbind all hover and click events from this toolbar's children
    $("#toolbar-"+product_id).children(".product-toolbar-image").unbind();
    $("#product-"+product_id).unbind();

    // add new click events to this toolbar
    $("#toolbar-"+product_id).children(".product-toolbar-image").click(
        function() {
            deleteProductVote(product_id, variable_id);
        }
    );
        
    // set class on product toolbar text
    $("#toolbar-"+product_id).children(".product-toolbar-text").removeClass("product-toolbar-vote-text");
    $("#toolbar-"+product_id).children(".product-toolbar-text").addClass("product-toolbar-vote-remove-text");    
    
    // set the product toolbar text
    $("#toolbar-"+product_id).children(".product-toolbar-text").html("<div>Remove my vote</div>");
    
    // add hover event to new toolbar image
    $("#toolbar-"+product_id).children(".product-toolbar-image").hover(
        function() {
            $(this).addClass("product-toolbar-vote-remove-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "block");
        },
        function() {
            $(this).removeClass("product-toolbar-vote-remove-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "none");
        }
    );
}

/***********************************
* resetVoteToolbar
*
* resets a product vote toolbar to
* its default state. Called after a
* vote is removed
************************************/
function resetVoteToolbar(product_id, variable_id) {
    // hide this toolbar
    $("#toolbar-"+product_id).removeClass("product-toolbar-on");
    $("#toolbar-"+product_id).addClass("product-toolbar");
    //$("#toolbar-"+product_id).css("visibility", "hidden");
    
    // unbind all hover and click events from this toolbar's children
    $("#toolbar-"+product_id).children(".product-toolbar-image").unbind();
    $("#product-"+product_id).unbind();
    
    // add product hover event 
    $("#product-"+product_id).hover(
        function() {
            $(this).children(".product-toolbar").css("visibility", "visible");
        },
        function() {
            $(this).children(".product-toolbar").css("visibility", "hidden");
        }
    );
    
    // update the vote button image
    $("#toolbar-"+product_id).children(".product-toolbar-image").removeClass("product-toolbar-vote-remove-image");
    $("#toolbar-"+product_id).children(".product-toolbar-image").removeClass("product-toolbar-vote-remove-image-hover");
    $("#toolbar-"+product_id).children(".product-toolbar-image").addClass("product-toolbar-vote-image");
    
    // set class on product toolbar text
    $("#toolbar-"+product_id).children(".product-toolbar-text").removeClass("product-toolbar-vote-remove-text");
    $("#toolbar-"+product_id).children(".product-toolbar-text").addClass("product-toolbar-vote-text");    
    
    // set the product toolbar text
    $("#toolbar-"+product_id).children(".product-toolbar-text").html("<div>This product is cool</div>");
    
    // add toolbar vote button hover event
    $("#toolbar-"+product_id).children(".product-toolbar-vote-image").hover(
        function() {
            $(this).addClass("product-toolbar-vote-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "block");
        },
        function() {
            $(this).addClass("product-toolbar-vote-image-hover");
            $(this).siblings(".product-toolbar-text").css("display", "none");
        }
    );
    
    // toolbar on hover event (swaps images)
    $("#toolbar-"+product_id).parent(".product").hover(
        function () {
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").removeClass("product-toolbar-vote-image");
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").addClass("product-toolbar-vote-remove-image");
        },
        function () {
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").removeClass("product-toolbar-vote-remove-image");
            $(this).children(".product-toolbar-on").children(".product-toolbar-image").addClass("product-toolbar-vote-image");
        }
    );
    
    // add toolbar vote button click event
    $("#toolbar-"+product_id).children(".product-toolbar-vote-image").click(
        function() {
            // make the request
            submitProductVote(product_id, variable_id, 1);
        }
    );
}

