function retrieveCookie( cookieName ) {
  var cookieJar = document.cookie.split( "; " );
  for( var x = 0; x < cookieJar.length; x++ ) {
    var oneCookie = cookieJar[x].split( "=" );
    if( oneCookie[0] == escape( cookieName ) ) { return oneCookie[1] ? unescape( oneCookie[1] ) : ''; }
  }
  return null;
}

function setCookie( cookieName, cookieValue, lifeTime, path, domain, isSecure ) {
  if( !cookieName ) { return false; }
  if( lifeTime == "delete" ) { lifeTime = -10; } //this is in the past. Expires immediately.
  /* This next line sets the cookie but does not overwrite other cookies.
  syntax: cookieName=cookieValue[;expires=dataAsString[;path=pathAsString[;domain=domainAsString[;secure]]]]
  Because of the way that document.cookie behaves, writing this here is equivalent to writing
  document.cookie = whatIAmWritingNow + "; " + document.cookie; */
  document.cookie = escape( cookieName ) + "=" + escape( cookieValue ) +
    ( lifeTime ? ";expires=" + ( new Date( ( new Date() ).getTime() + ( 1000 * lifeTime ) ) ).toGMTString() : "" ) +
    ( path ? ";path=" + path : "") + ( domain ? ";domain=" + domain : "") +
    ( isSecure ? ";secure" : "");
  //check if the cookie has been set/deleted as required
  if( lifeTime < 0 ) { if( typeof( retrieveCookie( cookieName ) ) == "string" ) { return false; } return true; }
  if( typeof( retrieveCookie( cookieName ) ) == "string" ) { return true; } return false;
}

if (Drupal.jsEnabled) {
  jQuery(document).ready(function () {

    // ROUNDED ITEMS
    jQuery('.rounded-image').each(function() {
      var w = jQuery(this).width();
      jQuery(this).wrap('<div class="idea-corners" style="width:'+w+'px"></div>');
    });

    jQuery('#menu-item-2521 a').empty().html('<img class="partner" src="/files/partner-stott-blue.gif" border="0" alt="Stott Pilates" />');

    jQuery("#comments #comment-add .show-comment-form a").attr('href', '#comment-form').click(function() {
      jQuery("#comments .box").slideDown('fast', function() {
        jQuery("#comments #comment-add .show-comment-form").hide();
      });

      return false;
    });
  });
}




