/********************************************************************************************
* Curlypage javascript configuration file
*
* @author    Fernando San Julián
*********************************************************************************************/

/********************************************************************************************
* Curlypage parameters. This shows its acceptable values.
*
*
* swf files
*   flag_swf = 'flag.swf';
*   peel_swf = 'turn.swf';
*
* unique curlypage identifier
*   cpid;
*
* wait icon parameters
*   wait_enabled = 'true';
*   wait_url = 'wait.gif';
*   wait_width = '42';
*   wait_height = '42';
*
* flag style. Values: 'style1', 'style2'.
*   flag_style = 'style1';
* peel style. Values: 'style1', 'style2'.
*   peel_style = 'style1';
*
* flag and peel sizes
*   flag_width = 100;
*   flag_height = 100;
*   peel_width = 500;
*   peel_height = 500;
*
* Position of ear. Values: 'topleft', 'topright', 'bottomleft' or 'bottomright'.
*   peel_position = 'topright';
* Position model. Values: 'absolute' or 'fixed'.
*   peel_position_model = 'absolute';
*
* URL of small image.
*   small_url = 'small.jpg';
* URL of big image.
*   big_url = 'big.jpg';
* The image is mirrored on peel. Values: 0 (false) or 1 (true).
*   mirror = 0;
* Start transition. Values: 'none', 'Blinds', 'Fade', 'Fly', 'Iris', 'Photo', 'Rotate', 'Squeeze', 'Wipe', 'PixelDissolve', 'Zoom'.
*   in_transition = 'Photo';
* Transition duration. Values: 1-9
*   transition_duration = 4;
*
* Color of Peel. Values: 'golden', 'silver', 'custom'
*   peel_color = 'golden';
* Color of Peel Style. Values: 'flat', 'gradient'
*   peel_color_style = 'gradient';
* RGB values for a Custom Peel Color. Values: 0-255.
*   red_value = 0;
*   green_value = 0;
*   blue_value = 0;
*
* enable or disable link. Values: 0 (disabled) or 1 (enabled).
*   link_enabled = 0;
* Where to open the link. Same or New Window (tab). Values: '_self' or '_blank'.
*   link_target = '_blank';
* URL of link.
*   link = 'http://www.manfer.co.cc';
*
* URL of sound on load Peel Ad.
*   load_sound_url = '';
* URL of sound when peel is opened.
*   open_sound_url = '';
* URL of sound when peel is closed.
*   close_sound_url = '';
*
* Speed of flag movement. Values: 1-9
*   flag_speed = 4;
* Speed of peel. Values: 1-9
*   peel_speed = 4;
* Seconds till an automatic open of peel. Values: 0 (no automatic open) >0 (seconds configured).
*   automatic_open = 0;
* Seconds till an automatic close of peel. Values: 0 (no automatic close) >0 (seconds configured).
*   automatic_close = 0;
*
* Close button on open Peel. Values: 0 (disabled) or 1 (enabled).
*   close_button_enable = 0;
* Text on close button.
*   text_on_close_button = 'close';
* RGB values of close button. Values: 0-255.
*   close_red_value = 0;
*   close_green_value = 0;
*   close_blue_value = 0;
*
* Delay seconds to show the curlypage.
*   delay = 0;
*
* Amoung of time the curlypage will be shown. If 0 the curlypage would be shown forever.
*   time_slot = 0;
*
* For grouped curlypages times to repeat this curlypage. Values: 0-9.
* If it is 0, the curlypage would be repeat forever.
*   repeat_times = 1;
*
* Open curlypage with a click. Curlypage by default opens with mouseover. Values: 0 (no click/default mouseover), 1 (opens on click)
*   open_onclick = 0;
*
* Enable tracking. Values 0 (false) || 1 (true)
*   tracking = 0;
*
*********************************************************************************************/

// defaults
var curlypage_getflashplayer = 1;
var curlypage_flash_version = "9.0.0";

var curlypages = new Object();
curlypages["topleft"] = null;
curlypages["topright"] = null;
curlypages["bottomleft"] = null;
curlypages["bottomright"] = null;

/*
 *
 * Help functions to control curlypage flash versions
 * to be sure the correct versions are retrieved from
 * server and not old ones from browser cache are used.
 *
 */
function curlypage_get_flag_version(){
  return 'flag150';
}

function curlypage_get_peel_version(){
  return 'turn170';
}

