var scCount = 0; // count of elements in the shopping cart
var scPriceInc = 0; //price increment from ajax query
var sc_in_action = false;
var sc_add_action = false;
var sc_handler_url = "../handlers/shopppingCart.aspx";
var sildeId;

function findElementPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return {x: curleft, y: curtop};
}

function initShoppingCart()
{	
	//$("#scRight").hide();
	//$("#scLeft").hide();
	$("#scRight").css({"display" : "block"});
	$("#scLeft").css({"display" : "block"});
	$("#scRight").hide();
	$("#scLeft").hide();
	
    $("#shopping-cart-notify-moveit").click(function(){
        $(".sc-movie").each(function(i){
            if (sildeId == $(this).attr("id").replace("sc-movie-", "")){
                posSilde = i;
            }
        });
        $("#shopping-cart-notify").hide();
        if (scCount > 3)
        {
            if (scCount-posSilde == 2) posSilde -= 1;
            if (scCount-posSilde == 1) posSilde -= 2;
            var shifting = posSilde*110 - Math.abs($(".shopping-cart-containter").position().left);
            $(".shopping-cart-containter").animate( {"left": "-="+shifting+"px"}, "slow", "easeOutBack", function(){
	            if ($(".shopping-cart-containter").position().left < 0)
	                $("#scLeft").show();
	            else
	                $("#scLeft").hide();
	                
	            if (scCount*110 > Math.abs(($(".shopping-cart-containter").position().left))+110*3)
	                $("#scRight").show();
	            else
	                $("#scRight").hide();
            });
        }
        return false;
    });
	
	$(".draggable").draggable({
		helper: "clone",
		zIndex: 15,
		appendTo: "body",
		cursor: "move",
		scroll: true,
		start: function(ev, ui){
		    try
		    {
                $($(ui.helper[0])).attr("href", "javascript:;");
		    }
		    catch(e){}
		    
		    var id = $($(ui.helper[0])).attr("id").replace(/.*dragid-/, "");
		    var alt = "";
		    if ($($(ui.helper[0])).find("img:first").attr("alt") != null)
		        alt = $($(ui.helper[0])).find("img:first").attr("alt");
		    else if ($($(ui.helper[0])).attr("alt") != null)
		        alt = $($(ui.helper[0])).attr("alt");
		        
		    sildeId = id;
		    if ( $(".shopping-cart-containter").find("#sc-movie-"+id).length > 0 )
		    {
		        var posSilde = 0;
		        var rhpsc = new RHPSC();
		        if (!rhpsc.getState())
		        {
		            if (alt != "")
		                $("#shopping-cart-notify-title").text('"'+ alt +'"');
		            else
		                $("#shopping-cart-notify-title").text('');
		            rhpsc.fadeIn();
		        }
		    }
		}	
	});
	
	$(".droppable").droppable({
		accept: ".draggable",
        activeClass: 'shopping-cart-droppable-active',
		hoverClass: 'shopping-cart-droppable-hover',
		drop: function(ev, ui) {
			//$(this).append(ui.draggable.attr("id").replace(/[-_a-zA-Z]*/, "")+"<br>");
            var id = ui.draggable.attr("id").replace(/.*dragid-/, "");
			if ( $(".shopping-cart-containter").find("#sc-movie-"+id).length == 0 )	addToCart(id);
		}
	});
	
	scCount=$(".shopping-cart-items-count").text();

	$(".shopping-cart-containter").css({"width": scCount*110 + "px"});
	
	if (scCount > 0)
	{
		//$(".shopping-cart .movies").css( {"background-image": "none"} );
        $(".shopping-cart-containter").css( {"width": scCount*110+"px"} );
        if (scCount>3)$("#scRight").show();
		//if ($.browser.msie && $.browser.version < 7) $(".shopping-cart .movies").css( {"filter": "none"} );
		$(".leftlink.clearall").show();
		$(".rightlink.cart").show();		
	}
}

function initShoppingCartOnPage()
{	
	if ($.browser.msie && $.browser.version < 7) {
		$("#scTable tr").hover(
			function(){$(this).addClass("hover");},
			function(){$(this).removeClass("hover");}
		);
	}

	$(".draggable").draggable({
		helper: "clone",
		zIndex: 15,
		appendTo: "body",
		start: function(ev, ui){
		    try
		    {
		        $($(ui.helper[0]).find("a:first")[0]).attr("href", "javascript:;");
		    }
		    catch(e){}
		    //$("#scTable").addClass("products_table_active");
		},
		stop: function(ev, ui){
		    //$("#scTable").removeClass("products_table_active")
		},
		cursor: "move",
		scroll: true	
	});
	
	$(".droppable").droppable({
		accept: ".draggable",
		drop: function(ev, ui) {
    	    var movie_id_with_price = ui.draggable.attr("id").replace(/[-_a-zA-Z]*/, "");    	    
		    var movie_id = movie_id_with_price.replace(/;.*$/, "");
			addScRow(movie_id, this, ev, ui);
		}
	});
}

