 


var zproc_defined=true;var zprefunction=null;var zpostfunction=null;var zauto_center=0;var zview_tagline='What We Do';var zguide_show_icon=1;var zqanda_show_icon=1;var ztalk_show_icon=1;var zview_show_icon=1;var zguide_transcript=0;var zqanda_transcript=0;var zguide_autoplay=1;var zqanda_clicktocall=0;


///php configs
//generated Sep 05 08
///js configs

//what js script sets do we need
var has_ztalk = 0;
var has_zqanda = 1;
var has_zview = 0;
var has_zguide = 1;
var has_zlib = 0;


//root base dir for all images
var zclient_base_dir="http://www.riversideca.gov/video/zyteGuide/";
var zclient_ccall_number="";
var zclient_ccall_notify="";
zauto_center=1;
zguide_autoplay=0;

//////////////////////////
///start of zguide configs///
//////////////////////////
var zguide_transcript=1;

var zguide_icon_width=105;
var zguide_icon_height=89;

var zguide_icon=zclient_base_dir+'guideicon.png';
var zguide_icon_highlighted=zclient_base_dir+'guideicon_h.png';
var zguide_icon_close=zclient_base_dir+'guideicon_c.png';

var zguide_clip= new Array();

var zguide_slide_direction = new Array();

var zguide_open_position_x=new Array();
var zguide_open_position_y=new Array();

var zguide_transcript_text=new Array();
zguide_transcript_text[0]="Welcome to the Office of the City Clerk homepage.  Explore the links on this page to view the City of Riverside\'s Historical Records, current and archived City Council and Redevelopment Agency Agendas, Minutes, as well as webcasts of the meetings, City Council\'s Code of Ethics and Conduct, Rules of Procedure and Order of Business, Standing Committees Roster and Agendas, City Elections, the Charter and Municipal Code, volunteer service on City advisory boards and commissions, and passports.";
zguide_transcript_text[1]="Whether you are a business owner, young professional on the move, or simply looking for something to do, Riverside is the place for you! On the Development Department\'s homepage, you\'ll find links to divisions such as Arts & Cultural Affairs, Economic Development, Housing & Neighborhoods, and Redevelopment.  Click on any of these links to \"experience the momentum\" of Riverside!";
zguide_transcript_text[2]="The City of Riverside is divided into seven wards.  An elected Councilmember from each ward serves on the City Council. On this web page, you can look up which ward you live in and learn more about your Councilmember.  Using the links on the right, you can review City Council meeting agendas, and read about the Boards and Commissions that advise the City Council on important matters.";
zguide_transcript_text[3]="The City Manager is appointed by the City Council and directs the activities of City departments to carry out the policy direction set by the Council.";
zguide_transcript_text[4]="Are you looking for a rewarding career with the City of Riverside?  You can find it in the list of \"Current Job Openings\" below.  If you are you ready to apply, please select the \"Login\" button and then \"Register to Apply Online\" to set up your personal profile. If you would like to learn more about the City\'s comprehensive employment benefits, organizational structure, or training and development programs, you can find these links on the toolbar at the top of the page.";
zguide_transcript_text[5]="Welcome to the Riverside Public Library\'s homepage.  Learn about the valuable resources available online as well as at your local branch. On this page, you can view the calendar of events, browse the library catalog, or manage your personal account by renewing or requesting materials online. Looking for suggestions?  Click on the \"Readers & Writers\" tab at the top of the page.  Special resources for kids and teens are also available along the top of the page.";
zguide_transcript_text[6]="For your convenience, the City of Riverside has many services available online.  Using the forms on the left of the screen, you can alert the City to code violations, a missed trash pickup, or request tree trimming. Information on commonly requested services is available on the right of the screen.  These include paying parking tickets, signing up for classes at your local park, licensing your pet and managing your utilities.";
zguide_transcript_text[7]="Welcome to the SmartRiverside Homepage.  SmartRiverside is a registered 501(C)(3) nonprofit organization.  You can use the links on the left side of the page to learn more about SmartRiverside or use the links at the top to learn about its many programs and services SmartRiverside provides to the community.";
zguide_transcript_text[8]="This is the SmartRiverside Programs Page and Digital Inclusion introduction.  Using the links on the left you can find out more about Digital Inclusion class locations, the E-Waste Collection program, Computer Discount Programs and High Technology Incentive programs for business opportunities.";
zguide_transcript_text[9]="Hi, this is the Wireless Riverside web page.  Here you can find all of the information about the City of Riverside\'s wireless WiFi network.  Through a collaborative effort with AT&T, the City of Riverside is able to offer Free and Paid broadband WiFi service to its residents, businesses and visitors throughout 56 square miles of the City of Riverside.";
zguide_transcript_text[10]="This is where you can make a difference.  Donations to SmartRiverside benefit low income families throughout Riverside.  Through the Digital Inclusion program, low income families receive 8-hours of free computer training and at the end of the class they are given a free computer, monitor and wireless access device to access the City's Free WiFi service.  Just click on the DONATE button and you'll be taken to our PAYPAL site where you can donate using a credit card, debit card or your own PAYPAL account.  It\'s just that easy.";
zguide_transcript_text[11]="Hi, on this page you will find links to all of our sponsors and the companies that help make a difference in our community.";

zguide_clip[0] = zclient_base_dir+"1296q1_flalpha.flv";
zguide_slide_direction[0] = "left";
zguide_open_position_x[0] = 0;
zguide_open_position_y[0] = 0;
zguide_clip[1] = zclient_base_dir+"1296q15_flalpha.flv";
zguide_slide_direction[1] = "left";
zguide_open_position_x[1] = 0;
zguide_open_position_y[1] = 0;
zguide_clip[2] = zclient_base_dir+"1296q16_flalpha.flv";
zguide_slide_direction[2] = "left";
zguide_open_position_x[2] = 0;
zguide_open_position_y[2] = 0;
zguide_clip[3] = zclient_base_dir+"1296q17_flalpha.flv";
zguide_slide_direction[3] = "left";
zguide_open_position_x[3] = 0;
zguide_open_position_y[3] = 0;
zguide_clip[4] = zclient_base_dir+"1296q18_flalpha.flv";
zguide_slide_direction[4] = "left";
zguide_open_position_x[4] = 0;
zguide_open_position_y[4] = 0;
zguide_clip[5] = zclient_base_dir+"1296q19_flalpha.flv";
zguide_slide_direction[5] = "left";
zguide_open_position_x[5] = 0;
zguide_open_position_y[5] = 0;
zguide_clip[6] = zclient_base_dir+"1296q20_flalpha.flv";
zguide_slide_direction[6] = "left";
zguide_open_position_x[6] = 0;
zguide_open_position_y[6] = 0;
zguide_clip[7] = zclient_base_dir+"1296q21_flalpha.flv";
zguide_slide_direction[7] = "left";
zguide_open_position_x[7] = 0;
zguide_open_position_y[7] = 0;
zguide_clip[8] = zclient_base_dir+"1296q22_flalpha.flv";
zguide_slide_direction[8] = "left";
zguide_open_position_x[8] = 0;
zguide_open_position_y[8] = 0;
zguide_clip[9] = zclient_base_dir+"1296q23_flalpha.flv";
zguide_slide_direction[9] = "left";
zguide_open_position_x[9] = 0;
zguide_open_position_y[9] = 0;
zguide_clip[10] = zclient_base_dir+"1296q24_flalpha.flv";
zguide_slide_direction[10] = "left";
zguide_open_position_x[10] = 0;
zguide_open_position_y[10] = 0;
zguide_clip[11] = zclient_base_dir+"1296q25_flalpha.flv";
zguide_slide_direction[11] = "left";
zguide_open_position_x[11] = 0;
zguide_open_position_y[11] = 0;


//////////////////////////
///end of zguide configs///
//////////////////////////

//////////////////////////
///start of zqanda configs///
//////////////////////////
var zqanda_transcript=1;
var zqanda_transcript_text=new Array();
zqanda_transcript_text[0]="Complete the U.S. Passport Application available in our Office or at www.travel.state.gov.  Apply in person at our acceptance facility located at 3900 Main Street, Riverside, City Hall, on the Third Floor.  Provide photo identification, proof of citizenship, two identical photographs meeting Passport Services requirements or we can take the photographs, and pay all appropriate fees.  Find a complete listing of the fees on this page. ";
zqanda_transcript_text[1]="Both parents must consent and accompany minors under the age of 16 to our acceptance facility located at 3900 Main Street, Riverside, City Hall, on the Third Floor.  Minors 16 and 17 years old may apply without a parent present under certain conditions.  Contact our Office Monday through Friday between the hours of 8 a.m. to 5 p.m. at (951) 826-5557 for more information.";
zqanda_transcript_text[2]="Passports books are required for all international air travel.  Beginning June 1, 2009, U.S. citizens traveling by land or sea entering the United States will be required to present a passport, passport card, or Western Hemisphere Travel Initiative compliant document.  Visit www.travel.state.gov for complete details of the initiative. ";

zqanda_transcript_text[3]="Use the passport card for land and sea travel between the United States and Canada, Mexico, Bermuda, and the Caribbean region.  The passport card is not valid for international air travel. ";
zqanda_transcript_text[4]="Pay passport book, card, and/or expedite fees by check or money order payable to Passport Services.  Submit execution and photo fees by cash, check, or money order payable to The City of Riverside.  Electronic payments such as Visa, MasterCard, or American Express are not accepted forms of payment.  Find a complete listing of the fees on this page.  ";
zqanda_transcript_text[5]="Additional information on proof of citizenship requirements, acceptable forms of identification, lost or stolen passports, visas, travel warnings, and Western Hemisphere Travel Initiative, or to download forms, track submitted applications, and much more, visit www.travel.state.gov. ";

var zqanda_icon_width=125;
var zqanda_icon_height=89;

var zqanda_icon=zclient_base_dir+'qandaicon.png';
var zqanda_icon_highlighted=zclient_base_dir+'qandaicon_h.png';
var zqanda_icon_close=zclient_base_dir+'qandaicon_c.png';
var zqanda_clip_names = new Array();
var zqanda_clip_text= new Array();
zqanda_clip_names[0] = zclient_base_dir+"1296q2_flalpha.flv";
zqanda_clip_text[0] = "How do I obtain a passport?";
zqanda_clip_names[1] = zclient_base_dir+"1296q3_flalpha.flv";
zqanda_clip_text[1] = "How do I obtain a passport for a minor?";
zqanda_clip_names[2] = zclient_base_dir+"1296q4_flalpha.flv";
zqanda_clip_text[2] = "When does the Western Hemisphere Travel Initiative take effect?";
zqanda_clip_names[3] = zclient_base_dir+"1296q5_flalpha.flv";
zqanda_clip_text[3] = "What are the uses of a passport card?";
zqanda_clip_names[4] = zclient_base_dir+"1296q6_flalpha.flv";
zqanda_clip_text[4] = "What type of payment may I use?";
zqanda_clip_names[5] = zclient_base_dir+"1296q7_flalpha.flv";
zqanda_clip_text[5] = "Where do I get more information?";

var zqanda_scrolling=1;
var zqanda_open_position_x=0;
var zqanda_open_position_y=0;

var zqanda_slide_direction = 'left';

var zqanda_initial_clip = zclient_base_dir+'1296wel_flalpha.flv';

var zqanda_loop_clip1 = zclient_base_dir+'1296stand_flalpha.flv';
var zqanda_loop_clip2 = zclient_base_dir+'1296stand2_flalpha.flv';

var zqanda_occasional_clip1 = zclient_base_dir+'1296tap_flalpha.flv';
var zqanda_probability1=4;

var zqanda_occasional_clip2 = zclient_base_dir+'_flalpha.flv';
var zqanda_probability2=0;

var zqanda_occasional_clip3 = zclient_base_dir+'_flalpha.flv';
var zqanda_probability3=0;

var zqanda_occasional_clip4 = zclient_base_dir+'_flalpha.flv';
var zqanda_probability4=0;

var zqanda_occasional_clip5 = zclient_base_dir+'_flalpha.flv';
var zqanda_probability5=0;




//////////////////////////
///end of zqanda configs///
//////////////////////////

var tracking_pnotes_id='w3w5z9p71';var zqanda_autocenter=zauto_center;var ztalk_autocenter=zauto_center;var zview_autocenter=zauto_center;var zguide_autocenter=zauto_center;var zqanda_url_autoopen=false;var ztalk_url_autoopen=false;var zview_url_autoopen=false;var zguide_url_autoopen=false;var zguide_autocenter0=zauto_center;var zguide_autocenter1=zauto_center;var zguide_autocenter2=zauto_center;var zguide_autocenter3=zauto_center;var zguide_autocenter4=zauto_center;var zguide_autocenter5=zauto_center;var zguide_autocenter6=zauto_center;var zguide_autocenter7=zauto_center;var zguide_autocenter8=zauto_center;var zguide_autocenter9=zauto_center;var zguide_autocenter10=zauto_center;var zguide_autocenter11=zauto_center;var zguide_autocenter12=zauto_center;var zguide_autocenter13=zauto_center;var zguide_autocenter14=zauto_center;var zguide_autocenter15=zauto_center;var zguide_autocenter16=zauto_center;var zguide_autocenter17=zauto_center;var zguide_autocenter18=zauto_center;var zguide_autocenter19=zauto_center;/*  Prototype JavaScript framework, version 1.5.0
 *  (c) 2005-2007 Sam Stephenson
 *
 *  Prototype is freely distributable under the terms of an MIT-style license.
 *  For details, see the Prototype web site: http://prototype.conio.net/
 *
/*--------------------------------------------------------------------------*/

var Prototype = {
  Version: '1.5.0',
  BrowserFeatures: {
    XPath: !!document.evaluate
  },

  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
  emptyFunction: function() {},
  K: function(x) { return x }
}

var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

var Abstract = new Object();

Object.extend = function(destination, source) {
  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}

Object.extend(Object, {
  inspect: function(object) {
    try {
      if (object === undefined) return 'undefined';
      if (object === null) return 'null';
      return object.inspect ? object.inspect() : object.toString();
    } catch (e) {
      if (e instanceof RangeError) return '...';
      throw e;
    }
  },

  keys: function(object) {
    var keys = [];
    for (var property in object)
      keys.push(property);
    return keys;
  },

  values: function(object) {
    var values = [];
    for (var property in object)
      values.push(object[property]);
    return values;
  },

  clone: function(object) {
    return Object.extend({}, object);
  }
});

Function.prototype.bind = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}

Function.prototype.bindAsEventListener = function(object) {
  var __method = this, args = $A(arguments), object = args.shift();
  return function(event) {
    return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
  }
}

Object.extend(Number.prototype, {
  toColorPart: function() {
    var digits = this.toString(16);
    if (this < 16) return '0' + digits;
    return digits;
  },

  succ: function() {
    return this + 1;
  },

  times: function(iterator) {
    $R(0, this, true).each(iterator);
    return this;
  }
});

var Try = {
  these: function() {
    var returnValue;

    for (var i = 0, length = arguments.length; i < length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    return returnValue;
  }
}

/*--------------------------------------------------------------------------*/

var PeriodicalExecuter = Class.create();
PeriodicalExecuter.prototype = {
  initialize: function(callback, frequency) {
    this.callback = callback;
    this.frequency = frequency;
    this.currentlyExecuting = false;

    this.registerCallback();
  },

  registerCallback: function() {
    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  },

  stop: function() {
    if (!this.timer) return;
    clearInterval(this.timer);
    this.timer = null;
  },

  onTimerEvent: function() {
    if (!this.currentlyExecuting) {
      try {
        this.currentlyExecuting = true;
        this.callback(this);
      } finally {
        this.currentlyExecuting = false;
      }
    }
  }
}
String.interpret = function(value){
  return value == null ? '' : String(value);
}

Object.extend(String.prototype, {
  gsub: function(pattern, replacement) {
    var result = '', source = this, match;
    replacement = arguments.callee.prepareReplacement(replacement);

    while (source.length > 0) {
      if (match = source.match(pattern)) {
        result += source.slice(0, match.index);
        result += String.interpret(replacement(match));
        source  = source.slice(match.index + match[0].length);
      } else {
        result += source, source = '';
      }
    }
    return result;
  },

  sub: function(pattern, replacement, count) {
    replacement = this.gsub.prepareReplacement(replacement);
    count = count === undefined ? 1 : count;

    return this.gsub(pattern, function(match) {
      if (--count < 0) return match[0];
      return replacement(match);
    });
  },

  scan: function(pattern, iterator) {
    this.gsub(pattern, iterator);
    return this;
  },

  truncate: function(length, truncation) {
    length = length || 30;
    truncation = truncation === undefined ? '...' : truncation;
    return this.length > length ?
      this.slice(0, length - truncation.length) + truncation : this;
  },

  strip: function() {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
  },

  stripTags: function() {
    return this.replace(/<\/?[^>]+>/gi, '');
  },

  stripScripts: function() {
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
  },

  extractScripts: function() {
    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
    return (this.match(matchAll) || []).map(function(scriptTag) {
      return (scriptTag.match(matchOne) || ['', ''])[1];
    });
  },

  evalScripts: function() {
    return this.extractScripts().map(function(script) { return eval(script) });
  },

  escapeHTML: function() {
    var div = document.createElement('div');
    var text = document.createTextNode(this);
    div.appendChild(text);
    return div.innerHTML;
  },

  unescapeHTML: function() {
    var div = document.createElement('div');
    div.innerHTML = this.stripTags();
    return div.childNodes[0] ? (div.childNodes.length > 1 ?
      $A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) :
      div.childNodes[0].nodeValue) : '';
  },

  toQueryParams: function(separator) {
    var match = this.strip().match(/([^?#]*)(#.*)?$/);
    if (!match) return {};

    return match[1].split(separator || '&').inject({}, function(hash, pair) {
      if ((pair = pair.split('='))[0]) {
        var name = decodeURIComponent(pair[0]);
        var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;

        if (hash[name] !== undefined) {
          if (hash[name].constructor != Array)
            hash[name] = [hash[name]];
          if (value) hash[name].push(value);
        }
        else hash[name] = value;
      }
      return hash;
    });
  },

  toArray: function() {
    return this.split('');
  },

  succ: function() {
    return this.slice(0, this.length - 1) +
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
  },

  camelize: function() {
    var parts = this.split('-'), len = parts.length;
    if (len == 1) return parts[0];

    var camelized = this.charAt(0) == '-'
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
      : parts[0];

    for (var i = 1; i < len; i++)
      camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);

    return camelized;
  },

  capitalize: function(){
    return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
  },

  underscore: function() {
    return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
  },

  dasherize: function() {
    return this.gsub(/_/,'-');
  },

  inspect: function(useDoubleQuotes) {
    var escapedString = this.replace(/\\/g, '\\\\');
    if (useDoubleQuotes)
      return '"' + escapedString.replace(/"/g, '\\"') + '"';
    else
      return "'" + escapedString.replace(/'/g, '\\\'') + "'";
  }
});

String.prototype.gsub.prepareReplacement = function(replacement) {
  if (typeof replacement == 'function') return replacement;
  var template = new Template(replacement);
  return function(match) { return template.evaluate(match) };
}

String.prototype.parseQuery = String.prototype.toQueryParams;

var Template = Class.create();
Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
Template.prototype = {
  initialize: function(template, pattern) {
    this.template = template.toString();
    this.pattern  = pattern || Template.Pattern;
  },

  evaluate: function(object) {
    return this.template.gsub(this.pattern, function(match) {
      var before = match[1];
      if (before == '\\') return match[2];
      return before + String.interpret(object[match[3]]);
    });
  }
}

var $break    = new Object();
var $continue = new Object();

var Enumerable = {
  each: function(iterator) {
    var index = 0;
    try {
      this._each(function(value) {
        try {
          iterator(value, index++);
        } catch (e) {
          if (e != $continue) throw e;
        }
      });
    } catch (e) {
      if (e != $break) throw e;
    }
    return this;
  },

  eachSlice: function(number, iterator) {
    var index = -number, slices = [], array = this.toArray();
    while ((index += number) < array.length)
      slices.push(array.slice(index, index+number));
    return slices.map(iterator);
  },

  all: function(iterator) {
    var result = true;
    this.each(function(value, index) {
      result = result && !!(iterator || Prototype.K)(value, index);
      if (!result) throw $break;
    });
    return result;
  },

  any: function(iterator) {
    var result = false;
    this.each(function(value, index) {
      if (result = !!(iterator || Prototype.K)(value, index))
        throw $break;
    });
    return result;
  },

  collect: function(iterator) {
    var results = [];
    this.each(function(value, index) {
      results.push((iterator || Prototype.K)(value, index));
    });
    return results;
  },

  detect: function(iterator) {
    var result;
    this.each(function(value, index) {
      if (iterator(value, index)) {
        result = value;
        throw $break;
      }
    });
    return result;
  },

  findAll: function(iterator) {
    var results = [];
    this.each(function(value, index) {
      if (iterator(value, index))
        results.push(value);
    });
    return results;
  },

  grep: function(pattern, iterator) {
    var results = [];
    this.each(function(value, index) {
      var stringValue = value.toString();
      if (stringValue.match(pattern))
        results.push((iterator || Prototype.K)(value, index));
    })
    return results;
  },

  include: function(object) {
    var found = false;
    this.each(function(value) {
      if (value == object) {
        found = true;
        throw $break;
      }
    });
    return found;
  },

  inGroupsOf: function(number, fillWith) {
    fillWith = fillWith === undefined ? null : fillWith;
    return this.eachSlice(number, function(slice) {
      while(slice.length < number) slice.push(fillWith);
      return slice;
    });
  },

  inject: function(memo, iterator) {
    this.each(function(value, index) {
      memo = iterator(memo, value, index);
    });
    return memo;
  },

  invoke: function(method) {
    var args = $A(arguments).slice(1);
    return this.map(function(value) {
      return value[method].apply(value, args);
    });
  },

  max: function(iterator) {
    var result;
    this.each(function(value, index) {
      value = (iterator || Prototype.K)(value, index);
      if (result == undefined || value >= result)
        result = value;
    });
    return result;
  },

  min: function(iterator) {
    var result;
    this.each(function(value, index) {
      value = (iterator || Prototype.K)(value, index);
      if (result == undefined || value < result)
        result = value;
    });
    return result;
  },

  partition: function(iterator) {
    var trues = [], falses = [];
    this.each(function(value, index) {
      ((iterator || Prototype.K)(value, index) ?
        trues : falses).push(value);
    });
    return [trues, falses];
  },

  pluck: function(property) {
    var results = [];
    this.each(function(value, index) {
      results.push(value[property]);
    });
    return results;
  },

  reject: function(iterator) {
    var results = [];
    this.each(function(value, index) {
      if (!iterator(value, index))
        results.push(value);
    });
    return results;
  },

  sortBy: function(iterator) {
    return this.map(function(value, index) {
      return {value: value, criteria: iterator(value, index)};
    }).sort(function(left, right) {
      var a = left.criteria, b = right.criteria;
      return a < b ? -1 : a > b ? 1 : 0;
    }).pluck('value');
  },

  toArray: function() {
    return this.map();
  },

  zip: function() {
    var iterator = Prototype.K, args = $A(arguments);
    if (typeof args.last() == 'function')
      iterator = args.pop();

    var collections = [this].concat(args).map($A);
    return this.map(function(value, index) {
      return iterator(collections.pluck(index));
    });
  },

  size: function() {
    return this.toArray().length;
  },

  inspect: function() {
    return '#<Enumerable:' + this.toArray().inspect() + '>';
  }
}

Object.extend(Enumerable, {
  map:     Enumerable.collect,
  find:    Enumerable.detect,
  select:  Enumerable.findAll,
  member:  Enumerable.include,
  entries: Enumerable.toArray
});
var $A = Array.from = function(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) {
    return iterable.toArray();
  } else {
    var results = [];
    for (var i = 0, length = iterable.length; i < length; i++)
      results.push(iterable[i]);
    return results;
  }
}

Object.extend(Array.prototype, Enumerable);

if (!Array.prototype._reverse)
  Array.prototype._reverse = Array.prototype.reverse;

Object.extend(Array.prototype, {
  _each: function(iterator) {
    for (var i = 0, length = this.length; i < length; i++)
      iterator(this[i]);
  },

  clear: function() {
    this.length = 0;
    return this;
  },

  first: function() {
    return this[0];
  },

  last: function() {
    return this[this.length - 1];
  },

  compact: function() {
    return this.select(function(value) {
      return value != null;
    });
  },

  flatten: function() {
    return this.inject([], function(array, value) {
      return array.concat(value && value.constructor == Array ?
        value.flatten() : [value]);
    });
  },

  without: function() {
    var values = $A(arguments);
    return this.select(function(value) {
      return !values.include(value);
    });
  },

  indexOf: function(object) {
    for (var i = 0, length = this.length; i < length; i++)
      if (this[i] == object) return i;
    return -1;
  },

  reverse: function(inline) {
    return (inline !== false ? this : this.toArray())._reverse();
  },

  reduce: function() {
    return this.length > 1 ? this : this[0];
  },

  uniq: function() {
    return this.inject([], function(array, value) {
      return array.include(value) ? array : array.concat([value]);
    });
  },

  clone: function() {
    return [].concat(this);
  },

  size: function() {
    return this.length;
  },

  inspect: function() {
    return '[' + this.map(Object.inspect).join(', ') + ']';
  }
});

Array.prototype.toArray = Array.prototype.clone;

function $w(string){
  string = string.strip();
  return string ? string.split(/\s+/) : [];
}

if(window.opera){
  Array.prototype.concat = function(){
    var array = [];
    for(var i = 0, length = this.length; i < length; i++) array.push(this[i]);
    for(var i = 0, length = arguments.length; i < length; i++) {
      if(arguments[i].constructor == Array) {
        for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
          array.push(arguments[i][j]);
      } else {
        array.push(arguments[i]);
      }
    }
    return array;
  }
}
var Hash = function(obj) {
  Object.extend(this, obj || {});
};

Object.extend(Hash, {
  toQueryString: function(obj) {
    var parts = [];

	  this.prototype._each.call(obj, function(pair) {
      if (!pair.key) return;

      if (pair.value && pair.value.constructor == Array) {
        var values = pair.value.compact();
        if (values.length < 2) pair.value = values.reduce();
        else {
        	key = encodeURIComponent(pair.key);
          values.each(function(value) {
            value = value != undefined ? encodeURIComponent(value) : '';
            parts.push(key + '=' + encodeURIComponent(value));
          });
          return;
        }
      }
      if (pair.value == undefined) pair[1] = '';
      parts.push(pair.map(encodeURIComponent).join('='));
	  });

    return parts.join('&');
  }
});

Object.extend(Hash.prototype, Enumerable);
Object.extend(Hash.prototype, {
  _each: function(iterator) {
    for (var key in this) {
      var value = this[key];
      if (value && value == Hash.prototype[key]) continue;

      var pair = [key, value];
      pair.key = key;
      pair.value = value;
      iterator(pair);
    }
  },

  keys: function() {
    return this.pluck('key');
  },

  values: function() {
    return this.pluck('value');
  },

  merge: function(hash) {
    return $H(hash).inject(this, function(mergedHash, pair) {
      mergedHash[pair.key] = pair.value;
      return mergedHash;
    });
  },

  remove: function() {
    var result;
    for(var i = 0, length = arguments.length; i < length; i++) {
      var value = this[arguments[i]];
      if (value !== undefined){
        if (result === undefined) result = value;
        else {
          if (result.constructor != Array) result = [result];
          result.push(value)
        }
      }
      delete this[arguments[i]];
    }
    return result;
  },

  toQueryString: function() {
    return Hash.toQueryString(this);
  },

  inspect: function() {
    return '#<Hash:{' + this.map(function(pair) {
      return pair.map(Object.inspect).join(': ');
    }).join(', ') + '}>';
  }
});

function $H(object) {
  if (object && object.constructor == Hash) return object;
  return new Hash(object);
};
ObjectRange = Class.create();
Object.extend(ObjectRange.prototype, Enumerable);
Object.extend(ObjectRange.prototype, {
  initialize: function(start, end, exclusive) {
    this.start = start;
    this.end = end;
    this.exclusive = exclusive;
  },

  _each: function(iterator) {
    var value = this.start;
    while (this.include(value)) {
      iterator(value);
      value = value.succ();
    }
  },

  include: function(value) {
    if (value < this.start)
      return false;
    if (this.exclusive)
      return value < this.end;
    return value <= this.end;
  }
});

var $R = function(start, end, exclusive) {
  return new ObjectRange(start, end, exclusive);
}

var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
    ) || false;
  },

  activeRequestCount: 0
}

Ajax.Responders = {
  responders: [],

  _each: function(iterator) {
    this.responders._each(iterator);
  },

  register: function(responder) {
    if (!this.include(responder))
      this.responders.push(responder);
  },

  unregister: function(responder) {
    this.responders = this.responders.without(responder);
  },

  dispatch: function(callback, request, transport, json) {
    this.each(function(responder) {
      if (typeof responder[callback] == 'function') {
        try {
          responder[callback].apply(responder, [request, transport, json]);
        } catch (e) {}
      }
    });
  }
};

Object.extend(Ajax.Responders, Enumerable);

Ajax.Responders.register({
  onCreate: function() {
    Ajax.activeRequestCount++;
  },
  onComplete: function() {
    Ajax.activeRequestCount--;
  }
});

Ajax.Base = function() {};
Ajax.Base.prototype = {
  setOptions: function(options) {
    this.options = {
      method:       'post',
      asynchronous: true,
      contentType:  'application/x-www-form-urlencoded',
      encoding:     'UTF-8',
      parameters:   ''
    }
    Object.extend(this.options, options || {});

    this.options.method = this.options.method.toLowerCase();
    if (typeof this.options.parameters == 'string')
      this.options.parameters = this.options.parameters.toQueryParams();
  }
}

