var scroll_container = null;
var scroll_moving = false;
var scroll_delta = null;
var scroll_steps = 5;
var scroll_speed = 1;
var scroll_min = 0;
var scroll_max = 0;

var thumbs_container = null;
//PB
var thumbs_array = null;
var thumbs_container_abs_values = null;

var thumb_width = 0;
var thumbs_position = 0;
var thumbs_quantity = 0;
var thumbs_by_page = 6;

var thumbs_mask = null;
var thumbs_mask_left = null;
var thumbs_mask_center = null;
var thumbs_mask_right = null;
var thumbs_mask_position_old = 1;
var thumbs_mask_position = 1;
var thumbs_mask_opacity = .33;

//PB
var playlist_position = thumbs_position;

var slide_timer = null;
var slide_end = false;

var __player = null;
var aItems = new Array();
var has_load = false;
var is_playing = false; 
var is_fadedout = false;
var chg_slide = null;
var btn_play = null;
var video_overlay_bg = null;
var video_overlay_text = null;
var video_overlay_opacity = .66;
var slide_interval = 10000;
var visionneuse = null;

var changeMedia = function() {
	playlist_position = thumbs_array[thumbs_position].playlist_index;
  loadMedia();
}

var loadMedia = function() {
	//PB - replaced thumbs_position by playlist_position for aItems index
  type = aItems[playlist_position]['type'];
  img = aItems[playlist_position]['image'];
  filename = aItems[playlist_position]['file'];

  overlay_title = aItems[playlist_position]['overlay_title'];
  overlay_link = aItems[playlist_position]['overlay_link'];
  overlay_subtitle = aItems[playlist_position]['overlay_subtitle'];
  overlay_text = aItems[playlist_position]['overlay_text'];

  if(!__player){
    __player = new allvideos.API('p_visionneuse');
  }

  if(type == "flv"){
    __player.loadFile({file: filename, image: aItems[playlist_position]["file"].replace('.flv','.jpg')});
    btn_play.removeClass("v_hide");
    btn_play.addClass("v_visible");
  }else{
    __player.loadFile({file: filename, image: aItems[playlist_position]["file"]});
    btn_play.removeClass("v_visible");
	  btn_play.addClass("v_hide");
  }

  if(overlay_title || overlay_subtitle || overlay_text){
    video_overlay_bg.addClass("v_visible");

    video_overlay_text.innerHTML = '<div class="title"><a href="' + (overlay_link?overlay_link:'') + '">' + (overlay_title?overlay_title:'') + '</a><span class="sub">' + (overlay_subtitle?overlay_subtitle:'') + '</span></div><div class="text">' + (overlay_text?overlay_text:'') + '</div>';
    video_overlay_text.addClass("v_visible");
  }
  else{
    video_overlay_bg.removeClass("v_visible");
    video_overlay_text.removeClass("v_visible");
  }
}

var thisMovie = function(swf) {
  try{
	  if(navigator.appName.indexOf("Microsoft") != -1) {
	    return document.getElementById(swf);
	  }else {
	    return document.getElementById(swf);
	  }
  }
  catch(err){
  window.setTimeout('thisMovie("p_visionneuse")', 1);
  }
}

var getUpdate = function(typ,pr1,pr2,swf) {
  //alert('typ: ' + typ + '\npr1: ' + pr1 + '\npr2: ' + pr2 + '\nswf: ' + swf)
  if( (typ == 'state') && (pr1==0) ) {
    if(!has_load){
	    has_load = true;
	
	    vgetData();
	    init_elements();
	
	    //PB
	    playlist_position = thumbs_array[thumbs_position].playlist_index;
	
	    var interval = setInterval(function(){
	      try{
	        loadMedia();
	        clearInterval(interval);
	        //PB
	        //thumbs_position = 1;
	        thumbs_position = thumbs_position+1;
	        start_slide_show();
	
	        var autostart = getQS().autostart;
					if(autostart == 'true')
					{
						sendEvent('p_visionneuse','next');
					}
	      }
	      catch(e){}
	    },1)
    }
    if(is_playing){
    }
  }
  if( (typ == 'state') && (pr1==2) || (typ == 'state') && (pr1==1 )) {

    is_playing = true;
    stop_slide_show();

	  btn_play.removeClass("v_visible");
	  btn_play.addClass("v_hide");

    video_overlay_bg.removeClass("v_visible");
    video_overlay_text.removeClass("v_visible");
  }
  if(typ == 'state' && pr1==3){
		if(aItems[playlist_position]['type'] == 'flv'){
    	btn_play.removeClass("v_hide");
   		btn_play.addClass("v_visible");
   	}
    is_playing = false;
    start_slide_show();
  	video_log_tracker('Visionnement complet');
  }
  if(typ == 'load' && pr1==100){
 		video_log_tracker('Lancement');
  }
}