function deleteScRow(element) {
    $("#scp-ajax-loader").show();

    var params = "pid="+element.id+"&mode=remove";
    $.ajax({
       type: "GET",
       url: "../handlers/shoppingCartPage.aspx",
       data: params,
       success: function(resultHTML){
            if (resultHTML!="false")
            {
                element.parentNode.parentNode.parentNode.removeChild(element.parentNode.parentNode);
                rebuildTable();
		        document.getElementById("estTotal").innerHTML = resultHTML;
		        
		        $("#scp-ajax-loader").hide();
		        
		        updateWeAlsoRecommend();
		        if (element.id == BetaLaunchSpecialID)
		            $("#BetaLaunchSpecialModuleBlock").show();
            }
       }
    });
    
    return false;
}

function deleteCartOnPage()
{
	$("#scp-ajax-loader").show();
	
	var params = "mode=removeall";
    $.ajax({
       type: "GET",
       url: sc_handler_url,
       data: params,
       success: function(resultHTML){
            if (resultHTML!="false")
            {
	            $('#scTable tbody tr:not([class])').remove();
	            rebuildTable();
	            $('#estTotal').text('$0.00');
	            
	            $("#scp-ajax-loader").hide();
	            
	            updateWeAlsoRecommend();
	            $("#BetaLaunchSpecialModuleBlock").show();
	        }
       }     
    });
}

function addScRow(id, el, ev, ui) {
    $("#scp-ajax-loader").show();

    var params = "pid="+id+"&mode=add";
    $.ajax({
       type: "GET",
       url: "../handlers/shoppingCartPage.aspx",
       data: params,
       success: function(resultHTML){
                if (resultHTML!="false")
                {
    	        var movie_id_with_price = ui.draggable.attr("id").replace(/[-_a-zA-Z]*/, "");
		        var movie_id = movie_id_with_price.replace(/;.*$/, "");
			    if ( $(el.parentNode.parentNode.parentNode).find("#sc-movie-"+movie_id).length == 0 ) {
				    var movies_count = el.parentNode.parentNode.parentNode.rows.length - 3;
				    var new_row = el.parentNode.parentNode.insertRow(movies_count);
				    var countCell = new_row.insertCell(0);
					    countCell.className = "num";
					    countCell.appendChild(document.createTextNode(movies_count+1+'.'));
				    var titleCell = new_row.insertCell(1);
					    titleCell.className = "title";
					    $(titleCell).append('<div class="image"><a id="sc-movie-'+movie_id+'" title="'+ui.draggable.find("img:first").attr("alt")+'" href="'+ui.draggable.find("a:first").attr("href")+'"><img src="'+ui.draggable.find("img:first").attr("src")+'" /></a></div><a title="'+ui.draggable.find("img:first").attr("alt")+'" href="'+ui.draggable.find("a:first").attr("href")+'">'+ui.draggable.find("img:first").attr("alt")+'</a>')
				    var priceCell = new_row.insertCell(2);
					    priceCell.className = "price";
				    //var itemPrice = movie_id+";20.00";
				    var itemPrice = movie_id_with_price.replace(/^.*;/, "");
				        itemPrice = parseFloat(itemPrice.replace(/[\$]*/, "")).toFixed(2);
					    $(priceCell).append('<span class="priceC">$'+itemPrice+'</span><a href="#" id="'+movie_id+'" class="delete" onclick="return deleteScRow(this);"><span>Delete</span></a>');
    					
				    if ($.browser.msie && $.browser.version < 7) {
					    $(new_row).hover(
						    function(){ $(el).addClass("hover"); $(this).find("a.delete").show(); },
						    function(){ $(el).removeClass("hover"); $(this).find("a.delete").hide(); }
					    );
				    }
				    rebuildTable();
				    document.getElementById("estTotal").innerHTML = resultHTML;
				    
				    $("#scp-ajax-loader").hide();
				    
				    updateWeAlsoRecommend();
		            if (id == BetaLaunchSpecialID)
		                $("#BetaLaunchSpecialModuleBlock").hide();
			    }
		        //return resultHTML;
            }
       }
    });
    
    return false;
}