Ajax.Request = Class.create();
Ajax.Request.Events =
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
  _complete: false,

  initialize: function(url, options) {
    this.transport = Ajax.getTransport();
    this.setOptions(options);
    this.request(url);
  },

  request: function(url) {
    this.url = url;
    this.method = this.options.method;
    var params = this.options.parameters;

    if (!['get', 'post'].include(this.method)) {
      // simulate other verbs over post
      params['_method'] = this.method;
      this.method = 'post';
    }

    params = Hash.toQueryString(params);
    if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='

    // when GET, append parameters to URL
    if (this.method == 'get' && params)
      this.url += (this.url.indexOf('?') > -1 ? '&' : '?') + params;

    try {
      Ajax.Responders.dispatch('onCreate', this, this.transport);

      this.transport.open(this.method.toUpperCase(), this.url,
        this.options.asynchronous);

      if (this.options.asynchronous)
        setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);

      this.transport.onreadystatechange = this.onStateChange.bind(this);
      this.setRequestHeaders();

      var body = this.method == 'post' ? (this.options.postBody || params) : null;

      this.transport.send(body);

      /* Force Firefox to handle ready state 4 for synchronous requests */
      if (!this.options.asynchronous && this.transport.overrideMimeType)
        this.onStateChange();

    }
    catch (e) {
      this.dispatchException(e);
    }
  },

  onStateChange: function() {
    var readyState = this.transport.readyState;
    if (readyState > 1 && !((readyState == 4) && this._complete))
      this.respondToReadyState(this.transport.readyState);
  },

  setRequestHeaders: function() {
    var headers = {
      'X-Requested-With': 'XMLHttpRequest',
      'X-Prototype-Version': Prototype.Version,
      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
    };

    if (this.method == 'post') {
      headers['Content-type'] = this.options.contentType +
        (this.options.encoding ? '; charset=' + this.options.encoding : '');

      /* Force "Connection: close" for older Mozilla browsers to work
       * around a bug where XMLHttpRequest sends an incorrect
       * Content-length header. See Mozilla Bugzilla #246651.
       */
      if (this.transport.overrideMimeType &&
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
            headers['Connection'] = 'close';
    }

    // user-defined headers
    if (typeof this.options.requestHeaders == 'object') {
      var extras = this.options.requestHeaders;

      if (typeof extras.push == 'function')
        for (var i = 0, length = extras.length; i < length; i += 2)
          headers[extras[i]] = extras[i+1];
      else
        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
    }

    for (var name in headers)
      this.transport.setRequestHeader(name, headers[name]);
  },

  success: function() {
    return !this.transport.status
        || (this.transport.status >= 200 && this.transport.status < 300);
  },

  respondToReadyState: function(readyState) {
    var state = Ajax.Request.Events[readyState];
    var transport = this.transport, json = this.evalJSON();

    if (state == 'Complete') {
      try {
        this._complete = true;
        (this.options['on' + this.transport.status]
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
         || Prototype.emptyFunction)(transport, json);
      } catch (e) {
        this.dispatchException(e);
      }

      if ((this.getHeader('Content-type') || 'text/javascript').strip().
        match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
          this.evalResponse();
    }

    try {
      (this.options['on' + state] || Prototype.emptyFunction)(transport, json);
      Ajax.Responders.dispatch('on' + state, this, transport, json);
    } catch (e) {
      this.dispatchException(e);
    }

    if (state == 'Complete') {
      // avoid memory leak in MSIE: clean up
      this.transport.onreadystatechange = Prototype.emptyFunction;
    }
  },

  getHeader: function(name) {
    try {
      return this.transport.getResponseHeader(name);
    } catch (e) { return null }
  },

  evalJSON: function() {
    try {
      var json = this.getHeader('X-JSON');
      return json ? eval('(' + json + ')') : null;
    } catch (e) { return null }
  },

  evalResponse: function() {
    try {
      return eval(this.transport.responseText);
    } catch (e) {
      this.dispatchException(e);
    }
  },

  dispatchException: function(exception) {
    (this.options.onException || Prototype.emptyFunction)(this, exception);
    Ajax.Responders.dispatch('onException', this, exception);
  }
});

Ajax.Updater = Class.create();

Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
  initialize: function(container, url, options) {
    this.container = {
      success: (container.success || container),
      failure: (container.failure || (container.success ? null : container))
    }

    this.transport = Ajax.getTransport();
    this.setOptions(options);

    var onComplete = this.options.onComplete || Prototype.emptyFunction;
    this.options.onComplete = (function(transport, param) {
      this.updateContent();
      onComplete(transport, param);
    }).bind(this);

    this.request(url);
  },

  updateContent: function() {
    var receiver = this.container[this.success() ? 'success' : 'failure'];
    var response = this.transport.responseText;

    if (!this.options.evalScripts) response = response.stripScripts();

    if (receiver = $(receiver)) {
      if (this.options.insertion)
        new this.options.insertion(receiver, response);
      else
        receiver.update(response);
    }

    if (this.success()) {
      if (this.onComplete)
        setTimeout(this.onComplete.bind(this), 10);
    }
  }
});

Ajax.PeriodicalUpdater = Class.create();
Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
  initialize: function(container, url, options) {
    this.setOptions(options);
    this.onComplete = this.options.onComplete;

    this.frequency = (this.options.frequency || 2);
    this.decay = (this.options.decay || 1);

    this.updater = {};
    this.container = container;
    this.url = url;

    this.start();
  },

  start: function() {
    this.options.onComplete = this.updateComplete.bind(this);
    this.onTimerEvent();
  },

  stop: function() {
    this.updater.options.onComplete = undefined;
    clearTimeout(this.timer);
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
  },

  updateComplete: function(request) {
    if (this.options.decay) {
      this.decay = (request.responseText == this.lastText ?
        this.decay * this.options.decay : 1);

      this.lastText = request.responseText;
    }
    this.timer = setTimeout(this.onTimerEvent.bind(this),
      this.decay * this.frequency * 1000);
  },

  onTimerEvent: function() {
    this.updater = new Ajax.Updater(this.container, this.url, this.options);
  }
});
function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (typeof element == 'string')
    element = document.getElementById(element);
  return Element.extend(element);
}

if (Prototype.BrowserFeatures.XPath) {
  document._getElementsByXPath = function(expression, parentElement) {
    var results = [];
    var query = document.evaluate(expression, $(parentElement) || document,
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0, length = query.snapshotLength; i < length; i++)
      results.push(query.snapshotItem(i));
    return results;
  };
}

document.getElementsByClassName = function(className, parentElement) {
  if (Prototype.BrowserFeatures.XPath) {
    var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
    return document._getElementsByXPath(q, parentElement);
  } else {
    var children = ($(parentElement) || document.body).getElementsByTagName('*');
    var elements = [], child;
    for (var i = 0, length = children.length; i < length; i++) {
      child = children[i];
      if (Element.hasClassName(child, className))
        elements.push(Element.extend(child));
    }
    return elements;
  }
};

/*--------------------------------------------------------------------------*/

if (!window.Element)
  var Element = new Object();

Element.extend = function(element) {
  if (!element || _nativeExtensions || element.nodeType == 3) return element;

  if (!element._extended && element.tagName && element != window) {
    var methods = Object.clone(Element.Methods), cache = Element.extend.cache;

    if (element.tagName == 'FORM')
      Object.extend(methods, Form.Methods);
    if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
      Object.extend(methods, Form.Element.Methods);

    Object.extend(methods, Element.Methods.Simulated);

    for (var property in methods) {
      var value = methods[property];
      if (typeof value == 'function' && !(property in element))
        element[property] = cache.findOrStore(value);
    }
  }

  element._extended = true;
  return element;
};

Element.extend.cache = {
  findOrStore: function(value) {
    return this[value] = this[value] || function() {
      return value.apply(null, [this].concat($A(arguments)));
    }
  }
};

Element.Methods = {
  visible: function(element) {
    return $(element).style.display != 'none';
  },

  toggle: function(element) {
    element = $(element);
    Element[Element.visible(element) ? 'hide' : 'show'](element);
    return element;
  },

  hide: function(element) {
    $(element).style.display = 'none';
    return element;
  },

  show: function(element) {
    $(element).style.display = '';
    return element;
  },

  remove: function(element) {
    element = $(element);
    element.parentNode.removeChild(element);
    return element;
  },

  update: function(element, html) {
    html = typeof html == 'undefined' ? '' : html.toString();
    $(element).innerHTML = html.stripScripts();
    setTimeout(function() {html.evalScripts()}, 10);
    return element;
  },

  replace: function(element, html) {
    element = $(element);
    html = typeof html == 'undefined' ? '' : html.toString();
    if (element.outerHTML) {
      element.outerHTML = html.stripScripts();
    } else {
      var range = element.ownerDocument.createRange();
      range.selectNodeContents(element);
      element.parentNode.replaceChild(
        range.createContextualFragment(html.stripScripts()), element);
    }
    setTimeout(function() {html.evalScripts()}, 10);
    return element;
  },

  inspect: function(element) {
    element = $(element);
    var result = '<' + element.tagName.toLowerCase();
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
      var property = pair.first(), attribute = pair.last();
      var value = (element[property] || '').toString();
      if (value) result += ' ' + attribute + '=' + value.inspect(true);
    });
    return result + '>';
  },

  recursivelyCollect: function(element, property) {
    element = $(element);
    var elements = [];
    while (element = element[property])
      if (element.nodeType == 1)
        elements.push(Element.extend(element));
    return elements;
  },

  ancestors: function(element) {
    return $(element).recursivelyCollect('parentNode');
  },

  descendants: function(element) {
    return $A($(element).getElementsByTagName('*'));
  },

  immediateDescendants: function(element) {
    if (!(element = $(element).firstChild)) return [];
    while (element && element.nodeType != 1) element = element.nextSibling;
    if (element) return [element].concat($(element).nextSiblings());
    return [];
  },

  previousSiblings: function(element) {
    return $(element).recursivelyCollect('previousSibling');
  },

  nextSiblings: function(element) {
    return $(element).recursivelyCollect('nextSibling');
  },

  siblings: function(element) {
    element = $(element);
    return element.previousSiblings().reverse().concat(element.nextSiblings());
  },

  match: function(element, selector) {
    if (typeof selector == 'string')
      selector = new Selector(selector);
    return selector.match($(element));
  },

  up: function(element, expression, index) {
    return Selector.findElement($(element).ancestors(), expression, index);
  },

  down: function(element, expression, index) {
    return Selector.findElement($(element).descendants(), expression, index);
  },

  previous: function(element, expression, index) {
    return Selector.findElement($(element).previousSiblings(), expression, index);
  },

  next: function(element, expression, index) {
    return Selector.findElement($(element).nextSiblings(), expression, index);
  },

  getElementsBySelector: function() {
    var args = $A(arguments), element = $(args.shift());
    return Selector.findChildElements(element, args);
  },

  getElementsByClassName: function(element, className) {
    return document.getElementsByClassName(className, element);
  },

  readAttribute: function(element, name) {
    element = $(element);
    if (document.all && !window.opera) {
      var t = Element._attributeTranslations;
      if (t.values[name]) return t.values[name](element, name);
      if (t.names[name])  name = t.names[name];
      var attribute = element.attributes[name];
      if(attribute) return attribute.nodeValue;
    }
    return element.getAttribute(name);
  },

  getHeight: function(element) {
    return $(element).getDimensions().height;
  },

  getWidth: function(element) {
    return $(element).getDimensions().width;
  },

  classNames: function(element) {
    return new Element.ClassNames(element);
  },

  hasClassName: function(element, className) {
    if (!(element = $(element))) return;
    var elementClassName = element.className;
    if (elementClassName.length == 0) return false;
    if (elementClassName == className ||
        elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
      return true;
    return false;
  },

  addClassName: function(element, className) {
    if (!(element = $(element))) return;
    Element.classNames(element).add(className);
    return element;
  },

  removeClassName: function(element, className) {
    if (!(element = $(element))) return;
    Element.classNames(element).remove(className);
    return element;
  },

  toggleClassName: function(element, className) {
    if (!(element = $(element))) return;
    Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className);
    return element;
  },

  observe: function() {
    Event.observe.apply(Event, arguments);
    return $A(arguments).first();
  },

  stopObserving: function() {
    Event.stopObserving.apply(Event, arguments);
    return $A(arguments).first();
  },

  // removes whitespace-only text node children
  cleanWhitespace: function(element) {
    element = $(element);
    var node = element.firstChild;
    while (node) {
      var nextNode = node.nextSibling;
      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
        element.removeChild(node);
      node = nextNode;
    }
    return element;
  },

  empty: function(element) {
    return $(element).innerHTML.match(/^\s*$/);
  },

  descendantOf: function(element, ancestor) {
    element = $(element), ancestor = $(ancestor);
    while (element = element.parentNode)
      if (element == ancestor) return true;
    return false;
  },

  scrollTo: function(element) {
    element = $(element);
    var pos = Position.cumulativeOffset(element);
    window.scrollTo(pos[0], pos[1]);
    return element;
  },

  getStyle: function(element, style) {
    element = $(element);
    if (['float','cssFloat'].include(style))
      style = (typeof element.style.styleFloat != 'undefined' ? 'styleFloat' : 'cssFloat');
    style = style.camelize();
    var value = element.style[style];
    if (!value) {
      if (document.defaultView && document.defaultView.getComputedStyle) {
        var css = document.defaultView.getComputedStyle(element, null);
        value = css ? css[style] : null;
      } else if (element.currentStyle) {
        value = element.currentStyle[style];
      }
    }

    if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none'))
      value = element['offset'+style.capitalize()] + 'px';

    if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
      if (Element.getStyle(element, 'position') == 'static') value = 'auto';
    if(style == 'opacity') {
      if(value) return parseFloat(value);
      if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
        if(value[1]) return parseFloat(value[1]) / 100;
      return 1.0;
    }
    return value == 'auto' ? null : value;
  },

  setStyle: function(element, style) {
    element = $(element);
    for (var name in style) {
      var value = style[name];
      if(name == 'opacity') {
        if (value == 1) {
          value = (/Gecko/.test(navigator.userAgent) &&
            !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0;
          if(/MSIE/.test(navigator.userAgent) && !window.opera)
            element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
        } else if(value === '') {
          if(/MSIE/.test(navigator.userAgent) && !window.opera)
            element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
        } else {
          if(value < 0.00001) value = 0;
          if(/MSIE/.test(navigator.userAgent) && !window.opera)
            element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +
              'alpha(opacity='+value*100+')';
        }
      } else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat';
      element.style[name.camelize()] = value;
    }
    return element;
  },

  getDimensions: function(element) {
    element = $(element);
    var display = $(element).getStyle('display');
    if (display != 'none' && display != null) // Safari bug
      return {width: element.offsetWidth, height: element.offsetHeight};

    // All *Width and *Height properties give 0 on elements with display none,
    // so enable the element temporarily
    var els = element.style;
    var originalVisibility = els.visibility;
    var originalPosition = els.position;
    var originalDisplay = els.display;
    els.visibility = 'hidden';
    els.position = 'absolute';
    els.display = 'block';
    var originalWidth = element.clientWidth;
    var originalHeight = element.clientHeight;
    els.display = originalDisplay;
    els.position = originalPosition;
    els.visibility = originalVisibility;
    return {width: originalWidth, height: originalHeight};
  },

  makePositioned: function(element) {
    element = $(element);
    var pos = Element.getStyle(element, 'position');
    if (pos == 'static' || !pos) {
      element._madePositioned = true;
      element.style.position = 'relative';
      // Opera returns the offset relative to the positioning context, when an
      // element is position relative but top and left have not been defined
      if (window.opera) {
        element.style.top = 0;
        element.style.left = 0;
      }
    }
    return element;
  },

  undoPositioned: function(element) {
    element = $(element);
    if (element._madePositioned) {
      element._madePositioned = undefined;
      element.style.position =
        element.style.top =
        element.style.left =
        element.style.bottom =
        element.style.right = '';
    }
    return element;
  },

  makeClipping: function(element) {
    element = $(element);
    if (element._overflow) return element;
    element._overflow = element.style.overflow || 'auto';
    if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
      element.style.overflow = 'hidden';
    return element;
  },

  undoClipping: function(element) {
    element = $(element);
    if (!element._overflow) return element;
    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
    element._overflow = null;
    return element;
  }
};

Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});

Element._attributeTranslations = {};

Element._attributeTranslations.names = {
  colspan:   "colSpan",
  rowspan:   "rowSpan",
  valign:    "vAlign",
  datetime:  "dateTime",
  accesskey: "accessKey",
  tabindex:  "tabIndex",
  enctype:   "encType",
  maxlength: "maxLength",
  readonly:  "readOnly",
  longdesc:  "longDesc"
};

Element._attributeTranslations.values = {
  _getAttr: function(element, attribute) {
    return element.getAttribute(attribute, 2);
  },

  _flag: function(element, attribute) {
    return $(element).hasAttribute(attribute) ? attribute : null;
  },

  style: function(element) {
    return element.style.cssText.toLowerCase();
  },

  title: function(element) {
    var node = element.getAttributeNode('title');
    return node.specified ? node.nodeValue : null;
  }
};

Object.extend(Element._attributeTranslations.values, {
  href: Element._attributeTranslations.values._getAttr,
  src:  Element._attributeTranslations.values._getAttr,
  disabled: Element._attributeTranslations.values._flag,
  checked:  Element._attributeTranslations.values._flag,
  readonly: Element._attributeTranslations.values._flag,
  multiple: Element._attributeTranslations.values._flag
});

Element.Methods.Simulated = {
  hasAttribute: function(element, attribute) {
    var t = Element._attributeTranslations;
    attribute = t.names[attribute] || attribute;
    return $(element).getAttributeNode(attribute).specified;
  }
};

// IE is missing .innerHTML support for TABLE-related elements
if (document.all && !window.opera){
  Element.Methods.update = function(element, html) {
    element = $(element);
    html = typeof html == 'undefined' ? '' : html.toString();
    var tagName = element.tagName.toUpperCase();
    if (['THEAD','TBODY','TR','TD'].include(tagName)) {
      var div = document.createElement('div');
      switch (tagName) {
        case 'THEAD':
        case 'TBODY':
          div.innerHTML = '<table><tbody>' +  html.stripScripts() + '</tbody></table>';
          depth = 2;
          break;
        case 'TR':
          div.innerHTML = '<table><tbody><tr>' +  html.stripScripts() + '</tr></tbody></table>';
          depth = 3;
          break;
        case 'TD':
          div.innerHTML = '<table><tbody><tr><td>' +  html.stripScripts() + '</td></tr></tbody></table>';
          depth = 4;
      }
      $A(element.childNodes).each(function(node){
        element.removeChild(node)
      });
      depth.times(function(){ div = div.firstChild });

      $A(div.childNodes).each(
        function(node){ element.appendChild(node) });
    } else {
      element.innerHTML = html.stripScripts();
    }
    setTimeout(function() {html.evalScripts()}, 10);
    return element;
  }
};

Object.extend(Element, Element.Methods);

var _nativeExtensions = false;

if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
  ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {
    var className = 'HTML' + tag + 'Element';
    if(window[className]) return;
    var klass = window[className] = {};
    klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;
  });

Element.addMethods = function(methods) {
  Object.extend(Element.Methods, methods || {});

  function copy(methods, destination, onlyIfAbsent) {
    onlyIfAbsent = onlyIfAbsent || false;
    var cache = Element.extend.cache;
    for (var property in methods) {
      var value = methods[property];
      if (!onlyIfAbsent || !(property in destination))
        destination[property] = cache.findOrStore(value);
    }
  }

  if (typeof HTMLElement != 'undefined') {
    copy(Element.Methods, HTMLElement.prototype);
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
    copy(Form.Methods, HTMLFormElement.prototype);
    [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {
      copy(Form.Element.Methods, klass.prototype);
    });
    _nativeExtensions = true;
  }
}

var Toggle = new Object();
Toggle.display = Element.toggle;

/*--------------------------------------------------------------------------*/

Abstract.Insertion = function(adjacency) {
  this.adjacency = adjacency;
}

Abstract.Insertion.prototype = {
  initialize: function(element, content) {
    this.element = $(element);
    this.content = content.stripScripts();

    if (this.adjacency && this.element.insertAdjacentHTML) {
      try {
        this.element.insertAdjacentHTML(this.adjacency, this.content);
      } catch (e) {
        var tagName = this.element.tagName.toUpperCase();
        if (['TBODY', 'TR'].include(tagName)) {
          this.insertContent(this.contentFromAnonymousTable());
        } else {
          throw e;
        }
      }
    } else {
      this.range = this.element.ownerDocument.createRange();
      if (this.initializeRange) this.initializeRange();
      this.insertContent([this.range.createContextualFragment(this.content)]);
    }

    setTimeout(function() {content.evalScripts()}, 10);
  },

  contentFromAnonymousTable: function() {
    var div = document.createElement('div');
    div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
    return $A(div.childNodes[0].childNodes[0].childNodes);
  }
}

var Insertion = new Object();

Insertion.Before = Class.create();
Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
  initializeRange: function() {
    this.range.setStartBefore(this.element);
  },

  insertContent: function(fragments) {
    fragments.each((function(fragment) {
      this.element.parentNode.insertBefore(fragment, this.element);
    }).bind(this));
  }
});

Insertion.Top = Class.create();
Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
  initializeRange: function() {
    this.range.selectNodeContents(this.element);
    this.range.collapse(true);
  },

  insertContent: function(fragments) {
    fragments.reverse(false).each((function(fragment) {
      this.element.insertBefore(fragment, this.element.firstChild);
    }).bind(this));
  }
});

Insertion.Bottom = Class.create();
Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
  initializeRange: function() {
    this.range.selectNodeContents(this.element);
    this.range.collapse(this.element);
  },

  insertContent: function(fragments) {
    fragments.each((function(fragment) {
      this.element.appendChild(fragment);
    }).bind(this));
  }
});

Insertion.After = Class.create();
Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
  initializeRange: function() {
    this.range.setStartAfter(this.element);
  },

  insertContent: function(fragments) {
    fragments.each((function(fragment) {
      this.element.parentNode.insertBefore(fragment,
        this.element.nextSibling);
    }).bind(this));
  }
});

/*--------------------------------------------------------------------------*/

Element.ClassNames = Class.create();
Element.ClassNames.prototype = {
  initialize: function(element) {
    this.element = $(element);
  },

  _each: function(iterator) {
    this.element.className.split(/\s+/).select(function(name) {
      return name.length > 0;
    })._each(iterator);
  },

  set: function(className) {
    this.element.className = className;
  },

  add: function(classNameToAdd) {
    if (this.include(classNameToAdd)) return;
    this.set($A(this).concat(classNameToAdd).join(' '));
  },

  remove: function(classNameToRemove) {
    if (!this.include(classNameToRemove)) return;
    this.set($A(this).without(classNameToRemove).join(' '));
  },

  toString: function() {
    return $A(this).join(' ');
  }
};

Object.extend(Element.ClassNames.prototype, Enumerable);
var Selector = Class.create();
Selector.prototype = {
  initialize: function(expression) {
    this.params = {classNames: []};
    this.expression = expression.toString().strip();
    this.parseExpression();
    this.compileMatcher();
  },

  parseExpression: function() {
    function abort(message) { throw 'Parse error in selector: ' + message; }

    if (this.expression == '')  abort('empty expression');

    var params = this.params, expr = this.expression, match, modifier, clause, rest;
    while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {
      params.attributes = params.attributes || [];
      params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});
      expr = match[1];
    }

    if (expr == '*') return this.params.wildcard = true;

    while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {
      modifier = match[1], clause = match[2], rest = match[3];
      switch (modifier) {
        case '#':       params.id = clause; break;
        case '.':       params.classNames.push(clause); break;
        case '':
        case undefined: params.tagName = clause.toUpperCase(); break;
        default:        abort(expr.inspect());
      }
      expr = rest;
    }

    if (expr.length > 0) abort(expr.inspect());
  },

  buildMatchExpression: function() {
    var params = this.params, conditions = [], clause;

    if (params.wildcard)
      conditions.push('true');
    if (clause = params.id)
      conditions.push('element.readAttribute("id") == ' + clause.inspect());
    if (clause = params.tagName)
      conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
    if ((clause = params.classNames).length > 0)
      for (var i = 0, length = clause.length; i < length; i++)
        conditions.push('element.hasClassName(' + clause[i].inspect() + ')');
    if (clause = params.attributes) {
      clause.each(function(attribute) {
        var value = 'element.readAttribute(' + attribute.name.inspect() + ')';
        var splitValueBy = function(delimiter) {
          return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
        }

        switch (attribute.operator) {
          case '=':       conditions.push(value + ' == ' + attribute.value.inspect()); break;
          case '~=':      conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;
          case '|=':      conditions.push(
                            splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()
                          ); break;
          case '!=':      conditions.push(value + ' != ' + attribute.value.inspect()); break;
          case '':
          case undefined: conditions.push('element.hasAttribute(' + attribute.name.inspect() + ')'); break;
          default:        throw 'Unknown operator ' + attribute.operator + ' in selector';
        }
      });
    }

    return conditions.join(' && ');
  },

  compileMatcher: function() {
    this.match = new Function('element', 'if (!element.tagName) return false; \
      element = $(element); \
      return ' + this.buildMatchExpression());
  },

  findElements: function(scope) {
    var element;

    if (element = $(this.params.id))
      if (this.match(element))
        if (!scope || Element.childOf(element, scope))
          return [element];

    scope = (scope || document).getElementsByTagName(this.params.tagName || '*');

    var results = [];
    for (var i = 0, length = scope.length; i < length; i++)
      if (this.match(element = scope[i]))
        results.push(Element.extend(element));

    return results;
  },

  toString: function() {
    return this.expression;
  }
}

Object.extend(Selector, {
  matchElements: function(elements, expression) {
    var selector = new Selector(expression);
    return elements.select(selector.match.bind(selector)).map(Element.extend);
  },

  findElement: function(elements, expression, index) {
    if (typeof expression == 'number') index = expression, expression = false;
    return Selector.matchElements(elements, expression || '*')[index || 0];
  },

  findChildElements: function(element, expressions) {
    return expressions.map(function(expression) {
      return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr) {
        var selector = new Selector(expr);
        return results.inject([], function(elements, result) {
          return elements.concat(selector.findElements(result || element));
        });
      });
    }).flatten();
  }
});

function $$() {
  return Selector.findChildElements(document, $A(arguments));
}
var Form = {
  reset: function(form) {
    $(form).reset();
    return form;
  },

  serializeElements: function(elements, getHash) {
    var data = elements.inject({}, function(result, element) {
      if (!element.disabled && element.name) {
        var key = element.name, value = $(element).getValue();
        if (value != undefined) {
          if (result[key]) {
            if (result[key].constructor != Array) result[key] = [result[key]];
            result[key].push(value);
          }
          else result[key] = value;
        }
      }
      return result;
    });

    return getHash ? data : Hash.toQueryString(data);
  }
};

Form.Methods = {
  serialize: function(form, getHash) {
    return Form.serializeElements(Form.getElements(form), getHash);
  },

  getElements: function(form) {
    return $A($(form).getElementsByTagName('*')).inject([],
      function(elements, child) {
        if (Form.Element.Serializers[child.tagName.toLowerCase()])
          elements.push(Element.extend(child));
        return elements;
      }
    );
  },

  getInputs: function(form, typeName, name) {
    form = $(form);
    var inputs = form.getElementsByTagName('input');

    if (!typeName && !name) return $A(inputs).map(Element.extend);

    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
      var input = inputs[i];
      if ((typeName && input.type != typeName) || (name && input.name != name))
        continue;
      matchingInputs.push(Element.extend(input));
    }

    return matchingInputs;
  },

  disable: function(form) {
    form = $(form);
    form.getElements().each(function(element) {
      element.blur();
      element.disabled = 'true';
    });
    return form;
  },

  enable: function(form) {
    form = $(form);
    form.getElements().each(function(element) {
      element.disabled = '';
    });
    return form;
  },

  findFirstElement: function(form) {
    return $(form).getElements().find(function(element) {
      return element.type != 'hidden' && !element.disabled &&
        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
    });
  },

  focusFirstElement: function(form) {
    form = $(form);
    form.findFirstElement().activate();
    return form;
  }
}

Object.extend(Form, Form.Methods);

/*--------------------------------------------------------------------------*/

Form.Element = {
  focus: function(element) {
    $(element).focus();
    return element;
  },

  select: function(element) {
    $(element).select();
    return element;
  }
}

Form.Element.Methods = {
  serialize: function(element) {
    element = $(element);
    if (!element.disabled && element.name) {
      var value = element.getValue();
      if (value != undefined) {
        var pair = {};
        pair[element.name] = value;
        return Hash.toQueryString(pair);
      }
    }
    return '';
  },

  getValue: function(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    return Form.Element.Serializers[method](element);
  },

  clear: function(element) {
    $(element).value = '';
    return element;
  },

  present: function(element) {
    return $(element).value != '';
  },

  activate: function(element) {
    element = $(element);
    element.focus();
    if (element.select && ( element.tagName.toLowerCase() != 'input' ||
      !['button', 'reset', 'submit'].include(element.type) ) )
      element.select();
    return element;
  },

  disable: function(element) {
    element = $(element);
    element.disabled = true;
    return element;
  },

  enable: function(element) {
    element = $(element);
    element.blur();
    element.disabled = false;
    return element;
  }
}

Object.extend(Form.Element, Form.Element.Methods);
var Field = Form.Element;
var $F = Form.Element.getValue;

/*--------------------------------------------------------------------------*/

Form.Element.Serializers = {
  input: function(element) {
    switch (element.type.toLowerCase()) {
      case 'checkbox':
      case 'radio':
        return Form.Element.Serializers.inputSelector(element);
      default:
        return Form.Element.Serializers.textarea(element);
    }
  },

  inputSelector: function(element) {
    return element.checked ? element.value : null;
  },

  textarea: function(element) {
    return element.value;
  },

  select: function(element) {
    return this[element.type == 'select-one' ?
      'selectOne' : 'selectMany'](element);
  },

  selectOne: function(element) {
    var index = element.selectedIndex;
    return index >= 0 ? this.optionValue(element.options[index]) : null;
  },

  selectMany: function(element) {
    var values, length = element.length;
    if (!length) return null;

    for (var i = 0, values = []; i < length; i++) {
      var opt = element.options[i];
      if (opt.selected) values.push(this.optionValue(opt));
    }
    return values;
  },

  optionValue: function(opt) {
    // extend element because hasAttribute may not be native
    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
  }
}

