$(document).ready(function(){

    if (!Array.prototype.indexOf)
    {
      Array.prototype.indexOf = function(elt /*, from*/)
      {
        var len = this.length >>> 0;
    
        var from = Number(arguments[1]) || 0;
        from = (from < 0)
             ? Math.ceil(from)
             : Math.floor(from);
        if (from < 0)
          from += len;
    
        for (; from < len; from++)
        {
          if (from in this &&
              this[from] === elt)
            return from;
        }
        return -1;
      };
    }
    
    function strstr (haystack, needle, bool) {
    
        var pos = 0;
        
        haystack += '';
        pos = haystack.indexOf( needle );
        if (pos == -1) {
            return false;
        } else{
            if (bool){
                return haystack.substr( 0, pos );
            } else{
                return haystack.slice( pos );
            }
        }
    }
	
	var favgames_quicklink_title = "QuickLink";
	var favgames_list_empty_message= "Your Favourite game list is empty, please add your favourite games from home page or all game page.";
	
	var url_arr = document.location.href.split('/');
	
	if (url_arr[4]='games' && url_arr[5]=='favouritegames'){
		var on_favgames_page = true;
	} else {
		var on_favgames_page = false;
	}

    var quick_link_block = '<div id="quicklink_widget" class="portlet"><div><h3 class="portlet_topper">'+favgames_quicklink_title+'</h3></div><div class="promo-games resize"><div id="quicklinks-box"><div id="sortable_cover" style="display: none;"/><div id="sortable_right"><ul id="sortable" class="ui-sortable"></ul></div></div>';   
  
    var right_hand_game_remover = function(){

            var game_id_url   = $(this).attr('id');
            var game_id_array = game_id_url.split( '-' );
            var game_id       = game_id_array[2];

            //remove the game from the main list
            $('#favgames-main-'+game_id).removeClass('game-delete');
            $('#favgames-main-'+game_id).addClass('game-add');
       
            // remove the game from right hand fav game list
            // if the li item is the last one, then remove the quick link box 
//            if((theDeleteResponse.length == 1) && (strstr(theDeleteResponse,'0')!=false)){//if ($("#sortable").children().size() == 1){
//                $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
//                $("#quicklink_widget").fadeOut(800,function(){$(this).remove()});
//            } else {
//                $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
//            }
          if ($("#sortable").children().size() == 1){
	          $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
	          $("#quicklink_widget").fadeOut(800,function(){$(this).remove()});
          } else {
        	  $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
          }
            
            // if page is favourite game page, then remove it from main page
            if (true == on_favgames_page){
            	if($("div.games-list").children().length  == 2){
                    $('div.games-list').fadeOut(800,function(){
                        $('#games-list-'+game_id).remove();
                        $('div.top').after('<div class="favgames-list-error-tip">'+favgames_list_empty_message+'</div>');
                    });
            	} else {
            		$("#games-list-"+game_id).fadeOut(800,function(){$(this).remove();});
            	}
            }

            
            // ajax delete the game 
            $.post("/favouritegames/delete/" + game_id);

            return false;
     };
    
     
      $(function() {
          $("#quicklinks-box ul").sortable({ 
                  opacity: 0.6, 
                  cursor: 'move', 
                  update: function(event,ui){
                      var moved_to_id   = 0;
                      var moved_item = '';
                      var moved_id_str;
                      var moved_item_str;
                      var moved_item_arr;
                      var result = $("#sortable").sortable('toArray');
                      moved_item_str   = $(ui.item).attr('id');
                      moved_item_arr = moved_item_str.split('_');
                      moved_item = moved_item_arr[1];
                      moved_id_str   = result.indexOf(moved_item);
                      moved_to_id = result.indexOf(moved_item_str) + 1;
                      $.post("/favouritegames/reorder/"+moved_item+"/"+moved_to_id);
                  }
          });
      });
      
      
     $("#sortable_cover").click(function(){
        $("#sortable_cover").hide();
     }
     );
     
//     $('#sortable_error_contine_btn').click(function(){
//    	$('sortable_cover').hide(); 
//     }
//     );
      
        $('#favgame-delete-all').click(function(){
            $.post('/favouritegames/delete-all',function(){
                $('#quicklink_widget').remove();
            });
            if (true == on_favgames_page){
                $('div.games-list').fadeOut(800,function(){
                    $(this).remove();
                    $('div.top').after('<div class="favgames-list-error-tip">'+favgames_list_empty_message+'</div>');
                });
            } else {
                
            }
        });
        
        
         $('div.gameFavourite a.game-add').click(function(){
         
                var game_id_url   = $(this).attr('id');
                var game_id_array = game_id_url.split( '-' );
                var game_id       = game_id_array[2];
                
                if($(this).hasClass("game-add")){
                    $(this).removeClass('game-add');
                    $(this).addClass('game-wait');
                    $(this).attr("disabled", true); 
                    $.post("/favouritegames/add/" + game_id, game_id, 
                                function(theAddResponse){
                                        //if theAddResponse equal false, then means user probably adding more than
                                        // 10 games or sth else wrong when adding a new game.
                                        if (strstr(theAddResponse,'sortable_error') != false){
                                            $("#favgames-main-"+game_id).removeClass('game-wait');
                                            $("#favgames-main-"+game_id).addClass('game-add');
                                            $("#sortable_cover").html(theAddResponse);
                                            $("#sortable_cover").css('display','block');
                                          //$("#sortable_cover").css('height','293px');
                                            $("#sortable_cover").height($("#sortable").height());
                                            //$("#sortable_cover").css('width','236px');
                                            $("#sortable_cover").css('width',($("#sortable").css('width')));
                                            $("#sortable_cover").css('position','absolute');
                                            $("#sortable_cover").css('top',$("#sortable").css('top'));
                                            $("#sortable_cover").css('left',$("#sortable").css('left'));

                                            $("#sortable_cover").click(function(){
                                                $("#sortable_cover").hide();
                                            }
                                            );
                                            
//                                            $('#sortable_error_contine_btn').click(function(){
//                                            	$('sortable_cover').hide(); 
//                                             }
//                                             );
                                            
                                        } else if($("#sortable").children().size() == 0){
                                       // if right hand side quick link box non-exist, when user add a new game
                                       // then add the quick link box block
                                            $("#topgames_widget").after(quick_link_block);
                                            $("#sortable").html(theAddResponse);
                                            $('#sortable li a.righthand-game-delete').click(right_hand_game_remover);
                        					$('#favgames-main-'+game_id).removeClass('game-wait');
                        					$('#favgames-main-'+game_id).addClass('game-delete');
                                        } else if(strstr(theAddResponse,'orderArray_') != false) {
                        					$('#favgames-main-'+game_id).removeClass('game-wait');
                        					$('#favgames-main-'+game_id).addClass('game-delete');
                        					$('#favgames-main-'+game_id).removeAttr("disabled");
                                            $("#sortable li:last").after(theAddResponse);
                                            $('#sortable li a.righthand-game-delete').click(right_hand_game_remover);
                                        }
                                        

                                        
                                });
                } else if($(this).hasClass("game-delete")){
                    $(this).removeClass('game-delete');
                    $(this).addClass('game-wait');
                    $(this).attr("disabled", true); 
                    $.post("/favouritegames/delete/" + game_id , game_id, 
        								function(theDeleteResponse){
                    						$('#favgames-main-'+game_id).removeClass('game-wait');
                    						$('#favgames-main-'+game_id).addClass('game-add');
                    						$('#favgames-main-'+game_id).removeAttr("disabled");
                    						
					                        $('#sortable li a.righthand-game-delete').click(right_hand_game_remover);
					                        
					                        // remove right hand side item when user delete the game from main page
					                        // if the item is the last one, then remove the whole quick link box
					                        if ($("#sortable").children().size() == 1){
					                            $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
					                            $("#quicklink_widget").fadeOut(800,function(){$(this).remove()});
					                        } else {
					                            $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
					                        }
					                        
					                        // if the page is favourite page, then remove the game details block
					                        if (true == on_favgames_page){
					                            $("#games-list-"+game_id).fadeOut(800,function(){$(this).remove()});
					                            if($("div.games-list").children().length  == 2){
					                                    $('div.games-list').fadeOut(800,function(){
						                                    $(this).remove();
						                                    $('div.top').after('<div class="favgames-list-error-tip">'+favgames_list_empty_message+'</div>');
					                                });
					                            }
					                        }
                    	});
                }

                return false;
         }
         );


         
          $('div.gameFavourite a.game-delete').click(function(){
                
                var game_id_url   = $(this).attr('id');
                var game_id_array = game_id_url.split( '-' );
                var game_id       = game_id_array[2];

                if($(this).hasClass("game-delete")){
                    $(this).removeClass('game-delete');
                    $(this).addClass('game-wait');
                    $(this).attr("disabled", true); 
                    $.post("/favouritegames/delete/" + game_id , game_id, 
                    		function(theDeleteResponse){
                    			$('#favgames-main-'+game_id).removeClass('game-wait');
                    			$('#favgames-main-'+game_id).addClass('game-add');
                    			$('#favgames-main-'+game_id).removeAttr("disabled");
		                        // remove right hand side item when user delete the game from main page
		                        // if the item is the last one, then remove the whole quick link box
                    			if ($("#sortable").children().size() == 1){
		                            $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
		                            $("#quicklink_widget").fadeOut(800,function(){$(this).remove()});
		                        } else {
		                            $("#orderArray_"+game_id).fadeOut(800,function(){$(this).replaceWith('');});
		                        }
		                        
		                        // if the page is favourite page, then remove the game details block
		                        if (true == on_favgames_page){
		                            $("#games-list-"+game_id).fadeOut(800,function(){$(this).remove()});
		                            if($("div.games-list").children().length  == 2){
		                                    $('div.games-list').fadeOut(800,function(){
			                                    $(this).remove();
			                                    $('div.top').after('<div class="favgames-list-error-tip">'+favgames_list_empty_message+'</div>');
		                                });
		                            }
		                        }	
                    });
                } else if($(this).hasClass("game-add")){
                    $(this).removeClass('game-add');
                    $(this).addClass('game-wait');
                    $(this).attr("disabled", true); 

                    $.post("/favouritegames/add/" + game_id , game_id, 
                                function(theAddResponse){
                    					$('#favgames-main-'+game_id).removeClass('game-wait');
                    					$('#favgames-main-'+game_id).addClass('game-delete');
                    					$('#favgames-main-'+game_id).removeAttr("disabled");
                    					if(strstr(theAddResponse,'sortable_error') != false){
                                            $("#favgames-main-"+game_id).removeClass('game-wait');
                                            $("#favgames-main-"+game_id).addClass('game-add');
                                            $("#sortable_cover").html(theAddResponse);
                                            $("#sortable_cover").css('display','block');
                                            //$("#sortable_cover").css('height','293px');
                                            $("#sortable_cover").height($("#sortable").height());
                                            //$("#sortable_cover").css('width','236px');
                                            $("#sortable_cover").css('width',($("#sortable").css('width')));
                                            $("#sortable_cover").css('position','absolute');
                                            $("#sortable_cover").css('top',$("#sortable").css('top'));
                                            $("#sortable_cover").css('left',$("#sortable").css('left'));

                                            $("#sortable_cover").click(function(){
                                                $("#sortable_cover").hide();
                                            });
                                            
//                                            $('#sortable_error_contine_btn').click(function(){
//                                            	$('sortable_cover').hide(); 
//                                             }
//                                             );
                    					}else if($("#sortable").children().size() == 0){
                                            // if right hand side quick link box non-exist, when user add a new game
                                            // then add the quick link box block
                                            $("#topgames_widget").after(quick_link_block);
                                            $("#sortable").html(theAddResponse);
                                        }else if(strstr(theAddResponse,'orderArray_') != false) {
                                              $("#sortable li:last").after(theAddResponse);
                                        }
                                      
                                });
                }

                return false;
         }
         );
                      
          // if div.contentRight has been added into new games, and they are deleted after new added
         // without refresh page
   
        // right hand quick link operation here
        $('#quicklinks-box a.righthand-game-delete').click(right_hand_game_remover);
        
       
        //main page drag and drop
           if (true == on_favgames_page){
            $(function() {
                var result_before;
        		$(".games-list").sortable({
        		    opacity: 0.6,
        		    accept: 'games-list',
        		    handle: 'h3',
        		    cursor: 'move',
        			connectWith: '.games-list',
        			//placeholder: 'games-list-item ui-sortable-helper',
        			//forcePlaceholderSize: 'true', 
                    update:function(event,ui){
                        var moved_to_id = 0;
                        var moved_item = '';
                        var moved_id_str ='';
                        var moved_item_str ='';
                        var moved_item_arr;
                        var result = $(".games-list").sortable('toArray');
                        moved_item_str   = $(ui.item).attr('id');
                        moved_item_arr = moved_item_str.split('-');
                        moved_item = moved_item_arr[2];
                        moved_id_str   = result.indexOf(moved_item);
                        moved_to_id = result.indexOf(moved_item_str) + 1;
                        $.post("/favouritegames/reorder/"+moved_item+"/"+moved_to_id);
                    }

        		});

        		$(".games-list").disableSelection();

    	   });

        };
        
         
    }
); 