function rebuildTable() {	
	var num = 1;
	$("#scTable td.price span.priceC").each(function(){ total+=parseFloat(this.firstChild.nodeValue.replace(/^\$/, "")); total = Math.round(total*100)/100; });
	$("#scTable td.num ").each(function(){ this.firstChild.nodeValue = num++ + '.'; });
	//total = total.toFixed(2);
	document.getElementById("estTotal").firstChild.nodeValue = "$" + total;
	
	if ($.browser.msie && $.browser.version < 7) {
		$("#scTable tr").hover(
			function(){$(this).addClass("hover");},
			function(){$(this).removeClass("hover");}
		);
	}
	
    if ((num-1) > 0)
        $(".actions").show();
    else
        $(".actions").hide();
}

function updateWeAlsoRecommend()
{
    var handlerUrl = "../handlers/WeAlsoRecommendsHandler.aspx";
    $.ajax({
       type: "GET",
       url: handlerUrl,
       success: function(resultHTML){
            $("#WeAlsoRecommendsBlock").html(jQuery.trim(resultHTML));
            
	        $(".alsoyml_video .draggable").draggable({
		        helper: "clone",
		        zIndex: 15,
		        appendTo: "body",
		        start: function(ev, ui){
		            try
		            {
		                $($(ui.helper[0]).find("a:first")[0]).attr("href", "javascript:;");
		            }
		            catch(e){}
		            //$("#scTable").addClass("products_table_active");
		        },
		        stop: function(ev, ui){
		            //$("#scTable").removeClass("products_table_active")
		        },
		        cursor: "move",
		        scroll: true	
	        });
	        
       }     
    });
}

function moveLeftShoppingCart()
{
	if (sc_in_action == false)
	{
		sc_in_action = true;
		if (($(".shopping-cart-containter").position().left+110) >= 0) $("#scLeft").hide();
		if ( scCount*110 > Math.abs(($(".shopping-cart-containter").position().left+110))+110*3 ) $("#scRight").show();
		$(".shopping-cart-containter").animate( {"left": "+=110px"}, "slow", "easeOutBack", function(){
			//if ($(".shopping-cart-containter").position().left >= 0) $("#scLeft").hide();
			//if ( scCount*110 > Math.abs($(".shopping-cart-containter").position().left)+110*3 ) $("#scRight").show();
			sc_in_action = false;
		});
	}
}

function moveRightShoppingCart()
{
	if (sc_in_action == false)
	{
		sc_in_action = true;
		if ( ($(".shopping-cart-containter").position().left-110) < 0) $("#scLeft").show();
		if ( ((scCount*110)-(110*3))*(-1) == ($(".shopping-cart-containter").position().left-110)) $("#scRight").hide();
		$(".shopping-cart-containter").animate( {"left": "-=110px"}, "slow", "easeOutBack", function(){
			//if ($(".shopping-cart-containter").position().left < 0) $("#scLeft").show();
			//if ( ((scCount*110)-(110*3))*(-1) == $(".shopping-cart-containter").position().left) $("#scRight").hide();
			sc_in_action = false;
		});
	}
}