/*
 * Hide the flag and show the peel
 */
function curlypage_do_peel(cpid, position){

  if (position == 'topleft' || position =='topright') {

    jQuery("#curlypage_peelDiv_" + cpid).css("top", "0px");
    jQuery("#curlypage_flagDiv_" + cpid).css("top", "-1000px");

  } else {

    jQuery("#curlypage_peelDiv_" + cpid).css("bottom", "0px");
    jQuery("#curlypage_flagDiv_" + cpid).css("bottom", "-1000px");

  }

  document.getElementById('curlypage_peel' + cpid).doPeel();

}

/*
 * Hide the peel and show the flag
 */
function curlypage_do_flag(cpid, position){

  if (position == 'topleft' || position =='topright') {

    jQuery("#curlypage_flagDiv_" + cpid).css("top", "0px");
    jQuery("#curlypage_peelDiv_" + cpid).css("top", "-1000px");

  } else {

    jQuery("#curlypage_flagDiv_" + cpid).css("bottom", "0px");
    jQuery("#curlypage_peelDiv_" + cpid).css("bottom", "-1000px");

  }

}

/*
 * Notify the flag when all peel media is loaded
 */
function curlypage_notify_peel_loaded(cpid) {
  document.getElementById('curlypage_flag' + cpid).peelLoaded();
}

/*
 * Hide flag
 */
function curlypage_hide_flag(cpid, position) {
  if (position == 'topleft' || position =='topright') {
    jQuery("#curlypage_flagDiv_" + cpid).css("top", "-1000px");
  } else {
    jQuery("#curlypage_flagDiv_" + cpid).css("bottom", "-1000px");
  }
}

/*
 * Hide peel
 */
function curlypage_hide_peel(cpid, position) {
  if (position == 'topleft' || position =='topright') {
    jQuery("#curlypage_peelDiv_" + cpid).css("top", "-1000px");
  } else {
    jQuery("#curlypage_peelDiv_" + cpid).css("bottom", "-1000px");
  }
}

/*
 * Remove wait layer, show flag and start peel
 */
function curlypage_start(cpid, position) {
  jQuery("#curlypage_waitDiv_" + cpid).remove();
  if (position == 'topleft' || position =='topright') {
    jQuery("#curlypage_flagDiv_" + cpid).css("top", "0px");
  } else {
    jQuery("#curlypage_flagDiv_" + cpid).css("bottom", "0px");
  }
  document.getElementById('curlypage_peel' + cpid).startMovie();
}

/*
 * Curlypage object
 */
function Curlypage(curlypage_vars) {

  this.curlypage_vars = curlypage_vars;

  this.flag_params = {
    play: "true",
    loop: "true",
    menu: "false",
    quality: "autohigh",
    scale: "noscale",
    wmode: "transparent",
    bgcolor: "#ffffff",
    allowScriptAccess: "sameDomain",
    allowFullScreen: "false"
  };

  this.flag_attributes = {
    id: "curlypage_flag" + this.curlypage_vars.cpid,
    name: "curlypage_flag" + this.curlypage_vars.cpid,
    styleclass: "curlypage"
  };

  this.peel_params = {
    play: "true",
    loop: "true",
    menu: "false",
    quality: "autohigh",
    scale: "noscale",
    wmode: "transparent",
    bgcolor: "#ffffff",
    allowScriptAccess: "sameDomain",
    allowFullScreen: "false"
  };

  this.peel_attributes = {
    id: "curlypage_peel" + this.curlypage_vars.cpid,
    name: "curlypage_peel" + this.curlypage_vars.cpid,
    styleclass: "curlypage"
  };

  this.write = curlypage_write;
  this.destroy = curlypage_destroy;
  this.flag_vars = curlypage_get_flag_vars;
  this.peel_vars = curlypage_get_peel_vars;
  this.flag_version = curlypage_get_flag_version;
  this.peel_version = curlypage_get_peel_version;

}

/*
 * Get curlypage flag variables
 */
