if (typeof window.lazyLoadWindowConnector != 'function') {
	 lazyLoadWindowConnector = function(){
		var lazyImages = $$('img.lazy');var newSrc;
		this.lazyFill = function(){
			lazyImages.each(function(img){
				if((document.viewport.getHeight() + document.viewport.getScrollOffsets().top) - img.cumulativeOffset().top > 0){
					newSrc = img.readAttribute('data-src');
					if(newSrc){
						img.src = newSrc;
						img.removeClassName("lazy");
						img.removeAttribute('data-src');
						lazyImages = lazyImages.remove(img);
						newSrc = '';
					}
				}
			});
			if(lazyImages.length==0){
				Event.stopObserving(window,'scroll',this.lazyFill);
				Event.stopObserving(window,'resize',this.lazyFill);
			}
		}
		Event.observe(window,"scroll",this.lazyFill);
		Event.observe(window,"resize",this.lazyFill);
		this.lazyFill();
	}
}

function insertFacebookFan() {
	if ($('facebookFan')) {
		$('facebookFan').innerHTML = '<iframe scrolling="no" frameborder="0" src="http://www.facebook.com/connect/connect.php?id=92334319395&amp;connections=0&amp;stream=0" allowtransparency="true" style="border: none; width: 200px; height: 60px;"></iframe>';
	}
}

Array.prototype.remove = function(obj) {
  var a = [];
  for (var i=0; i<this.length; i++) {
    if (this[i] != obj) {
      a.push(this[i]);
    }
  }
  return a;
}

function  newCaptcha(id, givenurl)
{
	if ($(id))
	{

        var date = new Date();
        var time = date.getTime();
        var url = (givenurl) ? givenurl : '/captcha/captcha.jpg';
        $(id).src = url + "?" + time;
	}
}

/****			Gestion des Cookies 			*****/
function setCookieWAT(c_name, value, expiredays, domain, path)
{
	if(!domain){
		domain = ".wat.tv";
	}
	
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+";domain="+domain+
    ((expiredays==null) ? "" : "; expires="+exdate.toGMTString())+((path==null) ? "; path=/" : "; path="+path);
}

function GetCookieWAT(c_name)
{
    if (document.cookie.length>0)
    {
        c_start=document.cookie.indexOf(c_name + "=")
        if (c_start!=-1)
        {
            c_start=c_start + c_name.length+1
            c_end=document.cookie.indexOf(";",c_start)
            if (c_end==-1) c_end=document.cookie.length
            return unescape(document.cookie.substring(c_start,c_end))
        }
    }
    return ""
}

function eraseCookieWAT(c_name) {
	setCookieWAT(c_name,"",-1);
}

function getElementFromCookie()
{
    cookie = unescape(GetCookieWAT('wat_auth'));
    tabElement = cookie.split('|');
    return tabElement[0];
}




/****			Gestion des sessions			*****/
function isLogged() {
    logElement = getElementFromCookie();
    return (logElement.length > 0 && logElement != 'null');
}

/* ================== loading ================= */

function ajaxLoading(obj)
{
    $A(obj.getElementsByTagName("*")).each(function (el) {
        Element.hide(el);
    });

    new Insertion.Bottom(obj, g_loading_msg);
}

function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

function Delete_Cookie( name, path, domain ) {
	document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function Trim(string) {
	return string.replace(/^\s+/g,'').replace(/\s+$/g,'');
}

/*
 *
 *  Ajax Autofomplete for Prototype, version 1.0.1
 *  (c) 2008 Tomas Kirda
 *
 *  Ajax Autofomplete for Prototype is freely distributable under the terms of an MIT-style license.
 *  For details, see the web site: http://www.devbridge.com/projects/autocomplete/
 *
 *  Modifications for compatibility with prototype 1.4+
 *  Ajout de la gestion des miniscules / majuscules
 *  Ajout de la gestion des accents
 *
 */

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
	do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
	} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function preg_replace(array_pattern, array_pattern_replace, my_string)  {
var new_string = String (my_string);
	for (i=0; i < array_pattern.length; i++) {
		var reg_exp = RegExp(array_pattern[i], "gi");
		var val_to_replace = array_pattern_replace[i];
		new_string = new_string.replace(reg_exp, val_to_replace);
	}
	return new_string;
}