function addToCart(id)
{
    if ( $(".shopping-cart-containter").find("#sc-movie-"+id).length == 0 && sc_add_action == false)
	{
	    $('.shopping-cart .loader').show();
		sc_add_action = true;
		
		//$(".shopping-cart .movies").css( {"background-image": "none"} );
		$(".shopping-cart .movies").removeClass("movies-bg");
		//if ($.browser.msie && $.browser.version < 7) $(".shopping-cart .movies").css( {"filter": "none"} );
		
        var cid = $("#categoryID").attr("value");
        var params = "pid="+id+"&cid="+cid+"&mode=add";
        $.ajax({
           type: "GET",
           url: sc_handler_url,
           data: params,
           success: function(resultHTML){
            if (resultHTML!="false") {
		        var content = resultHTML;
		        var width = $(".shopping-cart-containter").css("width");
		        width = width.replace(/px/, "");
		        width = parseInt(width) + 110;
		        $(".shopping-cart-containter").css( {"width": width+"px"} );
		        $(".shopping-cart-containter").append(jQuery.trim(content));
		        ++scCount;
        		
		        if ($.browser.msie && $.browser.version < 7) {
                    $(".shopping-cart-containter"+" "+".sc-movie"+":last .png").parent().pngFix();
                
                    $(".browse-collection-containter" + " a img").each(function(){
                        this.src = this.src;
                    });
                }

        		
		        $(".shopping-cart-items-count").text(scCount);
	            if (scCount == 1)
	                $(".shopping-cart-items-plural").text("item");
	            else
	                $(".shopping-cart-items-plural").text("items");
		        $(".shopping-cart-items-price").text(Math.round((parseFloat($(".shopping-cart-items-price").text()) + scPriceInc)*100)/100);
        		
        		$(".leftlink.clearall").show();
        		$(".rightlink.cart").show();        		
        		
		        if (scCount > 3)
		        {
			        var shifting = ((scCount*110) - (110*3)) - Math.abs($(".shopping-cart-containter").position().left);
			        $(".shopping-cart-containter").animate( {"left": "-="+shifting+"px"}, "slow", "easeOutBack", function(){
				        $("#scRight").css({"display": "none"});
				        if ($(".shopping-cart-containter").position().left < 0) $("#scLeft").show();
				        $('.shopping-cart .loader').hide();
				        sc_add_action = false;
			        });
		        }
		    }  
	        sc_add_action = false;
	        $('.shopping-cart .loader').hide();
		}
        });
	}
	/* Begin: Apply Grag Out Effect */
	$('.sc-movie').draggable({
		helper: "clone",
		zIndex: 15,
		appendTo: "body",
		cursor: "move",
		scroll: true,
		/*
		drag: function(event, ui) {
			var shoppingCartElement = $(".shopping-cart.droppable .movies")[0];
			var shoppingCartElementPos = findElementPos(shoppingCartElement);
			var draggableElementPos = {x: event.pageX, y: event.pageY};
			
			if (!(
				(draggableElementPos.x > shoppingCartElementPos.x && shoppingCartElementPos.x + shoppingCartElement.clientWidth > draggableElementPos.x) &&
				(draggableElementPos.y > shoppingCartElementPos.y && shoppingCartElementPos.y + shoppingCartElement.clientHeight > draggableElementPos.y)
			)) {
				//add hover class
			}
		},
		*/
		stop: function(event, ui) {
			var shoppingCartElement = $(".shopping-cart.droppable .movies")[0];
			var shoppingCartElementPos = findElementPos(shoppingCartElement);
			var draggableElementPos = {x: event.pageX, y: event.pageY};
			
			if (!(
				(draggableElementPos.x > shoppingCartElementPos.x && shoppingCartElementPos.x + shoppingCartElement.clientWidth > draggableElementPos.x) &&
				(draggableElementPos.y > shoppingCartElementPos.y && shoppingCartElementPos.y + shoppingCartElement.clientHeight > draggableElementPos.y)
			)) {
				doDelete(this.id);
			}
		}
	});
	/* End: Apply Grag Out Effect */
}

function showDelete(id)
{
	$("#"+id + " > .delete").show();
}

function hideDelete(id)
{
	$("#"+id + " > .delete").hide();
}

function doDelete(full_id)
{
	$('.shopping-cart .loader').show();
    
    var id = full_id.replace(/[-_a-zA-Z]*/, "");
	
    var cid = $("#categoryID").attr("value");
    var params = "pid="+id+"&cid="+cid+"&mode=remove";
    $.ajax({
       type: "GET",
       url: sc_handler_url,
       data: params,
       success: function(resultHTML){
            if (resultHTML!="false")
            {
                $("#"+full_id).append(resultHTML);
	            //$("#"+full_id + " .cover a").css({"background-image": "none"});
	            $(".shopping-cart .movies").removeClass("movies-bg");
	            //if ($.browser.msie && $.browser.version < 7) $("#"+full_id + " .cover a").css({"filter": "none"});
            	
	            $("#"+full_id).hide("drop", { direction: "down" }, 500, function(){
		            $("#"+full_id).remove();
		            var width = $(".shopping-cart-containter").css("width");
		            width = width.replace(/px/, "");
		            width = parseInt(width) - 110;
		            $(".shopping-cart-containter").css( {"width": width+"px"} );
		            --scCount;
		            $(".shopping-cart-items-count").text(scCount);
		            if (scCount == 1)
		                $(".shopping-cart-items-plural").text("item");
		            else
		                $(".shopping-cart-items-plural").text("items");
		            $(".shopping-cart-items-price").text(Math.round((parseFloat($(".shopping-cart-items-price").text()) - scPriceInc)*100)/100);
            		
		            if ( ((scCount*110)-(110*3))*(-1) == $(".shopping-cart-containter").position().left) $("#scRight").hide();
		            if ( ($(".shopping-cart-containter").position().left < 0) && ((scCount*110)-(110*3))*(-1) > $(".shopping-cart-containter").position().left ) moveLeftShoppingCart()
		            if (scCount == 0)
		            {
			            //$(".shopping-cart .movies").css( {"background-image": ""} );
			            $(".shopping-cart .movies").addClass("movies-bg");
			            //if ($.browser.msie && $.browser.version < 7) $(".shopping-cart .movies").css( {"filter": "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/vod2/App_Themes/vod/images/drag_bg_ie.png', sizingMethod='crop')"} );
			            $(".leftlink.clearall").hide();
			            $(".rightlink.cart").hide();			            
		            }
		            // Deleting from cart
		            //
		            $('.shopping-cart .loader').hide();
	            });
            }
       }
    });
}