function curlypage_get_flag_vars () {
  var flag_vars = {};
  flag_vars.cpid = this.curlypage_vars.cpid;
  flag_vars.flagStyle = this.curlypage_vars.flag_style;
  flag_vars.flagWidth = this.curlypage_vars.flag_width;
  flag_vars.flagHeight = this.curlypage_vars.flag_height;
  flag_vars.peelPosition = this.curlypage_vars.peel_position;
  flag_vars.smallURL = this.curlypage_vars.small_url;
  flag_vars.mirror = this.curlypage_vars.mirror;
  flag_vars.inTransition = this.curlypage_vars.in_transition;
  flag_vars.transitionDuration = this.curlypage_vars.transition_duration;
  flag_vars.peelColor = this.curlypage_vars.peel_color;
  flag_vars.peelColorStyle = this.curlypage_vars.peel_color_style;
  flag_vars.redValue = this.curlypage_vars.red_value;
  flag_vars.greenValue = this.curlypage_vars.green_value;
  flag_vars.blueValue = this.curlypage_vars.blue_value;
  flag_vars.loadSoundURL = this.curlypage_vars.load_sound_url;
  flag_vars.flagSpeed = this.curlypage_vars.flag_speed;
  flag_vars.startDelay = this.curlypage_vars.delay;
  flag_vars.timeSlot = this.curlypage_vars.time_slot;
  flag_vars.open_onclick = this.curlypage_vars.open_onclick;
  flag_vars.tracking = this.curlypage_vars.tracking;
  return flag_vars;
}

/*
 * Get curlypage peel variables
 */
function curlypage_get_peel_vars() {
  var peel_vars = {};
  peel_vars.cpid = this.curlypage_vars.cpid;
  peel_vars.peelStyle = this.curlypage_vars.peel_style;
  peel_vars.peelWidth = this.curlypage_vars.peel_width;
  peel_vars.peelHeight = this.curlypage_vars.peel_height;
  peel_vars.peelPosition = this.curlypage_vars.peel_position;
  peel_vars.bigURL = this.curlypage_vars.big_url;
  peel_vars.mirror = this.curlypage_vars.mirror;
  peel_vars.peelColor = this.curlypage_vars.peel_color;
  peel_vars.peelColorStyle = this.curlypage_vars.peel_color_style;
  peel_vars.redValue = this.curlypage_vars.red_value;
  peel_vars.greenValue = this.curlypage_vars.green_value;
  peel_vars.blueValue = this.curlypage_vars.blue_value;
  peel_vars.linkEnabled = this.curlypage_vars.link_enabled;
  peel_vars.linkTarget = this.curlypage_vars.link_target;
  peel_vars.link = this.curlypage_vars.link;
  peel_vars.openSoundURL = this.curlypage_vars.open_sound_url;
  peel_vars.closeSoundURL = this.curlypage_vars.close_sound_url;
  peel_vars.peelSpeed = this.curlypage_vars.peel_speed;
  peel_vars.automaticOpen = this.curlypage_vars.automatic_open;
  peel_vars.automaticClose = this.curlypage_vars.automatic_close;
  peel_vars.close_button_enable = this.curlypage_vars.close_button_enable;
  peel_vars.text_on_close_button = this.curlypage_vars.text_on_close_button.toLowerCase();
  peel_vars.close_redValue = this.curlypage_vars.close_red_value;
  peel_vars.close_greenValue = this.curlypage_vars.close_green_value;
  peel_vars.close_blueValue = this.curlypage_vars.close_blue_value;
  peel_vars.tracking = this.curlypage_vars.tracking;
  return peel_vars;
}

/*
 * Write curlypage layers and flash objects
 */
