// namespace global variables
GOALLPOWER = {
	video_timer : function(video_id) {
	  setTimeout ( "GOALLPOWER.unlocked("+ video_id +")",  200000 ); // 300000 = 3 minutes
	},
	unlocked : function(video_id) {
	$("#alert_1").fadeIn("slow").removeClass('hide');
		$('#' + video_id).parent().removeClass('disabled');
	  setTimeout ( "GOALLPOWER.hidelock()",  5000 );
	},
 	hidelock : 	function() {
		$("#alert_1").fadeOut("slow").addClass('hide');
	},
	user_login_url : "http://www.goallpower.com/wp-content/themes/n/login.post.php",
	user_videos_url : "http://www.goallpower.com/wp-content/themes/n/videos.php",
	video_control : function(){
	  // Vimeo album ids seperated by level
  	var vimeo_album_ids = {
  	  levels : {
  	    '1' : [ '121965', '127233', '127283' ],
  	    '2' : [ '125574', '134670' ]
  	  },
  	  last_album : '134670'
  	};

  	var Video = function() {
  	  this.all = function() {
  	    return video_storage;
  	  };
  	  this.first = function() {
  	    return video_storage[0];
  	  };
  	  this.last = function() {
  	    return video_storage[(video_storage.length -1)];
  	  };
  	  this.find_by_level = function(level) {
  	    return $.grep(video_storage, function(element, index){
  	      return element.level == level;
  	    });
  	  };
  		this.find = function(options) {
  			var settings = jQuery.extend({
  				page : false,
  				per_page : false,
  				level : false
  			}, options);
  			if (settings.level) {
  				var results = this.find_by_level(settings.level);
  			}
  			else {
  				var results = video_storage;
  			}	
  			if (settings.per_page && settings.page) {
  				var start = ((settings.per_page * (settings.page -1)));
  				var end = ((settings.per_page * settings.page));
  				results = results.slice(start, end);
  			}				
  			return results;
  		};
  		if (this == window) return new Video();
  		return this;
  	};

    // storage area for video feeds
  	var video_storage = [];

  	var User = function() {
  		var played_video_storage = [];
  		this.played_videos = function () {
  			return played_video_storage;
  		};
  		this.unplayed_videos = function() {
  			var played_videos = this.played_videos();
  			var video_ids = $.map(Video().all(), function(element, index) {
  				return element.id;
  			});
  			var unplayed_videos = $.grep(video_ids, function(element, index) {
  				return $.inArray(element, played_videos) == -1;
  			});
  			return unplayed_videos;			
  		};
  		this.unlocked_videos = function() {
  			var played_videos = new  Array();
  			$.each(this.played_videos(), function(index, element) {
  				played_videos.push(element);
  			});
  			played_videos.push(this.unplayed_videos()[0]);
  			return played_videos;
  		};
  		this.next_unlocked_video = function() {
  			return this.unplayed_videos()[0];
  		};
  		this.is_playing_video = function(video, callback) {
  			this.add_played_videos(video);
  	    $.post(GOALLPOWER.user_videos_url, {vId: video}, callback);
  			return this.played_videos;
  		};
  		this.add_played_videos = function(videos) {
  			played_video_storage.push(videos);
  			return this.played_videos;
  		};
  	};

  	var user = new User;	

    function load_levels(levels, current_level) {
      if (!current_level) var current_level = 0;

      if (current_level > (levels.length - 1) || levels[current_level] == undefined) {
        return;
      }
      else {
        var albums = vimeo_album_ids.levels[ current_level + 1 ];  
        load_vimeo_album(albums, levels, 0, current_level);
      }
    }

    var levels = new Array;
    $.each(vimeo_album_ids.levels, function(index, element) {
      levels.push(index);
    });

    load_levels(levels);

    function load_vimeo_album(albums, levels, current_album, current_level) {
      if (!current_album) var current_album = 0;
      if (!current_level) var current_level = 0;
      var album_id = albums[current_album];
      var level = levels[current_level];

      $.getJSON('http://vimeo.com/api/v2/album/' + album_id + '/videos.json?callback=?', function(data) {
        $.each(data, function(index, element) {
          element['level'] = level;
          video_storage.push(element);    
        });

        // check for the last album
        if (album_id == vimeo_album_ids.last_album) {
          videos_loaded();
        }
        // check for last album on this level
        else if (current_album == albums.length -1) {
          load_levels(levels, current_level + 1);
        }
        // load the next album on the current level
        else {
          load_vimeo_album(albums, levels, current_album + 1, current_level);
        }
      });      
    }

  	var Playlist = function(thumbnail_container, video_panel_container, video_player_id) {
      // Playlist object
      // arguments:
      //  * thumbnail_container - jQuery selector for where the video thumbnails should go - ex. #thumbs
      //  * video_panel_container - JQuery selector for where the video panel is - ex. #video-panel
      //  * video_player_id - id of continer for the video player

  		var videos = [];
  		this.thumbnail = thumbnail_container;
  		this.video_panel = video_panel_container;
  		this.video_player = video_player_id;
  	};

  	function render_playlist(playlist, videos) {
  		if (! (/Loading videos.../.test($(playlist.thumbnail).text()))) return false;
  	  var template = "<li class='smimg'> \
  	    <a href=\"#\" class=\"video-link\"><img id={id} src='{thumbnail_medium}' title='{title}' alt='{title}'></a> \
  	  </li>";
  	  var thumbnail_container = $(playlist.thumbnail);

      var thumbs_content = '';
      $.each(videos, function(index, video){
        thumbs_content += $.nano(template, video); 
      });

      thumbnail_container.html("<ul>" + thumbs_content + "</ul>");

      $.each(videos, function(index, video){
        if(video.id != Video().first().id && ($.inArray(video.id, user.unlocked_videos()) == -1)){
          $('#' + video.id).parent('a').addClass('disabled');
        }
      });
  	}

    $('a.video-link').live('click', function(event){
      event.preventDefault();
  		var $video = $(event.target);
      var video_id = $video.attr('id');
  		var $video_panel = $video.parents('.thumbs').siblings('.video-panel');;
  		var video_player_id = $('.video-player, object', $video_panel).attr('id');

      if (video_id == user.next_unlocked_video() || $.inArray(video_id, user.unlocked_videos()) != -1 ){
  			user.is_playing_video(video_id, function() {
  				$video_panel.fadeIn(2000);
  			});

  			GOALLPOWER.video_timer(user.next_unlocked_video());

  			$video_panel.show();
        var flashvars = {
          clip_id: video_id,
          show_title: 1,
          show_byline: 1,
          show_portrait: 1,
          fullscreen: 1,
          js_api: 1
        };
        var attributes = {
  				id : video_player_id,
  				name : video_player_id
  			};
        var params = {
          quality: 'high',
          allowScriptAccess:'always',
          swLiveconnect:'true'
        };
        $('div#grab_area').hide();
        $('div#video_player').show("slide", { direction: "left" }, 1800);
        swfobject.switchOffAutoHideShow();
        swfobject.embedSWF( 
          "http://www.vimeo.com/moogaloop.swf?"+$.param(flashvars),
          video_player_id, "585", "301", "10.0",
          "js/expressInstall.swf",
          flashvars,
          params,
          attributes
        );
      }
      else {
        alert('You should finish watching the previous video(s)');
      }
      return false;
    });

  	function videos_loaded() {
      // level 1 video containers
  		var level_1_page_1 = new Playlist('#thumbs', '#video-panel', 'video-player');
  		var level_1_page_2 = new Playlist('#thumbs_1_2', '#video-panel_1_2', 'video-player_1_2');
  	  var level_1_page_3 = new Playlist('#thumbs_1_3',  '#video-panel_1_3', 'video-player_1_3');

  	  // level 2 video containers
  	 	var level_2_page_1 = new Playlist('#thumbs-level2', '#video-panel-level2', 'video-player-level2');
  	  var level_2_page_2 = new Playlist('#thumbs-level2_2', '#video-panel-level2_2', 'video-player-level2_2');

      $.getJSON('videos.php', function(data){
        $.each(data.videos, function(i, video){
          user.add_played_videos(video.videoid);
        });      
        render_playlists();
      });

      function render_playlists() {
    		// level 1 videos
    		render_playlist(
    			level_1_page_1,
    			Video().find({ level : '1', page : '1', per_page : '20' })
    		);

    		$(".trigger_image_next20_1").click(function () {
    			render_playlist(
    				level_1_page_2,
    				Video().find({ level : '1', page : '2', per_page : '20' })
    			);
    		});

    		$(".trigger_image_next20_2").click(function () {
    			render_playlist(
    				level_1_page_3,
    				Video().find({ level:'1', page:'3', per_page:'20'	})
    			);
    		});

    		// level 2 videos
    		render_playlist(
    			level_2_page_1,
    			Video().find({ level:'2', page:'1', per_page:'20'	})
    		);

        $(".trigger_image_next20_1_level_2").click(function () {
    			render_playlist(
    				level_2_page_2,
    				Video().find({ level:'2', page:'2', per_page:'20'	})
    			);
    		});        
      }
      
  	}
	}
};

// Function to highlight LEVEL 2 Tab
function highlightL2() {
  if (ted2 == 0) {
    $('#tabs').tabs('select', 1);
  }
  return false;
}

$(document).ready(function(){
  $.getJSON(GOALLPOWER.user_login_url, function(response) {
    if (response.status == true) {
      GOALLPOWER.video_control();
    }
  });
});