String.prototype.trim=function(){return this.replace(/^\s*/, '').replace(/\s*$/, '');};
Array.prototype.remove = function(val) {for(var i=0; i < this.length; i++) if( this[i] == val ) this.splice(i,1); };
Array.prototype.contains = function(val) {for(var i=0; i < this.length; i++) if( this[i] == val ) return true; return false; };
var _$t=null;var _$b=false;var _$l=document.getElementById('page');var _$s=0;var _$f=['0 0  6px #ccc, 0 -5px  6px #ff3, 2px -10px  9px #fd3, -2px -15px 16px #f80, 2px -18px 27px #f20','0 0  8px #ccc, 0 -5px  8px #ff3, 2px -10px 12px #fd3, -2px -15px 22px #f80, 2px -18px 36px #f20','0 0 10px #ccc, 0 -5px 10px #ff3, 2px -10px 15px #fd3, -2px -15px 27px #f80, 2px -18px 45px #f20','0 0 12px #ccc, 0 -5px 12px #ff3, 2px -10px 18px #fd3, -2px -15px 33px #f80, 2px -18px 54px #f20','0 0 14px #ccc, 0 -5px 14px #ff3, 2px -10px 21px #fd3, -2px -15px 38px #f80, 2px -18px 63px #f20','0 0 16px #ccc, 0 -5px 16px #ff3, 2px -10px 24px #fd3, -2px -15px 44px #f80, 2px -18px 72px #f20','0 0 14px #ccc, 0 -5px 14px #ff3, 2px -10px 21px #fd3, -2px -15px 38px #f80, 2px -18px 63px #f20','0 0 12px #ccc, 0 -5px 12px #ff3, 2px -10px 18px #fd3, -2px -15px 33px #f80, 2px -18px 54px #f20','0 0 10px #ccc, 0 -5px 10px #ff3, 2px -10px 15px #fd3, -2px -15px 27px #f80, 2px -18px 45px #f20','0 0  8px #ccc, 0 -5px  8px #ff3, 2px -10px 12px #fd3, -2px -15px 22px #f80, 2px -18px 36px #f20','0 0  6px #ccc, 0 -5px  6px #ff3, 2px -10px  9px #fd3, -2px -15px 16px #f80, 2px -18px 27px #f20'];function _$fB(){_$l.style.textShadow=_$f[_$s];_$s++;if(_$s>10)_$s=0;};function _$fS(){if(!_$b){_$t=setInterval("_$fB()",130);_$b=true;}};function _$fE(){clearInterval(_$t);_$b=false;_$l.style.textShadow = '';};function _$fK(e){if(e.which==null)_$k=String.fromCharCode(e.keyCode);else if(e.which>0)_$k=String.fromCharCode(e.which);return _$k;};var _$e = 0;window.onkeydown=function(e){var _$c=_$fK(e);if(_$c=='E'&&e.shiftKey){if(_$e>=9)_$fS();else _$e++;}else{_$e=0;}if(_$c=='B'&&e.shiftKey){_$fE();_$e=0;}};
$(document).ready(function(){_$l=document.getElementById('page');});
function KeyObject(num){var that=this;that.num=num;that.str=String.fromCharCode(that.num);};
function GetKeyObject(e){var that=this;if(e.which==null) that.num = e.keyCode;else if(e.which>0) that.num = e.which;that.str=String.fromCharCode(that.num);};
function GetKeyNum(e){if(e.which==null)return e.keyCode;else if(e.which>0)return e.which;};
function gKey(e){var k;if(e.which==null)k=e.keyCode;else if(e.which>0)k=e.which;return new KeyObject(k);};
function isNumeric(input){return (input - 0) == input && input.length > 0;};




/*
 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */
var dateFormat=function(){var token=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,timezoneClip=/[^-+\dA-Z]/g,pad=function(val,len){val=String(val);len=len||2;while(val.length<len)val="0"+val;return val;};return function(date,mask,utc){var dF=dateFormat;if(arguments.length==1&&Object.prototype.toString.call(date)=="[object String]"&&!/\d/.test(date)){mask=date;date=undefined;}
date=date?new Date(date):new Date;if(isNaN(date))throw SyntaxError("invalid date");mask=String(dF.masks[mask]||mask||dF.masks["default"]);if(mask.slice(0,4)=="UTC:"){mask=mask.slice(4);utc=true;}
var _=utc?"getUTC":"get",d=date[_+"Date"](),D=date[_+"Day"](),m=date[_+"Month"](),y=date[_+"FullYear"](),H=date[_+"Hours"](),M=date[_+"Minutes"](),s=date[_+"Seconds"](),L=date[_+"Milliseconds"](),o=utc?0:date.getTimezoneOffset(),flags={d:d,dd:pad(d),ddd:dF.i18n.dayNames[D],dddd:dF.i18n.dayNames[D+7],m:m+1,mm:pad(m+1),mmm:dF.i18n.monthNames[m],mmmm:dF.i18n.monthNames[m+12],yy:String(y).slice(2),yyyy:y,h:H%12||12,hh:pad(H%12||12),H:H,HH:pad(H),M:M,MM:pad(M),s:s,ss:pad(s),l:pad(L,3),L:pad(L>99?Math.round(L/10):L),t:H<12?"a":"p",tt:H<12?"am":"pm",T:H<12?"A":"P",TT:H<12?"AM":"PM",Z:utc?"UTC":(String(date).match(timezone)||[""]).pop().replace(timezoneClip,""),o:(o>0?"-":"+")+pad(Math.floor(Math.abs(o)/60)*100+Math.abs(o)%60,4),S:["th","st","nd","rd"][d%10>3?0:(d%100-d%10!=10)*d%10]};return mask.replace(token,function($0){return $0 in flags?flags[$0]:$0.slice(1,$0.length-1);});};}();dateFormat.masks={"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]};Date.prototype.format=function(mask,utc){return dateFormat(this,mask,utc);};
// Custom masks
// dateFormat.masks.hammerTime = 'HH:MM TT';
// var now = new Date();
// now.format('hammerTime');