/*--------------------------------------------------------------------------*/

Abstract.TimedObserver = function() {}
Abstract.TimedObserver.prototype = {
  initialize: function(element, frequency, callback) {
    this.frequency = frequency;
    this.element   = $(element);
    this.callback  = callback;

    this.lastValue = this.getValue();
    this.registerCallback();
  },

  registerCallback: function() {
    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  },

  onTimerEvent: function() {
    var value = this.getValue();
    var changed = ('string' == typeof this.lastValue && 'string' == typeof value
      ? this.lastValue != value : String(this.lastValue) != String(value));
    if (changed) {
      this.callback(this.element, value);
      this.lastValue = value;
    }
  }
}

Form.Element.Observer = Class.create();
Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.Observer = Class.create();
Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
  getValue: function() {
    return Form.serialize(this.element);
  }
});

/*--------------------------------------------------------------------------*/

Abstract.EventObserver = function() {}
Abstract.EventObserver.prototype = {
  initialize: function(element, callback) {
    this.element  = $(element);
    this.callback = callback;

    this.lastValue = this.getValue();
    if (this.element.tagName.toLowerCase() == 'form')
      this.registerFormCallbacks();
    else
      this.registerCallback(this.element);
  },

  onElementEvent: function() {
    var value = this.getValue();
    if (this.lastValue != value) {
      this.callback(this.element, value);
      this.lastValue = value;
    }
  },

  registerFormCallbacks: function() {
    Form.getElements(this.element).each(this.registerCallback.bind(this));
  },

  registerCallback: function(element) {
    if (element.type) {
      switch (element.type.toLowerCase()) {
        case 'checkbox':
        case 'radio':
          Event.observe(element, 'click', this.onElementEvent.bind(this));
          break;
        default:
          Event.observe(element, 'change', this.onElementEvent.bind(this));
          break;
      }
    }
  }
}

Form.Element.EventObserver = Class.create();
Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.EventObserver = Class.create();
Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
  getValue: function() {
    return Form.serialize(this.element);
  }
});
if (!window.Event) {
  var Event = new Object();
}

Object.extend(Event, {
  KEY_BACKSPACE: 8,
  KEY_TAB:       9,
  KEY_RETURN:   13,
  KEY_ESC:      27,
  KEY_LEFT:     37,
  KEY_UP:       38,
  KEY_RIGHT:    39,
  KEY_DOWN:     40,
  KEY_DELETE:   46,
  KEY_HOME:     36,
  KEY_END:      35,
  KEY_PAGEUP:   33,
  KEY_PAGEDOWN: 34,

  element: function(event) {
    return event.target || event.srcElement;
  },

  isLeftClick: function(event) {
    return (((event.which) && (event.which == 1)) ||
            ((event.button) && (event.button == 1)));
  },

  pointerX: function(event) {
    return event.pageX || (event.clientX +
      (document.documentElement.scrollLeft || document.body.scrollLeft));
  },

  pointerY: function(event) {
    return event.pageY || (event.clientY +
      (document.documentElement.scrollTop || document.body.scrollTop));
  },

  stop: function(event) {
    if (event.preventDefault) {
      event.preventDefault();
      event.stopPropagation();
    } else {
      event.returnValue = false;
      event.cancelBubble = true;
    }
  },

  // find the first node with the given tagName, starting from the
  // node the event was triggered on; traverses the DOM upwards
  findElement: function(event, tagName) {
    var element = Event.element(event);
    while (element.parentNode && (!element.tagName ||
        (element.tagName.toUpperCase() != tagName.toUpperCase())))
      element = element.parentNode;
    return element;
  },

  observers: false,

  _observeAndCache: function(element, name, observer, useCapture) {
    if (!this.observers) this.observers = [];
    if (element.addEventListener) {
      this.observers.push([element, name, observer, useCapture]);
      element.addEventListener(name, observer, useCapture);
    } else if (element.attachEvent) {
      this.observers.push([element, name, observer, useCapture]);
      element.attachEvent('on' + name, observer);
    }
  },

  unloadCache: function() {
    if (!Event.observers) return;
    for (var i = 0, length = Event.observers.length; i < length; i++) {
      Event.stopObserving.apply(this, Event.observers[i]);
      Event.observers[i][0] = null;
    }
    Event.observers = false;
  },

  observe: function(element, name, observer, useCapture) {
    element = $(element);
    useCapture = useCapture || false;

    if (name == 'keypress' &&
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
        || element.attachEvent))
      name = 'keydown';

    Event._observeAndCache(element, name, observer, useCapture);
  },

  stopObserving: function(element, name, observer, useCapture) {
    element = $(element);
    useCapture = useCapture || false;

    if (name == 'keypress' &&
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
        || element.detachEvent))
      name = 'keydown';

    if (element.removeEventListener) {
      element.removeEventListener(name, observer, useCapture);
    } else if (element.detachEvent) {
      try {
        element.detachEvent('on' + name, observer);
      } catch (e) {}
    }
  }
});

/* prevent memory leaks in IE */
if (navigator.appVersion.match(/\bMSIE\b/))
  Event.observe(window, 'unload', Event.unloadCache, false);
var Position = {
  // set to true if needed, warning: firefox performance problems
  // NOT neeeded for page scrolling, only if draggable contained in
  // scrollable elements
  includeScrollOffsets: false,

  // must be called before calling withinIncludingScrolloffset, every time the
  // page is scrolled
  prepare: function() {
    this.deltaX =  window.pageXOffset
                || document.documentElement.scrollLeft
                || document.body.scrollLeft
                || 0;
    this.deltaY =  window.pageYOffset
                || document.documentElement.scrollTop
                || document.body.scrollTop
                || 0;
  },

  realOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.scrollTop  || 0;
      valueL += element.scrollLeft || 0;
      element = element.parentNode;
    } while (element);
    return [valueL, valueT];
  },

  cumulativeOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);
    return [valueL, valueT];
  },

  positionedOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
      if (element) {
        if(element.tagName=='BODY') break;
        var p = Element.getStyle(element, 'position');
        if (p == 'relative' || p == 'absolute') break;
      }
    } while (element);
    return [valueL, valueT];
  },

  offsetParent: function(element) {
    if (element.offsetParent) return element.offsetParent;
    if (element == document.body) return element;

    while ((element = element.parentNode) && element != document.body)
      if (Element.getStyle(element, 'position') != 'static')
        return element;

    return document.body;
  },

  // caches x/y coordinate pair to use with overlap
  within: function(element, x, y) {
    if (this.includeScrollOffsets)
      return this.withinIncludingScrolloffsets(element, x, y);
    this.xcomp = x;
    this.ycomp = y;
    this.offset = this.cumulativeOffset(element);

    return (y >= this.offset[1] &&
            y <  this.offset[1] + element.offsetHeight &&
            x >= this.offset[0] &&
            x <  this.offset[0] + element.offsetWidth);
  },

  withinIncludingScrolloffsets: function(element, x, y) {
    var offsetcache = this.realOffset(element);

    this.xcomp = x + offsetcache[0] - this.deltaX;
    this.ycomp = y + offsetcache[1] - this.deltaY;
    this.offset = this.cumulativeOffset(element);

    return (this.ycomp >= this.offset[1] &&
            this.ycomp <  this.offset[1] + element.offsetHeight &&
            this.xcomp >= this.offset[0] &&
            this.xcomp <  this.offset[0] + element.offsetWidth);
  },

  // within must be called directly before
  overlap: function(mode, element) {
    if (!mode) return 0;
    if (mode == 'vertical')
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
        element.offsetHeight;
    if (mode == 'horizontal')
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
        element.offsetWidth;
  },

  page: function(forElement) {
    var valueT = 0, valueL = 0;

    var element = forElement;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;

      // Safari fix
      if (element.offsetParent==document.body)
        if (Element.getStyle(element,'position')=='absolute') break;

    } while (element = element.offsetParent);

    element = forElement;
    do {
      if (!window.opera || element.tagName=='BODY') {
        valueT -= element.scrollTop  || 0;
        valueL -= element.scrollLeft || 0;
      }
    } while (element = element.parentNode);

    return [valueL, valueT];
  },

  clone: function(source, target) {
    var options = Object.extend({
      setLeft:    true,
      setTop:     true,
      setWidth:   true,
      setHeight:  true,
      offsetTop:  0,
      offsetLeft: 0
    }, arguments[2] || {})

    // find page position of source
    source = $(source);
    var p = Position.page(source);

    // find coordinate system to use
    target = $(target);
    var delta = [0, 0];
    var parent = null;
    // delta [0,0] will do fine with position: fixed elements,
    // position:absolute needs offsetParent deltas
    if (Element.getStyle(target,'position') == 'absolute') {
      parent = Position.offsetParent(target);
      delta = Position.page(parent);
    }

    // correct by body offsets (fixes Safari)
    if (parent == document.body) {
      delta[0] -= document.body.offsetLeft;
      delta[1] -= document.body.offsetTop;
    }

    // set position
    if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
    if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
    if(options.setWidth)  target.style.width = source.offsetWidth + 'px';
    if(options.setHeight) target.style.height = source.offsetHeight + 'px';
  },

  absolutize: function(element) {
    element = $(element);
    if (element.style.position == 'absolute') return;
    Position.prepare();

    var offsets = Position.positionedOffset(element);
    var top     = offsets[1];
    var left    = offsets[0];
    var width   = element.clientWidth;
    var height  = element.clientHeight;

    element._originalLeft   = left - parseFloat(element.style.left  || 0);
    element._originalTop    = top  - parseFloat(element.style.top || 0);
    element._originalWidth  = element.style.width;
    element._originalHeight = element.style.height;

    element.style.position = 'absolute';
    element.style.top    = top + 'px';
    element.style.left   = left + 'px';
    element.style.width  = width + 'px';
    element.style.height = height + 'px';
  },

  relativize: function(element) {
    element = $(element);
    if (element.style.position == 'relative') return;
    Position.prepare();

    element.style.position = 'relative';
    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);

    element.style.top    = top + 'px';
    element.style.left   = left + 'px';
    element.style.height = element._originalHeight;
    element.style.width  = element._originalWidth;
  }
}

// Safari returns margins on body which is incorrect if the child is absolutely
// positioned.  For performance reasons, redefine Position.cumulativeOffset for
// KHTML/WebKit only.
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
  Position.cumulativeOffset = function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      if (element.offsetParent == document.body)
        if (Element.getStyle(element, 'position') == 'absolute') break;

      element = element.offsetParent;
    } while (element);

    return [valueL, valueT];
  }
}

Element.addMethods();// script.aculo.us scriptaculous.js v1.7.0, Fri Jan 19 19:16:36 CET 2007

// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
// 
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
// 
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// For details, see the script.aculo.us web site: http://script.aculo.us/

var Scriptaculous = {
  Version: '1.7.0',
  require: function(libraryName) {
    // inserting via DOM fails in Safari 2.0, so brute force approach
    document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
  },
  load: function() {
    if((typeof Prototype=='undefined') || 
       (typeof Element == 'undefined') || 
       (typeof Element.Methods=='undefined') ||
       parseFloat(Prototype.Version.split(".")[0] + "." +
                  Prototype.Version.split(".")[1]) < 1.5)
       throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");
    
    $A(document.getElementsByTagName("script")).findAll( function(s) {
      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
    }).each( function(s) {
      var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
      var includes = s.src.match(/\?.*load=([a-z,]*)/);
      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each(
       function(include) { Scriptaculous.require(path+include+'.js') });
    });
  }
}

Scriptaculous.load();/**
 * Create a new Exception object.
 * name: The name of the exception.
 * message: The exception message.
 */
function Exception(name, message)
{
    if (name)
        this.name = name;
    if (message)
        this.message = message;
}

/**
 * Set the name of the exception. 
 */
Exception.prototype.setName = function(name)
{
    this.name = name;
}

/**
 * Get the exception's name. 
 */
Exception.prototype.getName = function()
{
    return this.name;
}

/**
 * Set a message on the exception. 
 */
Exception.prototype.setMessage = function(msg)
{
    this.message = msg;
}

/**
 * Get the exception message. 
 */
Exception.prototype.getMessage = function()
{
    return this.message;
}

/**
 * Generates a browser-specific Flash tag. Create a new instance, set whatever
 * properties you need, then call either toString() to get the tag as a string, or
 * call write() to write the tag out.
 */

/**
 * Creates a new instance of the FlashTag.
 * src: The path to the SWF file.
 * width: The width of your Flash content.
 * height: the height of your Flash content.
 */
function FlashTag(src, width, height)
{
    this.src       = src;
    this.width     = width;
    this.height    = height;
    this.version   = '7,0,14,0';
    this.id        = null;
    this.bgcolor   = 'ffffff';
    this.flashVars = null;
}

/**
 * Sets the Flash version used in the Flash tag.
 */
FlashTag.prototype.setVersion = function(v)
{
    this.version = v;
}

/**
 * Sets the ID used in the Flash tag.
 */
FlashTag.prototype.setId = function(id)
{
    this.id = id;
}

/**
 * Sets the background color used in the Flash tag.
 */
FlashTag.prototype.setBgcolor = function(bgc)
{
    this.bgcolor = bgc;
}

/**
 * Sets any variables to be passed into the Flash content. 
 */
FlashTag.prototype.setFlashvars = function(fv)
{
    this.flashVars = fv;
}

/**
 * Get the Flash tag as a string. 
 */
FlashTag.prototype.toString = function()
{
    var ie = (navigator.appName.indexOf ("Microsoft") != -1) ? 1 : 0;
    var flashTag = new String();
    if (ie)
    {
        flashTag += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
        if (this.id != null)
        {
            flashTag += 'id="'+this.id+'" ';
        }
        flashTag += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+this.version+'" ';
        flashTag += 'width="'+this.width+'" ';
        flashTag += 'height="'+this.height+'">';
        flashTag += '<param name="movie" value="'+this.src+'"/>';
        flashTag += '<param name="quality" value="high"/>';
        flashTag += '<param name="bgcolor" value="#'+this.bgcolor+'"/>';
        if (this.flashVars != null)
        {
            flashTag += '<param name="flashvars" value="'+this.flashVars+'"/>';
        }
        flashTag += '</object>';
    }
    else
    {
        flashTag += '<embed src="'+this.src+'" ';
        flashTag += 'quality="high" '; 
        flashTag += 'bgcolor="#'+this.bgcolor+'" ';
        flashTag += 'width="'+this.width+'" ';
        flashTag += 'height="'+this.height+'" ';
        flashTag += 'type="application/x-shockwave-flash" ';
        if (this.flashVars != null)
        {
            flashTag += 'flashvars="'+this.flashVars+'" ';
        }
        if (this.id != null)
        {
            flashTag += 'name="'+this.id+'" ';
        }
        flashTag += 'pluginspage="http://www.macromedia.com/go/getflashplayer">';
        flashTag += '</embed>';
    }
    return flashTag;
}

/**
 * Write the Flash tag out. Pass in a reference to the document to write to. 
 */
FlashTag.prototype.write = function(doc)
{
    doc.write(this.toString());
}

/**
 * The FlashSerializer serializes JavaScript variables of types object, array, string,
 * number, date, boolean, null or undefined into XML. 
 */

/**
 * Create a new instance of the FlashSerializer.
 * useCdata: Whether strings should be treated as character data. If false, strings are simply XML encoded.
 */
function FlashSerializer(useCdata)
{
    this.useCdata = useCdata;
}

/**
 * Serialize an array into a format that can be deserialized in Flash. Supported data types are object,
 * array, string, number, date, boolean, null, and undefined. Returns a string of serialized data.
 */
FlashSerializer.prototype.serialize = function(args)
{
    var qs = new String();

    for (var i = 0; i < args.length; ++i)
    {
        switch(typeof(args[i]))
        {
            case 'undefined':
                qs += 't'+(i)+'=undf';
                break;
            case 'string':
                qs += 't'+(i)+'=str&d'+(i)+'='+escape(args[i]);
                break;
            case 'number':
                qs += 't'+(i)+'=num&d'+(i)+'='+escape(args[i]);
                break;
            case 'boolean':
                qs += 't'+(i)+'=bool&d'+(i)+'='+escape(args[i]);
                break;
            case 'object':
                if (args[i] == null)
                {
                    qs += 't'+(i)+'=null';
                }
                else if (args[i] instanceof Date)
                {
                    qs += 't'+(i)+'=date&d'+(i)+'='+escape(args[i].getTime());
                }
                else // array or object
                {
                    try
                    {
                        qs += 't'+(i)+'=xser&d'+(i)+'='+escape(this._serializeXML(args[i]));
                    }
                    catch (exception)
                    {
                        throw new Exception("FlashSerializationException",
                                            "The following error occurred during complex object serialization: " + exception.getMessage());
                    }
                }
                break;
            default:
                throw new Exception("FlashSerializationException",
                                    "You can only serialize strings, numbers, booleans, dates, objects, arrays, nulls, and undefined.");
        }

        if (i != (args.length - 1))
        {
            qs += '&';
        }
    }

    return qs;
}

/**
 * Private
 */
FlashSerializer.prototype._serializeXML = function(obj)
{
    var doc = new Object();
    doc.xml = '<fp>'; 
    this._serializeNode(obj, doc, null);
    doc.xml += '</fp>'; 
    return doc.xml;
}

/**
 * Private
 */
FlashSerializer.prototype._serializeNode = function(obj, doc, name)
{
    switch(typeof(obj))
    {
        case 'undefined':
            doc.xml += '<undf'+this._addName(name)+'/>';
            break;
        case 'string':
            doc.xml += '<str'+this._addName(name)+'>'+this._escapeXml(obj)+'</str>';
            break;
        case 'number':
            doc.xml += '<num'+this._addName(name)+'>'+obj+'</num>';
            break;
        case 'boolean':
            doc.xml += '<bool'+this._addName(name)+' val="'+obj+'"/>';
            break;
        case 'object':
            if (obj == null)
            {
                doc.xml += '<null'+this._addName(name)+'/>';
            }
            else if (obj instanceof Date)
            {
                doc.xml += '<date'+this._addName(name)+'>'+obj.getTime()+'</date>';
            }
            else if (obj instanceof Array)
            {
                doc.xml += '<array'+this._addName(name)+'>';
                for (var i = 0; i < obj.length; ++i)
                {
                    this._serializeNode(obj[i], doc, null);
                }
                doc.xml += '</array>';
            }
            else
            {
                doc.xml += '<obj'+this._addName(name)+'>';
                for (var n in obj)
                {
                    if (typeof(obj[n]) == 'function')
                        continue;
                    this._serializeNode(obj[n], doc, n);
                }
                doc.xml += '</obj>';
            }
            break;
        default:
            throw new Exception("FlashSerializationException",
                                "You can only serialize strings, numbers, booleans, objects, dates, arrays, nulls and undefined");
            break;
    }
}

/**
 * Private
 */
FlashSerializer.prototype._addName= function(name)
{
    if (name != null)
    {
        return ' name="'+name+'"';
    }
    return '';
}

/**
 * Private
 */
FlashSerializer.prototype._escapeXml = function(str)
{
    if (this.useCdata)
        return '<![CDATA['+str+']]>';
    else
        return str.replace(/&/g,'&amp;').replace(/</g,'&lt;');
}

/**
 * The FlashProxy object is what proxies function calls between JavaScript and Flash.
 * It handles all argument serialization issues.
 */

/**
 * Instantiates a new FlashProxy object. Pass in a uniqueID and the name (including the path)
 * of the Flash proxy SWF. The ID is the same ID that needs to be passed into your Flash content as lcId.
 */
function FlashProxy(uid, proxySwfName)
{
    this.uid = uid;
    this.proxySwfName = proxySwfName;
    this.flashSerializer = new FlashSerializer(false);
}

/**
 * Call a function in your Flash content.  Arguments should be:
 * 1. ActionScript function name to call,
 * 2. any number of additional arguments of type object,
 *    array, string, number, boolean, date, null, or undefined. 
 */
FlashProxy.prototype.call = function()
{

    if (arguments.length == 0)
    {
        throw new Exception("Flash Proxy Exception",
                            "The first argument should be the function name followed by any number of additional arguments.");
    }

    var qs = 'lcId=' + escape(this.uid) + '&functionName=' + escape(arguments[0]);

    if (arguments.length > 1)
    {
        var justArgs = new Array();
        for (var i = 1; i < arguments.length; ++i)
        {
            justArgs.push(arguments[i]);
        }
        qs += ('&' + this.flashSerializer.serialize(justArgs));
    }

    var divName = '_flash_proxy_' + this.uid;
    if(!document.getElementById(divName))
    {
        var newTarget = document.createElement("div");
        newTarget.id = divName;
        document.body.appendChild(newTarget);
    }
    var target = document.getElementById(divName);
    var ft = new FlashTag(this.proxySwfName, 1, 1);
    ft.setVersion('6,0,65,0');
    ft.setFlashvars(qs);
    target.innerHTML = ft.toString();
}

/**
 * This is the function that proxies function calls from Flash to JavaScript.
 * It is called implicitly.
 */
FlashProxy.callJS = function()
{
    var functionToCall = eval(arguments[0]);
    var argArray = new Array();
    for (var i = 1; i < arguments.length; ++i)
    {
        argArray.push(arguments[i]);
    }
    functionToCall.apply(functionToCall, argArray);
}

/**
 * SWFObject v1.4.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
 *   legal reasons.
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}
if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}
if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}
deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!document.getElementById){return;}
this.DETECT_KEY=_b?_b:"detectflash";
this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
this.params=new Object();
this.variables=new Object();
this.attributes=new Array();
if(_1){this.setAttribute("swf",_1);}
if(id){this.setAttribute("id",id);}
if(w){this.setAttribute("width",w);}
if(h){this.setAttribute("height",h);}
if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}
this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
if(c){this.addParam("bgcolor",c);}
var q=_8?_8:"high";
this.addParam("quality",q);
this.setAttribute("useExpressInstall",_7);
this.setAttribute("doExpressInstall",false);
var _d=(_9)?_9:window.location;
this.setAttribute("xiRedirectUrl",_d);
this.setAttribute("redirectUrl","");
if(_a){this.setAttribute("redirectUrl",_a);}};
deconcept.SWFObject.prototype={setAttribute:function(_e,_f){
this.attributes[_e]=_f;
},getAttribute:function(_10){
return this.attributes[_10];
},addParam:function(_11,_12){
this.params[_11]=_12;
},getParams:function(){
return this.params;
},addVariable:function(_13,_14){
this.variables[_13]=_14;
},getVariable:function(_15){
return this.variables[_15];
},getVariables:function(){
return this.variables;
},getVariablePairs:function(){
var _16=new Array();
var key;
var _18=this.getVariables();
for(key in _18){_16.push(key+"="+_18[key]);}
return _16;},getSWFHTML:function(){var _19="";
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
if(this.getAttribute("doExpressInstall")){
this.addVariable("MMplayerType","PlugIn");}
_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";
_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
var _1a=this.getParams();
for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}
var _1c=this.getVariablePairs().join("&");
if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";
}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}
_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";
_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
var _1d=this.getParams();
for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}
var _1f=this.getVariablePairs().join("&");
if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}
return _19;
},write:function(_20){
if(this.getAttribute("useExpressInstall")){
var _21=new deconcept.PlayerVersion([6,0,65]);
if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
this.setAttribute("doExpressInstall",true);
this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
document.title=document.title.slice(0,47)+" - Flash Player Installation";
this.addVariable("MMdoctitle",document.title);}}
if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
var n=(typeof _20=="string")?document.getElementById(_20):_20;
n.innerHTML=this.getSWFHTML();return true;
}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}
return false;}};
deconcept.SWFObjectUtil.getPlayerVersion=function(){
var _23=new deconcept.PlayerVersion([0,0,0]);
if(navigator.plugins&&navigator.mimeTypes.length){
var x=navigator.plugins["Shockwave Flash"];
if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}
}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}
catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}
catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}
catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}
return _23;};
deconcept.PlayerVersion=function(_27){
this.major=_27[0]!=null?parseInt(_27[0]):0;
this.minor=_27[1]!=null?parseInt(_27[1]):0;
this.rev=_27[2]!=null?parseInt(_27[2]):0;
};
deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
if(this.major<fv.major){return false;}
if(this.major>fv.major){return true;}
if(this.minor<fv.minor){return false;}
if(this.minor>fv.minor){return true;}
if(this.rev<fv.rev){
return false;
}return true;};
deconcept.util={getRequestParameter:function(_29){
var q=document.location.search||document.location.hash;
if(q){var _2b=q.substring(1).split("&");
for(var i=0;i<_2b.length;i++){
if(_2b[i].substring(0,_2b[i].indexOf("="))==_29){
return _2b[i].substring((_2b[i].indexOf("=")+1));}}}
return "";}};
deconcept.SWFObjectUtil.cleanupSWFs=function(){if(window.opera||!document.all){return;}
var _2d=document.getElementsByTagName("OBJECT");
for(var i=0;i<_2d.length;i++){_2d[i].style.display="none";for(var x in _2d[i]){
if(typeof _2d[i][x]=="function"){_2d[i][x]=function(){};}}}};
deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};
__flash_savedUnloadHandler=function(){};
if(typeof window.onunload=="function"){
var _30=window.onunload;
window.onunload=function(){
deconcept.SWFObjectUtil.cleanupSWFs();_30();};
}else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}};
if(typeof window.onbeforeunload=="function"){
var oldBeforeUnload=window.onbeforeunload;
window.onbeforeunload=function(){
deconcept.SWFObjectUtil.prepUnload();
oldBeforeUnload();};
}else{window.onbeforeunload=deconcept.SWFObjectUtil.prepUnload;}
if(Array.prototype.push==null){
Array.prototype.push=function(_31){
this[this.length]=_31;
return this.length;};}
var getQueryParamValue=deconcept.util.getRequestParameter;
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;
// script.aculo.us effects.js v1.7.0, Fri Jan 19 19:16:36 CET 2007

// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
// 
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/ 

// converts rgb() and #xxx to #xxxxxx format,  
// returns self (or first argument) if not convertable  
String.prototype.parseColor = function() {  
  var color = '#';
  if(this.slice(0,4) == 'rgb(') {  
    var cols = this.slice(4,this.length-1).split(',');  
    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);  
  } else {  
    if(this.slice(0,1) == '#') {  
      if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();  
      if(this.length==7) color = this.toLowerCase();  
    }  
  }  
  return(color.length==7 ? color : (arguments[0] || this));  
}

/*--------------------------------------------------------------------------*/

Element.collectTextNodes = function(element) {  
  return $A($(element).childNodes).collect( function(node) {
    return (node.nodeType==3 ? node.nodeValue : 
      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
  }).flatten().join('');
}

Element.collectTextNodesIgnoreClass = function(element, className) {  
  return $A($(element).childNodes).collect( function(node) {
    return (node.nodeType==3 ? node.nodeValue : 
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? 
        Element.collectTextNodesIgnoreClass(node, className) : ''));
  }).flatten().join('');
}

Element.setContentZoom = function(element, percent) {
  element = $(element);  
  element.setStyle({fontSize: (percent/100) + 'em'});   
  if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
  return element;
}

Element.getOpacity = function(element){
  return $(element).getStyle('opacity');
}

Element.setOpacity = function(element, value){
  return $(element).setStyle({opacity:value});
}

Element.getInlineOpacity = function(element){
  return $(element).style.opacity || '';
}

Element.forceRerendering = function(element) {
  try {
    element = $(element);
    var n = document.createTextNode(' ');
    element.appendChild(n);
    element.removeChild(n);
  } catch(e) { }
};

/*--------------------------------------------------------------------------*/

Array.prototype.call = function() {
  var args = arguments;
  this.each(function(f){ f.apply(this, args) });
}

/*--------------------------------------------------------------------------*/

var Effect = {
  _elementDoesNotExistError: {
    name: 'ElementDoesNotExistError',
    message: 'The specified DOM element does not exist, but is required for this effect to operate'
  },
  tagifyText: function(element) {
    if(typeof Builder == 'undefined')
      throw("Effect.tagifyText requires including script.aculo.us' builder.js library");
      
    var tagifyStyle = 'position:relative';
    if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle += ';zoom:1';
    
    element = $(element);
    $A(element.childNodes).each( function(child) {
      if(child.nodeType==3) {
        child.nodeValue.toArray().each( function(character) {
          element.insertBefore(
            Builder.node('span',{style: tagifyStyle},
              character == ' ' ? String.fromCharCode(160) : character), 
              child);
        });
        Element.remove(child);
      }
    });
  },
  multiple: function(element, effect) {
    var elements;
    if(((typeof element == 'object') || 
        (typeof element == 'function')) && 
       (element.length))
      elements = element;
    else
      elements = $(element).childNodes;
      
    var options = Object.extend({
      speed: 0.1,
      delay: 0.0
    }, arguments[2] || {});
    var masterDelay = options.delay;

    $A(elements).each( function(element, index) {
      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
    });
  },
  PAIRS: {
    'slide':  ['SlideDown','SlideUp'],
    'blind':  ['BlindDown','BlindUp'],
    'appear': ['Appear','Fade']
  },
  toggle: function(element, effect) {
    element = $(element);
    effect = (effect || 'appear').toLowerCase();
    var options = Object.extend({
      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
    }, arguments[2] || {});
    Effect[element.visible() ? 
      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
  }
};

var Effect2 = Effect; // deprecated

/* ------------- transitions ------------- */

Effect.Transitions = {
  linear: Prototype.K,
  sinoidal: function(pos) {
    return (-Math.cos(pos*Math.PI)/2) + 0.5;
  },
  reverse: function(pos) {
    return 1-pos;
  },
  flicker: function(pos) {
    return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
  },
  wobble: function(pos) {
    return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
  },
  pulse: function(pos, pulses) { 
    pulses = pulses || 5; 
    return (
      Math.round((pos % (1/pulses)) * pulses) == 0 ? 
            ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : 
        1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2))
      );
  },
  none: function(pos) {
    return 0;
  },
  full: function(pos) {
    return 1;
  }
};