function curlypage_write() {

  var xPos;
  var yPos;

  // Absolute not available for bottom curlypages.
  // Set it always to fixed to prevent a wrong configuration with absolute.
  if (this.curlypage_vars.peel_position == 'bottomleft' || this.curlypage_vars.peel_position == 'bottomright') {
    this.curlypage_vars.peel_position_model = 'fixed';
  }

  // Check position of curlypage.
  if(this.curlypage_vars.peel_position == 'topleft' || this.curlypage_vars.peel_position == 'bottomleft') {
    xPos = 'left';
  } else {
    xPos = 'right';
  }

  if(this.curlypage_vars.peel_position == 'topleft' || this.curlypage_vars.peel_position == 'topright') {
    yPos = 'top';
  } else {
    yPos = 'bottom';
  }

  // Fixed not available for IE6
  if (jQuery.browser.msie && parseInt(jQuery.browser.version) <= 6) {
    if (yPos == 'bottom') {
      return;
    } else {
      this.curlypage_vars.peel_position_model = 'absolute';
    }
  }

  html = "";

  if (this.curlypage_vars.wait_enable == "1") {
    //Write wait div layer
    html += '<div class="curlypage" id="curlypage_waitDiv_' + this.curlypage_vars.cpid + '" style="position:' + this.curlypage_vars.peel_position_model + '; width:' + this.curlypage_vars.wait_width +'px; height:' + this.curlypage_vars.wait_height + 'px; z-index:9999; ' + xPos + ':0px; ' + yPos + ':0px;">';
    html += '<img src="' + this.curlypage_vars.wait_url + '" />';
    html += '</div>';
  }

  // Write peel div layer
  html += '<div class="curlypage" id="curlypage_peelDiv_' + this.curlypage_vars.cpid  + '" style="position:' + this.curlypage_vars.peel_position_model + '; width:' + this.curlypage_vars.peel_width + 'px; height:' + this.curlypage_vars.peel_height + 'px; z-index:9999; ' + xPos + ':0px; ' + yPos + ':0px;">';

  html += '<div id="curlypage_peelDivAlternative_' + this.curlypage_vars.cpid + '">';
  if(curlypage_getflashplayer) {
    html += '<a href="http://www.adobe.com/go/getflashplayer">';
    html += '<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />';
    html += '</a>';
  }
  html += '</div>';

  // Close peel div layer
  html += '</div>';


  // Write flag div layer
  html += '<div class="curlypage" id="curlypage_flagDiv_' + this.curlypage_vars.cpid  + '" style="position:' + this.curlypage_vars.peel_position_model + '; width:' + this.curlypage_vars.flag_width + 'px; height:' + this.curlypage_vars.flag_height + 'px; z-index:9999; ' + xPos + ':0px; ' + yPos + ':0px;">';

  html += '<div id="curlypage_flagDivAlternative_' + this.curlypage_vars.cpid + '">';
  if(curlypage_getflashplayer) {
    html += '<a href="http://www.adobe.com/go/getflashplayer">';
    html += '<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />';
    html += '</a>';
  }
  html += '</div>';

  // Close flag div layer
  html += '</div>';

  // Append the curlypage layers at the end of body
  jQuery("body:first").append(html);

  // Embed flag
  swfobject.embedSWF(curlypage_flag_swf + "?" + this.flag_version(), "curlypage_flagDivAlternative_" + this.curlypage_vars.cpid, this.curlypage_vars.flag_width, this.curlypage_vars.flag_height, curlypage_flash_version, "expressInstall.swf", this.flag_vars(), this.flag_params, this.flag_attributes);


  // Embed peel
  swfobject.embedSWF(curlypage_peel_swf + "?" + this.peel_version(), "curlypage_peelDivAlternative_" + this.curlypage_vars.cpid, this.curlypage_vars.peel_width, this.curlypage_vars.peel_height, curlypage_flash_version, "expressInstall.swf", this.peel_vars(), this.peel_params, this.peel_attributes);

}

/*
 * Destroy curlypage layers and flash objects
 */
function curlypage_destroy() {
  var cpid = this.curlypage_vars.cpid;
  var position = this.curlypage_vars.peel_position;
  jQuery("#curlypage_flagDiv_" + cpid).fadeOut(
    500,
    function(){
      jQuery("#curlypage_flagDiv_" + cpid).remove();
      curlypage_write_next(position);
    }
  );
  jQuery("#curlypage_peelDiv_" + cpid).fadeOut(
    500,
    function(){
      jQuery("#curlypage_peelDiv_" + cpid).remove();
    }
  );
}

/*
 * Destroy curlypage layers and flash objects on ioerror
 */
function curlypage_error_destroy(cpid, position) {
  curlypages[position].shift();
  jQuery("#curlypage_flagDiv_" + cpid).remove();
  jQuery("#curlypage_peelDiv_" + cpid).remove();
  curlypage_write_next(position);
}


/*
 * Compute next curlypage
 */
function curlypage_next(cpid, position) {

  var curlypage;

  if (curlypages[position].length == 1) {

    curlypage = curlypages[position].shift();

    if (curlypage.curlypage_vars.repeat_times == 0) {
      return;
    }

    if (curlypage.curlypage_vars.repeat_times > 1) {
      curlypage.curlypage_vars.repeat_times--;
      curlypages[position].push(curlypage);
      document.getElementById('curlypage_flag' + cpid).startTimeSlot();
      return;
    }

  }
  else {

    curlypage = curlypages[position].shift();

    if (curlypage.curlypage_vars.repeat_times == 0) {
      curlypages[position].push(curlypage);
    }

    if (curlypage.curlypage_vars.repeat_times > 1) {
      curlypage.curlypage_vars.repeat_times--;
      curlypages[position].push(curlypage);
    }

  }

  curlypage.destroy();

}