var sendEvent = function(swf,typ,prm) { 
  thisMovie(swf).sendEvent(typ,prm);
}

var allItemData = function(swf) {
  var nbItem = thisMovie(swf).getLength();
  for (x=0; x <= nbItem; x++){
    var obj = thisMovie(swf).itemData(x);
    aItems.push(obj);
  }
  return aItems;
}

var vgetData = function(){
  thumbs_container = $(document.getElementById('thumbs_container'));

  aItems = allItemData('p_visionneuse');
  aItems.forEach(parseItems, this);
  prepare_extend_thumbs();

	thumbs_array = thumbs_container.getElementsByTagName('TD');

  //changeMedia();
  //start_slide_show();
}

var parseItems = function(element, index, array){
  var filters = getQS().videofilters;

  // If there is an element and (there is a filter and the relation between filters and querystring)
  if(element != null && (!filters || (element.videofilters && element.videofilters.indexOf(filters)!=-1))){
	  var td = document.createElement('td');

	  td.playlist_index = index;

	  thumbs_container.appendChild(td);
	  var thumb_index = thumbs_container.childNodes.length;
	
	  var div_container = $(document.createElement('div'));
	  div_container.className = 'thumbs';

	  div_container.addEvent('click', function(){
	    thumbs_position = thumb_index-1;
	    is_playing = false;
	    stop_slide_show();
	    changeMedia();

	    thumbs_position = thumbs_position+1>=thumbs_quantity?0:thumbs_position+=1;
	  });
	  div_container.addEvent('mouseover', function(){
	    stop_slide_show();
	  });
	  div_container.addEvent('mouseout', function(){
	    start_slide_show();
	  });
	  td.appendChild(div_container);
	
	  var div_play_btn = document.createElement('div');
	  div_play_btn.className = 'play_icon';
	
	  if(element["type"] == "flv"){
	    div_play_btn.className += ' play_icon_image';
	  }
	  div_container.appendChild(div_play_btn);
	
	  var img = document.createElement('img');
	  img.className = 'thumbs';
	
	  img.src  = element['image'];
	  if(element['title']){
	    img.alt = element['title'];
	  }
	  div_container.appendChild(img);
  }
}

var prepare_extend_thumbs = function(){
  var thumbs = thumbs_container.getElementsByTagName('td');

  if(!aItems[aItems.length-1]){
    aItems.pop();
  }
  thumbs_quantity = thumbs.length;
  if(thumbs.length > thumbs_by_page-1){
    var item = null;
    for(var iLoop = 0; iLoop < thumbs_by_page; iLoop++){
      item = {};
      for(property in aItems[iLoop]){
        item[property] = aItems[iLoop][property];
      }
      aItems.push(item);
      parseItems(aItems[aItems.length-1], aItems.length-1, aItems);
    }
  }
}

/* SLIDESHOW */ 
var slide_show_function = function(){
//debugger;
	//PB
  if(thumbs_position == 0 && thumbs_quantity > thumbs_by_page){
    playlist_goto(0);
    thumbs_position = thumbs_by_page;
  }

  changeMedia();
  mask_goto_to(thumbs_position);

  if(thumbs_position - get_first_thumb_position() == thumbs_by_page){
    playlist_slide_by(1, 1);
  }
  else{}

	//PB
	//if(thumbs_position < aItems.length-1){
  if(thumbs_position < thumbs_array.length-1){
    thumbs_position++;
  }
  else{
    thumbs_position = 0;
  }
}

var start_slide_show = function(){
  if(!is_playing && thumbs_quantity > 1){
    stop_slide_show();
    chg_slide = setInterval(slide_show_function, slide_interval);
  }
}

var stop_slide_show = function(){
  if(chg_slide){
    clearInterval(chg_slide);
  }
}

var mask_goto_to = function(pos){
  thumbs_mask_position = pos;
  thumbs_mask_left.setStyle('width', thumb_width * pos);
  thumbs_mask_right.setStyle('width', thumbs_mask.offsetWidth - thumbs_mask_left.offsetWidth - thumbs_mask_center.offsetWidth);
}

var playlist_goto = function(pos){
  //scroll_container.scrollLeft = scroll_container.scrollLeft + (pos * thumb_width);
  scroll_container.scrollLeft = pos * thumb_width;
}

var playlist_slide_to = function(pos){
  scroll_moving = true;
  scroll_container.scrollLeft = scroll_container.scrollLeft + (scroll_steps * (scroll_container.scrollLeft>pos?-1:1));

  if(Math.abs(scroll_container.scrollLeft-pos) > scroll_steps && scroll_container.scrollLeft > 0){
    setTimeout('playlist_slide_to(' + pos + ')', scroll_speed);
  }
  else{
    scroll_moving = false;
    scroll_container.scrollLeft = pos;
  }
}