/* ------------- core effects ------------- */

Effect.ScopedQueue = Class.create();
Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {
  initialize: function() {
    this.effects  = [];
    this.interval = null;
  },
  _each: function(iterator) {
    this.effects._each(iterator);
  },
  add: function(effect) {
    var timestamp = new Date().getTime();
    
    var position = (typeof effect.options.queue == 'string') ? 
      effect.options.queue : effect.options.queue.position;
    
    switch(position) {
      case 'front':
        // move unstarted effects after this effect  
        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
            e.startOn  += effect.finishOn;
            e.finishOn += effect.finishOn;
          });
        break;
      case 'with-last':
        timestamp = this.effects.pluck('startOn').max() || timestamp;
        break;
      case 'end':
        // start effect after last queued effect has finished
        timestamp = this.effects.pluck('finishOn').max() || timestamp;
        break;
    }
    
    effect.startOn  += timestamp;
    effect.finishOn += timestamp;

    if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
      this.effects.push(effect);
    
    if(!this.interval) 
      this.interval = setInterval(this.loop.bind(this), 15);
  },
  remove: function(effect) {
    this.effects = this.effects.reject(function(e) { return e==effect });
    if(this.effects.length == 0) {
      clearInterval(this.interval);
      this.interval = null;
    }
  },
  loop: function() {
    var timePos = new Date().getTime();
    for(var i=0, len=this.effects.length;i<len;i++) 
      if(this.effects[i]) this.effects[i].loop(timePos);
  }
});

Effect.Queues = {
  instances: $H(),
  get: function(queueName) {
    if(typeof queueName != 'string') return queueName;
    
    if(!this.instances[queueName])
      this.instances[queueName] = new Effect.ScopedQueue();
      
    return this.instances[queueName];
  }
}
Effect.Queue = Effect.Queues.get('global');

Effect.DefaultOptions = {
  transition: Effect.Transitions.sinoidal,
  duration:   1.0,   // seconds
  fps:        60.0,  // max. 60fps due to Effect.Queue implementation
  sync:       false, // true for combining
  from:       0.0,
  to:         1.0,
  delay:      0.0,
  queue:      'parallel'
}

Effect.Base = function() {};
Effect.Base.prototype = {
  position: null,
  start: function(options) {
    this.options      = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});
    this.currentFrame = 0;
    this.state        = 'idle';
    this.startOn      = this.options.delay*1000;
    this.finishOn     = this.startOn + (this.options.duration*1000);
    this.event('beforeStart');
    if(!this.options.sync)
      Effect.Queues.get(typeof this.options.queue == 'string' ? 
        'global' : this.options.queue.scope).add(this);
  },
  loop: function(timePos) {
    if(timePos >= this.startOn) {
      if(timePos >= this.finishOn) {
        this.render(1.0);
        this.cancel();
        this.event('beforeFinish');
        if(this.finish) this.finish(); 
        this.event('afterFinish');
        return;  
      }
      var pos   = (timePos - this.startOn) / (this.finishOn - this.startOn);
      var frame = Math.round(pos * this.options.fps * this.options.duration);
      if(frame > this.currentFrame) {
        this.render(pos);
        this.currentFrame = frame;
      }
    }
  },
  render: function(pos) {
    if(this.state == 'idle') {
      this.state = 'running';
      this.event('beforeSetup');
      if(this.setup) this.setup();
      this.event('afterSetup');
    }
    if(this.state == 'running') {
      if(this.options.transition) pos = this.options.transition(pos);
      pos *= (this.options.to-this.options.from);
      pos += this.options.from;
      this.position = pos;
      this.event('beforeUpdate');
      if(this.update) this.update(pos);
      this.event('afterUpdate');
    }
  },
  cancel: function() {
    if(!this.options.sync)
      Effect.Queues.get(typeof this.options.queue == 'string' ? 
        'global' : this.options.queue.scope).remove(this);
    this.state = 'finished';
  },
  event: function(eventName) {
    if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
    if(this.options[eventName]) this.options[eventName](this);
  },
  inspect: function() {
    var data = $H();
    for(property in this)
      if(typeof this[property] != 'function') data[property] = this[property];
    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
  }
}

Effect.Parallel = Class.create();
Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
  initialize: function(effects) {
    this.effects = effects || [];
    this.start(arguments[1]);
  },
  update: function(position) {
    this.effects.invoke('render', position);
  },
  finish: function(position) {
    this.effects.each( function(effect) {
      effect.render(1.0);
      effect.cancel();
      effect.event('beforeFinish');
      if(effect.finish) effect.finish(position);
      effect.event('afterFinish');
    });
  }
});

Effect.Event = Class.create();
Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), {
  initialize: function() {
    var options = Object.extend({
      duration: 0
    }, arguments[0] || {});
    this.start(options);
  },
  update: Prototype.emptyFunction
});

Effect.Opacity = Class.create();
Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    if(!this.element) throw(Effect._elementDoesNotExistError);
    // make this work on IE on elements without 'layout'
    if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout))
      this.element.setStyle({zoom: 1});
    var options = Object.extend({
      from: this.element.getOpacity() || 0.0,
      to:   1.0
    }, arguments[1] || {});
    this.start(options);
  },
  update: function(position) {
    this.element.setOpacity(position);
  }
});

Effect.Move = Class.create();
Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    if(!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      x:    0,
      y:    0,
      mode: 'relative'
    }, arguments[1] || {});
    this.start(options);
  },
  setup: function() {
    // Bug in Opera: Opera returns the "real" position of a static element or
    // relative element that does not have top/left explicitly set.
    // ==> Always set top and left for position relative elements in your stylesheets 
    // (to 0 if you do not need them) 
    this.element.makePositioned();
    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
    if(this.options.mode == 'absolute') {
      // absolute movement, so we need to calc deltaX and deltaY
      this.options.x = this.options.x - this.originalLeft;
      this.options.y = this.options.y - this.originalTop;
    }
  },
  update: function(position) {
    this.element.setStyle({
      left: Math.round(this.options.x  * position + this.originalLeft) + 'px',
      top:  Math.round(this.options.y  * position + this.originalTop)  + 'px'
    });
  }
});

// for backwards compatibility
Effect.MoveBy = function(element, toTop, toLeft) {
  return new Effect.Move(element, 
    Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));
};

Effect.Scale = Class.create();
Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
  initialize: function(element, percent) {
    this.element = $(element);
    if(!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      scaleX: true,
      scaleY: true,
      scaleContent: true,
      scaleFromCenter: false,
      scaleMode: 'box',        // 'box' or 'contents' or {} with provided values
      scaleFrom: 100.0,
      scaleTo:   percent
    }, arguments[2] || {});
    this.start(options);
  },
  setup: function() {
    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
    this.elementPositioning = this.element.getStyle('position');
    
    this.originalStyle = {};
    ['top','left','width','height','fontSize'].each( function(k) {
      this.originalStyle[k] = this.element.style[k];
    }.bind(this));
      
    this.originalTop  = this.element.offsetTop;
    this.originalLeft = this.element.offsetLeft;
    
    var fontSize = this.element.getStyle('font-size') || '100%';
    ['em','px','%','pt'].each( function(fontSizeType) {
      if(fontSize.indexOf(fontSizeType)>0) {
        this.fontSize     = parseFloat(fontSize);
        this.fontSizeType = fontSizeType;
      }
    }.bind(this));
    
    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
    
    this.dims = null;
    if(this.options.scaleMode=='box')
      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
    if(/^content/.test(this.options.scaleMode))
      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
    if(!this.dims)
      this.dims = [this.options.scaleMode.originalHeight,
                   this.options.scaleMode.originalWidth];
  },
  update: function(position) {
    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
    if(this.options.scaleContent && this.fontSize)
      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
  },
  finish: function(position) {
    if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
  },
  setDimensions: function(height, width) {
    var d = {};
    if(this.options.scaleX) d.width = Math.round(width) + 'px';
    if(this.options.scaleY) d.height = Math.round(height) + 'px';
    if(this.options.scaleFromCenter) {
      var topd  = (height - this.dims[0])/2;
      var leftd = (width  - this.dims[1])/2;
      if(this.elementPositioning == 'absolute') {
        if(this.options.scaleY) d.top = this.originalTop-topd + 'px';
        if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
      } else {
        if(this.options.scaleY) d.top = -topd + 'px';
        if(this.options.scaleX) d.left = -leftd + 'px';
      }
    }
    this.element.setStyle(d);
  }
});

Effect.Highlight = Class.create();
Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    if(!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {});
    this.start(options);
  },
  setup: function() {
    // Prevent executing on elements not in the layout flow
    if(this.element.getStyle('display')=='none') { this.cancel(); return; }
    // Disable background image during the effect
    this.oldStyle = {};
    if (!this.options.keepBackgroundImage) {
      this.oldStyle.backgroundImage = this.element.getStyle('background-image');
      this.element.setStyle({backgroundImage: 'none'});
    }
    if(!this.options.endcolor)
      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
    if(!this.options.restorecolor)
      this.options.restorecolor = this.element.getStyle('background-color');
    // init color calculations
    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
  },
  update: function(position) {
    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
      return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });
  },
  finish: function() {
    this.element.setStyle(Object.extend(this.oldStyle, {
      backgroundColor: this.options.restorecolor
    }));
  }
});

Effect.ScrollTo = Class.create();
Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    this.start(arguments[1] || {});
  },
  setup: function() {
    Position.prepare();
    var offsets = Position.cumulativeOffset(this.element);
    if(this.options.offset) offsets[1] += this.options.offset;
    var max = window.innerHeight ? 
      window.height - window.innerHeight :
      document.body.scrollHeight - 
        (document.documentElement.clientHeight ? 
          document.documentElement.clientHeight : document.body.clientHeight);
    this.scrollStart = Position.deltaY;
    this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
  },
  update: function(position) {
    Position.prepare();
    window.scrollTo(Position.deltaX, 
      this.scrollStart + (position*this.delta));
  }
});

/* ------------- combination effects ------------- */

Effect.Fade = function(element) {
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  var options = Object.extend({
  from: element.getOpacity() || 1.0,
  to:   0.0,
  afterFinishInternal: function(effect) { 
    if(effect.options.to!=0) return;
    effect.element.hide().setStyle({opacity: oldOpacity}); 
  }}, arguments[1] || {});
  return new Effect.Opacity(element,options);
}

Effect.Appear = function(element) {
  element = $(element);
  var options = Object.extend({
  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
  to:   1.0,
  // force Safari to render floated elements properly
  afterFinishInternal: function(effect) {
    effect.element.forceRerendering();
  },
  beforeSetup: function(effect) {
    effect.element.setOpacity(effect.options.from).show(); 
  }}, arguments[1] || {});
  return new Effect.Opacity(element,options);
}

Effect.Puff = function(element) {
  element = $(element);
  var oldStyle = { 
    opacity: element.getInlineOpacity(), 
    position: element.getStyle('position'),
    top:  element.style.top,
    left: element.style.left,
    width: element.style.width,
    height: element.style.height
  };
  return new Effect.Parallel(
   [ new Effect.Scale(element, 200, 
      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
     Object.extend({ duration: 1.0, 
      beforeSetupInternal: function(effect) {
        Position.absolutize(effect.effects[0].element)
      },
      afterFinishInternal: function(effect) {
         effect.effects[0].element.hide().setStyle(oldStyle); }
     }, arguments[1] || {})
   );
}

Effect.BlindUp = function(element) {
  element = $(element);
  element.makeClipping();
  return new Effect.Scale(element, 0,
    Object.extend({ scaleContent: false, 
      scaleX: false, 
      restoreAfterFinish: true,
      afterFinishInternal: function(effect) {
        effect.element.hide().undoClipping();
      } 
    }, arguments[1] || {})
  );
}

Effect.BlindDown = function(element) {
  element = $(element);
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({ 
    scaleContent: false, 
    scaleX: false,
    scaleFrom: 0,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
    },  
    afterFinishInternal: function(effect) {
      effect.element.undoClipping();
    }
  }, arguments[1] || {}));
}

Effect.SwitchOff = function(element) {
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  return new Effect.Appear(element, Object.extend({
    duration: 0.4,
    from: 0,
    transition: Effect.Transitions.flicker,
    afterFinishInternal: function(effect) {
      new Effect.Scale(effect.element, 1, { 
        duration: 0.3, scaleFromCenter: true,
        scaleX: false, scaleContent: false, restoreAfterFinish: true,
        beforeSetup: function(effect) { 
          effect.element.makePositioned().makeClipping();
        },
        afterFinishInternal: function(effect) {
          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
        }
      })
    }
  }, arguments[1] || {}));
}

Effect.DropOut = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.getStyle('top'),
    left: element.getStyle('left'),
    opacity: element.getInlineOpacity() };
  return new Effect.Parallel(
    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), 
      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
    Object.extend(
      { duration: 0.5,
        beforeSetup: function(effect) {
          effect.effects[0].element.makePositioned(); 
        },
        afterFinishInternal: function(effect) {
          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
        } 
      }, arguments[1] || {}));
}

Effect.Shake = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.getStyle('top'),
    left: element.getStyle('left') };
    return new Effect.Move(element, 
      { x:  20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
        effect.element.undoPositioned().setStyle(oldStyle);
  }}) }}) }}) }}) }}) }});
}

Effect.SlideDown = function(element) {
  element = $(element).cleanWhitespace();
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
  var oldInnerBottom = element.down().getStyle('bottom');
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({ 
    scaleContent: false, 
    scaleX: false, 
    scaleFrom: window.opera ? 0 : 1,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makePositioned();
      effect.element.down().makePositioned();
      if(window.opera) effect.element.setStyle({top: ''});
      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
    },
    afterUpdateInternal: function(effect) {
      effect.element.down().setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); 
    },
    afterFinishInternal: function(effect) {
      effect.element.undoClipping().undoPositioned();
      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
    }, arguments[1] || {})
  );
}

Effect.SlideUp = function(element) {
  element = $(element).cleanWhitespace();
  var oldInnerBottom = element.down().getStyle('bottom');
  return new Effect.Scale(element, window.opera ? 0 : 1,
   Object.extend({ scaleContent: false, 
    scaleX: false, 
    scaleMode: 'box',
    scaleFrom: 100,
    restoreAfterFinish: true,
    beforeStartInternal: function(effect) {
      effect.element.makePositioned();
      effect.element.down().makePositioned();
      if(window.opera) effect.element.setStyle({top: ''});
      effect.element.makeClipping().show();
    },  
    afterUpdateInternal: function(effect) {
      effect.element.down().setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' });
    },
    afterFinishInternal: function(effect) {
      effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom});
      effect.element.down().undoPositioned();
    }
   }, arguments[1] || {})
  );
}

// Bug in opera makes the TD containing this element expand for a instance after finish 
Effect.Squish = function(element) {
  return new Effect.Scale(element, window.opera ? 1 : 0, { 
    restoreAfterFinish: true,
    beforeSetup: function(effect) {
      effect.element.makeClipping(); 
    },  
    afterFinishInternal: function(effect) {
      effect.element.hide().undoClipping(); 
    }
  });
}

Effect.Grow = function(element) {
  element = $(element);
  var options = Object.extend({
    direction: 'center',
    moveTransition: Effect.Transitions.sinoidal,
    scaleTransition: Effect.Transitions.sinoidal,
    opacityTransition: Effect.Transitions.full
  }, arguments[1] || {});
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    height: element.style.height,
    width: element.style.width,
    opacity: element.getInlineOpacity() };

  var dims = element.getDimensions();    
  var initialMoveX, initialMoveY;
  var moveX, moveY;
  
  switch (options.direction) {
    case 'top-left':
      initialMoveX = initialMoveY = moveX = moveY = 0; 
      break;
    case 'top-right':
      initialMoveX = dims.width;
      initialMoveY = moveY = 0;
      moveX = -dims.width;
      break;
    case 'bottom-left':
      initialMoveX = moveX = 0;
      initialMoveY = dims.height;
      moveY = -dims.height;
      break;
    case 'bottom-right':
      initialMoveX = dims.width;
      initialMoveY = dims.height;
      moveX = -dims.width;
      moveY = -dims.height;
      break;
    case 'center':
      initialMoveX = dims.width / 2;
      initialMoveY = dims.height / 2;
      moveX = -dims.width / 2;
      moveY = -dims.height / 2;
      break;
  }
  
  return new Effect.Move(element, {
    x: initialMoveX,
    y: initialMoveY,
    duration: 0.01, 
    beforeSetup: function(effect) {
      effect.element.hide().makeClipping().makePositioned();
    },
    afterFinishInternal: function(effect) {
      new Effect.Parallel(
        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
          new Effect.Scale(effect.element, 100, {
            scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
        ], Object.extend({
             beforeSetup: function(effect) {
               effect.effects[0].element.setStyle({height: '0px'}).show(); 
             },
             afterFinishInternal: function(effect) {
               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); 
             }
           }, options)
      )
    }
  });
}

Effect.Shrink = function(element) {
  element = $(element);
  var options = Object.extend({
    direction: 'center',
    moveTransition: Effect.Transitions.sinoidal,
    scaleTransition: Effect.Transitions.sinoidal,
    opacityTransition: Effect.Transitions.none
  }, arguments[1] || {});
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    height: element.style.height,
    width: element.style.width,
    opacity: element.getInlineOpacity() };

  var dims = element.getDimensions();
  var moveX, moveY;
  
  switch (options.direction) {
    case 'top-left':
      moveX = moveY = 0;
      break;
    case 'top-right':
      moveX = dims.width;
      moveY = 0;
      break;
    case 'bottom-left':
      moveX = 0;
      moveY = dims.height;
      break;
    case 'bottom-right':
      moveX = dims.width;
      moveY = dims.height;
      break;
    case 'center':  
      moveX = dims.width / 2;
      moveY = dims.height / 2;
      break;
  }
  
  return new Effect.Parallel(
    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
    ], Object.extend({            
         beforeStartInternal: function(effect) {
           effect.effects[0].element.makePositioned().makeClipping(); 
         },
         afterFinishInternal: function(effect) {
           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
       }, options)
  );
}

Effect.Pulsate = function(element) {
  element = $(element);
  var options    = arguments[1] || {};
  var oldOpacity = element.getInlineOpacity();
  var transition = options.transition || Effect.Transitions.sinoidal;
  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
  reverser.bind(transition);
  return new Effect.Opacity(element, 
    Object.extend(Object.extend({  duration: 2.0, from: 0,
      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
    }, options), {transition: reverser}));
}

Effect.Fold = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    width: element.style.width,
    height: element.style.height };
  element.makeClipping();
  return new Effect.Scale(element, 5, Object.extend({   
    scaleContent: false,
    scaleX: false,
    afterFinishInternal: function(effect) {
    new Effect.Scale(element, 1, { 
      scaleContent: false, 
      scaleY: false,
      afterFinishInternal: function(effect) {
        effect.element.hide().undoClipping().setStyle(oldStyle);
      } });
  }}, arguments[1] || {}));
};

Effect.Morph = Class.create();
Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    if(!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      style: {}
    }, arguments[1] || {});
    if (typeof options.style == 'string') {
      if(options.style.indexOf(':') == -1) {
        var cssText = '', selector = '.' + options.style;
        $A(document.styleSheets).reverse().each(function(styleSheet) {
          if (styleSheet.cssRules) cssRules = styleSheet.cssRules;
          else if (styleSheet.rules) cssRules = styleSheet.rules;
          $A(cssRules).reverse().each(function(rule) {
            if (selector == rule.selectorText) {
              cssText = rule.style.cssText;
              throw $break;
            }
          });
          if (cssText) throw $break;
        });
        this.style = cssText.parseStyle();
        options.afterFinishInternal = function(effect){
          effect.element.addClassName(effect.options.style);
          effect.transforms.each(function(transform) {
            if(transform.style != 'opacity')
              effect.element.style[transform.style.camelize()] = '';
          });
        }
      } else this.style = options.style.parseStyle();
    } else this.style = $H(options.style)
    this.start(options);
  },
  setup: function(){
    function parseColor(color){
      if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
      color = color.parseColor();
      return $R(0,2).map(function(i){
        return parseInt( color.slice(i*2+1,i*2+3), 16 ) 
      });
    }
    this.transforms = this.style.map(function(pair){
      var property = pair[0].underscore().dasherize(), value = pair[1], unit = null;

      if(value.parseColor('#zzzzzz') != '#zzzzzz') {
        value = value.parseColor();
        unit  = 'color';
      } else if(property == 'opacity') {
        value = parseFloat(value);
        if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout))
          this.element.setStyle({zoom: 1});
      } else if(Element.CSS_LENGTH.test(value)) 
        var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/),
          value = parseFloat(components[1]), unit = (components.length == 3) ? components[2] : null;

      var originalValue = this.element.getStyle(property);
      return $H({ 
        style: property, 
        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), 
        targetValue: unit=='color' ? parseColor(value) : value,
        unit: unit
      });
    }.bind(this)).reject(function(transform){
      return (
        (transform.originalValue == transform.targetValue) ||
        (
          transform.unit != 'color' &&
          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
        )
      )
    });
  },
  update: function(position) {
    var style = $H(), value = null;
    this.transforms.each(function(transform){
      value = transform.unit=='color' ?
        $R(0,2).inject('#',function(m,v,i){
          return m+(Math.round(transform.originalValue[i]+
            (transform.targetValue[i] - transform.originalValue[i])*position)).toColorPart() }) : 
        transform.originalValue + Math.round(
          ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit;
      style[transform.style] = value;
    });
    this.element.setStyle(style);
  }
});

Effect.Transform = Class.create();
Object.extend(Effect.Transform.prototype, {
  initialize: function(tracks){
    this.tracks  = [];
    this.options = arguments[1] || {};
    this.addTracks(tracks);
  },
  addTracks: function(tracks){
    tracks.each(function(track){
      var data = $H(track).values().first();
      this.tracks.push($H({
        ids:     $H(track).keys().first(),
        effect:  Effect.Morph,
        options: { style: data }
      }));
    }.bind(this));
    return this;
  },
  play: function(){
    return new Effect.Parallel(
      this.tracks.map(function(track){
        var elements = [$(track.ids) || $$(track.ids)].flatten();
        return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) });
      }).flatten(),
      this.options
    );
  }
});

Element.CSS_PROPERTIES = $w(
  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 
  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
  'fontSize fontWeight height left letterSpacing lineHeight ' +
  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
  'right textIndent top width wordSpacing zIndex');
  
Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;

String.prototype.parseStyle = function(){
  var element = Element.extend(document.createElement('div'));
  element.innerHTML = '<div style="' + this + '"></div>';
  var style = element.down().style, styleRules = $H();
  
  Element.CSS_PROPERTIES.each(function(property){
    if(style[property]) styleRules[property] = style[property]; 
  });
  if(/MSIE/.test(navigator.userAgent) && !window.opera && this.indexOf('opacity') > -1) {
    styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1];
  }
  return styleRules;
};

Element.morph = function(element, style) {
  new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {}));
  return element;
};