function no_accent(my_string) {
	var new_string = "";
	var pattern_accent = new Array("é", "è", "ê", "ë", "ç", "à", "â", "ä", "î", "ï", "ù", "ô", "ó", "ö");
	var pattern_replace_accent = new Array("e", "e", "e", "e", "c", "a", "a", "a", "i", "i", "u", "o", "o", "o");
	if (my_string && my_string!= "") {
		new_string = preg_replace(pattern_accent, pattern_replace_accent, my_string);
	}
	return new_string;
}


var Autocomplete = function(el, options){
  this.el = $(el);
  //this.id = this.el.identify();
  this.id = this.el.getAttribute('id');
  this.el.setAttribute('autocomplete','off');
  this.suggestions = [];
  this.data = [];
  this.badQueries = [];
  this.selectedIndex = -1;
  this.currentValue = no_accent(this.el.value);
  this.intervalId = 0;
  this.cachedResponse = [];
  this.instanceId = null;
  this.onChangeInterval = null;
  this.ignoreValueChange = false;
  this.serviceUrl = options.serviceUrl;
  this.options = {
    autoSubmit:false,
    minChars:1,
    maxHeight:300,
    deferRequestBy:0,
    width:0
  };
  if(options){ Object.extend(this.options, options); }
  if(Autocomplete.isDomLoaded){
    this.initialize();
  }else{
    //Event.observe(document, 'dom:loaded', this.initialize.bind(this), false); // Compatibilité prototype 1.4
    Event.observe(window, 'load', this.initialize.bind(this), false);
  }
};

Autocomplete.instances = [];
Autocomplete.isDomLoaded = false;

Autocomplete.getInstance = function(id){
  var instances = Autocomplete.instances;
  var i = instances.length;
  while(i--){ if(instances[i].id === id){ return instances[i]; }}
};

Autocomplete.highlight = function(value, re){
  return value.replace(re, function(match){ return '<strong>' + match + '<\/strong>' });
};