/*
 * Write next curlypage layers and flash objects
 */
function curlypage_write_next(position) {

  var curlypage;

  // check if there is another curlypage to show
  if (curlypages[position].length > 0) {

    curlypage = curlypages[position][0];
    curlypage.write();

  }

}

/*
 * Write all initial curlypages
 */
function curlypage_write_curlypages() {

  var corners = ["topleft", "topright", "bottomleft", "bottomright"];
  var position;

  for (var i=0; i<corners.length; i++) {
    position = corners[i];
    if (curlypages[position] != null) {
      curlypage_write_next(position);
    }
  }

}
;
/**
* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne brian(at)cherne(dot)net
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev])}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev])};var handleHover=function(e){var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t)}if(e.type=="mouseenter"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob)},cfg.timeout)}}};return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover)}})(jQuery);;
/* Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Version 2.1.2
 */
(function(a){a.fn.bgiframe=(a.browser.msie&&/msie 6\.0/i.test(navigator.userAgent)?function(d){d=a.extend({top:"auto",left:"auto",width:"auto",height:"auto",opacity:true,src:"javascript:false;"},d);var c='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+d.src+'"style="display:block;position:absolute;z-index:-1;'+(d.opacity!==false?"filter:Alpha(Opacity='0');":"")+"top:"+(d.top=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')":b(d.top))+";left:"+(d.left=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')":b(d.left))+";width:"+(d.width=="auto"?"expression(this.parentNode.offsetWidth+'px')":b(d.width))+";height:"+(d.height=="auto"?"expression(this.parentNode.offsetHeight+'px')":b(d.height))+';"/>';return this.each(function(){if(a(this).children("iframe.bgiframe").length===0){this.insertBefore(document.createElement(c),this.firstChild)}})}:function(){return this});a.fn.bgIframe=a.fn.bgiframe;function b(c){return c&&c.constructor===Number?c+"px":c}})(jQuery);;
/*
 * Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

(function($){
  $.fn.superfish = function(op){
    var sf = $.fn.superfish,
      c = sf.c,
      $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
      over = function(){
        var $$ = $(this), menu = getMenu($$);
        clearTimeout(menu.sfTimer);
        $$.showSuperfishUl().siblings().hideSuperfishUl();
      },
      out = function(){
        var $$ = $(this), menu = getMenu($$), o = sf.op;
        clearTimeout(menu.sfTimer);
        menu.sfTimer=setTimeout(function(){
          o.retainPath=($.inArray($$[0],o.$path)>-1);
          $$.hideSuperfishUl();
          if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
        },o.delay);
      },
      getMenu = function($menu){
        var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
        sf.op = sf.o[menu.serial];
        return menu;
      },
      addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };

    return this.each(function() {
      var s = this.serial = sf.o.length;
      var o = $.extend({},sf.defaults,op);
      o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
        $(this).addClass([o.hoverClass,c.bcClass].join(' '))
          .filter('li:has(ul)').removeClass(o.pathClass);
      });
      sf.o[s] = sf.op = o;

      $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
        if (o.autoArrows) addArrow( $('>a:first-child',this) );
      })
      .not('.'+c.bcClass)
        .hideSuperfishUl();

      var $a = $('a',this);
      $a.each(function(i){
        var $li = $a.eq(i).parents('li');
        $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
      });
      o.onInit.call(this);

    }).each(function() {
      var menuClasses = [c.menuClass];
      if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
      $(this).addClass(menuClasses.join(' '));
    });
  };

  var sf = $.fn.superfish;
  sf.o = [];
  sf.op = {};
  sf.IE7fix = function(){
    var o = sf.op;
    if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
      this.toggleClass(sf.c.shadowClass+'-off');
    };
  sf.c = {
    bcClass: 'sf-breadcrumb',
    menuClass: 'sf-js-enabled',
    anchorClass: 'sf-with-ul',
    arrowClass: 'sf-sub-indicator',
    shadowClass: 'sf-shadow'
  };
  sf.defaults = {
    hoverClass: 'sfHover',
    pathClass: 'overideThisToUse',
    pathLevels: 1,
    delay: 800,
    animation: {opacity:'show'},
    speed: 'normal',
    autoArrows: true,
    dropShadows: true,
    disableHI: false, // true disables hoverIntent detection
    onInit: function(){}, // callback functions
    onBeforeShow: function(){},
    onShow: function(){},
    onHide: function(){}
  };
  $.fn.extend({
    hideSuperfishUl : function(){
      var o = sf.op,
        not = (o.retainPath===true) ? o.$path : '';
      o.retainPath = false;
      var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
          .find('>ul').hide().css('visibility','hidden');
      o.onHide.call($ul);
      return this;
    },
    showSuperfishUl : function(){
      var o = sf.op,
        sh = sf.c.shadowClass+'-off',
        $ul = this.addClass(o.hoverClass)
          .find('>ul:hidden').css('visibility','visible');
      sf.IE7fix.call($ul);
      o.onBeforeShow.call($ul);
      $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
      return this;
    }
  });
})(jQuery);;
/*
 * Supersubs v0.2b - jQuery plugin - LAST UPDATE: MARCH 23rd, 2011
 * Copyright (c) 2008 Joel Birch
 *
 * Jan 16th, 2011 - Modified a little in order to work with NavBar menus as well.
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
 * their longest list item children. If you use this, please expect bugs and report them
 * to the jQuery Google Group with the word 'Superfish' in the subject line.
 *
 */