['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom',
 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( 
  function(f) { Element.Methods[f] = Element[f]; }
);

Element.Methods.visualEffect = function(element, effect, options) {
  s = effect.gsub(/_/, '-').camelize();
  effect_class = s.charAt(0).toUpperCase() + s.substring(1);
  new Effect[effect_class](element, options);
  return $(element);
};

Element.addMethods();var browserName;
var browserVersion;

function writeImageToDiv(imageName, width, height, xPos, yPos, divName, linkNameVar){
	
	if(browserName=="Explorer"){
		if(	Number(browserVersion<7)){
			if(linkNameVar!="")
				document.getElementById(divName).innerHTML+='<a href="'+linkNameVar+'"><img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px;margin:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" ></a>';
			else
				document.getElementById(divName).innerHTML+='<img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px;margin:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" >';
			return;
		}
	}
	
	if(linkNameVar!="")
		document.getElementById(divName).innerHTML+="<a href='"+linkNameVar+"'><img src='"+imageName+"' style='width:"+width+"px; height:"+height+"px;border-width:0px;margin:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px;'></a>";
	else
		document.getElementById(divName).innerHTML+="<img src='"+imageName+"' style='width:"+width+"px; height:"+height+"px;border-width:0px; position:absolute;margin:0px; left:"+xPos+"px; top:"+yPos+"px;'>";
}

function writeImageToDivWithID(imageName, width, height, xPos, yPos, divName, idName, linkNameVar){
	
	if(browserName=="Explorer"){
		if(	Number(browserVersion<7)){
			if(linkNameVar!="")
				document.getElementById(divName).innerHTML+='<a href="'+linkNameVar+'"><img id="'+idName+'" src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px;margin:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" ></a>';
			else
				document.getElementById(divName).innerHTML+='<img id="'+idName+'" src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px; position:absolute;margin:0px; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" >';
			return;
		}
	}
	
	if(linkNameVar!="")
		document.getElementById(divName).innerHTML+="<a href='"+linkNameVar+"'><img  id='"+idName+"' src='"+imageName+"' style='border-width:0px;margin:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px;'></a>";
	else
		document.getElementById(divName).innerHTML+="<img id='"+idName+"' src='"+imageName+"' style='border-width:0px; position:absolute;margin:0px; left:"+xPos+"px; top:"+yPos+"px;'>";
}



function writeImageToDivWithMouseEvents(imageName, width, height, xPos, yPos, divName, mouseOverEvent, mouseOutEvent, linkNameVar){
	
	if(browserName=="Explorer"){
		if(	Number(browserVersion<7)){
			if(linkNameVar!="")
				document.getElementById(divName).innerHTML+='<a onmouseout="'+mouseOutEvent+'" onmouseover="'+mouseOverEvent+'" href="'+linkNameVar+'"><img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px;margin:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" ></a>';
			else
				document.getElementById(divName).innerHTML+='<img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px; position:absolute;margin:0px; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" >';
			return;
		}
	}
	
	if(linkNameVar!="")
		document.getElementById(divName).innerHTML+="<a onmouseout='"+mouseOutEvent+"' onmouseover='"+mouseOverEvent+"'href='"+linkNameVar+"'><img src='"+imageName+"' style='width:"+width+"px; height:"+height+"px;border-width:0px;margin:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px;'></a>";
	else
		document.getElementById(divName).innerHTML+="<img src='"+imageName+"' style='border-width:0px;margin:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px;width:"+width+"px; height:"+height+"px;'>";
}

function writeImageToDivWithMouseEventsAndID(imageName, width, height, xPos, yPos, divName, mouseOverEvent, mouseOutEvent, linkNameVar, idName){
	
	if(browserName=="Explorer"){
		if(	Number(browserVersion<7)){
			if(linkNameVar!="")
				document.getElementById(divName).innerHTML+='<a onmouseout="'+mouseOutEvent+'" onmouseover="'+mouseOverEvent+'" href="'+linkNameVar+'"><img id="'+idName+'" src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px;margin:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" ></a>';
			else
				document.getElementById(divName).innerHTML+='<img id="'+idName+'" src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px;margin:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" >';
			return;
		}
	}
	
	if(linkNameVar!="")
		document.getElementById(divName).innerHTML+="<a onmouseout='"+mouseOutEvent+"' onmouseover='"+mouseOverEvent+"'href='"+linkNameVar+"'><img id='"+idName+"' src='"+imageName+"' style='border-width:0px;margin:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px; width:"+width+"px; height:"+height+"px;'></a>";
	else
		document.getElementById(divName).innerHTML+="<img id='"+idName+"' src='"+imageName+"' style='border-width:0px; position:absolute;margin:0px; left:"+xPos+"px; top:"+yPos+"px;width:"+width+"px; height:"+height+"px;'>";
}



function overwriteImageToDiv(imageName, width, height, xPos, yPos, divName, linkNameVar){
	
	if(browserName=="Explorer"){
		if(	Number(browserVersion<7)){
			if(linkNameVar!="")
				document.getElementById(divName).innerHTML='<a href="'+linkNameVar+'"><img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px; position:absolute;margin:0px; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" ></a>';
			else
				document.getElementById(divName).innerHTML='<img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px; position:absolute;margin:0px; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" >';
			return;
		}
	}
	
	if(linkNameVar!="")
		document.getElementById(divName).innerHTML="<a href='"+linkNameVar+"'><img src='"+imageName+"' style='border-width:0px; position:absolute;margin:0px; left:"+xPos+"px; top:"+yPos+"px;'></a>";
	else
		document.getElementById(divName).innerHTML="<img src='"+imageName+"' style='border-width:0px; position:absolute;margin:0px; left:"+xPos+"px; top:"+yPos+"px;'>";
}


function overwriteImageToDivWithID(imageName, width, height, xPos, yPos, divName, idName, linkNameVar){
	
	if(browserName=="Explorer"){
		if(	Number(browserVersion<7)){
			if(linkNameVar!="")
				document.getElementById(divName).innerHTML='<a href="'+linkNameVar+'"><img id="'+idName+'"  src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" ></a>';
			else
				document.getElementById(divName).innerHTML='<img id="'+idName+'" src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" >';
			return;
		}
	}
	
	if(linkNameVar!="")
		document.getElementById(divName).innerHTML="<a href='"+linkNameVar+"'><img id='"+idName+"' src='"+imageName+"' style='border-width:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px;'></a>";
	else
		document.getElementById(divName).innerHTML="<img id='"+idName+"' src='"+imageName+"' style='border-width:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px;'>";
}


function writeImageToDivBeginning(imageName, width, height, xPos, yPos, divName, linkNameVar){
	
	if(browserName=="Explorer"){
		if(	Number(browserVersion<7)){
			if(linkNameVar!="")
				document.getElementById(divName).innerHTML='<a href="'+linkNameVar+'"><img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px;margin:0px; position:absolute; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" ></a>'+document.getElementById(divName).innerHTML;
			else
				document.getElementById(divName).innerHTML='<img src="http://www.elocallink.tv/sandbox2/testing/spacer.png" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imageName+'\', sizingMethod=\'scale\'); border-width:0px; position:absolute;margin:0px; left:'+xPos+'px; top:'+yPos+'px; width:'+width+'px; height:'+height+'px;" >'+document.getElementById(divName).innerHTML;
			return;
		}
	}
	
	if(linkNameVar!="")
		document.getElementById(divName).innerHTML="<a href='"+linkNameVar+"'><img src='"+imageName+"' style='border-width:0px;margin:0px; position:absolute; left:"+xPos+"px; top:"+yPos+"px;'></a>"+document.getElementById(divName).innerHTML;
	else
		document.getElementById(divName).innerHTML="<img src='"+imageName+"' style='border-width:0px; position:absolute;margin:0px; left:"+xPos+"px; top:"+yPos+"px;'>"+document.getElementById(divName).innerHTML;
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
		browserName=this.browser;
		browserVersion=this.version;
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.3.1
*/
if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=A[C].split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules;if(!I[A]){I[A]={versions:[],builds:[]};}var B=I[A],H=D.version,G=D.build,F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(var C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0};var B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang={isArray:function(B){if(B){var A=YAHOO.lang;return A.isNumber(B.length)&&A.isFunction(B.splice)&&!A.hasOwnProperty(B.length);}return false;},isBoolean:function(A){return typeof A==="boolean";},isFunction:function(A){return typeof A==="function";},isNull:function(A){return A===null;},isNumber:function(A){return typeof A==="number"&&isFinite(A);},isObject:function(A){return(A&&(typeof A==="object"||YAHOO.lang.isFunction(A)))||false;},isString:function(A){return typeof A==="string";},isUndefined:function(A){return typeof A==="undefined";},hasOwnProperty:function(A,B){if(Object.prototype.hasOwnProperty){return A.hasOwnProperty(B);}return !YAHOO.lang.isUndefined(A[B])&&A.constructor.prototype[B]!==A[B];},_IEEnumFix:function(C,B){if(YAHOO.env.ua.ie){var E=["toString","valueOf"],A;for(A=0;A<E.length;A=A+1){var F=E[A],D=B[F];if(YAHOO.lang.isFunction(D)&&D!=Object.prototype[F]){C[F]=D;}}}},extend:function(D,E,C){if(!E||!D){throw new Error("YAHOO.lang.extend failed, please check that all dependencies are included.");}var B=function(){};B.prototype=E.prototype;D.prototype=new B();D.prototype.constructor=D;D.superclass=E.prototype;if(E.prototype.constructor==Object.prototype.constructor){E.prototype.constructor=E;}if(C){for(var A in C){D.prototype[A]=C[A];}YAHOO.lang._IEEnumFix(D.prototype,C);}},augmentObject:function(E,D){if(!D||!E){throw new Error("Absorb failed, verify dependencies.");}var A=arguments,C,F,B=A[2];if(B&&B!==true){for(C=2;C<A.length;C=C+1){E[A[C]]=D[A[C]];}}else{for(F in D){if(B||!E[F]){E[F]=D[F];}}YAHOO.lang._IEEnumFix(E,D);}},augmentProto:function(D,C){if(!C||!D){throw new Error("Augment failed, verify dependencies.");}var A=[D.prototype,C.prototype];for(var B=2;B<arguments.length;B=B+1){A.push(arguments[B]);}YAHOO.lang.augmentObject.apply(this,A);},dump:function(A,G){var C=YAHOO.lang,D,F,I=[],J="{...}",B="f(){...}",H=", ",E=" => ";if(!C.isObject(A)){return A+"";}else{if(A instanceof Date||("nodeType" in A&&"tagName" in A)){return A;}else{if(C.isFunction(A)){return B;}}}G=(C.isNumber(G))?G:3;if(C.isArray(A)){I.push("[");for(D=0,F=A.length;D<F;D=D+1){if(C.isObject(A[D])){I.push((G>0)?C.dump(A[D],G-1):J);}else{I.push(A[D]);}I.push(H);}if(I.length>1){I.pop();}I.push("]");}else{I.push("{");for(D in A){if(C.hasOwnProperty(A,D)){I.push(D+E);if(C.isObject(A[D])){I.push((G>0)?C.dump(A[D],G-1):J);}else{I.push(A[D]);}I.push(H);}}if(I.length>1){I.pop();}I.push("}");}return I.join("");},substitute:function(Q,B,J){var G,F,E,M,N,P,D=YAHOO.lang,L=[],C,H="dump",K=" ",A="{",O="}";for(;;){G=Q.lastIndexOf(A);if(G<0){break;}F=Q.indexOf(O,G);if(G+1>=F){break;}C=Q.substring(G+1,F);M=C;P=null;E=M.indexOf(K);if(E>-1){P=M.substring(E+1);M=M.substring(0,E);}N=B[M];if(J){N=J(M,N,P);}if(D.isObject(N)){if(D.isArray(N)){N=D.dump(N,parseInt(P,10));}else{P=P||"";var I=P.indexOf(H);if(I>-1){P=P.substring(4);}if(N.toString===Object.prototype.toString||I>-1){N=D.dump(N,parseInt(P,10));}else{N=N.toString();}}}else{if(!D.isString(N)&&!D.isNumber(N)){N="~-"+L.length+"-~";L[L.length]=C;}}Q=Q.substring(0,G)+N+Q.substring(F+1);}for(G=L.length-1;G>=0;G=G-1){Q=Q.replace(new RegExp("~-"+G+"-~"),"{"+L[G]+"}","g");}return Q;},trim:function(A){try{return A.replace(/^\s+|\s+$/g,"");}catch(B){return A;}},merge:function(){var C={},A=arguments,B;for(B=0;B<A.length;B=B+1){YAHOO.lang.augmentObject(C,A[B],true);}return C;},isValue:function(B){var A=YAHOO.lang;return(A.isObject(B)||A.isString(B)||A.isNumber(B)||A.isBoolean(B));}};YAHOO.util.Lang=YAHOO.lang;YAHOO.lang.augment=YAHOO.lang.augmentProto;YAHOO.augment=YAHOO.lang.augmentProto;YAHOO.extend=YAHOO.lang.extend;YAHOO.register("yahoo",YAHOO,{version:"2.3.1",build:"541"});(function(){var B=YAHOO.util,K,I,H=0,J={},F={};var C=YAHOO.env.ua.opera,L=YAHOO.env.ua.webkit,A=YAHOO.env.ua.gecko,G=YAHOO.env.ua.ie;var E={HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i};var M=function(O){if(!E.HYPHEN.test(O)){return O;}if(J[O]){return J[O];}var P=O;while(E.HYPHEN.exec(P)){P=P.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}J[O]=P;return P;};var N=function(P){var O=F[P];if(!O){O=new RegExp("(?:^|\\s+)"+P+"(?:\\s+|$)");F[P]=O;}return O;};if(document.defaultView&&document.defaultView.getComputedStyle){K=function(O,R){var Q=null;if(R=="float"){R="cssFloat";}var P=document.defaultView.getComputedStyle(O,"");if(P){Q=P[M(R)];}return O.style[R]||Q;};}else{if(document.documentElement.currentStyle&&G){K=function(O,Q){switch(M(Q)){case"opacity":var S=100;try{S=O.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(R){try{S=O.filters("alpha").opacity;}catch(R){}}return S/100;case"float":Q="styleFloat";default:var P=O.currentStyle?O.currentStyle[Q]:null;return(O.style[Q]||P);}};}else{K=function(O,P){return O.style[P];};}}if(G){I=function(O,P,Q){switch(P){case"opacity":if(YAHOO.lang.isString(O.style.filter)){O.style.filter="alpha(opacity="+Q*100+")";if(!O.currentStyle||!O.currentStyle.hasLayout){O.style.zoom=1;}}break;case"float":P="styleFloat";default:O.style[P]=Q;}};}else{I=function(O,P,Q){if(P=="float"){P="cssFloat";}O.style[P]=Q;};}var D=function(O,P){return O&&O.nodeType==1&&(!P||P(O));};YAHOO.util.Dom={get:function(Q){if(Q&&(Q.tagName||Q.item)){return Q;}if(YAHOO.lang.isString(Q)||!Q){return document.getElementById(Q);}if(Q.length!==undefined){var R=[];for(var P=0,O=Q.length;P<O;++P){R[R.length]=B.Dom.get(Q[P]);}return R;}return Q;},getStyle:function(O,Q){Q=M(Q);var P=function(R){return K(R,Q);};return B.Dom.batch(O,P,B.Dom,true);},setStyle:function(O,Q,R){Q=M(Q);var P=function(S){I(S,Q,R);};B.Dom.batch(O,P,B.Dom,true);},getXY:function(O){var P=function(R){if((R.parentNode===null||R.offsetParent===null||this.getStyle(R,"display")=="none")&&R!=document.body){return false;}var Q=null;var V=[];var S;var T=R.ownerDocument;if(R.getBoundingClientRect){S=R.getBoundingClientRect();return[S.left+B.Dom.getDocumentScrollLeft(R.ownerDocument),S.top+B.Dom.getDocumentScrollTop(R.ownerDocument)];}else{V=[R.offsetLeft,R.offsetTop];Q=R.offsetParent;var U=this.getStyle(R,"position")=="absolute";if(Q!=R){while(Q){V[0]+=Q.offsetLeft;V[1]+=Q.offsetTop;if(L&&!U&&this.getStyle(Q,"position")=="absolute"){U=true;}Q=Q.offsetParent;}}if(L&&U){V[0]-=R.ownerDocument.body.offsetLeft;V[1]-=R.ownerDocument.body.offsetTop;}}Q=R.parentNode;while(Q.tagName&&!E.ROOT_TAG.test(Q.tagName)){if(B.Dom.getStyle(Q,"display").search(/^inline|table-row.*$/i)){V[0]-=Q.scrollLeft;V[1]-=Q.scrollTop;}Q=Q.parentNode;}return V;};return B.Dom.batch(O,P,B.Dom,true);},getX:function(O){var P=function(Q){return B.Dom.getXY(Q)[0];};return B.Dom.batch(O,P,B.Dom,true);},getY:function(O){var P=function(Q){return B.Dom.getXY(Q)[1];};return B.Dom.batch(O,P,B.Dom,true);},setXY:function(O,R,Q){var P=function(U){var T=this.getStyle(U,"position");if(T=="static"){this.setStyle(U,"position","relative");T="relative";}var W=this.getXY(U);if(W===false){return false;}var V=[parseInt(this.getStyle(U,"left"),10),parseInt(this.getStyle(U,"top"),10)];if(isNaN(V[0])){V[0]=(T=="relative")?0:U.offsetLeft;}if(isNaN(V[1])){V[1]=(T=="relative")?0:U.offsetTop;}if(R[0]!==null){U.style.left=R[0]-W[0]+V[0]+"px";}if(R[1]!==null){U.style.top=R[1]-W[1]+V[1]+"px";}if(!Q){var S=this.getXY(U);if((R[0]!==null&&S[0]!=R[0])||(R[1]!==null&&S[1]!=R[1])){this.setXY(U,R,true);}}};B.Dom.batch(O,P,B.Dom,true);},setX:function(P,O){B.Dom.setXY(P,[O,null]);},setY:function(O,P){B.Dom.setXY(O,[null,P]);},getRegion:function(O){var P=function(Q){if((Q.parentNode===null||Q.offsetParent===null||this.getStyle(Q,"display")=="none")&&Q!=document.body){return false;}var R=B.Region.getRegion(Q);return R;};return B.Dom.batch(O,P,B.Dom,true);},getClientWidth:function(){return B.Dom.getViewportWidth();},getClientHeight:function(){return B.Dom.getViewportHeight();},getElementsByClassName:function(S,W,T,U){W=W||"*";T=(T)?B.Dom.get(T):null||document;if(!T){return[];}var P=[],O=T.getElementsByTagName(W),V=N(S);for(var Q=0,R=O.length;Q<R;++Q){if(V.test(O[Q].className)){P[P.length]=O[Q];if(U){U.call(O[Q],O[Q]);}}}return P;},hasClass:function(Q,P){var O=N(P);var R=function(S){return O.test(S.className);};return B.Dom.batch(Q,R,B.Dom,true);},addClass:function(P,O){var Q=function(R){if(this.hasClass(R,O)){return false;}R.className=YAHOO.lang.trim([R.className,O].join(" "));return true;};return B.Dom.batch(P,Q,B.Dom,true);},removeClass:function(Q,P){var O=N(P);var R=function(S){if(!this.hasClass(S,P)){return false;}var T=S.className;S.className=T.replace(O," ");if(this.hasClass(S,P)){this.removeClass(S,P);}S.className=YAHOO.lang.trim(S.className);return true;};return B.Dom.batch(Q,R,B.Dom,true);},replaceClass:function(R,P,O){if(!O||P===O){return false;}var Q=N(P);var S=function(T){if(!this.hasClass(T,P)){this.addClass(T,O);return true;}T.className=T.className.replace(Q," "+O+" ");if(this.hasClass(T,P)){this.replaceClass(T,P,O);}T.className=YAHOO.lang.trim(T.className);return true;};return B.Dom.batch(R,S,B.Dom,true);},generateId:function(O,Q){Q=Q||"yui-gen";var P=function(R){if(R&&R.id){return R.id;}var S=Q+H++;if(R){R.id=S;}return S;};return B.Dom.batch(O,P,B.Dom,true)||P.apply(B.Dom,arguments);},isAncestor:function(P,Q){P=B.Dom.get(P);if(!P||!Q){return false;}var O=function(R){if(P.contains&&R.nodeType&&!L){return P.contains(R);}else{if(P.compareDocumentPosition&&R.nodeType){return !!(P.compareDocumentPosition(R)&16);}else{if(R.nodeType){return !!this.getAncestorBy(R,function(S){return S==P;});}}}return false;};return B.Dom.batch(Q,O,B.Dom,true);},inDocument:function(O){var P=function(Q){if(L){while(Q=Q.parentNode){if(Q==document.documentElement){return true;}}return false;}return this.isAncestor(document.documentElement,Q);};return B.Dom.batch(O,P,B.Dom,true);},getElementsBy:function(V,P,Q,S){P=P||"*";
Q=(Q)?B.Dom.get(Q):null||document;if(!Q){return[];}var R=[],U=Q.getElementsByTagName(P);for(var T=0,O=U.length;T<O;++T){if(V(U[T])){R[R.length]=U[T];if(S){S(U[T]);}}}return R;},batch:function(S,V,U,Q){S=(S&&(S.tagName||S.item))?S:B.Dom.get(S);if(!S||!V){return false;}var R=(Q)?U:window;if(S.tagName||S.length===undefined){return V.call(R,S,U);}var T=[];for(var P=0,O=S.length;P<O;++P){T[T.length]=V.call(R,S[P],U);}return T;},getDocumentHeight:function(){var P=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;var O=Math.max(P,B.Dom.getViewportHeight());return O;},getDocumentWidth:function(){var P=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;var O=Math.max(P,B.Dom.getViewportWidth());return O;},getViewportHeight:function(){var O=self.innerHeight;var P=document.compatMode;if((P||G)&&!C){O=(P=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;}return O;},getViewportWidth:function(){var O=self.innerWidth;var P=document.compatMode;if(P||G){O=(P=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth;}return O;},getAncestorBy:function(O,P){while(O=O.parentNode){if(D(O,P)){return O;}}return null;},getAncestorByClassName:function(P,O){P=B.Dom.get(P);if(!P){return null;}var Q=function(R){return B.Dom.hasClass(R,O);};return B.Dom.getAncestorBy(P,Q);},getAncestorByTagName:function(P,O){P=B.Dom.get(P);if(!P){return null;}var Q=function(R){return R.tagName&&R.tagName.toUpperCase()==O.toUpperCase();};return B.Dom.getAncestorBy(P,Q);},getPreviousSiblingBy:function(O,P){while(O){O=O.previousSibling;if(D(O,P)){return O;}}return null;},getPreviousSibling:function(O){O=B.Dom.get(O);if(!O){return null;}return B.Dom.getPreviousSiblingBy(O);},getNextSiblingBy:function(O,P){while(O){O=O.nextSibling;if(D(O,P)){return O;}}return null;},getNextSibling:function(O){O=B.Dom.get(O);if(!O){return null;}return B.Dom.getNextSiblingBy(O);},getFirstChildBy:function(O,Q){var P=(D(O.firstChild,Q))?O.firstChild:null;return P||B.Dom.getNextSiblingBy(O.firstChild,Q);},getFirstChild:function(O,P){O=B.Dom.get(O);if(!O){return null;}return B.Dom.getFirstChildBy(O);},getLastChildBy:function(O,Q){if(!O){return null;}var P=(D(O.lastChild,Q))?O.lastChild:null;return P||B.Dom.getPreviousSiblingBy(O.lastChild,Q);},getLastChild:function(O){O=B.Dom.get(O);return B.Dom.getLastChildBy(O);},getChildrenBy:function(P,R){var Q=B.Dom.getFirstChildBy(P,R);var O=Q?[Q]:[];B.Dom.getNextSiblingBy(Q,function(S){if(!R||R(S)){O[O.length]=S;}return false;});return O;},getChildren:function(O){O=B.Dom.get(O);if(!O){}return B.Dom.getChildrenBy(O);},getDocumentScrollLeft:function(O){O=O||document;return Math.max(O.documentElement.scrollLeft,O.body.scrollLeft);},getDocumentScrollTop:function(O){O=O||document;return Math.max(O.documentElement.scrollTop,O.body.scrollTop);},insertBefore:function(P,O){P=B.Dom.get(P);O=B.Dom.get(O);if(!P||!O||!O.parentNode){return null;}return O.parentNode.insertBefore(P,O);},insertAfter:function(P,O){P=B.Dom.get(P);O=B.Dom.get(O);if(!P||!O||!O.parentNode){return null;}if(O.nextSibling){return O.parentNode.insertBefore(P,O.nextSibling);}else{return O.parentNode.appendChild(P);}}};})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this[0]=B;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top);var D=Math.min(this.right,E.right);var A=Math.min(this.bottom,E.bottom);var B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top);var D=Math.max(this.right,E.right);var A=Math.max(this.bottom,E.bottom);var B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D);var C=F[1];var E=F[0]+D.offsetWidth;var A=F[1]+D.offsetHeight;var B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}this.x=this.right=this.left=this[0]=A;this.y=this.top=this.bottom=this[1]=B;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.3.1",build:"541"});YAHOO.util.CustomEvent=function(D,B,C,A){this.type=D;this.scope=B||window;this.silent=C;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,A){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,A);}this.subscribers.push(new YAHOO.util.Subscriber(B,C,A));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){var E=this.subscribers.length;if(!E&&this.silent){return true;}var H=[],G=true,D,I=false;for(D=0;D<arguments.length;++D){H.push(arguments[D]);}var A=H.length;if(!this.silent){}for(D=0;D<E;++D){var L=this.subscribers[D];if(!L){I=true;}else{if(!this.silent){}var K=L.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var B=null;if(H.length>0){B=H[0];}try{G=L.fn.call(K,B,L.obj);}catch(F){this.lastError=F;}}else{try{G=L.fn.call(K,this.type,H,L.obj);}catch(F){this.lastError=F;}}if(false===G){if(!this.silent){}return false;}}}if(I){var J=[],C=this.subscribers;for(D=0,E=C.length;D<E;D=D+1){J.push(C[D]);}this.subscribers=J;}return true;},unsubscribeAll:function(){for(var B=0,A=this.subscribers.length;B<A;++B){this._delete(A-1-B);}this.subscribers=[];return B;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers[A]=null;},toString:function(){return"CustomEvent: '"+this.type+"', scope: "+this.scope;}};YAHOO.util.Subscriber=function(B,C,A){this.fn=B;this.obj=YAHOO.lang.isUndefined(C)?null:C;this.override=A;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var J=false;var I=[];var K=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39};return{POLL_RETRYS:4000,POLL_INTERVAL:10,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,startInterval:function(){if(!this._interval){var L=this;var M=function(){L._tryPreloadAttach();};this._interval=setInterval(M,this.POLL_INTERVAL);}},onAvailable:function(N,L,O,M){F.push({id:N,fn:L,obj:O,override:M,checkReady:false});C=this.POLL_RETRYS;this.startInterval();},onDOMReady:function(L,N,M){if(J){setTimeout(function(){var O=window;if(M){if(M===true){O=N;}else{O=M;}}L.call(O,"DOMReady",[],N);},0);}else{this.DOMReadyEvent.subscribe(L,N,M);}},onContentReady:function(N,L,O,M){F.push({id:N,fn:L,obj:O,override:M,checkReady:true});C=this.POLL_RETRYS;this.startInterval();},addListener:function(N,L,W,R,M){if(!W||!W.call){return false;}if(this._isValidCollection(N)){var X=true;for(var S=0,U=N.length;S<U;++S){X=this.on(N[S],L,W,R,M)&&X;}return X;}else{if(YAHOO.lang.isString(N)){var Q=this.getEl(N);if(Q){N=Q;}else{this.onAvailable(N,function(){YAHOO.util.Event.on(N,L,W,R,M);});return true;}}}if(!N){return false;}if("unload"==L&&R!==this){K[K.length]=[N,L,W,R,M];return true;}var Z=N;if(M){if(M===true){Z=R;}else{Z=M;}}var O=function(a){return W.call(Z,YAHOO.util.Event.getEvent(a,N),R);};var Y=[N,L,W,O,Z,R,M];var T=I.length;I[T]=Y;if(this.useLegacyEvent(N,L)){var P=this.getLegacyIndex(N,L);if(P==-1||N!=G[P][0]){P=G.length;B[N.id+L]=P;G[P]=[N,L,N["on"+L]];E[P]=[];N["on"+L]=function(a){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(a),P);};}E[P].push(Y);}else{try{this._simpleAdd(N,L,O,false);}catch(V){this.lastError=V;this.removeListener(N,L,W);return false;}}return true;},fireLegacyEvent:function(P,N){var R=true,L,T,S,U,Q;T=E[N];for(var M=0,O=T.length;M<O;++M){S=T[M];if(S&&S[this.WFN]){U=S[this.ADJ_SCOPE];Q=S[this.WFN].call(U,P);R=(R&&Q);}}L=G[N];if(L&&L[2]){L[2](P);}return R;},getLegacyIndex:function(M,N){var L=this.generateId(M)+N;if(typeof B[L]=="undefined"){return -1;}else{return B[L];}},useLegacyEvent:function(M,N){if(this.webkit&&("click"==N||"dblclick"==N)){var L=parseInt(this.webkit,10);if(!isNaN(L)&&L<418){return true;}}return false;},removeListener:function(M,L,U){var P,S,W;if(typeof M=="string"){M=this.getEl(M);}else{if(this._isValidCollection(M)){var V=true;for(P=0,S=M.length;P<S;++P){V=(this.removeListener(M[P],L,U)&&V);}return V;}}if(!U||!U.call){return this.purgeElement(M,false,L);}if("unload"==L){for(P=0,S=K.length;P<S;P++){W=K[P];if(W&&W[0]==M&&W[1]==L&&W[2]==U){K[P]=null;return true;}}return false;}var Q=null;var R=arguments[3];if("undefined"===typeof R){R=this._getCacheIndex(M,L,U);}if(R>=0){Q=I[R];}if(!M||!Q){return false;}if(this.useLegacyEvent(M,L)){var O=this.getLegacyIndex(M,L);var N=E[O];if(N){for(P=0,S=N.length;P<S;++P){W=N[P];if(W&&W[this.EL]==M&&W[this.TYPE]==L&&W[this.FN]==U){N[P]=null;break;}}}}else{try{this._simpleRemove(M,L,Q[this.WFN],false);}catch(T){this.lastError=T;return false;}}delete I[R][this.WFN];delete I[R][this.FN];I[R]=null;return true;},getTarget:function(N,M){var L=N.target||N.srcElement;return this.resolveTextNode(L);},resolveTextNode:function(L){if(L&&3==L.nodeType){return L.parentNode;}else{return L;}},getPageX:function(M){var L=M.pageX;if(!L&&0!==L){L=M.clientX||0;if(this.isIE){L+=this._getScrollLeft();}}return L;},getPageY:function(L){var M=L.pageY;if(!M&&0!==M){M=L.clientY||0;if(this.isIE){M+=this._getScrollTop();}}return M;},getXY:function(L){return[this.getPageX(L),this.getPageY(L)];
},getRelatedTarget:function(M){var L=M.relatedTarget;if(!L){if(M.type=="mouseout"){L=M.toElement;}else{if(M.type=="mouseover"){L=M.fromElement;}}}return this.resolveTextNode(L);},getTime:function(N){if(!N.time){var M=new Date().getTime();try{N.time=M;}catch(L){this.lastError=L;return M;}}return N.time;},stopEvent:function(L){this.stopPropagation(L);this.preventDefault(L);},stopPropagation:function(L){if(L.stopPropagation){L.stopPropagation();}else{L.cancelBubble=true;}},preventDefault:function(L){if(L.preventDefault){L.preventDefault();}else{L.returnValue=false;}},getEvent:function(Q,O){var P=Q||window.event;if(!P){var R=this.getEvent.caller;while(R){P=R.arguments[0];if(P&&Event==P.constructor){break;}R=R.caller;}}if(P&&this.isIE){try{var N=P.srcElement;if(N){var M=N.type;}}catch(L){P.target=O;}}return P;},getCharCode:function(M){var L=M.keyCode||M.charCode||0;if(YAHOO.env.ua.webkit&&(L in D)){L=D[L];}return L;},_getCacheIndex:function(P,Q,O){for(var N=0,M=I.length;N<M;++N){var L=I[N];if(L&&L[this.FN]==O&&L[this.EL]==P&&L[this.TYPE]==Q){return N;}}return -1;},generateId:function(L){var M=L.id;if(!M){M="yuievtautoid-"+A;++A;L.id=M;}return M;},_isValidCollection:function(M){try{return(typeof M!=="string"&&M.length&&!M.tagName&&!M.alert&&typeof M[0]!=="undefined");}catch(L){return false;}},elCache:{},getEl:function(L){return(typeof L==="string")?document.getElementById(L):L;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(M){if(!H){H=true;var L=YAHOO.util.Event;L._ready();L._tryPreloadAttach();}},_ready:function(M){if(!J){J=true;var L=YAHOO.util.Event;L.DOMReadyEvent.fire();L._simpleRemove(document,"DOMContentLoaded",L._ready);}},_tryPreloadAttach:function(){if(this.locked){return false;}if(this.isIE){if(!J){this.startInterval();return false;}}this.locked=true;var Q=!H;if(!Q){Q=(C>0);}var P=[];var R=function(T,U){var S=T;if(U.override){if(U.override===true){S=U.obj;}else{S=U.override;}}U.fn.call(S,U.obj);};var M,L,O,N;for(M=0,L=F.length;M<L;++M){O=F[M];if(O&&!O.checkReady){N=this.getEl(O.id);if(N){R(N,O);F[M]=null;}else{P.push(O);}}}for(M=0,L=F.length;M<L;++M){O=F[M];if(O&&O.checkReady){N=this.getEl(O.id);if(N){if(H||N.nextSibling){R(N,O);F[M]=null;}}else{P.push(O);}}}C=(P.length===0)?0:C-1;if(Q){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;return true;},purgeElement:function(O,P,R){var Q=this.getListeners(O,R),N,L;if(Q){for(N=0,L=Q.length;N<L;++N){var M=Q[N];this.removeListener(O,M.type,M.fn,M.index);}}if(P&&O&&O.childNodes){for(N=0,L=O.childNodes.length;N<L;++N){this.purgeElement(O.childNodes[N],P,R);}}},getListeners:function(N,L){var Q=[],M;if(!L){M=[I,K];}else{if(L=="unload"){M=[K];}else{M=[I];}}for(var P=0;P<M.length;P=P+1){var T=M[P];if(T&&T.length>0){for(var R=0,S=T.length;R<S;++R){var O=T[R];if(O&&O[this.EL]===N&&(!L||L===O[this.TYPE])){Q.push({type:O[this.TYPE],fn:O[this.FN],obj:O[this.OBJ],adjust:O[this.OVERRIDE],scope:O[this.ADJ_SCOPE],index:R});}}}}return(Q.length)?Q:null;},_unload:function(S){var R=YAHOO.util.Event,P,O,M,L,N;for(P=0,L=K.length;P<L;++P){M=K[P];if(M){var Q=window;if(M[R.ADJ_SCOPE]){if(M[R.ADJ_SCOPE]===true){Q=M[R.UNLOAD_OBJ];}else{Q=M[R.ADJ_SCOPE];}}M[R.FN].call(Q,R.getEvent(S,M[R.EL]),M[R.UNLOAD_OBJ]);K[P]=null;M=null;Q=null;}}K=null;if(I&&I.length>0){O=I.length;while(O){N=O-1;M=I[N];if(M){R.removeListener(M[R.EL],M[R.TYPE],M[R.FN],N);}O=O-1;}M=null;R.clearCache();}for(P=0,L=G.length;P<L;++P){G[P][0]=null;G[P]=null;}G=null;R._simpleRemove(window,"unload",R._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var L=document.documentElement,M=document.body;if(L&&(L.scrollTop||L.scrollLeft)){return[L.scrollTop,L.scrollLeft];}else{if(M){return[M.scrollTop,M.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(N,O,M,L){N.addEventListener(O,M,(L));};}else{if(window.attachEvent){return function(N,O,M,L){N.attachEvent("on"+O,M);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(N,O,M,L){N.removeEventListener(O,M,(L));};}else{if(window.detachEvent){return function(M,N,L){M.detachEvent("on"+N,L);};}else{return function(){};}}}()};}();(function(){var D=YAHOO.util.Event;D.on=D.addListener;if(D.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var B,E=document,A=E.body;if(("undefined"!==typeof YAHOO_config)&&YAHOO_config.injecting){B=document.createElement("script");var C=E.getElementsByTagName("head")[0]||A;C.insertBefore(B,C.firstChild);}else{E.write("<script id=\"_yui_eu_dr\" defer=\"true\" src=\"//:\"></script>");B=document.getElementById("_yui_eu_dr");}if(B){B.onreadystatechange=function(){if("complete"===this.readyState){this.parentNode.removeChild(this);YAHOO.util.Event._ready();}};}else{}B=null;}else{if(D.webkit){D._drwatch=setInterval(function(){var F=document.readyState;if("loaded"==F||"complete"==F){clearInterval(D._drwatch);D._drwatch=null;D._ready();}},D.POLL_INTERVAL);}else{D._simpleAdd(document,"DOMContentLoaded",D._ready);}}D._simpleAdd(window,"load",D._load);D._simpleAdd(window,"unload",D._unload);D._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,override:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};
var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].override);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};YAHOO.util.KeyListener=function(A,F,B,C){if(!A){}else{if(!F){}else{if(!B){}}}if(!C){C=YAHOO.util.KeyListener.KEYDOWN;}var D=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof A=="string"){A=document.getElementById(A);}if(typeof B=="function"){D.subscribe(B);}else{D.subscribe(B.fn,B.scope,B.correctScope);}function E(K,J){if(!F.shift){F.shift=false;}if(!F.alt){F.alt=false;}if(!F.ctrl){F.ctrl=false;}if(K.shiftKey==F.shift&&K.altKey==F.alt&&K.ctrlKey==F.ctrl){var H;var G;if(F.keys instanceof Array){for(var I=0;I<F.keys.length;I++){H=F.keys[I];if(H==K.charCode){D.fire(K.charCode,K);break;}else{if(H==K.keyCode){D.fire(K.keyCode,K);break;}}}}else{H=F.keys;if(H==K.charCode){D.fire(K.charCode,K);}else{if(H==K.keyCode){D.fire(K.keyCode,K);}}}}}this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(A,C,E);this.enabledEvent.fire(F);}this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(A,C,E);this.disabledEvent.fire(F);}this.enabled=false;};this.toString=function(){return"KeyListener ["+F.keys+"] "+A.tagName+(A.id?"["+A.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.register("event",YAHOO.util.Event,{version:"2.3.1",build:"541"});YAHOO.register("yahoo-dom-event", YAHOO, {version: "2.3.1", build: "541"});
/**
 * IFrame Message Routing Utility.
 * Author: Julien Lecomte <jlecomte@yahoo-inc.com>
 * Copyright (c) 2007, Yahoo! Inc. All rights reserved.
 * Code licensed under the BSD License:
 *     http://developer.yahoo.net/yui/license.txt
 *
 * @requires yahoo, event
 * @namespace YAHOO.util
 * @title IFrame Message Routing Utility
 */

/**
 * The CrossFrame singleton allows iframes to safely communicate even
 * if they are on different domains. This utility requires a proxy HTML
 * file (proxy.html)
 *
 * @class CrossFrame
 */
YAHOO.util.CrossFrame = (function () {

    var r1 = /^(((top|parent|frames\[((['"][a-zA-Z\d-_]*['"])|\d+)\]))(\.|$))+/;
    var r2 = /top|parent|frames\[(?:(?:['"][a-zA-Z]*['"])|\d+)\]/;

    function parseQueryString(s) {

        var r, a, p;

        r = {};
        a = s.split('&');
        for (i = 0; i < a.length; i++) {
            p = a[i].split('=');
            if (p.length === 2 && p[0].length > 0) {
                r[p[0]] = unescape(p[1]);
            }
        }

        return r;
    }

    if (YAHOO.env.ua.opera) {

        // Opera does not allow reading any property (including parent, frames)
        // if the domain of the caller and the domain of the target window do
        // not match. We work around this by chaining calls, and using Opera's
        // postMessage function...
        document.addEventListener("message", function (evt) {
            var o = parseQueryString(evt.data);
            if (YAHOO.lang.hasOwnProperty(o, "target") &&
                    YAHOO.lang.hasOwnProperty(o, "message") &&
                    YAHOO.lang.hasOwnProperty(o, "domain") &&
                    YAHOO.lang.hasOwnProperty(o, "uri")) {
                if (o.target.length > 0) {
                    // Send the message to the next document in the chain.
                    YAHOO.util.CrossFrame.send(null, o.target, o.message, o.domain, o.uri);
                } else {
                    // Let the application know a message has been received.
                    YAHOO.util.CrossFrame.onMessageEvent.fire(o.message, o.domain, o.uri);
                }
            }
        }, false);

    }

    return {

        /**
         * Fired when a message is received.
         *
         * @event onMessageEvent
         */
        onMessageEvent: new YAHOO.util.CustomEvent("onMessage"),

        /**
         * Sends a message to an iframe, using the specified proxy.
         *
         * @method send
         * @param {string} proxy Complete path to the proxy file.
         * @param {string} target Target iframe e.g: parent.frames["foo"]
         * @param {string} message The message to send.
         */
        send: function (proxy, target, message) {


            var m, t, d, u, s, el;

            // Match things like parent.frames["aaa"].top.frames[0].frames['bbb']
            if (!r1.test(target)) {
                throw new Error("Invalid target: " + target);
            }

            if (YAHOO.env.ua.opera) {

                // Opera is the only A-grade browser that does not allow
                // reading properties like parent.frames when this document and
                // its parent are on separate domains. The solution is to use
                // the parent as a "hub" to route messages to the appropriate
                // IFrame, and use the Opera's postMessage function...

                m = r2.exec(target);
                // safe to eval...
                t = eval(m[0]).document;

                // Remove one element from the target chain.
                target = target.substr(m[0].length + 1);

                // Compose the message...
                d = arguments.length > 3 ? arguments[3] : document.domain;
                u = arguments.length > 4 ? arguments[4] : location.href;
                s = "target=" + escape(target) +
                    "&message=" + escape(message) +
                    "&domain=" + escape(d) +
                    "&uri=" + escape(u);

                // ...and send it!
                t.postMessage(s);

            } else {

                // Create a new hidden iframe.
                el = document.createElement("iframe");
                el.style.position = "absolute";
                el.style.visibility = "hidden";
                el.style.top = el.style.left = "0";
                el.style.width = el.style.height = "0";
                document.body.appendChild(el);
				
			 
                // Listen for the onload event.
                YAHOO.util.Event.addListener(el, "load", function () {
					
                    // First, remove the event listener or the iframe
                    // we intend to discard will not be freed...
                    YAHOO.util.Event.removeListener(this, "load", arguments.callee);
                    // Discard the iframe...
                    setTimeout(function () {				 
                        document.body.removeChild(el);
                    }, 1000);
                });

                // Compose the message...
                s = "target=" + escape(target) +
                    "&message=" + escape(message) +
                    "&domain=" + escape(document.domain) +
                    "&uri=" + escape(location.href);

                // Set its src first...
                el.src = proxy + "#" + s;

                // ...and then append it to the body of the document.
                document.body.appendChild(el);
				
				return "x";
					
            }
        }
    };

})();var ieworkaround=false;if(browserName=="Explorer"){ieworkaround=true;}var ztalk_included=false;var zqanda_included=false;var zview_included=false;var ztour_included=false;var zbios_included=false;var zguide_included=false;var zyteuserid=1296;
zqanda_included=true;
	
	function zqanda_refreshDependentPositions(){
		if(document.getElementById("ZyteAvatar_calldiv")){
			document.getElementById("ZyteAvatar_calldiv").style.left=(Number(zqanda_open_position_x)+112)+"px";
			document.getElementById("ZyteAvatar_calldiv").style.top=(Number(zqanda_open_position_y)+28)+"px";
		}
		if(document.getElementById("ZyteAvatar_avatarcallclosebutton")){
			document.getElementById("ZyteAvatar_avatarcallclosebutton").style.left=(zqanda_open_position_x+79)+"px";
			document.getElementById("ZyteAvatar_avatarcallclosebutton").style.top=(zqanda_open_position_y+10)+"px";
		}
		if(document.getElementById("ZyteAvatar_statusDiv")){
			document.getElementById("ZyteAvatar_statusDiv").style.left=(zqanda_open_position_x+125)+"px";
			document.getElementById("ZyteAvatar_statusDiv").style.top=(zqanda_open_position_y+15)+"px";
		}
		
	}

	function zqanda_checkAutoCenter(){
		if(zqanda_autocenter==1 && document.getElementById('zyte_avatar_contents')){
		var zqanda_screenWidth=800;
		var zqanda_screenHeight=600;
		if(!ieworkaround){
				zqanda_screenWidth=window.innerWidth;
				zqanda_screenHeight=window.innerHeight;
				scrolldist=document.documentElement.scrollTop;
		}else{
				
				zqanda_screenWidth=document.documentElement.clientWidth;
				zqanda_screenHeight=document.documentElement.clientHeight;
				scrolldist=document.documentElement.scrollTop;
				if(zqanda_screenWidth==0){
					zqanda_screenWidth=document.body.clientWidth;
					zqanda_screenHeight=document.body.clientHeight;	
					scrolldist=document.body.scrollTop;
				}
		}
		
		
		zqanda_leftDistance=document.getElementById('zyte_avatar_contents').offsetLeft;
		zqanda_topDistance=document.getElementById('zyte_avatar_contents').offsetTop;
		cNode=document.getElementById('zyte_avatar_contents').parentNode;
		
		
		while(cNode!=null && cNode.offsetLeft!=null && cNode.offsetTop!=null){
			
			//alert(cNode.tagName+" "+cNode.offsetLeft+" "+cNode.offsetTop);
			if(cNode.tagName!=="TD" && cNode.tagName!="TABLE"){
				zqanda_leftDistance+=cNode.offsetLeft;
				zqanda_topDistance+=cNode.offsetTop;
			}
			cNode=cNode.offsetParent;
			
			
		}
		
			
		if(document.getElementById("zqandadebug")) document.getElementById("zqandadebug").innerHTML=zqanda_screenWidth;
			zqanda_cpointx=zqanda_screenWidth/2;
			zqanda_cpointy=zqanda_screenHeight/2;
			zqanda_open_position_x=zqanda_cpointx-zqanda_leftDistance-329;
			zqanda_open_position_y=zqanda_cpointy-zqanda_topDistance+109+scrolldist;
			
			if(zqanda_open_position_x>0)
				zqanda_slide_direction='right';
			else
				zqanda_slide_direction='left';
			zqanda_refreshDependentPositions();
	}
}
	ZyteAvatar_questions="";
	
	if(document.getElementById('zyte_avatar_contents')){
		
		for(i=0;i<zqanda_clip_names.length;i++){
			ZyteAvatar_questions+="<a id=\"ZyteAvatar_link"+i+"\"  onmouseout=\"javascript:document.getElementById('ZyteAvatar_link"+i+"').style.color='#FFFFFF'\" onmouseover=\"javascript:document.getElementById('ZyteAvatar_link"+i+"').style.color='#7c9eff';\" style=\"color:#FFFFFF;text-decoration:none;font-family:Verdana, Arial, Helvetica, sans-serif;\" href=\"javascript:ZyteAvatar_playClip("+i+")\"><p style=\"margin-top:10px; margin-bottom:10px;color:#FFFFFF; text-decoration:none;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;\">"+zqanda_clip_text[i]+"</p></a>";
		}
		
		//Write divs and images to document
		document.getElementById('zyte_avatar_contents').innerHTML+="<div id='zqandadebug' style='display:none'></div><iframe id='ZyteAvatar_postframe2' style='display:none'></iframe><iframe id='ZyteAvatar_postframe' src='http://www.elocallink.tv/zyte/blank.php' style='position:absolute;width:0px; height:0px; display:none'></iframe>";
		
		if (zqanda_clicktocall==1) formcode="<form id='ZyteAvatar_ccform' action='javascript:ZyteAvatar_ccInitiate()' style='top:0px; margin:0px; padding:0px'><input type='text' id='tocall' onfocus='javascript:ZyteAvatar_deleteText()' style='width:150px; left:0px; height:21px;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; top:1px;left:0px; margin:0px; position:absolute'> <input type='image' src='http://www.elocallink.tv/zyte/zyte_images/callbutton.jpg' style=' position:absolute; top:-4px; left:160px'></form>";
		else formcode="";
	
		document.getElementById('zyte_avatar_contents').innerHTML+="<div id='ZyteAvatar_calldiv' style='display:none;left:"+(Number(zqanda_open_position_x)+112)+"px;top:"+(Number(zqanda_open_position_y)+28)+"px; position:absolute; z-index:200; width:412px; height:57px;border-width:0px; border-style:solid; border-color:#000000; overflow:hidden'><div id='calldivback' style='position:absolute;width:412px; height:57px; left:0px; top:-45px'><div style='z-index:201; position:absolute; width:250px;left:142px; top:20px; font-family:Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#333333;font-size:11px;border-width:0px; height:20px; border-color:#000000; border-style:solid; padding:0px'>"+formcode+"</div><div style='z-index:201; position:absolute; width:80px;left:60px; top:27px; font-family:Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#333333;font-size:11px;'>Call Us Now</div></div></div>";
		
		
		document.getElementById('zyte_avatar_contents').innerHTML+='<div id="ZyteAvatar_avatar" style="z-index:200;  display:none"></div>';
	
		document.getElementById('ZyteAvatar_avatar').innerHTML+='<div id="ZyteAvatar_flashavatar"style=" z-index:1000; display:none; position:absolute; left:0px; top:0px"></div>';
		
		document.getElementById('ZyteAvatar_avatar').innerHTML+='<div id="ZyteAvatar_lowerbarcontainer" style="z-index:200;overflow:hidden; position:absolute; width:642px; left:10px; top:560px; height:46px"></div>';
	
		document.getElementById('ZyteAvatar_avatar').innerHTML+='<div id="ZyteAvatar_lowershadow" style="display:none;position:absolute;left:1px; top:402px"></div>';
	
		if(zqanda_scrolling==0){
		document.getElementById('ZyteAvatar_avatar').innerHTML+="<div id=\"ZyteAvatar_textAreaContainer\" style=\"overflow:hidden; position:absolute;width:246px; height:271px; left:0px; top:0px; z-index:200\"><div id=\"textArea\" style=\"position:absolute; left:0px; top:300px; width:246px; height:271px\"><div id=\"ZyteAvatar_textImage\" style=\"z-index:1; position:absolute;  left:0px; top:0px\"></div><div style=\"z-index:202; color:#333333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;font-weight:bold; position:absolute; left:13px; top:17px\">Frequently Asked Questions</div><div style=\"z-index:202; color:#CCCCCC; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:left; position:absolute; left:10px; top:39px; border-width:0px;padding:5px; border-color:#FCFCFC; font-size:11px; border-style:solid; width:215px; height:229px; \">"+ZyteAvatar_questions+"</div><a href=\"javascript:ZyteAvatar_closeAvatarDiv()\"> <img id=\"ZyteAvatar_avatarclosebutton\" src=\"http://www.elocallink.tv/zyte/zyte_images/closebutton.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/closebuttonbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/closebutton.jpg'\"style=\"position:absolute;margin:0px; border-width:0px; left:203px; top:11px; z-index:205\" /></a>";
		}
		else{
			document.getElementById('ZyteAvatar_avatar').innerHTML+="<div id=\"ZyteAvatar_textAreaContainer\" style=\"overflow:hidden; position:absolute;width:246px; height:271px; left:0px; top:0px; z-index:200\"><div id=\"textArea\" style=\"position:absolute; left:0px; top:300px; width:246px; height:271px\"><div id=\"ZyteAvatar_textImage\" style=\"z-index:1; position:absolute; left:0px; top:0px\"></div><div style=\"z-index:202; color:#333333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;font-weight:bold; position:absolute; left:13px; top:17px\">Frequently Asked Questions</div><div id=\"ZyteAvatar_scrolling_div\" style=\"z-index:202; color:#CCCCCC; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:left; position:absolute; left:10px; top:38px; border-width:0px;padding:5px; border-color:#FCFCFC; font-size:11px; border-style:solid; width:217px; display:none; height:223px;overflow-x: hidden;overflow:auto; overflow-y:scroll;overflow:-moz-scrollbars-vertical !important; \">"+ZyteAvatar_questions+"</div><a href=\"javascript:ZyteAvatar_closeAvatarDiv()\"> <img id=\"ZyteAvatar_avatarclosebutton\" src=\"http://www.elocallink.tv/zyte/zyte_images/closebutton.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/closebuttonbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/closebutton.jpg'\"style=\"position:absolute; border-width:0px; left:203px; top:11px; z-index:205\" /></a>";
		}
		
	   document.getElementById('ZyteAvatar_avatar').innerHTML+='</div></div><div id="ZyteAvatar_logodiv" style="position:absolute; left:-93px; top:422px; z-index:200; display:none"></div><div id="ZyteAvatar_statusDiv" style="color:#FFFFFF;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;text-align:right; position:absolute; left:'+(zqanda_open_position_x+125)+'px; top:'+(zqanda_open_position_y+17)+'px; color:#333333; font-weight:bold; width:500px; height:20px; text-align:right; z-index:200; display:none">Go ahead, ask me a question.</div>';
	   if(zqanda_clicktocall==1)  document.getElementById('ZyteAvatar_avatar').innerHTML+="<a href=\"javascript:ZyteAvatar_showClickCall(1)\"> <img id=\"ZyteAvatar_avatarcallclosebutton\" src=\"http://www.elocallink.tv/zyte/zyte_images/ccphone_qanda.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/ccphone_qanda_bright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/ccphone_qanda.jpg'\"style=\"border-width:0px;position:absolute; left:"+(zqanda_open_position_x+79)+"px; top:"+(zqanda_open_position_y+10)+"px; z-index:205; display:none\" /></a>";
		if(zqanda_transcript==1)  document.getElementById('ZyteAvatar_avatar').innerHTML+="<img id='ZyteAvatar_transcript' src='http://www.elocallink.tv/zyte/zyte_images/transcript_button.jpg' onclick='javascript:ZyteAvatar_showTranscript()' style=' cursor:pointer; display:none; z-index:200; position:absolute;'>";
	   document.getElementById('ZyteAvatar_avatar').innerHTML+="<div id='ZyteAvatar_transcript_panel' style='height:241px;width:181px;display:block; position:absolute; left:100px; overflow:hidden; top:15px'><div id='ZyteAvatar_transcript_panel_inner' style= 'height:241px;width:176px;position:absolute; display:block; left:-181px; top:0px'><div id='ZyteAvatar_transcript_panel_text' style='display:none; width:176px;overflow:scroll; position:absolute; left:1px; top:4px; height:233px;'><div style='color:#000000; text-align:left; margin:5px'><font style='font-weight:bold;  font-size:11px; font-family:Verdana, Arial, Helvetica, sans-serif'>Transcript</font><br/><br/><div id='current_transcript' style='font-size:11px; font-family:Verdana, Arial, Helvetica, sans-serif'>"+zqanda_transcript+"</div></div></div></div></div>";
		
		document.getElementById('zyte_avatar_contents').innerHTML+='<div id="ZyteAvatar_pngdiv" style="position:absolute; left:0px; top:0px"></div><div id="ZyteAvatar_pngdivover" style="position:absolute; left:0px; top:0px; display:none"></div><div id="ZyteAvatar_pngdivclose" style="position:absolute; left:0px; top:0px; display:none"></div>';
		
	}

		if(document.getElementById('zyte_avatar_contents')){
		ZyteAvatar_opening=false;
		ZyteAvatar_closing=false;
		ZyteAvatar_opened=false;
		ZyteAvatar_originalZ=document.getElementById('zyte_avatar_contents').style.zIndex;
		ZyteAvatar_transcript_opening=false;
		ZyteAvatar_transcript_opened=false;
		ZyteAvatar_last_clicked=-1;
		ZyteAvatar_showClickTransitioning=false;
		ZyteAvatar_showClickOpen=false;
		
		ZyteAvatar_initialX=0;
		ZyteAvatar_initialY=0;
		ZyteAvatar_flashProxy2=null;
		var ZyteAvatar_uid2 = new Date().getTime();
		ZyteAvatar_flashProxy2 = new FlashProxy(ZyteAvatar_uid2, 'http://www.elocallink.tv/web/main/integration-kit/installation/JavaScriptFlashGateway.swf');
		}
	
		function ZyteAvatar_showTranscript(){
			if(ZyteAvatar_transcript_opening==true) return;
			
			var toShow="";
			if(ZyteAvatar_last_clicked==-1) toShow="Please click on a question to view the transcript";
			else toShow=zqanda_transcript_text[ZyteAvatar_last_clicked];
			document.getElementById("current_transcript").innerHTML=toShow;
			
			ZyteAvatar_transcript_opening=true;
			if (ZyteAvatar_transcript_opened==true){
				document.getElementById("ZyteAvatar_transcript_panel_text").style.display="none";
				new Effect.Move ("ZyteAvatar_transcript_panel_inner",{ x: -181, y: 0, mode: 'relative', afterFinish:function(){
																									
					ZyteAvatar_transcript_opening=false;
					ZyteAvatar_transcript_opened=false;																											 
				}});
			}
			else{
				new Effect.Move ("ZyteAvatar_transcript_panel_inner",{ x: 181, y: 0, mode: 'relative', afterFinish:function(){
					document.getElementById("ZyteAvatar_transcript_panel_text").style.display="block";	
					ZyteAvatar_transcript_opening=false;
					ZyteAvatar_transcript_opened=true;
				}});
			}
		}
		
		function ZyteAvatar_playClip(ival){
			ZyteAvatar_last_clicked=ival;
			if(zqanda_transcript==true) document.getElementById("current_transcript").innerHTML=zqanda_transcript_text[ival];
			
			if(zqanda_clip_text[ival].length<80)
				document.getElementById('ZyteAvatar_statusDiv').innerHTML=zqanda_clip_text[ival];
			else
				document.getElementById('ZyteAvatar_statusDiv').innerHTML=zqanda_clip_text[ival].substr(0,71)+"...";
			
			document.getElementById("ZyteAvatar_postframe2").src="http://www.smartsite.tv/tracking/universal_tracking.php?pid="+tracking_pnotes_id+"&insert_type=avatar&questiontitle="+zqanda_clip_text[ival];
			ZyteAvatar_flashProxy2.call('playNewClip', zqanda_clip_names[ival]);
		}
		
		function ZyteAvatar_resetStatusDesc(){
			document.getElementById('ZyteAvatar_statusDiv').innerHTML="Go ahead, ask me a question.";
		}
	
		function ZyteAvatar_closeAvatarDiv(){
		if(ZyteAvatar_closing==true || ZyteAvatar_opening==true || ZyteAvatar_transcript_opening==true || ZyteAvatar_showClickTransitioning==true) return;
			
			ZyteAvatar_last_clicked=-1;
			
			if(ZyteAvatar_showClickOpen==true) ZyteAvatar_retractClickCall();
			
			if (ZyteAvatar_transcript_opened==true){
				document.getElementById("ZyteAvatar_transcript_panel_text").style.display="none";
				if(ZyteAvatar_transcript_opening==false){
					new Effect.Move ("ZyteAvatar_transcript_panel_inner",{ x: -181, duration:.3, y: 0, mode: 'relative', afterFinish:function(){																				
						ZyteAvatar_transcript_opening=false;
						ZyteAvatar_transcript_opened=false;																											 
					}});
				}
				else{
					document.getElementById("ZyteAvatar_transcript_panel_inner").style.left="-181px";
					ZyteAvatar_transcript_opening=false;
					ZyteAvatar_transcript_opened=false;			
				}
			}
			
			ZyteAvatar_flashProxy2.call('fadeOut');
			ZyteAvatar_closing=true;
			ZyteAvatar_opened=false;
			if(zqanda_scrolling!=0){
				document.getElementById('ZyteAvatar_scrolling_div').style.display="none";
			}
			
			document.getElementById('ZyteAvatar_pngdiv').style.display="block";
			document.getElementById('ZyteAvatar_pngdivover').style.display="none";
			document.getElementById('ZyteAvatar_pngdivclose').style.display="none";
			
			setTimeout("ZyteAvatar_closing=true;document.getElementById(\"ZyteAvatar_flashavatar\").style.display=\"none\";overwriteImageToDiv(\"http://www.elocallink.tv/zyte/zyte_images/lowerbarshadow.png\", 643,46, 0,0, \"ZyteAvatar_lowershadow\", \"\");new Effect.Move (\"textArea\",{ x: 0, y: 300, mode: \"relative\", afterFinish:ZyteAvatar_closeBar});", 600);
			
		}
		
		function ZyteAvatar_closeBar(){
			//document.getElementById('ZyteAvatar_lowershadow').innerHTML="";
			document.getElementById('ZyteAvatar_logodiv').innerHTML="";
			if(document.getElementById("ZyteAvatar_avatarcallclosebutton")) document.getElementById("ZyteAvatar_avatarcallclosebutton").style.display="none";
			if(document.getElementById('ZyteAvatar_transcript')) document.getElementById('ZyteAvatar_transcript').style.display="none";
			document.getElementById('ZyteAvatar_transcript_panel').style.display="none";
			document.getElementById('ZyteAvatar_statusDiv').style.display="none";
			document.getElementById('ZyteAvatar_statusDiv').innerHTML="Go ahead, ask me a question.";
			document.getElementById('ZyteAvatar_flashavatar').innerHTML="";
			new Effect.Move ("ZyteAvatar_lowerbarcontainer",{ x: ZyteAvatar_initialX, y: ZyteAvatar_initialY, mode: 'absolute', afterFinish:ZyteAvatar_retractBar});
		}
		
		function ZyteAvatar_retractBar(){
			if(zqanda_slide_direction=="left"){
				new Effect.Move ("ZyteAvatar_lowerbar",{ x: 637, y: 0, mode: 'relative', afterFinish:ZyteAvatar_hideAvatarDiv});
			}
			else{
				new Effect.Move ("ZyteAvatar_lowerbar",{ x: -637, y: 0, mode: 'relative', afterFinish:ZyteAvatar_hideAvatarDiv});
			}
		}
		
		function ZyteAvatar_deleteText(){
				if(document.forms['ZyteAvatar_ccform'].tocall.value=="Enter Your Phone Number") document.forms['ZyteAvatar_ccform'].tocall.value="";
		}

		
		function ZyteAvatar_hideAvatarDiv(){
			document.getElementById('ZyteAvatar_avatar').style.display="none";
			avatarShowing=false;
			ZyteAvatar_closing=false;
			document.getElementById('zyte_avatar_contents').style.zIndex=ZyteAvatar_originalZ;
			
			//If post-function exists, run it
			if(zpostfunction!=null) zpostfunction();
		}
		
		function ZyteAvatar_createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
		
		function ZyteAvatar_ccInitiate(){
			//If the panel is in the process of being closed, don't allow this action
			if(ZyteAvatar_showClickTransitioning==true) return;
			
			if(document.forms["ZyteAvatar_ccform"].tocall.value==""  || document.forms["ZyteAvatar_ccform"].tocall.value=="Enter Your Phone Number") { 
				alert("Please enter your phone number.");
			} else {
				
				//Save the phone number in a cookie
				ZyteAvatar_createCookie("ZyteAvatar_phone_"+zyteuserid,document.forms["ZyteAvatar_ccform"].tocall.value,90) 

				document.getElementById('ZyteAvatar_postframe').src='http://www.elocallink.tv/zyte/call_it.php?number='+document.forms["ZyteAvatar_ccform"].tocall.value+'&destcall='+zclient_ccall_number+'&cc_notify='+zclient_ccall_notify;
				ZyteAvatar_retractClickCall();
		
			}
		}
		
		function ZyteAvatar_moveBarDown(){
			ZyteAvatar_initialX=document.getElementById('ZyteAvatar_lowerbarcontainer').style.left;
			pos=ZyteAvatar_initialX.indexOf("p");
			ZyteAvatar_initialX=String(ZyteAvatar_initialX).substr(0,pos);
			
			ZyteAvatar_initialY=document.getElementById('ZyteAvatar_lowerbarcontainer').style.top;
			pos=ZyteAvatar_initialY.indexOf("p");
			ZyteAvatar_initialY=String(ZyteAvatar_initialY).substr(0,pos);
			
			new Effect.Move ("ZyteAvatar_lowerbarcontainer",{ x: zqanda_open_position_x, y: zqanda_open_position_y, mode: 'absolute', afterFinish:ZyteAvatar_showLoweredBar});
		}
		
		function ZyteAvatar_showLoweredBar(){
		
			//Put logo div in correct position-----------------------------------------------
			newVal=document.getElementById('ZyteAvatar_lowerbarcontainer').style.left;
			pos=newVal.indexOf("p");
			newVal=String(newVal).substr(0,pos);
			
			document.getElementById('ZyteAvatar_logodiv').style.left=String(Number(newVal)-1)+'px';
			if(document.getElementById('ZyteAvatar_transcript')) document.getElementById('ZyteAvatar_transcript').style.left=String(Number(newVal)+110)+'px';
			if(document.getElementById("ZyteAvatar_avatarcallclosebutton")) document.getElementById("ZyteAvatar_avatarcallclosebutton").style.display="block";
			
			newVal2=document.getElementById('ZyteAvatar_lowerbarcontainer').style.top;
			pos2=newVal2.indexOf("p");
			newVal2=String(newVal2).substr(0,pos2);
			
			document.getElementById('ZyteAvatar_logodiv').style.top=newVal2+'px';
			if(document.getElementById('ZyteAvatar_transcript'))  document.getElementById('ZyteAvatar_transcript').style.top=String(Number(newVal2)+13)+'px';
			
			document.getElementById('ZyteAvatar_flashavatar').style.left=newVal+'px'
			document.getElementById('ZyteAvatar_flashavatar').style.top=String(Number(newVal2)-292)+'px'
		
			//Put panel div in correct position-----------------------------------------------
			document.getElementById('ZyteAvatar_textAreaContainer').style.top=String(Number(newVal2)-263)+'px';
			document.getElementById('ZyteAvatar_textAreaContainer').style.left=String(Number(newVal)+397)+'px';
			
			document.getElementById('ZyteAvatar_transcript_panel').style.top=String(Number(newVal2)-229)+'px';
			document.getElementById('ZyteAvatar_transcript_panel').style.left=String(Number(newVal)+635)+'px';
			document.getElementById('ZyteAvatar_transcript_panel').style.display="block";
				
			new Effect.Move ("textArea",{ x: 0, y: -300, mode: 'relative', afterFinish:ZyteAvatar_fullyOpened});
			writeImageToDiv("http://www.elocallink.tv/zyte/zyte_images/zytelogo.png", 76,52, 6,-9, "ZyteAvatar_logodiv", "");
			if(document.getElementById('ZyteAvatar_transcript')) document.getElementById('ZyteAvatar_transcript').style.display="block";
			document.getElementById('ZyteAvatar_logodiv').style.display='block';
			document.getElementById('ZyteAvatar_statusDiv').style.display='block';
			
			
		}
		
		function ZyteAvatar_showClickCall(){
			
			
			if(ZyteAvatar_showClickTransitioning==true) return;
			if(ZyteAvatar_showClickOpen==true)  {ZyteAvatar_retractClickCall(); return;}

			ZyteAvatar_showClickTransitioning=true;
			document.getElementById('ZyteAvatar_calldiv').style.display='block';
			new Effect.Move ("calldivback",{ x: 0, y: 45, mode: 'relative', afterFinish:function(){ZyteAvatar_showClickTransitioning=false;ZyteAvatar_showClickOpen=true;}});
			
			preexistingNumber=ZyteAvatar_readCookie("ZyteAvatar_phone_"+zyteuserid);
			if(preexistingNumber!=null){
				document.forms['ZyteAvatar_ccform'].tocall.value=preexistingNumber;
			}
			else{
				document.forms['ZyteAvatar_ccform'].tocall.value="Enter Your Phone Number";
			}
			//slide cc_div up
			//ZyteAvatar_ccform form with field  tocall filled in from zyte_tocall cookie if available and a ZyteAvatar_ccresponse div
			//calls cc_initiate
		}
		
		function ZyteAvatar_retractClickCall(){
			if(ZyteAvatar_showClickTransitioning==true) return;
			
			ZyteAvatar_showClickTransitioning=true;	
			document.getElementById('ZyteAvatar_calldiv').style.display='block';
			new Effect.Move ("calldivback",{ x: 0, y: -45, mode: 'relative', afterFinish:function(){ZyteAvatar_showClickTransitioning=false;ZyteAvatar_showClickOpen=false;document.getElementById('ZyteAvatar_calldiv').style.display='none';}});
			
		}
		
		function ZyteAvatar_readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
		
		function ZyteAvatar_fullyOpened(){
			document.getElementById('ZyteAvatar_flashavatar').style.display="block";
			if(zqanda_scrolling!=0){
				document.getElementById('ZyteAvatar_scrolling_div').style.display="block";
			}
			ZyteAvatar_opening=false;
			ZyteAvatar_opened=true;
		}
	
		function ZyteAvatar_showAvatar(){
		
		zqanda_checkAutoCenter();
		zqanda_refreshDependentPositions();
		
		if(ZyteAvatar_opening==true || ZyteAvatar_closing==true ||  ZyteAvatar_opened==true) return;
		if(requestPermission()==false) return;
				
				var so = new SWFObject("http://www.elocallink.tv/zyte/avatarplayer3.swf", "recorder", "400", "300", "7", "#FFFFFF");
				so.addVariable("lcId", ZyteAvatar_uid2);
				so.addVariable("waitClip1", zqanda_loop_clip1);
				so.addVariable("waitClip2", zqanda_loop_clip2);
				document.getElementById('zyte_avatar_contents').style.zIndex="1000";
				
				//Add the initial clip
				if(zqanda_initial_clip!=""){so.addVariable("initialClip", zqanda_initial_clip); }
				
				//Add the occasional clips
				if(zqanda_occasional_clip1!=""){ so.addVariable("occasionalClip1", zqanda_occasional_clip1);  so.addVariable("probability1", zqanda_probability1);}
				if(zqanda_occasional_clip2!=""){ so.addVariable("occasionalClip2", zqanda_occasional_clip2);  so.addVariable("probability2", zqanda_probability2);}
				if(zqanda_occasional_clip3!=""){ so.addVariable("occasionalClip3", zqanda_occasional_clip3);  so.addVariable("probability3", zqanda_probability3);}
				if(zqanda_occasional_clip4!=""){ so.addVariable("occasionalClip4", zqanda_occasional_clip4);  so.addVariable("probability4", zqanda_probability4);}
				if(zqanda_occasional_clip5!=""){ so.addVariable("occasionalClip5", zqanda_occasional_clip5);  so.addVariable("probability5", zqanda_probability5);}
	
				
				so.addParam("wmode", "transparent");
				so.write("ZyteAvatar_flashavatar");
		
				//If pre-function exists, run it
				if(zprefunction!=null) zprefunction();
		
				newVal=document.getElementById('ZyteAvatar_pngdiv').style.top;
				pos=newVal.indexOf("p");
				newVal=String(newVal).substr(0,pos);
				
				newVal2=document.getElementById('ZyteAvatar_pngdiv').style.left;
				pos2=newVal2.indexOf("p");
				newVal2=String(newVal2).substr(0,pos2);
				
				if(zqanda_slide_direction=="left"){
					ZyteAvatar_topmargin=0;
					ZyteAvatar_leftmargin=-622;
					if(zqanda_show_icon) { ZyteAvatar_topmargin=20;ZyteAvatar_leftmargin=-612;}
					
					document.getElementById('ZyteAvatar_lowerbarcontainer').style.top=String(Number(newVal)+ZyteAvatar_topmargin)+'px';
					document.getElementById('ZyteAvatar_lowerbarcontainer').style.left=String(Number(newVal2)+ZyteAvatar_leftmargin)+'px';
					document.getElementById('ZyteAvatar_lowerbar').style.left="637px";
					new Effect.Move ("ZyteAvatar_lowerbar",{ x: -637, y: 0, mode: 'relative', afterFinish:ZyteAvatar_moveBarDown});
				}
				else{
					if(zqanda_show_icon) newVal3=newVal3=document.getElementById('Zyte_Avatar_Icon').style.width;
					else newVal3=document.getElementById("zyte_avatar_contents").style.width;
					
					ZyteAvatar_topmargin=0;
					ZyteAvatar_leftmargin=0;
					if(zqanda_show_icon) { ZyteAvatar_topmargin=20; ZyteAvatar_leftmargin=-15;}
					
					pos3=newVal3.indexOf("p");
					newVal3=String(newVal3).substr(0,pos3);
					newVal2=Number(newVal2)+Number(newVal3);
		
		
					document.getElementById('ZyteAvatar_lowerbarcontainer').style.top=String(Number(newVal)+ZyteAvatar_topmargin)+'px';
					document.getElementById('ZyteAvatar_lowerbarcontainer').style.left=String(Number(newVal2)+ZyteAvatar_leftmargin)+'px';
					document.getElementById('ZyteAvatar_lowerbar').style.left="-637px";
					new Effect.Move ("ZyteAvatar_lowerbar",{ x: 637, y: 0, mode: 'relative', afterFinish:ZyteAvatar_moveBarDown});
				}
		
				ZyteAvatar_opening=true;
				document.getElementById('ZyteAvatar_pngdiv').style.display="none";
				document.getElementById('ZyteAvatar_pngdivover').style.display="none";
				document.getElementById('ZyteAvatar_pngdivclose').style.display="block";
				document.getElementById('ZyteAvatar_avatar').style.display="block";
		}
		
    
 if(document.getElementById('zyte_avatar_contents')){
	 	if(window["zqanda_icon_width"]==null) widthToUse=125; else widthToUse=zqanda_icon_width;
		if(window["zqanda_icon_height"]==null) heightToUse=89; else heightToUse=zqanda_icon_height;
		
		if(zqanda_show_icon) writeImageToDivWithMouseEventsAndID(zqanda_icon, widthToUse,heightToUse, 0,0, "ZyteAvatar_pngdiv","ZyteAvatar_showRollover()", "",  "javascript:ZyteAvatar_showAvatar()", "Zyte_Avatar_Icon");
		if(zqanda_show_icon) writeImageToDivWithMouseEvents(zqanda_icon_highlighted, widthToUse,heightToUse, 0,0, "ZyteAvatar_pngdivover","", "ZyteAvatar_hideRollover()",  "javascript:ZyteAvatar_showAvatar()");
		if(zqanda_show_icon) writeImageToDiv(zqanda_icon_close, widthToUse,heightToUse, 0,0, "ZyteAvatar_pngdivclose", "javascript:ZyteAvatar_closeAvatarDiv()");
		 writeImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/lowerbar.png", 642, 46, 0, 0, "ZyteAvatar_lowerbarcontainer", "ZyteAvatar_lowerbar", "");
			writeImageToDivBeginning("http://www.elocallink.tv/zyte/zyte_images/transcript_panel.png", 181,241, 0,0, "ZyteAvatar_transcript_panel_inner", "");
		writeImageToDivBeginning("http://www.elocallink.tv/zyte/zyte_images/slider.png", 246,271, 0,0, "ZyteAvatar_textImage", "");
		writeImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/callpanel_reversed.png", 412,57, 0,0, "calldivback","calldivbackimage", "");
		

 }
		function ZyteAvatar_showRollover(){
			document.getElementById('ZyteAvatar_pngdiv').style.display="none";
			document.getElementById('ZyteAvatar_pngdivover').style.display="block";
			document.getElementById('ZyteAvatar_pngdivclose').style.display="none";
		}
		
		function ZyteAvatar_hideRollover(){
			if(!ZyteAvatar_opening){
				document.getElementById('ZyteAvatar_pngdiv').style.display="block";
				document.getElementById('ZyteAvatar_pngdivover').style.display="none";
				document.getElementById('ZyteAvatar_pngdivclose').style.display="none";
			}
		}
		


    //yesindeed
var zguide_indexval=1;
if(document.getElementById('zyte_guide_contents_0')){ zguide_indexval=0;ZyteGuide_divToUse='zyte_guide_contents_0'; ZyteGuide_movToUse=zguide_clip[0]; ZyteGuide_openXToUse=zguide_open_position_x[0];ZyteGuide_openYToUse=zguide_open_position_y[0]; ZyteGuide_dirToUse=zguide_slide_direction[0];}
else if(document.getElementById('zyte_guide_contents_1')){ zguide_indexval=1;ZyteGuide_divToUse='zyte_guide_contents_1'; ZyteGuide_movToUse=zguide_clip[1]; ZyteGuide_openXToUse=zguide_open_position_x[1];ZyteGuide_openYToUse=zguide_open_position_y[1];ZyteGuide_dirToUse=zguide_slide_direction[1];}
else if(document.getElementById('zyte_guide_contents_2')){ zguide_indexval=2;ZyteGuide_divToUse='zyte_guide_contents_2'; ZyteGuide_movToUse=zguide_clip[2]; ZyteGuide_openXToUse=zguide_open_position_x[2];ZyteGuide_openYToUse=zguide_open_position_y[2];ZyteGuide_dirToUse=zguide_slide_direction[2];}
else if(document.getElementById('zyte_guide_contents_3')){ zguide_indexval=3;ZyteGuide_divToUse='zyte_guide_contents_3'; ZyteGuide_movToUse=zguide_clip[3]; ZyteGuide_openXToUse=zguide_open_position_x[3];ZyteGuide_openYToUse=zguide_open_position_y[3];ZyteGuide_dirToUse=zguide_slide_direction[3];}
else if(document.getElementById('zyte_guide_contents_4')){ zguide_indexval=4;ZyteGuide_divToUse='zyte_guide_contents_4'; ZyteGuide_movToUse=zguide_clip[4]; ZyteGuide_openXToUse=zguide_open_position_x[4];ZyteGuide_openYToUse=zguide_open_position_y[4];ZyteGuide_dirToUse=zguide_slide_direction[4];}
else if(document.getElementById('zyte_guide_contents_5')){ zguide_indexval=5;ZyteGuide_divToUse='zyte_guide_contents_5'; ZyteGuide_movToUse=zguide_clip[5]; ZyteGuide_openXToUse=zguide_open_position_x[5];ZyteGuide_openYToUse=zguide_open_position_y[5];ZyteGuide_dirToUse=zguide_slide_direction[5];}
else if(document.getElementById('zyte_guide_contents_6')){ zguide_indexval=6;ZyteGuide_divToUse='zyte_guide_contents_6'; ZyteGuide_movToUse=zguide_clip[6]; ZyteGuide_openXToUse=zguide_open_position_x[6];ZyteGuide_openYToUse=zguide_open_position_y[6];ZyteGuide_dirToUse=zguide_slide_direction[6];}
else if(document.getElementById('zyte_guide_contents_7')){ zguide_indexval=7;ZyteGuide_divToUse='zyte_guide_contents_7'; ZyteGuide_movToUse=zguide_clip[7]; ZyteGuide_openXToUse=zguide_open_position_x[7];ZyteGuide_openYToUse=zguide_open_position_y[7];ZyteGuide_dirToUse=zguide_slide_direction[7];}
else if(document.getElementById('zyte_guide_contents_8')){ zguide_indexval=8;ZyteGuide_divToUse='zyte_guide_contents_8'; ZyteGuide_movToUse=zguide_clip[8]; ZyteGuide_openXToUse=zguide_open_position_x[8];ZyteGuide_openYToUse=zguide_open_position_y[8];ZyteGuide_dirToUse=zguide_slide_direction[8];}
else if(document.getElementById('zyte_guide_contents_9')){ zguide_indexval=9;ZyteGuide_divToUse='zyte_guide_contents_9'; ZyteGuide_movToUse=zguide_clip[9]; ZyteGuide_openXToUse=zguide_open_position_x[9];ZyteGuide_openYToUse=zguide_open_position_y[9];ZyteGuide_dirToUse=zguide_slide_direction[9];}
else if(document.getElementById('zyte_guide_contents_10')){ zguide_indexval=10;ZyteGuide_divToUse='zyte_guide_contents_10'; ZyteGuide_movToUse=zguide_clip[10]; ZyteGuide_openXToUse=zguide_open_position_x[10];ZyteGuide_openYToUse=zguide_open_position_y[10];ZyteGuide_dirToUse=zguide_slide_direction[10];}
else if(document.getElementById('zyte_guide_contents_11')){ zguide_indexval=11;ZyteGuide_divToUse='zyte_guide_contents_11'; ZyteGuide_movToUse=zguide_clip[11]; ZyteGuide_openXToUse=zguide_open_position_x[11];ZyteGuide_openYToUse=zguide_open_position_y[11];ZyteGuide_dirToUse=zguide_slide_direction[11];}
else if(document.getElementById('zyte_guide_contents_12')){ zguide_indexval=12;ZyteGuide_divToUse='zyte_guide_contents_12'; ZyteGuide_movToUse=zguide_clip[12]; ZyteGuide_openXToUse=zguide_open_position_x[12];ZyteGuide_openYToUse=zguide_open_position_y[12];ZyteGuide_dirToUse=zguide_slide_direction[12];}
else if(document.getElementById('zyte_guide_contents_13')){ zguide_indexval=13;ZyteGuide_divToUse='zyte_guide_contents_13'; ZyteGuide_movToUse=zguide_clip[13]; ZyteGuide_openXToUse=zguide_open_position_x[13];ZyteGuide_openYToUse=zguide_open_position_y[13];ZyteGuide_dirToUse=zguide_slide_direction[13];}
else if(document.getElementById('zyte_guide_contents_14')){ zguide_indexval=14;ZyteGuide_divToUse='zyte_guide_contents_14'; ZyteGuide_movToUse=zguide_clip[14]; ZyteGuide_openXToUse=zguide_open_position_x[14];ZyteGuide_openYToUse=zguide_open_position_y[14];ZyteGuide_dirToUse=zguide_slide_direction[14];}
else if(document.getElementById('zyte_guide_contents_15')){ zguide_indexval=15;ZyteGuide_divToUse='zyte_guide_contents_15'; ZyteGuide_movToUse=zguide_clip[15]; ZyteGuide_openXToUse=zguide_open_position_x[15];ZyteGuide_openYToUse=zguide_open_position_y[15];ZyteGuide_dirToUse=zguide_slide_direction[15];}
else if(document.getElementById('zyte_guide_contents_16')){ zguide_indexval=16;ZyteGuide_divToUse='zyte_guide_contents_16'; ZyteGuide_movToUse=zguide_clip[16]; ZyteGuide_openXToUse=zguide_open_position_x[16];ZyteGuide_openYToUse=zguide_open_position_y[16];ZyteGuide_dirToUse=zguide_slide_direction[16];}
else if(document.getElementById('zyte_guide_contents_17')){ zguide_indexval=17;ZyteGuide_divToUse='zyte_guide_contents_17'; ZyteGuide_movToUse=zguide_clip[17]; ZyteGuide_openXToUse=zguide_open_position_x[17];ZyteGuide_openYToUse=zguide_open_position_y[17];ZyteGuide_dirToUse=zguide_slide_direction[17];}
else if(document.getElementById('zyte_guide_contents_18')){ zguide_indexval=18;ZyteGuide_divToUse='zyte_guide_contents_18'; ZyteGuide_movToUse=zguide_clip[18]; ZyteGuide_openXToUse=zguide_open_position_x[18];ZyteGuide_openYToUse=zguide_open_position_y[18];ZyteGuide_dirToUse=zguide_slide_direction[18];}
else if(document.getElementById('zyte_guide_contents_19')){ zguide_indexval=19;ZyteGuide_divToUse='zyte_guide_contents_19'; ZyteGuide_movToUse=zguide_clip[19]; ZyteGuide_openXToUse=zguide_open_position_x[19];ZyteGuide_openYToUse=zguide_open_position_y[19];ZyteGuide_dirToUse=zguide_slide_direction[19];}
else {ZyteGuide_divToUse='zyte_guide_contents'; zguide_indexval=0;ZyteGuide_movToUse=zguide_clip[0]; ZyteGuide_cookieToUse="";ZyteGuide_openXToUse=zguide_open_position_x[0];ZyteGuide_openYToUse=zguide_open_position_y[0];ZyteGuide_dirToUse=zguide_slide_direction[0];}


zguide_included=true;

	function zguide_refreshDependentPositions(){
	
		if(document.getElementById("ZyteGuide_lowerbarcontainer")){
			document.getElementById("ZyteGuide_lowerbarcontainer").style.top=(ZyteGuide_openYToUse+10)+"px";
		}
		if(document.getElementById("ZyteGuide_desctext")){
			document.getElementById("ZyteGuide_desctext").style.left=(ZyteGuide_openXToUse+23)+"px";
			document.getElementById("ZyteGuide_desctext").style.top=(ZyteGuide_openYToUse+17)+"px";
		}
		if(document.getElementById("ZyteGuide_avatarclosebutton")){
			document.getElementById("ZyteGuide_avatarclosebutton").style.left=(ZyteGuide_openXToUse+375)+"px";
			document.getElementById("ZyteGuide_avatarclosebutton").style.top=(ZyteGuide_openYToUse+11)+"px";
		}
		if(document.getElementById("ZyteGuide_pause")){
			document.getElementById("ZyteGuide_pause").style.left=(ZyteGuide_openXToUse+180)+"px";
			document.getElementById("ZyteGuide_pause").style.top=(ZyteGuide_openYToUse+10)+"px";
		}
		if(document.getElementById("ZyteGuide_sound")){
			document.getElementById("ZyteGuide_sound").style.left=(ZyteGuide_openXToUse+210)+"px";
			document.getElementById("ZyteGuide_sound").style.top=(ZyteGuide_openYToUse+10)+"px";
		}
		
		

	}
	
	function zguide_checkAutoCenter(){
	if(window["zguide_autocenter"+zguide_indexval]==1 && document.getElementById(ZyteGuide_divToUse)){
		
		var zguide_screenWidth=800;
		var zguide_screenHeight=600;
		if(!ieworkaround){
				zguide_screenWidth=window.innerWidth;
				zguide_screenHeight=window.innerHeight;
				scrolldist=document.documentElement.scrollTop;
		}else{
				zguide_screenWidth=document.documentElement.clientWidth;
				zguide_screenHeight=document.documentElement.clientHeight;
				scrolldist=document.documentElement.scrollTop;
				if(zguide_screenWidth==0){
					zguide_screenWidth=document.body.clientWidth;
					zguide_screenHeight=document.body.clientHeight;	
					scrolldist=document.body.scrollTop;
				}
		}
		
		zguide_leftDistance=document.getElementById(ZyteGuide_divToUse).offsetLeft;
		zguide_topDistance=document.getElementById(ZyteGuide_divToUse).offsetTop;
		if(document.getElementById("zguidedebug"))document.getElementById("zguidedebug").innerHTML+="!!"+zguide_topDistance+"!";
		cNode=document.getElementById(ZyteGuide_divToUse).offsetParent;
		while(cNode!=null && cNode.offsetLeft!=null && cNode.offsetTop!=null){
			if(document.getElementById("zguidedebug")) document.getElementById("zguidedebug").innerHTML+=" "+cNode.tagName;
			
			if(cNode.tagName!=="TD" && cNode.tagName!="TABLE"){
				zguide_leftDistance+=cNode.offsetLeft;
				zguide_topDistance+=cNode.offsetTop;
				if(document.getElementById("zguidedebug"))document.getElementById("zguidedebug").innerHTML+="*"+cNode.offsetTop+"*"+cNode.tagName+"*"+cNode.id;
			}
			cNode=cNode.offsetParent;
		}
			
			
			zguide_cpointx=zguide_screenWidth/2;
			zguide_cpointy=zguide_screenHeight/2;
			ZyteGuide_openXToUse=zguide_cpointx-zguide_leftDistance-216;
			ZyteGuide_openYToUse=zguide_cpointy-zguide_topDistance+134+scrolldist;
			//if(document.getElementById("zguidedebug"))document.getElementById("zguidedebug").innerHTML=zguide_screenWidth+" "+zguide_leftDistance+" "+ZyteGuide_openXToUse;
		
			if(ZyteGuide_openXToUse>-120)
				ZyteGuide_dirToUse='right';
			else
				ZyteGuide_dirToUse='left';
			
	}
	}

if(document.getElementById(ZyteGuide_divToUse)){
	
	//Write divs and images to document
	document.getElementById(ZyteGuide_divToUse).innerHTML+="<div id='zguidedebug' style='display:none'></div><iframe id='ZyteGuide_postframe' src='http://www.elocallink.tv/zyte/blank.php' style='position:absolute;width:0px; height:0px; display:none'></iframe>";
	document.getElementById(ZyteGuide_divToUse).innerHTML+='<div id="ZyteGuide_avatar" style="z-index:210; display:none"></div>';
	
	document.getElementById('ZyteGuide_avatar').innerHTML+='<div id="ZyteGuide_lowerbarcontainer" style="z-index:200;overflow:hidden; position:absolute; width:418px; left:0px; top:'+(ZyteGuide_openYToUse+10)+'px; height:46px"></div>';
	
	document.getElementById('ZyteGuide_avatar').innerHTML+='<div id="ZyteGuide_desctext" style="z-index:202; color:#333333; font-family:Verdana, Arial, Helvetica, sans-serif; font-weight:bold; position:absolute; left:'+(ZyteGuide_openXToUse+23)+'px; top:'+(ZyteGuide_openYToUse+17)+'px;text-align:left; font-size:11px; width:200px; display:none"></div>';
	
	document.getElementById('ZyteGuide_avatar').innerHTML+='<div id="ZyteGuide_lowershadow" style="display:none;position:absolute;left:0px; top:0px"></div>';

	document.getElementById('ZyteGuide_avatar').innerHTML+='<div id="ZyteGuide_flashavatar"style=" display:none; position:absolute; border-width:0px;z-index:220; border-color:#000000; border-style:solid; left:0px; top:0px"></div>';

	document.getElementById('ZyteGuide_avatar').innerHTML+="<div id=\"ZyteGuide_textAreaContainer\" style=\"overflow:hidden; position:absolute;width:418px; height:338px; left:0px; top:0px; z-index:200\"><div id=\"ZyteGuide_textArea\" style=\"position:absolute; left:0px; top:400px; width:418px; height:338px\"><div id=\"ZyteGuide_textImage\" style=\"z-index:1; position:absolute; left:0px; top:0px\"></div><div style=\"z-index:202; color:#CCCCCC; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:left; position:absolute; left:10px; top:39px; border-width:0px;padding:5px; border-color:#FCFCFC; border-style:solid; width:215px; height:229px; \"></div><div id=\"ZyteGuide_sendtofrienddiv\" style=\"display:none\"><div style=\"z-index:202; color:#FFFFFF; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;text-align:left; position:absolute; left:0px; top:49px; border-width:0px;padding:5px; border-color:#FCFCFC; border-style:solid; width:406px; height:229px;text-align:center; font-weight:bold\">Would you like to share this with a friend?</div><div style=\"z-index:202; color:#FFFFFF; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:left; position:absolute; left:80px;font-size:11px; top:77px; border-width:0px;padding:5px; border-color:#FCFCFC; border-style:solid; width:306px; height:29px;text-align:left; font-weight:bold\"><form id=\"ZyteGuide_sendform\" >Recipient Address (e.g. jane@site.com)<br /><input type=\"text\" onFocus=\"ZyteGuide_focusFunc()\" name=\"sendaddress\" id=\"sendaddress\" style=\" width:240px; font-weight:normal; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; margin-bottom:4px\" /><br />Sender Address (e.g. jane@site.com)<br /><input type=\"text\" onFocus=\"ZyteGuide_focusFunc()\"name=\"fromaddress\" id=\"fromaddress\" style=\"width:240px; font-weight:normal; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; margin-bottom:4px\" /><br />Subject<br /><input type=\"text\" onFocus=\"ZyteGuide_focusFunc()\"name=\"sendsubject\" id=\"sendsubject\" style=\"width:240px; font-weight:normal; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; margin-bottom:4px\" /><br />Body Text<br /><textarea name=\"sendbody\" onFocus=\"ZyteGuide_focusFunc()\"id=\"sendbody\" style=\"width:240px; height:47px;  font-weight:normal; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; margin-bottom:4px\" /></textarea><br /><input type=\"button\" onclick=\"ZyteGuide_sendTheForm();\" value=\"Send\" style=\"width:80px; font-size:11px\" /></form></div><div id=\"ZyteGuide_response\" style=\"z-index:202; color:#FFFFFF; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:left; position:absolute; left:0px; top:281px; border-width:0px;padding:5px; border-color:#FCFCFC; border-style:solid; width:406px; height:29px;text-align:center; font-weight:bold\"></div><div id=\"ZyteGuide_emailcirclediv\" style=\"position:absolute; left:12px; top:315px; z-index:210\"></div><div id=\"ZyteGuide_phonecirclediv\" style=\"position:absolute; left:205px; top:315px;  z-index:210\"></div><div id=\"ZyteGuide_emailcircledesc\" style=\"font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;position:absolute; left:38px; top:318px; z-index:210; color:#FFFFFF\">Send to an E-mail Address</div><div id=\"ZyteGuide_phonecircledesc\" style=\"position:absolute; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;left:232px; top:318px; z-index:210; color:#7d7d7d\">Send to a Phone</div></div></div></div>";
	
	
	document.getElementById('ZyteGuide_avatar').innerHTML+="<a href=\"javascript:ZyteGuide_closeAvatarDiv()\"> <img id=\"ZyteGuide_avatarclosebutton\" src=\"http://www.elocallink.tv/zyte/zyte_images/closebutton.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/closebuttonbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/closebutton.jpg'\"style=\"border-width:0px; position:absolute; left:"+(ZyteGuide_openXToUse+375)+"px; top:"+(ZyteGuide_openYToUse+11)+"px; z-index:205; display:none\" /></a>";
	
	   document.getElementById('ZyteGuide_avatar').innerHTML+='</div></div><div id="ZyteGuide_logodiv" style="position:absolute; left:-93px; top:422px; z-index:200; display:none"></div><div id="ZyteGuide_statusDiv" style="color:#FFFFFF;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;text-align:right; position:absolute; left:'+(ZyteGuide_openXToUse+225)+'px; top:'+(ZyteGuide_openYToUse+17)+'px; color:#333333; font-weight:bold; width:400px; height:20px; text-align:right; z-index:200; display:none">Go ahead, ask me a question.</div>';
    
    document.getElementById('ZyteGuide_avatar').innerHTML+="<div id=\"ZyteGuide_controls\" style=\"display:none\"><div id=\"ZyteGuide_pauseplay\"><a href=\"javascript:ZyteGuide_pauseMov()\"> <img id=\"ZyteGuide_pause\" src=\"http://www.elocallink.tv/zyte/zyte_images/pause.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pausebright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pause.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+180)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" /></a></div><div id=\"ZyteGuide_soundmute\"><a href=\"javascript:ZyteGuide_muteMov()\"> <img id=\"ZyteGuide_sound\" src=\"http://www.elocallink.tv/zyte/zyte_images/sound.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/soundbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/sound.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+210)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" /></a></div></div>";

if(zguide_transcript==1)  document.getElementById('ZyteGuide_avatar').innerHTML+="<img id='ZyteGuide_transcript' src='http://www.elocallink.tv/zyte/zyte_images/transcript_button_guide.jpg' onclick='javascript:ZyteGuide_showTranscript()' style=' cursor:pointer; display:none; z-index:200; position:absolute'>";
	   document.getElementById('ZyteGuide_avatar').innerHTML+="<div id='ZyteGuide_transcript_panel' style='height:241px;width:181px;display:block; position:absolute; left:100px; overflow:hidden; top:15px'><div id='ZyteGuide_transcript_panel_inner' style= 'height:241px;width:176px;position:absolute; display:block; left:-181px; top:0px'><div id='ZyteGuide_transcript_panel_text' style='display:none; width:173px;overflow:scroll; position:absolute; left:4px; top:4px; height:233px;'><div style='color:#000000; text-align:left; margin:5px'><font style='font-weight:bold; font-size:11px; font-family:Verdana, Arial, Helvetica, sans-serif'>Transcript</font><br/><br/><div id='current_transcript' style='font-size:11px; font-family:Verdana, Arial, Helvetica, sans-serif'></div></div></div></div></div>";
		
document.getElementById(ZyteGuide_divToUse).innerHTML+='<div id="ZyteGuide_pngdiv" style="position:absolute; left:0px; top:0px; z-index:100"></div><div id="ZyteGuide_pngdivover" style="position:absolute; left:0px; top:0px; display:none; z-index:100"></div><div id="ZyteGuide_pngdivclose" style="position:absolute; left:0px; top:0px; display:none; z-index:100"></div>';
    
	}
 
		ZyteGuide_opening=false;
		ZyteGuide_closing=false;
		ZyteGuide_opened=false;
		ZyteGuide_initialX=0;
		ZyteGuide_initialY=0;
		var ZyteGuide_waitForInput;
		var ZyteGuide_muted=false;
		ZyteGuide_phoneSelected=false;
		var ZyteGuide_uid2 = new Date().getTime();
		var ZyteGuide_openedOnce=false;
		ZyteGuide_transcript_opening=false;
		ZyteGuide_transcript_opened=false;
		
		ZyteGuide_flashProxy2=null;
	
		ZyteGuide_flashProxy2 = new FlashProxy(ZyteGuide_uid2, 'http://www.elocallink.tv/web/main/integration-kit/installation/JavaScriptFlashGateway.swf');
		
		
		
		
		if(document.getElementById(ZyteGuide_divToUse)){
			
				var so = new SWFObject("http://www.elocallink.tv/zyte/just_play3transparent.swf", "recorder", "400", "300", "7", "#FFFFFF");
				so.addVariable("lcId", ZyteGuide_uid2);
				so.addVariable("myMovie", ZyteGuide_movToUse);
				so.addParam("wmode", "transparent");
				so.addParam("allowScriptAccess","always");
				
			
			
			writeImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/guidelowerbar.png", 418, 46, 0, 0, "ZyteGuide_lowerbarcontainer", "ZyteGuide_lowerbar", "");
			writeImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/emailcirclebright.png", 19, 19, 0, 0, "ZyteGuide_emailcirclediv", "emailcircle", "javascript:ZyteGuide_selectEmail()");
			writeImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/phonecircle.png", 19, 19, 0, 0, "ZyteGuide_phonecirclediv", "phonecircle", "javascript:ZyteGuide_selectPhone()");
		}
		
		function ZyteGuide_showTranscript(){
			if(ZyteGuide_transcript_opening==true) return;
			
			document.getElementById("current_transcript").innerHTML=zguide_transcript_text[zguide_indexval];
			
			ZyteGuide_transcript_opening=true;
			if (ZyteGuide_transcript_opened==true){
				document.getElementById("ZyteGuide_transcript_panel_text").style.display="none";
				new Effect.Move ("ZyteGuide_transcript_panel_inner",{ x: -181, y: 0, mode: 'relative', afterFinish:function(){
																									
					ZyteGuide_transcript_opening=false;
					ZyteGuide_transcript_opened=false;																											 
				}});
			}
			else{
				new Effect.Move ("ZyteGuide_transcript_panel_inner",{ x: 181, y: 0, mode: 'relative', afterFinish:function(){
					document.getElementById("ZyteGuide_transcript_panel_text").style.display="block";	
					ZyteGuide_transcript_opening=false;
					ZyteGuide_transcript_opened=true;
				}});
			}
		}
		
		function ZyteGuide_selectPhone(){
			overwriteImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/phonecirclebright.png", 19,19, 0,0, "ZyteGuide_phonecirclediv", "phonecircle","javascript:ZyteGuide_selectPhone()");
			overwriteImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/emailcircle.png", 19, 19, 0, 0, "ZyteGuide_emailcirclediv", "emailcircle", "javascript:ZyteGuide_selectEmail()");
			document.getElementById('ZyteGuide_emailcircledesc').style.color="#7d7d7d";
			document.getElementById('ZyteGuide_phonecircledesc').style.color="#FFFFFF";
			ZyteGuide_phoneSelected=true;
		}
		
		function ZyteGuide_selectEmail(){
			overwriteImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/phonecircle.png", 19,19, 0,0, "ZyteGuide_phonecirclediv", "phonecircle","javascript:ZyteGuide_selectPhone()");
			overwriteImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/emailcirclebright.png", 19, 19, 0, 0, "ZyteGuide_emailcirclediv", "emailcircle", "javascript:ZyteGuide_selectEmail()");
			document.getElementById('ZyteGuide_emailcircledesc').style.color="#FFFFFF";
			document.getElementById('ZyteGuide_phonecircledesc').style.color="#7d7d7d";
			ZyteGuide_phoneSelected=true;
		}
	
		function ZyteGuide_playClip(clip){
			ZyteGuide_flashProxy2.call('playNewClip', clip);
		}
		
		function ZyteGuide_focusFunc(){
			clearTimeout(ZyteGuide_waitForInput);
		}	
		
		function ZyteGuide_pauseMov(){
			
			ZyteGuide_flashProxy2.call('justPause');
			
			document.getElementById('ZyteGuide_pauseplay').innerHTML="<a href=\"javascript:ZyteGuide_playMov()\"> <img id=\"ZyteGuide_play\" src=\"http://www.elocallink.tv/zyte/zyte_images/play.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/playbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/play.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+180)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
		}
		
		function ZyteGuide_playMov(){
			ZyteGuide_flashProxy2.call('justPlay');
			
			document.getElementById('ZyteGuide_pauseplay').innerHTML="<a href=\"javascript:ZyteGuide_pauseMov()\"> <img id=\"ZyteGuide_pause\" src=\"http://www.elocallink.tv/zyte/zyte_images/pause.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pausebright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pause.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+180)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
		}
		
		function ZyteGuide_muteMov(){
			
			ZyteGuide_flashProxy2.call('muteToggle'); 
			
			if(ZyteGuide_muted==false){
				document.getElementById('ZyteGuide_soundmute').innerHTML="<a href=\"javascript:ZyteGuide_muteMov()\"> <img id=\"ZyteGuide_sound\" src=\"http://www.elocallink.tv/zyte/zyte_images/mute.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/mutebright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/mute.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+210)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
				ZyteGuide_muted=true;
			}
			else{
				document.getElementById('ZyteGuide_soundmute').innerHTML="<a href=\"javascript:ZyteGuide_muteMov()\"> <img id=\"ZyteGuide_sound\" src=\"http://www.elocallink.tv/zyte/zyte_images/sound.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/soundbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/sound.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+210)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
				ZyteGuide_muted=false;
			}
		}
		
		function ZyteGuide_checkAutoPlay(){

			var URL = unescape(window.document.location);

			if (URL.indexOf("?") > -1) {
			//whether the location contains a "?" or not
			
				var list1 = URL.split("?");
				//split at "?";
				var list2 = list1[1].split ("&");
				//split at "=";
				for(i=0;i<list2.length;i++){
					var currPair=list2[i].split("=")
						if(currPair[0]=='zyte_guide'){
							if(currPair[1]=='true')
								ZyteGuide_showAvatar();
							return;
						}
				}
			}

		}
		
		function playType(typeVar){
			
			if(typeVar=="qt"){
			     document.getElementById('ZyteGuide_controls').innerHTML="";
			
			}
			else if(typeVar=="wm"){
				document.getElementById('ZyteGuide_controls').innerHTML="";
			}
			
	    }
		
		function ZyteGuide_playMovReset(){
			//document.getElementById('ZyteGuide_flashavatar').src="http://www.elocallink.tv/zyte/viewer.php?value="+zguide_vid_mid;
			document.getElementById('ZyteGuide_flashavatar').style.display="block";
			document.getElementById('ZyteGuide_sendtofrienddiv').style.display="none";
			document.getElementById('ZyteGuide_pauseplay').innerHTML="<a href=\"javascript:ZyteGuide_pauseMov()\"> <img id=\"ZyteGuide_pause\" src=\"http://www.elocallink.tv/zyte/zyte_images/pause.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pausebright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pause.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+180)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
		}
		
		function ZyteGuide_onFinish(){
			
			ZyteGuide_closeAvatarDiv();
		}
	
	
		function ZyteGuide_closeAvatarDiv(){
		if(ZyteGuide_closing==true || ZyteGuide_opening==true || ZyteGuide_transcript_opening==true) return;
			ZyteGuide_closing=true;
			ZyteGuide_opened=false;
			
			document.getElementById('ZyteGuide_pauseplay').innerHTML="<a href=\"javascript:ZyteGuide_pauseMov()\"> <img id=\"ZyteGuide_pause\" src=\"http://www.elocallink.tv/zyte/zyte_images/pause.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pausebright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/pause.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+180)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
			
			if (ZyteGuide_transcript_opened==true){
				document.getElementById("ZyteGuide_transcript_panel_text").style.display="none";
				if(ZyteGuide_transcript_opening==false){
					new Effect.Move ("ZyteGuide_transcript_panel_inner",{ x: -181, duration:.3, y: 0, mode: 'relative', afterFinish:function(){																				
						ZyteGuide_transcript_opening=false;
						ZyteGuide_transcript_opened=false;																											 
					}});
				}
				else{
					document.getElementById("ZyteGuide_transcript_panel_inner").style.left="-181px";
					ZyteGuide_transcript_opening=false;
					ZyteGuide_transcript_opened=false;			
				}
			}
			
			
			document.getElementById('ZyteGuide_flashavatar').innerHTML="";
			document.getElementById('ZyteGuide_avatarclosebutton').style.display='none';
			
			overwriteImageToDivWithID("http://www.elocallink.tv/zyte/zyte_images/guidelowerbar.png", 418,46, 0,0, "ZyteGuide_lowerbarcontainer", "ZyteGuide_lowerbar","");
			document.getElementById('ZyteGuide_flashavatar').style.display="none";
			//document.getElementById('ZyteGuide_flashavatar').src="http://www.elocallink.tv/zyte/blank.php";
			document.getElementById('ZyteGuide_pngdiv').style.display="block";
			document.getElementById('ZyteGuide_pngdivover').style.display="none";
			document.getElementById('ZyteGuide_pngdivclose').style.display="none";
			document.getElementById('ZyteGuide_logodiv').innerHTML="";
			if(document.getElementById('ZyteGuide_transcript')) document.getElementById('ZyteGuide_transcript').style.display="none";
			document.getElementById('ZyteGuide_transcript_panel').style.display="none";
			
			document.getElementById('ZyteGuide_sendtofrienddiv').style.display="none";
			document.getElementById('ZyteGuide_desctext').style.display="none";
			document.getElementById('ZyteGuide_controls').style.display="none";
			new Effect.Move ("ZyteGuide_lowerbarcontainer",{ x: ZyteGuide_initialX, y: ZyteGuide_initialY, mode: 'absolute', afterFinish:ZyteGuide_retractBar});
			
		
		}
	
	
		function ZyteGuide_retractBar(){
			if(ZyteGuide_dirToUse=="left"){
				new Effect.Move ("ZyteGuide_lowerbar",{ x: 437, y: 0, mode: 'relative', afterFinish:ZyteGuide_hideAvatarDiv});
			}
			else{
				new Effect.Move ("ZyteGuide_lowerbar",{ x: -437, y: 0, mode: 'relative', afterFinish:ZyteGuide_hideAvatarDiv});
			}
		}

		
		function ZyteGuide_hideAvatarDiv(){
			document.getElementById('ZyteGuide_avatar').style.display="none";
			//document.getElementById('ZyteGuide_flashavatar').src="http://www.elocallink.tv/zyte/blank.php";
			
			ZyteGuide_closing=false;
		}
		
		function ZyteGuide_moveBarDown(){
			ZyteGuide_initialX=document.getElementById('ZyteGuide_lowerbarcontainer').style.left;
			pos=ZyteGuide_initialX.indexOf("p");
			ZyteGuide_initialX=String(ZyteGuide_initialX).substr(0,pos);
			
			ZyteGuide_initialY=document.getElementById('ZyteGuide_lowerbarcontainer').style.top;
			pos=ZyteGuide_initialY.indexOf("p");
			ZyteGuide_initialY=String(ZyteGuide_initialY).substr(0,pos);
			
			new Effect.Move ("ZyteGuide_lowerbarcontainer",{ x: ZyteGuide_openXToUse, y: ZyteGuide_openYToUse, mode: 'absolute', afterFinish:ZyteGuide_showLoweredBar});
		}
		
		function ZyteGuide_showLoweredBar(){
		
			document.getElementById('ZyteGuide_desctext').style.display="block";
			document.getElementById('ZyteGuide_controls').style.display="block";
		
			//Put logo div in correct position-----------------------------------------------
			newVal=document.getElementById('ZyteGuide_lowerbarcontainer').style.left;
			pos=newVal.indexOf("p");
			newVal=String(newVal).substr(0,pos);
			
			document.getElementById('ZyteGuide_logodiv').style.left=String(Number(newVal)-1)+'px';
			if(document.getElementById('ZyteGuide_transcript')) document.getElementById('ZyteGuide_transcript').style.left=String(Number(newVal)+84)+'px';
			
			
			newVal2=document.getElementById('ZyteGuide_lowerbarcontainer').style.top;
			pos2=newVal2.indexOf("p");
			newVal2=String(newVal2).substr(0,pos2);
			
			document.getElementById('ZyteGuide_logodiv').style.top=newVal2+'px';
			if(document.getElementById('ZyteGuide_transcript'))  document.getElementById('ZyteGuide_transcript').style.top=String(Number(newVal2)+13)+'px';
			
			document.getElementById('ZyteGuide_flashavatar').style.left=String(Number(newVal)+9)+'px'
			document.getElementById('ZyteGuide_flashavatar').style.top=String(Number(newVal2)-292)+'px'
		
			//Put panel div in correct position-----------------------------------------------
			document.getElementById('ZyteGuide_textAreaContainer').style.top=String(Number(newVal2)-330)+'px';
			document.getElementById('ZyteGuide_textAreaContainer').style.left=String(Number(newVal))+'px';
			
			writeImageToDiv("http://www.elocallink.tv/zyte/zyte_images/zyteguidelogo.png", 86,52, 6,-11, "ZyteGuide_logodiv", "");
			document.getElementById('ZyteGuide_logodiv').style.display='block';
			
			document.getElementById('ZyteGuide_flashavatar').style.display="block";
			so.write("ZyteGuide_flashavatar");
			
			document.getElementById('ZyteGuide_avatarclosebutton').style.display='block';
			
			document.getElementById('ZyteGuide_transcript_panel').style.top=String(Number(newVal2)-269)+'px';
			document.getElementById('ZyteGuide_transcript_panel').style.left=String(Number(newVal)+425)+'px';
			document.getElementById('ZyteGuide_transcript_panel').style.display="block";
			if(document.getElementById('ZyteGuide_transcript')) document.getElementById('ZyteGuide_transcript').style.display="block";
			ZyteGuide_opening=false;
			ZyteGuide_opened=true;
			//new Effect.Move ("ZyteGuide_textArea",{ x: 0, y: -400, mode: 'relative', afterFinish:ZyteGuide_fullyOpened});
			
			
		}
		
	
		function ZyteGuide_showAvatar(){
			
		zguide_checkAutoCenter();
		zguide_refreshDependentPositions();
			
		if(ZyteGuide_opening==true || ZyteGuide_closing==true || ZyteGuide_opened==true) return;
		if(requestPermission()==false) return;
		
				ZyteGuide_muted=false;
				document.getElementById('ZyteGuide_soundmute').innerHTML="<a href=\"javascript:ZyteGuide_muteMov()\"> <img id=\"ZyteGuide_sound\" src=\"http://www.elocallink.tv/zyte/zyte_images/sound.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/soundbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/sound.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+210)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
				
				
				
				newVal=document.getElementById('ZyteGuide_pngdiv').style.top;
				pos=newVal.indexOf("p");
				newVal=String(newVal).substr(0,pos);
				
				newVal2=document.getElementById('ZyteGuide_pngdiv').style.left;
				pos2=newVal2.indexOf("p");
				newVal2=String(newVal2).substr(0,pos2);
				
				if(ZyteGuide_dirToUse=="left"){
					
					ZyteGuide_topmargin=0;
					ZyteGuide_leftmargin=-419;
					if(zguide_show_icon) { ZyteGuide_topmargin=20; ZyteGuide_leftmargin=-409;}
					
					document.getElementById('ZyteGuide_lowerbarcontainer').style.top=String(Number(newVal)+ZyteGuide_topmargin)+'px';
					document.getElementById('ZyteGuide_lowerbarcontainer').style.left=String(Number(newVal2)+ZyteGuide_leftmargin)+'px';
					document.getElementById('ZyteGuide_lowerbar').style.left="437px";
					new Effect.Move ("ZyteGuide_lowerbar",{ x: -437, y: 0, mode: 'relative', afterFinish:ZyteGuide_moveBarDown});
				}
				else{
					if(zguide_show_icon) newVal3=newVal3=document.getElementById('zyte_guide_Icon').style.width;
					else newVal3=document.getElementById(ZyteGuide_divToUse).style.width;
					
					ZyteGuide_topmargin=0;
					ZyteGuide_leftmargin=0;
					if(zguide_show_icon) { ZyteGuide_topmargin=20; ZyteGuide_leftmargin=-13;}
					
					pos3=newVal3.indexOf("p");
					newVal3=String(newVal3).substr(0,pos3);
					newVal2=Number(newVal2)+Number(newVal3);
		
					document.getElementById('ZyteGuide_lowerbarcontainer').style.top=String(Number(newVal)+ZyteGuide_topmargin)+'px';
					document.getElementById('ZyteGuide_lowerbarcontainer').style.left=String(Number(newVal2)+ZyteGuide_leftmargin)+'px';
					document.getElementById('ZyteGuide_lowerbar').style.left="-437px";
					new Effect.Move ("ZyteGuide_lowerbar",{ x: 437, y: 0, mode: 'relative', afterFinish:ZyteGuide_moveBarDown});
				}
		
				
		
		
		
		
				ZyteGuide_opening=true;
				document.getElementById('ZyteGuide_pngdiv').style.display="none";
				document.getElementById('ZyteGuide_pngdivover').style.display="none";
				document.getElementById('ZyteGuide_pngdivclose').style.display="block";
				document.getElementById('ZyteGuide_avatar').style.display="block";
				
				/*
				
				document.getElementById('flashcontent').innerHTML='<img src="http://www.elocallink.tv/web/main/images/newsbarstill.jpg" style="margin-left:1px">';
				Element.setOpacity("lowerbar", 0 );
				writeImageToDiv("lowerbarshadow.png", 643,46, 0,0, "ZyteGuide_lowershadow", "");
				
				document.getElementById('avatar').style.display="block";
				new Effect.Fade("lowerbar", { from: 0.0, to:1.0, duration:0.3, afterFinish:ZyteGuide_showShadow});*/
		}
		
		function ZyteGuide_showShadow(){
		
			document.getElementById('ZyteGuide_lowershadow').style.display='block';
			writeImageToDiv("http://www.elocallink.tv/zyte/zyte_images/zytelogo.png", 76,52, 6,-13, "ZyteGuide_logodiv", "");
			
			//new Effect.Move ("ZyteGuide_textArea",{ x: 0, y: -400, mode: 'relative', afterFinish:ZyteGuide_adjustShadow});
		}
		
		function ZyteGuide_adjustShadow(){
			overwriteImageToDiv("http://www.elocallink.tv/zyte/zyte_images/partialshadow.png", 643,46, 1,0, "ZyteGuide_lowershadow", "");
			ZyteGuide_opening=false;

		}
		
		function ZyteGuide_showFriendDiv(){
			document.getElementById('ZyteGuide_flashavatar').style.display="none";
			//document.getElementById('ZyteGuide_flashavatar').src="http://www.elocallink.tv/zyte/blank.php";
			document.getElementById('ZyteGuide_sendtofrienddiv').style.display="block";
			ZyteGuide_waitForInput=setTimeout("ZyteGuide_closeAvatarDiv()", 7000);
			document.getElementById('ZyteGuide_pauseplay').innerHTML="<a href=\"javascript:ZyteGuide_playMovReset()\"> <img id=\"ZyteGuide_play\" src=\"http://www.elocallink.tv/zyte/zyte_images/play.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/playbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/play.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+180)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
		}
		
		function ZyteGuide_showFriendDivNoTimeout(){
			document.getElementById('ZyteGuide_pauseplay').innerHTML="<a href=\"javascript:ZyteGuide_playMovReset()\"> <img id=\"ZyteGuide_play\" src=\"http://www.elocallink.tv/zyte/zyte_images/play.jpg\" onmouseover=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/playbright.jpg'\"  onmouseout=\"javascript:this.src='http://www.elocallink.tv/zyte/zyte_images/play.jpg'\"style=\"border-width:0px;position:absolute; left:"+(ZyteGuide_openXToUse+180)+"px; top:"+(ZyteGuide_openYToUse+10)+"px; z-index:205\" />";
			document.getElementById('ZyteGuide_flashavatar').style.display="none";
			//document.getElementById('ZyteGuide_flashavatar').src="http://www.elocallink.tv/zyte/blank.php";
			document.getElementById('ZyteGuide_sendtofrienddiv').style.display="block";
		}
		
		function ZyteGuide_sendTheForm(){
			
			
		if(document.forms["ZyteGuide_sendform"].sendaddress.value=="") alert("Please enter an e-mail address.");
		else{
			
			document.getElementById('ZyteGuide_postframe').src='http://www.elocallink.tv/zyte/sendmail.php?addedField=zyte_guide&addedValue=true&currPage='+String(unescape(window.document.location))+'&from='+document.forms["ZyteGuide_sendform"].fromaddress.value+"&email="+document.forms["ZyteGuide_sendform"].sendaddress.value+"&msg="+document.forms["ZyteGuide_sendform"].sendbody.value+"&subject="+document.forms["ZyteGuide_sendform"].sendsubject.value;
			document.forms["ZyteGuide_sendform"].fromaddress.value="";
			document.forms["ZyteGuide_sendform"].sendaddress.value="";
			document.forms["ZyteGuide_sendform"].sendbody.value="";
			document.forms["ZyteGuide_sendform"].sendsubject.value="";
			document.getElementById('ZyteGuide_response').innerHTML='Message Sent';
			setTimeout("ZyteGuide_closeAvatarDiv(); document.getElementById('ZyteGuide_response').innerHTML='';", 2000);
			
		/*new Ajax.Updater('ZyteGuide_response', 'http://www.elocallink.tv/zyte/sendmail.php?addedField=zyte_guide&addedValue=true&currPage='+String(unescape(window.document.location))+'&from='+document.forms["ZyteGuide_sendform"].fromaddress.value+"&email="+document.forms["ZyteGuide_sendform"].sendaddress.value+"&msg="+document.forms["ZyteGuide_sendform"].sendbody.value+"&subject="+document.forms["ZyteGuide_sendform"].sendsubject.value, {asynchronous:true, onComplete:function(){
			document.forms["ZyteGuide_sendform"].fromaddress.value="";
			document.forms["ZyteGuide_sendform"].sendaddress.value="";
			document.forms["ZyteGuide_sendform"].sendbody.value="";
			document.forms["ZyteGuide_sendform"].sendsubject.value="";
			setTimeout("ZyteGuide_closeAvatarDiv(); document.getElementById('ZyteGuide_response').innerHTML='';", 2000);
		}});*/ 
		}
	}
	
    
  
	
	if(document.getElementById(ZyteGuide_divToUse)){
		if(zguide_show_icon)writeImageToDivWithMouseEventsAndID(zguide_icon, zguide_icon_width,zguide_icon_height, 0,0, "ZyteGuide_pngdiv","ZyteGuide_showRollover()", "",  "javascript:ZyteGuide_showAvatar()", "zyte_guide_Icon");
		if(zguide_show_icon)writeImageToDivWithMouseEvents(zguide_icon_highlighted, zguide_icon_width,zguide_icon_height, 0,0, "ZyteGuide_pngdivover","", "ZyteGuide_hideRollover()",  "javascript:ZyteGuide_showAvatar()");
		if(zguide_show_icon)writeImageToDiv(zguide_icon_close, zguide_icon_width,zguide_icon_height, 0,0, "ZyteGuide_pngdivclose", "javascript:ZyteGuide_closeAvatarDiv()");
		writeImageToDivBeginning("http://www.elocallink.tv/zyte/zyte_images/transcript_panel_guide.png", 181,241, 0,0, "ZyteGuide_transcript_panel_inner", "");
	}
	
		function ZyteGuide_getImgHeight(imgSrc)
		{
			var ZyteGuide_newImg = new Image();
			ZyteGuide_newImg.src = imgSrc;
			return ZyteGuide_newImg.height;
		}
		
		function ZyteGuide_getImgWidth(imgSrc)
		{
			var ZyteGuide_newImg = new Image();
			ZyteGuide_newImg.src = imgSrc;
			
			return ZyteGuide_newImg.width;
		}
		
		function ZyteGuide_beginClose(){
			
			ZyteGuide_flashProxy2.call('fadeOutFunc');
		}
	
		function ZyteGuide_showRollover(){
			document.getElementById('ZyteGuide_pngdiv').style.display="none";
			document.getElementById('ZyteGuide_pngdivover').style.display="block";
			document.getElementById('ZyteGuide_pngdivclose').style.display="none";
		}
		
		function ZyteGuide_hideRollover(){
			if(!ZyteGuide_opening){
				document.getElementById('ZyteGuide_pngdiv').style.display="block";
				document.getElementById('ZyteGuide_pngdivover').style.display="none";
				document.getElementById('ZyteGuide_pngdivclose').style.display="none";
			}
		}
		
		

	
	if(document.getElementById(ZyteGuide_divToUse)){
		var URL = unescape(window.document.location);
		if (URL.indexOf("suppress_zyte") == -1) {
			
			if(ZyteGuide_readCookie(String(ZyteGuide_divToUse+"_"+zyteuserid))==null && zguide_autoplay!=0){
				
				ZyteGuide_showAvatar();
				ZyteGuide_createCookie(String(ZyteGuide_divToUse+"_"+zyteuserid), "true",30);
				
			}
		}
	}
		
	function ZyteGuide_createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}

	function ZyteGuide_readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	function ZyteCook(brver,version,mtype,connectionSpeed,ourLoc) {
	alert('zytecook');
	document.cookie ='brver='+brver+'; expires=Fri, 27 Jul 2009 02:47:11 UTC; path=/';
	document.cookie ='flver='+ version +'; expires=Fri, 27 Jul 2009 02:47:11 UTC; path=/';
	document.cookie ='zytetype='+mtype+'; expires=Fri, 27 Jul 2009 02:47:11 UTC; path=/';
	document.cookie ='cspeed='+connectionSpeed+'; expires=Fri, 27 Jul 2009 02:47:11 UTC; path=/';
	//document.location=ourLoc;
}


function checkAutoPlay(){

			if(zqanda_url_autoopen==true){
					ZyteAvatar_showAvatar(); return;
				}
				if(ztalk_url_autoopen==true){
					ZyteTalk_showAvatar(); return;
				}
				if(zview_url_autoopen==true){
					ZyteView_showAvatar(); return;
				}
				if(zguide_url_autoopen==true){
					ZyteGuide_showAvatar(); return;
				}
			
			var URL = unescape(window.document.location);
			
	
			if (URL.indexOf("?") > -1) {
			//whether the location contains a "?" or not
			
				var list1 = URL.split("?");
				//split at "?";
				var list2 = list1[1].split ("&");
				//split at "=";
	
				for(i=0;i<list2.length;i++){
					var currPair=list2[i].split("=")
					
						if(currPair[0]=='zyte_talk'){
							if(currPair[1]=='true')
								ZyteTalk_showAvatar();
							return;
						}
						
						else if(currPair[0]=='zyte_bios'){
								ZyteBios_autoopenwin(currPair[1]);
							return;
						}
						
						else if(currPair[0]=='zyte_view'){
							if(currPair[1]=='true')
								ZyteView_showAvatar();
							return;
						}
						
						else if(currPair[0]=='zyte_tour'){
							if(currPair[1]=='true')
								ZyteTour_showAvatar();
							return;
						}
						
						else if(currPair[0]=='zyte_qanda'){
							if(currPair[1]=='true')
								ZyteAvatar_showAvatar();
							return;
						}
						else if(currPair[0]=='zyte_guide'){
							if(currPair[1]=='true')
								ZyteGuide_showAvatar();
							return;
						}
						
						else if(currPair[0]=='zyte_library'){
							if(currPair[1]=='true')
								ZyteLibrary_showAvatar();
						}
						else if(currPair[0]=='zyte_library_start'){
								ZyteLibrary_midToPlay=currPair[1];
						}
						
						
						
				}
			}

}


function requestPermission(){
	
	if(ztalk_included==true && document.getElementById('zyte_talk_contents')){
		if(ZyteTalk_closing==true || ZyteTalk_opening==true){ return false;}
		
		if(ZyteTalk_opened==true){
		 	ZyteTalk_closeAvatarDiv();
		}
	}
	
	if(ztour_included==true && document.getElementById('zyte_tour_contents')){
		if(ZyteTour_closing==true || ZyteTour_opening==true){ return false;}
		
		if(ZyteTour_opened==true){
			ZyteTour_closeAvatarDiv();
		}
	}
	
	if(zview_included==true && document.getElementById('zyte_view_contents')){
		if( ZyteView_closing==true || ZyteView_opening==true){ return false;}
		
		if(ZyteView_opened==true){
			ZyteView_closeAvatarDiv();
		}
	}
	
	if(zbios_included==true && document.getElementById('zyte_bios_contents')){
		if(ZyteBios_closing==true || ZyteBios_opening==true){ return false;}
		
		//if(ZyteBios_opened==true){
		//	ZyteBios_closeAvatarDiv();
		//}
	}
	
	if(zqanda_included==true && document.getElementById('zyte_avatar_contents')){
		if(ZyteAvatar_closing==true || ZyteAvatar_opening==true){ return false;}
		
		if(ZyteAvatar_opened==true){
		 	ZyteAvatar_closeAvatarDiv();
		}
		
	}
	
	if(zguide_included==true && document.getElementById('zyte_guide_contents')){
		if(ZyteGuide_closing==true || ZyteGuide_opening==true){ return false;}
		
		if(ZyteGuide_opened==true){
		 	ZyteGuide_closeAvatarDiv();
		}
		
	}
	
	
	return true;
	
	
}

var ZytePreScriptLoad = window.onload;
window.onload = function() {
	if (typeof (ZytePreScriptLoad) == 'function') {
		ZytePreScriptLoad();
	}
	checkAutoPlay();
};