(function($) {
    function toIntegersAtLease(n)
    // Format integers to have at least two digits.
    {
        return n < 10 ? '0' + n : n;
    }

    Date.prototype.toJSON = function(date)
    // Yes, it polutes the Date namespace, but we'll allow it here, as
    // it's damned usefull.
    {
        return this.getUTCFullYear()   + '-' +
             toIntegersAtLease(this.getUTCMonth()) + '-' +
             toIntegersAtLease(this.getUTCDate());
    };

    var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g;
    var meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        };

    $.quoteString = function(string)
    // Places quotes around a string, inteligently.
    // If the string contains no control characters, no quote characters, and no
    // backslash characters, then we can safely slap some quotes around it.
    // Otherwise we must also replace the offending characters with safe escape
    // sequences.
    {
        if (escapeable.test(string))
        {
            return '"' + string.replace(escapeable, function (a)
            {
                var c = meta[a];
                if (typeof c === 'string') {
                    return c;
                }
                c = a.charCodeAt();
                return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
            }) + '"';
        }
        return '"' + string + '"';
    };

    $.toJSON = function(o, compact)
    {
        var type = typeof(o);

        if (type == "undefined")
            return "undefined";
        else if (type == "number" || type == "boolean")
            return o + "";
        else if (o === null)
            return "null";

        // Is it a string?
        if (type == "string")
        {
            return $.quoteString(o);
        }

        // Does it have a .toJSON function?
        if (type == "object" && typeof o.toJSON == "function")
            return o.toJSON(compact);

        // Is it an array?
        if (type != "function" && typeof(o.length) == "number")
        {
            var ret = [];
            for (var i = 0; i < o.length; i++) {
                ret.push( $.toJSON(o[i], compact) );
            }
            if (compact)
                return "[" + ret.join(",") + "]";
            else
                return "[" + ret.join(", ") + "]";
        }

        // If it's a function, we have to warn somebody!
        if (type == "function") {
            throw new TypeError("Unable to convert object of type 'function' to json.");
        }

        // It's probably an object, then.
        var ret = [];
        for (var k in o) {
            var name;
            type = typeof(k);

            if (type == "number")
                name = '"' + k + '"';
            else if (type == "string")
                name = $.quoteString(k);
            else
                continue;  //skip non-string or number keys

            var val = $.toJSON(o[k], compact);
            if (typeof(val) != "string") {
                // skip non-serializable values
                continue;
            }

            if (compact)
                ret.push(name + ":" + val);
            else
                ret.push(name + ": " + val);
        }
        return "{" + ret.join(", ") + "}";
    };

    $.compactJSON = function(o)
    {
        return $.toJSON(o, true);
    };

    $.evalJSON = function(src)
    // Evals JSON that we know to be safe.
    {
        return eval("(" + src + ")");
    };

    $.secureEvalJSON = function(src)
    // Evals JSON in a way that is *more* secure.
    {
        var filtered = src;
        filtered = filtered.replace(/\\["\\\/bfnrtu]/g, '@');
        filtered = filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']');
        filtered = filtered.replace(/(?:^|:|,)(?:\s*\[)+/g, '');

        if (/^[\],:{}\s]*$/.test(filtered))
            return eval("(" + src + ")");
        else
            throw new SyntaxError("Error parsing JSON, source is not valid.");
    };
})(jQuery);


function newsletter_onfocus(i) {
  jQuery(i).addClass('focused');
}
function newsletter_onblur(i) {
  var I = jQuery(i);
  if (I.val() == '') {
    I.removeClass('focused');
  }
  else {
    I.addClass('focused');
  }
}

function is_safe(O) { return (typeof(O) != 'undefined' && O != 'undefined') ? true : false; }
function safe(O, def) { return is_safe(O) ? O : def; }

function close_msg(mid) {
  jQuery("#"+mid).fadeOut(100);
  return false;
}


function function_exists(func) {
  var result = eval('typeof('+func+')');
  return (result == 'function') ? true : false;
}

function get_hash() {
  if (0 && typeof(window.location.hash) == 'string') {
    return window.locaiton.hash;
  }

  var i = window.location.href.indexOf("#");
  return (i<0) ? '' : String(window.location.href).substr(i);
}


(function($) {
  $.fn.equalHeights = function(minHeight, maxHeight) {
    var tallest = (typeof(minHeight)!='undefined') ? minHeight : 0;
    this.each(function() {
      var h = $(this).outerHeight();
      if(h > tallest) {
        tallest = h;
      }
    });
    if((maxHeight) && tallest > maxHeight) {
      tallest = maxHeight;
    }
    return this.each(function() {
      $(this).height(tallest);
    });
  }

  $.fn.equalHeightColumns = function () {
    this.each(function() {
      $('.column', this).equalHeights();
    });
  }

  $.matchHeight = function (sel_src, sel_dest) {
    var s = $(sel_src), d = $(sel_dest);
    d.height(s.height()+'px');
  }
})(jQuery);


function on_tabs_sidebar_tabs(tab_theme) {
  jQuery("ul.tabs."+tab_theme).each(function() {
    var T = jQuery(this);
    var w = T.width();

    if (T.hasClass('tabs-2')) {
      jQuery('li.first', T).width(Math.ceil(w/2));
      jQuery('li.last', T).width(Math.floor(w/2)-1);
    }
    else if (T.hasClass('tabs-3')) {
      jQuery('li.tab-1', T).width(Math.ceil(w/3)-1);
      jQuery('li.tab-2', T).width(Math.floor(w/3));
      jQuery('li.tab-3', T).width(Math.floor(w/3));
    }
  });
}