(function($){ // $ will refer to jQuery within this closure

  $.fn.supersubs = function(options){
    var opts = $.extend({}, $.fn.supersubs.defaults, options);
	// return original object to support chaining
    return this.each(function() {
      // cache selections
      var $$ = $(this);
      // support metadata
      var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
      // get the font size of menu.
      // .css('fontSize') returns various results cross-browser, so measure an em dash instead
      var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({
        'padding' : 0,
        'position' : 'absolute',
        'top' : '-99999em',
        'width' : 'auto'
      }).appendTo($$).width(); //clientWidth is faster, but was incorrect here
      // remove em dash
      $('#menu-fontsize').remove();

      // Jump on level if it's a "NavBar"
      if ($$.hasClass('sf-navbar')) {
        $$ = $('li > ul', $$);
      }
      // cache all ul elements 
      $ULs = $$.find('ul:not(.sf-megamenu)');
      // loop through each ul in menu
      $ULs.each(function(i) {
        // cache this ul
        var $ul = $ULs.eq(i);
        // get all (li) children of this ul
        var $LIs = $ul.children();
        // get all anchor grand-children
        var $As = $LIs.children('a');
        // force content to one line and save current float property
        var liFloat = $LIs.css('white-space','nowrap').css('float');
        // remove width restrictions and floats so elements remain vertically stacked
        var emWidth = $ul.add($LIs).add($As).css({
          'float' : 'none',
          'width'  : 'auto'
        })
        // this ul will now be shrink-wrapped to longest li due to position:absolute
        // so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
        .end().end()[0].clientWidth / fontsize;
        // add more width to ensure lines don't turn over at certain sizes in various browsers
        emWidth += o.extraWidth;
        // restrict to at least minWidth and at most maxWidth
        if (emWidth > o.maxWidth)    { emWidth = o.maxWidth; }
        else if (emWidth < o.minWidth)  { emWidth = o.minWidth; }
        emWidth += 'em';
        // set ul to width in ems
        $ul.css('width',emWidth);
        // restore li floats to avoid IE bugs
        // set li width to full width of this ul
        // revert white-space to normal
        $LIs.css({
          'float' : liFloat,
          'width' : '100%',
          'white-space' : 'normal'
        })
        // update offset position of descendant ul to reflect new width of parent
        .each(function(){
          var $childUl = $('>ul',this);
          var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
          $childUl.css(offsetDirection,emWidth);
        });
      });

    });
  };
  // expose defaults
  $.fn.supersubs.defaults = {
    minWidth: 9, // requires em unit.
    maxWidth: 25, // requires em unit.
    extraWidth: 0 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
  };

})(jQuery); // plugin code ends;
/*
* Supposition v0.2 - an optional enhancer for Superfish jQuery menu widget - LAST UPDATE: MARCH 23rd, 2011
*
* Copyright (c) 2008 Joel Birch - based mostly on work by Jesse Klaasse and credit goes largely to him.
* Special thanks to Karl Swedberg for valuable input.
* 
* Dec 28th, 2010 - Modified for the Superfish project for Drupal (http://drupal.org/project/superfish)
*
* jQuery version: 1.3.x or higher.
*
* Dual licensed under the MIT and GPL licenses:
* 	http://www.opensource.org/licenses/mit-license.php
* 	http://www.gnu.org/licenses/gpl.html
*/

