// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function Set_Cookie( name, value, expires, path, domain, secure ) {
// set time, it's in milliseconds
  var today = new Date();
  today.setTime( today.getTime() );

  /*
  if the expires variable is set, make the correct 
  expires time, the current script below will set 
  it for x number of days, to make it for hours, 
  delete * 24, for minutes, delete * 60 * 24
  */
  if ( expires ) {
    expires = expires * 1000 * 60 * 60 * 24;
  }
  var expires_date = new Date( today.getTime() + (expires) );

  document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
    ( ( path ) ? ";path=" + path : "" ) + 
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

// this function gets the cookie, if it exists
function Get_Cookie( name ) {
     
  var start = document.cookie.indexOf( name + "=" );
  var len = start + name.length + 1;
  if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
    return null;
  }
  if ( start == -1 ) return null;
  var end = document.cookie.indexOf( ";", len );
  if ( end == -1 ) end = document.cookie.length;
  return unescape( document.cookie.substring( len, end ) );
}

var Sync_Scroll = {
  initialize : function ( id_one, id_two ) {
    this.one = document.getElementById(id_one);
    this.two = document.getElementById(id_two);
    this.setBothPos(0);
    this.enable();
    new  PeriodicalExecuter(function () { Sync_Scroll.sync(Sync_Scroll.two, Sync_Scroll.one)} ,1);
  },
  enable : function () {
    this.enabled = true;
  },
  disable : function () {
    this.enabled = false;
  },
  sync : function (a,b) {
    // very poor onscroll event simulator
    if (this.enabled && a.pos && b.pos) {
      var napos = this.getPos(a);
      var nbpos = this.getPos(b);
      var d = 1/23;
      if      (Math.abs(napos-a.pos) > d) { 
        this.setBothPos(napos);
      } 
      else if (Math.abs(nbpos-b.pos) > d) { 
        this.setBothPos(nbpos);
      }
    }
  },
  getPos : function (element) {
    return (element.scrollTop + (0.5 * element.clientHeight)) / element.scrollHeight;
  },
  setPos : function (element,pos) {
    element.scrollTop = ( pos * element.scrollHeight ) - (0.5 * element.clientHeight);
    element.pos = this.getPos(element);
  },
  setBothPos : function (pos) {
    this.setPos(this.one,pos);
    this.setPos(this.two,pos);
  }
}