var playlist_slide_by = function(direction, times, oncomplete){
  for(times; times>0; times--){
    var value = scroll_container.scrollLeft + ((thumb_width * times) * direction);
    if(value>=scroll_min && value<=scroll_max){
      playlist_slide_to(value);
      break;
    }
    else{
      if(direction == 1){
        scroll_container.scrollLeft = 0;
        playlist_slide_by(direction, times, oncomplete);
       }
       else{
        playlist_goto(thumbs_quantity);
       }
    }
  }
}

var get_first_thumb_position = function(){
  return Math.round(scroll_container.scrollLeft/thumb_width);
}

var init_elements = function(){
  thumbs_mask = $('thumbs_mask');
  thumbs_mask_left = $('thumbs_mask_left');
  thumbs_mask_center = $('thumbs_mask_center');
  thumbs_mask_right = $('thumbs_mask_right');

  btn_play = $("btn_play");
  video_overlay_bg = $("video_overlay_bg");
  video_overlay_bg.setStyle('opacity', video_overlay_opacity);
  video_overlay_text = $("video_overlay_text");
  visionneuse = $('p_visionneuse');

  scroll_container = document.getElementById('scroll_container');
  thumbs_container_abs_values = thumbs_container.getCoordinates();

  thumb_width = thumbs_container.offsetWidth / thumbs_container.getElementsByTagName('td').length;

  scroll_delta = scroll_container.scrollWidth - scroll_container.offsetWidth;
  scroll_min = 0;
  scroll_max = (thumb_width * thumbs_container.getElementsByTagName('td').length) - (thumbs_by_page * thumb_width);

  thumbs_mask.setStyle('width', thumbs_container_abs_values.width);
  thumbs_mask.setStyle('display','block');

  thumbs_mask_center.setStyle('width', thumb_width);
  thumbs_mask_left.setStyle('opacity', thumbs_mask_opacity);
  thumbs_mask_right.setStyle('opacity', thumbs_mask_opacity);

  thumbs_position = getQS().startindex?getQS().startindex-1:0;
	mask_goto_to(thumbs_position);
	playlist_goto(thumbs_position);

  btn_play.addEvent('click', function(){
    sendEvent('p_visionneuse','next');
  });

  if(thumbs_quantity > thumbs_by_page){
	  $('right_nav').addEvent('mouseover', function(){
	    	stop_slide_show();
	    	slide_timer = setInterval(function(){
		      if(!scroll_moving){
	        	playlist_slide_by(1,1);
	      	}
	    	}, 1);
	  });
	
	  $('right_nav').addEvent('mouseout', function(){
	    clearInterval(slide_timer);
	    thumbs_position = get_first_thumb_position();
	    start_slide_show();
	  });
	
	  $('left_nav').addEvent('mouseover', function(){
	    stop_slide_show();
	    slide_timer = setInterval(function(){
	      if(!scroll_moving){
	        playlist_slide_by(-1,1);
	      }
	    }, 1);
	  });
	
	  $('left_nav').addEvent('mouseout', function(){
	    clearInterval(slide_timer);
	    thumbs_position = get_first_thumb_position()-1;
	    start_slide_show();
	  });
	}

  thumbs_mask.addEvent('mousemove', function(event){
    stop_slide_show();
  	var client_x = event.clientX?event.clientX:event.client.x;
    mask_goto_to(get_first_thumb_position() + (Math.ceil((client_x - thumbs_container_abs_values.left) / thumb_width)-1))
  }, true);

  thumbs_mask.addEvent('mouseout', function(event){
  var client_x = event.clientX?event.clientX:event.client.x;
    thumbs_position = get_first_thumb_position() + (Math.ceil((client_x - thumbs_container_abs_values.left) / thumb_width)-1) + 1;
    start_slide_show();
  }, true);

  thumbs_mask.addEvent('click', function(event){
    stop_slide_show();
    thumbs_position = thumbs_mask_position;
    changeMedia();
    //if(aItems[thumbs_position].type == 'flv'){
    //  sendEvent('p_visionneuse','next');
    //}
  }, true);
}

debug = function(){
  if(confirm('debug?')){
  //debugger;
  }
}

var video_log_tracker = function(action){
  if(pageTracker._trackEvent){
  	fileName = aItems[playlist_position].file;
  	fileName = fileName.substring(fileName.lastIndexOf('/')+1, fileName.lastIndexOf('.'));

  	pageTracker._trackEvent('Visionneuse - ' + document.title, action, fileName)
  }
}

var getQS = function(key){
  var url = location.href;
  url = url.split("?");
  var results = {};
  if(url.length > 1){
  url = url[1].split("#");
  if(url.length > 1) results["hash"] = url[1];
  url[0].split("&").each(function(item,index){
    item = item.split("=");
    results[item[0]] = item[1];
  });
  }
  return results;
}