// main  
var activList;
// main
var container;

alt.scene.swfbridge = {};
alt.scene.swfbridge.initialized = false;

alt.scene.countClick = 0;
alt.scene.currentDisplayMode = 'thumbDisplay';

/** 
 * 
 * @param none
 */
function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
      output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

  
/** 
 * Write SWFObject to DOM and initialize connection with it
 * @param none
 */
alt.scene.initFlash  = function()
{
  if (!alt.scene.swfbridge.initialized) {
      try{
         //alt.scene.swfobj.write("embed");
         alt.scene.swfbridge.initialized = true;
         //alert("flash was init");
      }
      catch(e){
          alert("exception caught : "+e);
          return false;
      }
  }
  
  if (!alt.scene.swfobj || !alt.scene.swfobj.tagName) {
      try{
          var name = "altPlayer";
          var isIE = $.browser.msie;

          //window[name] = document.forms[1].mosaic;

          if(alt.scene.swfobj = (isIE) ? window[name] : document[name]){
              return true;
          } else return false;
      }
      catch(e){
          return false;
      }
  } else return true;
}
  
  
  /** 
 * update scrollbars
 * @param none
 */
  alt.scene.updateScroller = function(myList) {
      var ul = myList ? myList : activList;
    
    $('#scrollArea').show();
      $('#scrollArea', container).slider('destroy');
      $("#listBlock ul").css({top:'0px'});
      $("#scroller").css({top:'0px'});
      
      //alert("container height "+container.outerHeight()+" / ul.innerHeight "+ul.innerHeight());
      var itemsWidth = ul.innerWidth() - container.outerWidth();
      var itemsHeight = ul.innerHeight() - container.outerHeight();
      
      if( activList.hasClass('listDisplay') || activList.parent().parent().hasClass('listDisplay')){
				
				itemsHeight += 64 - (28 * activList.find('.selected, .info').length);
      }else{
        itemsHeight += 10;
      }
          
      if(itemsHeight > 0)
      {   
        ul.css("width", 354);
        // $('#scrollArea').slider();
        
        $('#scrollArea', container).slider({
                  min: 0,
                  max: itemsHeight,
                  handle: '#scroller',
            stop: function (event, ui) {
                // ul.animate({'top' : ui.value * -1}, 500) ;
            },
            animate : true,
            slide: function (event, ui) {
                // ul.css('top', ui.value * -1);
                ul.stop().dequeue().animate({'top' : ui.value * -1}, {duration: 200, easing: "easeOutExpo"});
            }
        });
        
        $('.sbTop').click(function(){ $('#scrollArea', container).slider("moveTo", "-=24"); });
        $('.sbBottom').click(function(){ $('#scrollArea', container).slider("moveTo", "+=24"); });
        
        $('#scroller', container).show();
        // alert("SHOW scrollArea "+$('#scrollArea', container)+" : "+$('#scrollArea', container).css("display"));
      }else{
        $('#scroller', container).hide();
        // alert("HIDE scrollArea "+$('#scrollArea', container)+" : "+$('#scrollArea', container).css("display"));
        ul.css("width", 354);
      }
      
  }
  
  /** 
 * link scrollbar to list to scroll
 * @param none
 */   
  alt.scene.setScrollers = function(){
      $(".listBlock").each(function(){
        container = $(this);
        activList = $("ul", this);
        updateScroller(activList);
      });
  }
  
  /** 
 * load new list / hide previous
 * @param list id
 */   
  alt.scene.swapList = function(myList){
    if(myList.length) {
      container = $('div#listBlock');
      var ul = myList;
      var myListId = myList.attr("id");
      
      $("#menu li").removeClass("selected");
      if(myListId){
        $("a[activate='#"+myListId+"']").parent("li").addClass("selected");
      }
      
      activList = myList;
      
      if( myList.is("#projectList") ) {
         $("#subTitle").css("left", -200);
         $("#orderSelect, #thumbView_btn, #listView_btn").show();
         alt.scene.switchListDisplayTo(myList, alt.scene.currentDisplayMode);
         $("#orderSelect ul li:first").trigger("click");
      }else{
         $("#subTitle").css("left", 12);
         if( $("#subTitle").css("display") == 'none' ){
            $("#orderSelect, #thumbView_btn, #listView_btn").hide();
         }
      }
      
      
      container = activList.parent();
      
      $("#listBlock ul").hide();
      activList.show();
      alt.scene.updateScroller(myList);
      
    } // END if myList.length
  }
  
  /** 
 * 
 * @param none
 */   
  alt.scene.switchListDisplayTo = function(activList, displayClass){
  if(activList.parent().parent().is("#directorList, #genreList"))
  {
      activList.parent().parent().removeClass('listDisplay');  
      activList.parent().parent().removeClass('thumbDisplay');  
      activList.parent().parent().addClass(displayClass);  
  }
  else
  {
    $("ul", activList).removeClass('listDisplay');  
    $("ul", activList).removeClass('thumbDisplay');  
  }
  activList.removeClass('listDisplay');  
  activList.removeClass('thumbDisplay');  
  activList.addClass(displayClass);  
  
  
  if( displayClass == "listDisplay" ) {
      $('#listView_btn').addClass('active');
      $('#thumbView_btn').removeClass('active');
    }
    else if( displayClass == "thumbDisplay" ) {
      $('#listView_btn').removeClass('active');
      $('#thumbView_btn').addClass('active');
    }
  
  alt.scene.updateScroller(activList);    
  }
  
  
  /** 
 * 
 * @param none
 */     
  alt.scene.getFlashMovie = function(movieName)
  {
      return alt.scene.swfobj ? alt.scene.swfobj : false;
  }
  
  /** 
 * 
 * @param none
 */
  alt.scene.playerUpdateEmbedSRC = function(embedUrl)
  {
    try {
      if (typeof(alt.scene.swfobj.updateEmbedSRC) == "undefined") {
        setTimeout("alt.scene.playerUpdateEmbedSRC(embedUrl);", 1000);
      }
      else 
        alt.scene.swfobj.updateEmbedSRC(embedUrl);
    } catch (e) {} 
  }
 
 /** 
 * 
 * @param none
 */         
  minimized = function()
  {
      $("#playerBox").removeClass("bigPlayer");
      $("#playerBox").addClass("smallPlayer");
  }
  
  /** 
 * 
 * @param none
 */     
  maximized = function()
  { 
    var player = alt.scene.getFlashMovie('player');
    $("#playerBox").removeClass("smallPlayer");
    $("#playerBox").addClass("bigPlayer");
  }
  
  /** 
 * 
 * @param none
 */   
  alt.scene.togglePauseVideo = function(){
    try {
      if (typeof(alt.scene.swfobj.togglePause) == "undefined") {
        setTimeout("alt.scene.togglePauseVideo();", 1000);
      }
      else 
        alt.scene.swfobj.togglePause();
      
    } 
    catch (e) {
    }
  }
 /** 
 * 
 * @param none
 */     
  alt.scene.stopVideo = function() {
    
    try{
        if(typeof(alt.scene.swfobj.stopVideo) == "undefined")
      {
        setTimeout("alt.scene.stopVideo();", 1000);
      }
      else alt.scene.swfobj.stopVideo(); 
    } catch (e) {} 
  }
  
 /** 
 * 
 * @param none
 */     
  alt.scene.launchDefaultVideo = function(){
     alt.scene.launchVideo($("#projectList li a.video_btn[videourl!='']:first"));
  }
  
 /** 
 * 
 * @param none
 */     
  alt.scene.currentVideoButton = null;
  
  alt.scene.launchVideo = function(el, loop) {
        
	  alt.scene.closeWebCam();
    
		var videourl = $(el).attr('videourl');
    var weburl = $(el).attr('weburl') ? $(el).attr('weburl') : false;
    
    if (videourl) {
  
    var videoExtension = videourl.substr((parseInt(videourl.length) - 3), (videourl.length))

    if (!$(el).parent('li').hasClass('selected') || alt.scene.isWebCamPlaying || loop == true) {

      $("#listBlock li.selected").removeClass('selected');
      $("#listBlock li a[slug='"+$(el).attr('slug')+"']").parent().addClass('selected');
      // $(el).parent("li").addClass("selected");
      
      if (videoExtension == 'flv' || videoExtension == 'mp4') {
      
        var directLink = $(el).attr('href');
        var basePath = alt.consts.path;
        
        if(weburl)
        {
          type = "&projectType=web&webProjectURL="+weburl; 
          ietype = "&projectType=web&webProjectURL="+URLEncode(weburl); 
        }
        else
        {
          type = "&projectType=video"; 
          ietype = "&projectType=video";
        }
        
        var embedObject = '<div id="altvideoPlayer">';
        embedObject += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="altPlayer" width="500" height="450">';
        if (videoExtension == 'mp4') 
          embedObject += '<param name="movie" value="' + basePath + 'flash/AltVideoPlayer.swf?autoPlay=false&basePath='+basePath+'&showResize=false&embeddedMode=true&allowJavascripts=false&lang=fr&useMp4Extension=true&fileURL=' + URLEncode(videourl) + '&embedSRC=&directLink=' + URLEncode(directLink) + ietype + '"></param>';
        else 
          embedObject += '<param name="movie" value="' + basePath + 'flash/AltVideoPlayer.swf?autoPlay=false&basePath='+basePath+'&showResize=false&embeddedMode=true&allowJavascripts=false&lang=fr&useMp4Extension=false&fileURL=' + URLEncode(videourl) + '&embedSRC=&directLink=' +  URLEncode(directLink) + ietype + '"></param>';
        embedObject += '<param name="quality" value="high"></param>';
        embedObject += '<param name="allowScriptAccess" value="always"></param>';
        
        if (videoExtension == 'mp4') 
          embedObject += '<embed width="500" height="450" flashvars="basePath='+basePath+'&autoPlay=false&showResize=false&embeddedMode=true&allowJavascripts=false&lang=fr&useMp4Extension=true&fileURL=' + videourl + '&embedSRC=&directLink=' + directLink + type +'" allowscriptaccess="always" wmode="opaque" name="altPlayer" quality="high" bgcolor="#1E1808" id="altPlayer" src="' + basePath + 'flash/AltVideoPlayer.swf?useMp4Extension=true&basePath='+basePath+'&autoPlay=false&lang=fr&fileURL=' + URLEncode(videourl) + '&directLink=' + URLEncode(directLink) + ietype + '" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>';
        else 
          embedObject += '<embed width="500" height="450" flashvars="basePath='+basePath+'&autoPlay=false&showResize=false&embeddedMode=true&allowJavascripts=false&lang=fr&useMp4Extension=false&fileURL=' + videourl + '&embedSRC=&directLink=' + directLink + type +'" allowscriptaccess="always" wmode="opaque" name="altPlayer" quality="high" bgcolor="#1E1808" id="altPlayer" src="' + basePath + 'flash/AltVideoPlayer.swf?useMp4Extension=false&basePath='+basePath+'&autoPlay=false&lang=fr&fileURL=' + URLEncode(videourl) + '&directLink=' + URLEncode(directLink) + ietype + '" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>';
        
        embedObject += '</object></div>';
        //alert(videourl);
        if (!alt.scene.initFlash()) {
          alert("initFlash() not defined");
          return;
        }
        else {
          try {
            alt.scene.currentVideoButton = el;
          
            if (typeof(alt.scene.swfobj.updateEmbedSRC) == "undefined" ||
                typeof(alt.scene.swfobj.playVideo) == "undefined" ||
                typeof(alt.scene.swfobj.updateProjectType) == "undefined" ||
                typeof(alt.scene.swfobj.updateDirectLink) == "undefined") 
                {
                  setTimeout('alt.scene.launchVideo(alt.scene.currentVideoButton, true);', 1000);
                }
                else 
                { 
                  try{
										
										if($.browser.safari && ! alt.scene.firstPlayerLoad) tm = 3500;
										
										else tm = 2;
										
										setTimeout(function(){
											
	                    alt.scene.swfobj.playVideo(videourl);
	                    alt.scene.swfobj.updateEmbedSRC(embedObject);
	                    alt.scene.swfobj.updateDirectLink(directLink);
	                    alt.scene.swfobj.updateProjectType((weburl ? 'web' : 'video'), weburl);
											
											alt.scene.firstPlayerLoad = true;
										}, tm);
                  } catch (e) { setTimeout('alt.scene.launchVideo(alt.scene.currentVideoButton, true);', 1000); } 
                }
          } 
          catch (e) {
            alert("exception caught : " + e);
          }
         }
        }
      }
    }
    return false;
  }