function doDeleteAll()
{
	$('.shopping-cart .loader').show();
	
	var params = "mode=removeall";
    $.ajax({
       type: "GET",
       url: sc_handler_url,
       data: params,
       success: function(resultHTML){
            if (resultHTML!="false")
            {
	            //$(".shopping-cart .movies").css( {"background-image": ""} );
	            $(".shopping-cart .movies").addClass("movies-bg");
	            //if ($.browser.msie && $.browser.version < 7) $(".shopping-cart .movies").css( {"filter": "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='App_Themes/vod/images/drag_bg_ie.png', sizingMethod='crop')"} );
            	
	            $(".shopping-cart-containter").css( {"width": "0"} );
	            $(".shopping-cart-containter").css( {"left": "0"} );
	            $(".shopping-cart-containter > *").remove();
	            $(".shopping-cart-items-count").text(0);
		        $(".shopping-cart-items-plural").text("items");
	            $(".shopping-cart-items-price").text(0);
	            $(".leftlink.clearall").hide();
	            $(".rightlink.cart").hide();	            
	            $("#scRight").hide();
	            $("#scLeft").hide();
	            scCount = 0;
            	
	            $('.shopping-cart .loader').hide();            }
       }     
    });
}


/* ************************************************** */
function RHPSC() {
	RHPSC.prototype.DisplayOptionMaxOpacity = 80;
	RHPSC.prototype.DisplayOptionStep = 5;
	RHPSC.prototype.DisplayOptionCurrentOpacity = 0;
	RHPSC.prototype.DisplayOptionShow = 3400;
	RHPSC.prototype.DisplayOptionFadeIn = 300;
	RHPSC.prototype.DisplayOptionFadeOut = 300;
	RHPSC.prototype.isActive = false;
}
RHPSC.prototype.fadeIn = function () {
	RHPSC.prototype.isActive = true;
	if (RHPSC.prototype.DisplayOptionCurrentOpacity < RHPSC.prototype.DisplayOptionMaxOpacity) {
		window.setTimeout(RHPSC.prototype.fadeIn, RHPSC.prototype.DisplayOptionFadeIn/(100/RHPSC.prototype.DisplayOptionStep));
		RHPSC.prototype.DisplayOptionCurrentOpacity += RHPSC.prototype.DisplayOptionStep;
	} else {
		window.setTimeout(RHPSC.prototype.fadeOut, RHPSC.prototype.DisplayOptionShow);
	}
	
	$("#shopping-cart-notify").show();
	$("#shopping-cart-notify").css({
		"filter": "alpha(opacity='" + RHPSC.prototype.DisplayOptionCurrentOpacity + "')",
		"opacity": RHPSC.prototype.DisplayOptionCurrentOpacity/100
	});
}
RHPSC.prototype.fadeOut = function () {
	if (RHPSC.prototype.DisplayOptionCurrentOpacity > 0) {
		RHPSC.prototype.DisplayOptionCurrentOpacity -= RHPSC.prototype.DisplayOptionStep;
		if (RHPSC.prototype.DisplayOptionCurrentOpacity >= 0) {
			$("#shopping-cart-notify").css({
				"filter": "alpha(opacity='" + RHPSC.prototype.DisplayOptionCurrentOpacity + "')",
				"opacity": RHPSC.prototype.DisplayOptionCurrentOpacity/100
			});
		}
		window.setTimeout(RHPSC.prototype.fadeOut, RHPSC.prototype.DisplayOptionFadeOut/(100/RHPSC.prototype.DisplayOptionStep));
	} else {
		RHPSC.prototype.isActive = false;
		$("#shopping-cart-notify").hide();
	}
}
RHPSC.prototype.getState = function () {
	return RHPSC.prototype.isActive;
}