(function($){
  $.fn.supposition = function(){
    var $w = $(window), /*do this once instead of every onBeforeShow call*/
    _offset = function(dir) {
      return window[dir == 'y' ? 'pageYOffset' : 'pageXOffset']
      || document.documentElement && document.documentElement[dir=='y' ? 'scrollTop' : 'scrollLeft']
      || document.body[dir=='y' ? 'scrollTop' : 'scrollLeft'];
    },
    onHide = function(){
      this.css({Top:'',Right:'',Bottom:'',Left:''});
    },
    onBeforeShow = function(){
      this.each(function(){
        var $u = $(this);
        $u.css('display','block');
        var menuWidth = $u.width(),
        menuParentWidth = $u.closest('li').outerWidth(true),
        menuParentLeft = $u.closest('li').offset().left,
        totalRight = $w.width() + _offset('x'),
        menuRight = $u.offset().left + menuWidth,
        exactMenuWidth = (menuRight > (menuParentWidth + menuParentLeft)) ? menuWidth - (menuRight - (menuParentWidth + menuParentLeft)) : menuWidth;  
        if ($u.parents('.sf-js-enabled').hasClass('rtl')) {
          if (menuParentLeft < exactMenuWidth) {
            $u.css('left', menuParentWidth + 'px');
            $u.css('right', 'auto');
          }
        }
        else {
          if (menuRight > totalRight && menuParentLeft > menuWidth) {
            $u.css('right', menuParentWidth + 'px');
            $u.css('left', 'auto');
          }
        }
        var windowHeight = $w.height(),
        offsetTop = $u.offset().top,
        menuParentHeight = $u.parent().outerHeight(true),
        menuHeight = $u.height(),
        baseline = windowHeight + _offset('y');
        var expandUp = ((offsetTop + menuHeight > baseline) && (offsetTop > menuHeight));
        if (expandUp) {
          $u.css('bottom', menuParentHeight + 'px');
          $u.css('top', 'auto');
        }
        $u.css('display','none');
      });
    };

    return this.each(function() {
    var o = $.fn.superfish.o[this.serial]; /* get this menu's options */

    /* if callbacks already set, store them */
    var _onBeforeShow = o.onBeforeShow,
    _onHide = o.onHide;

    $.extend($.fn.superfish.o[this.serial],{
    onBeforeShow: function() {
    onBeforeShow.call(this); /* fire our Supposition callback */
    _onBeforeShow.call(this); /* fire stored callbacks */
    },
    onHide: function() {
    onHide.call(this); /* fire our Supposition callback */
    _onHide.call(this); /* fire stored callbacks */
    }
    });
    });
  };
})(jQuery);;
/*
 * sf-Touchscreen v1.0b - Provides touchscreen compatibility for the jQuery Superfish plugin. - LAST UPDATE: MARCH 23rd, 2011
 *
 * Developer's notes:
 * Built as a part of the Superfish project for Drupal (http://drupal.org/project/superfish) 
 * Found any bug? have any cool ideas? contact me right away! http://drupal.org/user/619294/contact
 *
 * jQuery version: 1.3.x or higher.
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
*/

(function($){
  $.fn.sftouchscreen = function() {
    // Return original object to support chaining.
    return this.each( function() {
      // Select hyperlinks from parent menu items.
      $(this).find('li > ul').closest('li').children('a').each( function() {
	    var $item = $(this);
        // No .toggle() here as it's not possible to reset it.
        $item.click( function(event){
	      // Already clicked? proceed to the URI.
          if ($item.hasClass('sf-clicked')) {
            var $uri = $item.attr('href');
            window.location = $uri;
          }
          else {
            event.preventDefault();
            $item.addClass('sf-clicked');
          }
        }).closest('li').mouseleave( function(){
          // So, we reset everything.
          $item.removeClass('sf-clicked');
        });
	  });
    });
  };
})(jQuery);;