alt.scene.isWebCamPlaying = true;

alt.scene.closeWebCam = function(){
	if (typeof(alt.scene.swfobj.closeWebCam) == "undefined") {
		setTimeout('alt.scene.closeWebCam();', 1000);
	}
	else {
		try {
      $('#capture img.webcam').show();
			alt.scene.swfobj.closeWebCam();
			alt.scene.isWebCamPlaying = false;
		} 
		catch (e) {
		}
	}
};

alt.scene.playWebCam = function(){
  if (typeof(alt.scene.swfobj.playWebCam) == "undefined") {
    setTimeout('alt.scene.playWebCam();', 1000);
  }
  else {
    try {
      $('#capture img.webcam').show();
      alt.scene.swfobj.playWebCam();
			alt.scene.isWebCamPlaying = true;
    } 
    catch (e) {
    }
  }
};
	
  jQuery.fn.sort = function() {
  return this.pushStack( [].sort.apply( this, arguments ), []);

  }; 
  
alt.scene.bgClick = function(event) {   
	
  if(event) event.stopPropagation();
  
  alt.scene.countClick++;
 
  if($("#playerBox").css("display") == "none") {
    $("#playerBox, #navigation").show(100, function(){
			if(alt.scene.isWebCamPlaying)
	    {
	      alt.scene.playWebCam();
	    }
	    else
	    {
	      alt.scene.launchVideo($("#projectList li.selected a.video_btn:first"), true);
	    }
		});
  }
  else
  {
    $("#playerBox, #navigation").hide();
  }
}
	
   /** 
 * DOM READY 
 * @param none
 */    
  $(document).ready(function() {
    
    alt.scene.initFlash();
      alt.scene.webcamInterval = setInterval(refreshWebcam, 3000);
    
    // keep the window height at list at 600px;
    $(window).bind("resize", function() {
        if( $(window).height() < 600  ) {
          $('#global').height('600px');
        }else{
          $('#global').height('100%');
        }
    });
  
    $('#capture #miniFlash').hide();
    $('#capture img').show();
    $('#mainBg #flashBg').hide();
    $('#mainBg #bgmask').show();
    $('#mainBg').show();
    
    // setScrollers();  
    $.tinysort.defaults.attr = "priority";
    $("#listBlock #projectList li").tsort();
      
    /* SET Lists the Default listDisplay */
    $("ul#directorList, #genreList").addClass('listDisplay');
    $("ul#projectList").addClass('thumbDisplay'); 
    alt.scene.swapList( $("#listBlock ul.active") );
    // alt.scene.playWebCam(); 
		alt.scene.launchDefaultVideo(); // XXX to fix
    
		// $("#bgmask, #flashBg").click(alt.scene.bgClick).dblclick(alt.scene.bgClick);
    
    $("#menu a").click( function(event){
      event.preventDefault();
      var listId = $(this).attr("activate");
      
			$(this).css("cursor", "pointer");
		
      $("#subTitle").attr("catUrl", $(this).attr("catUrl"));

      if( ! $(this).parent("li").hasClass("selected") )
      {
      $("#subTitle").trigger('click');
        alt.scene.swapList($(listId));
      }
			else
			{
				$("#subTitle").trigger('click');
			}
    });
    
    $("a.info_btn").click(function(event){
    
    var listElement = $("#listBlock ul li");
    
      event.preventDefault();
      if( $(this).parent("li").hasClass("info") ) {
        $(this).parent("li").removeClass("info");
        $(this).siblings("span").hide();
      }else{
        listElement.removeClass("info");
        $(this).parent("li").addClass("info");
        $(this).siblings("span").show();
      }
    });
    
    /* - CHANGE LIST DISPLAY - */
    $(".ssmenu a#listView_btn, .ssmenu a#thumbView_btn").click( function(event) {
      event.preventDefault();

      if(activList.is("#projectList") || activList.parent().parent().is("#directorList, #genreList") ){

        $('.ssmenu a.button').removeClass('active');
      
        if( $(this).is("#listView_btn") ) 
        {
          alt.scene.currentDisplayMode = 'listDisplay';
        } 
        else 
        {
          alt.scene.currentDisplayMode = 'thumbDisplay';
        }
        
        alt.scene.switchListDisplayTo(activList, alt.scene.currentDisplayMode);
        
      }
    });   
    
    /* - SLIDE DOWN orderCriterion - */
    $("#orderSelect ul li").click( function(event){
      event.preventDefault();
      $(this).prependTo("#orderSelect ul");
      $('#orderSelect').css("overflow", "hidden");
      $('#orderSelect ul').removeClass("selectListOpen");
      $(this).siblings().hide();
      $.tinysort.defaults.attr = $("a", this).attr("rel");
    
      $("li", activList).tsort();
    
      $("li:even", activList).addClass("pair").removeClass("impair");
      $("li:odd", activList).addClass("impair").removeClass("pair");
      
    $("a", this).addClass('selected');
    });

    $('#openOrderSelect').click( function(event) {
      event.preventDefault();
      $('#orderSelect').css({overflow:"visible"});
      $('#orderSelect ul li').show();
      if( $('#orderSelect ul').is('.selectListOpen') ) {
        $('#orderSelect ul').removeClass("selectListOpen");
        $('#orderSelect ul li:not(.selected)').removeClass("selectListOpen");
      }else{ 
        $('#orderSelect ul').addClass("selectListOpen");
        $(this).addClass("active");
      }       
    });
   
    
    /* - OPEN VIDEO - */
    $("a.video_btn").click( function(event) { 
      event.preventDefault();
    
      window.location.hash = $(this).attr("catUrl");
    
      // test flv file or not
      if(!alt.scene.initFlash()){
        alert("initFlash() not defined"); return;
      }
      else {
      alt.scene.launchVideo(this);
      }
      return false;
    })
    .hover(
      function(){ if($(this).parent().parent().hasClass("thumbDisplay")) $(this).addClass('over'); },
      function(){ $(this).removeClass('over'); }
    )
    .parent().hover(
      function(){ if($(this).parent().hasClass("thumbDisplay")) $(this).addClass('over'); },
      function(){ $(this).removeClass('over'); }
    );

    
    /* - SHOW DIRECTOR PROJECTS - */
    $("a.cat_btn").click( function(event) { 
      event.preventDefault(); 
    
      $("#orderSelect, #thumbView_btn, #listView_btn").show();
    
      var listItem = $(this).parent("li");
    
      window.location.hash = $("ul", listItem).attr("catUrl");
    
      $("#subTitle").html($(this).html());
      
      $("#subTitle").css({display:"block"});
      listItem.addClass('noStyle');
      $("ul", listItem).css({display:"block"}).addClass("thumbDisplay");
      $("ul", listItem).siblings("a").hide();
      listItem.siblings("li").hide();
    
      activList = $("ul", listItem);
      alt.scene.updateScroller(activList);
      
      $("#orderSelect ul li:first").trigger("click");
      
      // listItem.css("height", "100%");
      
      $(".coming-soon", listItem).css('display','block');
    
      alt.scene.switchListDisplayTo(listItem.parent(), alt.scene.currentDisplayMode);

      listItem.parent().css("top", 0);
    
    });

    $("#subTitle").click( function(event) {
        event.preventDefault();
    
        var listItem = $("#listBlock > ul:not(#projectList)").children("li");
        
        listItem.css("height", "auto");
        
        window.location.hash = $(this).attr("catUrl");
        
        $(".coming-soon", listItem).css('display','none')
          
        $("#orderSelect, #thumbView_btn, #listView_btn").hide();
    
        $("ul", listItem).hide();
        listItem.show(); 
        listItem.removeClass('noStyle');
        $(" > a ", listItem).not(".info_btn").css({display:"block"});  // XXX inline
        $("#subTitle").css({display:"none"});
        alt.scene.switchListDisplayTo(listItem.parent(), 'listDisplay');
      });

    $("#mask img").click( function(event) { 
      //event.preventDefault(); 
			if(!alt.scene.isWebCamPlaying)
       alt.scene.playWebCam();
      else
	   alt.scene.playWebCam();
       //alt.scene.closeWebCam();
    });

      
    //-----------------
    //     TOOLTIP
    //-----------------
    $('#thumbView_btn, #listView_btn, #mask img').each( function(){
      $(this).tooltip({ 
        track: true, 
        delay: 0, 
        showURL: false 
      });
    });  
		
  });  // close $(document).ready( function(){ 
//};