Autocomplete.prototype = {

  killerFn: null,

  initialize: function(){
    this.killerFn = function(e){
      /*if(!$(Event.element(e)).up('.autocomplete')){
        this.killSuggestions();
        this.disableKillerFn();
      }*/
      var ancestor = Position.offsetParent($(Event.element(e)));
      if (ancestor.className != 'autocomplete') {
        this.killSuggestions();
        this.disableKillerFn();
      }
    }.bindAsEventListener(this);

    if(!this.options.width){ this.options.width = this.el.getWidth(); }

    //var div = new Element('div', { style:'position:absolute;' });
    var div = document.createElement('div');
    div.setAttribute('id', 'auto_'+this.id);
    //Element.extend(div);
    div.style.position = 'absolute';
    Element.update(div, '<div class="autocomplete-w1"><div class="autocomplete-w1"><div class="autocomplete" id="Autocomplete_' + this.id + '" style="display:none; width:' + this.options.width + 'px;"></div></div></div>');
    if ($('Grid')) {
    	$('Grid').appendChild(div);
    }
    else {
    	document.body.appendChild(div);
    }

    //this.mainContainerId = div.identify();
    this.mainContainerId = div.getAttribute('id');
    this.container = $('Autocomplete_' + this.id);
    this.fixPosition();

    Event.observe(this.el, 'keydown', this.onKeyPress.bind(this));
    Event.observe(this.el, 'keyup', this.onKeyUp.bind(this));
    Event.observe(this.el, 'blur', this.enableKillerFn.bind(this));
    Event.observe(this.el, 'focus', this.fixPosition.bind(this));
    Event.observe(document.onresize ? document : window, "resize", this.fixPosition.bind(this)); // Ajout du repositionnement lors du resize de la page
    //this.container.setStyle({ maxHeight:this.options.maxHeight + 'px' });
    this.container.style.maxHeight = this.options.maxHeight + 'px';
    this.instanceId = Autocomplete.instances.push(this) - 1;
  },

  fixPosition: function(){
    //var offset = this.el.cumulativeOffset();
    var height = Element.getHeight(this.el);
    var offset = findPos(this.el);
    //var offset = Position.cumulativeOffset(this.el);
    //$(this.mainContainerId).setStyle({top: (offset.top+this.el.getHeight())+'px', left: offset.left+'px' });
    $(this.mainContainerId).style.top = (offset[1]+height)+'px';
    $(this.mainContainerId).style.left = offset[0]+'px';
  },

  enableKillerFn: function(){
    Event.observe(document.body, 'click', this.killerFn);
  },

  disableKillerFn: function(){
    Event.stopObserving(document.body, 'click', this.killerFn);
  },

  killSuggestions: function(){
    this.stopKillSuggestions();
    this.intervalId = window.setInterval(function(){ this.hide(); this.stopKillSuggestions(); }.bind(this), 300);
  },

  stopKillSuggestions: function(){
    window.clearInterval(this.intervalId);
  },

  onKeyPress: function(e){
    if(!this.enabled){ return; }
    // return will exit the function
    // and event will not fire
    switch(e.keyCode){
      case Event.KEY_ESC:
        this.el.value = this.currentValue;
        this.hide();
        break;
      case Event.KEY_TAB:
      case Event.KEY_RETURN:
        if(this.selectedIndex === -1){
          this.hide();
          return;
        }
        this.select(this.selectedIndex);
        if(e.keyCode === Event.KEY_TAB){ return; }
        break;
      case Event.KEY_UP:
        this.moveUp();
        break;
      case Event.KEY_DOWN:
        this.moveDown();
        break;
      default:
        return;
    }
    Event.stop(e);
  },

  onKeyUp: function(e){
    switch(e.keyCode){
      case Event.KEY_UP:
      case Event.KEY_DOWN:
        return;
    }
    clearInterval(this.onChangeInterval);
    if(this.currentValue !== this.el.value){
      if(this.deferRequestBy > 0){
        // Defer lookup in case when value changes very quickly:
        this.onChangeInterval = setInterval((function(){
          this.onValueChange();
        }).bind(this), this.deferRequestBy);
      }else{
        this.onValueChange();
      }
    }
  },

  onValueChange: function(){
    clearInterval(this.onChangeInterval);
    this.currentValue = no_accent(this.el.value.toLowerCase());
    this.selectedIndex = -1;
    if(this.ignoreValueChange){
      this.ignoreValueChange = false;
      return;
    }
    if(this.currentValue === '' || this.currentValue.length < this.options.minChars){
      this.hide();
    }else{
      this.getSuggestions();
    }
  },

  getSuggestions: function(){
    var cr = this.cachedResponse[this.currentValue.substr(0,3)];
    if(cr){
      	// On parse le tableau pour ne garder que les bons éléments
	    this.suggestions = cr;
	    this.affine();
    }else if(!this.isBadQuery(this.currentValue.substr(0,3))){
    	new Ajax.Request(this.serviceUrl+this.currentValue.substr(0,3)+'.json', {
          //parameters:{ query:this.currentValue.substr(0,3) },
          //parameters: 'action=search'+'&query='+this.currentValue.substr(0, 3),
          onComplete: this.processResponse.bind(this),
          method:'get'
        });
    }
  },

  isBadQuery: function(q){
    var i = this.badQueries.length;
    while(i--){
      if(q.indexOf(this.badQueries[i]) === 0){ return true; }
    }
    return false;
  },

  hide: function(){
    this.enabled = false;
    this.selectedIndex = -1;
    //this.container.hide();
    this.container.style.display = 'none';
  },

  affine: function() {
  	var content = [];
		var re = new RegExp(this.currentValue);
		this.suggestions.each(function(value){
       	if (re.exec(value)) {
       		content.push(value);
       	}
		}.bind(this));
    this.suggestions = content;
    this.suggest();
  },

  suggest: function(){
    if(this.suggestions.length === 0){
      this.hide();
      return;
    }
    var content = [];
    var re = new RegExp('\\b' + this.currentValue.match(/\w+/g).join('|\\b'), 'gi');
    this.suggestions.each(function(value, i){
        content.push((this.selectedIndex === i ? '<div class="selected"' : '<div'),' title="', value, '" onclick="Autocomplete.instances[', this.instanceId ,'].select(',i,');" onmouseover="Autocomplete.instances[', this.instanceId ,'].activate(',i,');">', Autocomplete.highlight(value, re), '</div>');
      }.bind(this));
    this.enabled = true;
    //alert(this.container);
    //this.container.update(content.join('')).show();
    //this.container.updateContent(content.join(''));
    this.container.innerHTML = content.join('');
    this.container.style.display = 'block';
  },

  processResponse: function(xhr){
    var response;
    try{
      //response = xhr.responseText.evalJSON();
      response = eval('('+xhr.responseText+')');
      //if(!Object.isArray(response.data)){ response.data = []; }
    }catch(err){ return; }
    this.suggestions = response[1];
    this.data = response[2];
    this.cachedResponse[response[0]] = this.suggestions;
    if(this.suggestions.length === 0){ this.badQueries.push(response[0]); }
    if(response[0] === this.currentValue){ this.suggest(); }
    else {this.affine();}
  },

  activate: function(index){
    var divs = this.container.childNodes;
    var activeItem;
    // Clear previous selection:
    if(this.selectedIndex !== -1 && divs.length > this.selectedIndex){
      divs[this.selectedIndex].className = '';
    }
    this.selectedIndex = index;
    if(this.selectedIndex !== -1 && divs.length > this.selectedIndex){
      activeItem = divs[this.selectedIndex]
      activeItem.className = 'selected';
    }
    return activeItem;
  },

  deactivate: function(div, index){
    div.className = '';
    if(this.selectedIndex === index){ this.selectedIndex = -1; }
  },

  select: function(i){
    var selectedValue = this.suggestions[i];
    if(selectedValue){
      this.el.value = selectedValue;
      if(this.options.autoSubmit && this.el.form){
        //this.el.form.submit(); on remplace cette ligne pour que ca marche chez nous
        submitSearch('Tu dois saisir un texte à rechercher', this.el); return false;
      }
      this.ignoreValueChange = true;
      this.hide();
      this.onSelect(i);
    }
  },

  moveUp: function(){
    if(this.selectedIndex === -1){ return; }
    if(this.selectedIndex === 0){
      this.container.childNodes[0].className = '';
      this.selectedIndex = -1;
      this.el.value = this.currentValue;
      return;
    }
    this.adjustScroll(this.selectedIndex - 1);
  },

  moveDown: function(){
    if(this.selectedIndex === (this.suggestions.length - 1)){ return; }
    this.adjustScroll(this.selectedIndex + 1);
  },

  adjustScroll: function(i){
    var container = this.container;
    var activeItem = this.activate(i);
    var offsetTop = activeItem.offsetTop;
    var upperBound = container.scrollTop;
    var lowerBound = upperBound + this.options.maxHeight - 25;
    if(offsetTop < upperBound){
      container.scrollTop = offsetTop;
    }else if(offsetTop > lowerBound){
      container.scrollTop = offsetTop - this.options.maxHeight + 25;
    }
    this.el.value = this.suggestions[i];
  },

  onSelect: function(i){
    (this.options.onSelect || Prototype.emptyFunction)(this.suggestions[i], this.data[i]);
  }

};

function testRefreshPub(){
    if(document.all && document.fireEvent && document.createEventObject){
        var event = document.createEventObject();
        event.eventType = "ondataavailable";
        event.eventName = 'wat:refresh_pub';
        document.fireEvent(event.eventType, event);
    }else{
        event = document.createEvent("HTMLEvents");
        event.initEvent("dataavailable", true, true);
        event.eventName = 'wat:refresh_pub';
        document.dispatchEvent(event);
    }
	setTimeout("testRefreshPub()",300000); 
}

setTimeout("testRefreshPub()",300000); 

var registeredCalls = new Array;
function register(method){
    for(i=0;i<registeredCalls.length;i++){
        if(registeredCalls[i]==method){
            return;
        }
    }
    registeredCalls[i] = method;
}
function watDoDomReady(){
    registeredCalls.each(function(method){
       if(eval("typeof "+method) == 'function'){
           eval(method+"();");
       }
    });
    insertFacebookFan();
}

/* désactive les liens
function addEventBody() {
	document.body.observe("click",function(e){
		Event.stop(e);
	});
}
*/