﻿// jQuery Image Rollover Plugin  - Author: Sean C. Rowland - Usage: <img src="filename_out.gif"> - detects "_out" and replaces with "_over".
$().ready(function () {
    $("img.btn, img.nav, img.link").hover(
        function () { $(this).attr('src', $(this).attr('src').replace("_out.", "_over.")); },
        function () { $(this).attr('src', $(this).attr('src').replace("_over.", "_out.")); }
    );
    $("img.btn").bind("mousedown", function () { $(this).attr('src', $(this).attr('src').replace("_over.", "_down.")); });
    $("img.btn").bind("mouseup ", function () { $(this).attr('src', $(this).attr('src').replace("_down.", "_over.")); });
});

// Metadata - Used by all MB Plugins
(function ($) { $.extend({ metadata: { defaults: { type: 'class', name: 'metadata', cre: /({.*})/, single: 'metadata' }, setType: function (type, name) { this.defaults.type = type; this.defaults.name = name; }, get: function (elem, opts) { var settings = $.extend({}, this.defaults, opts); if (!settings.single.length) settings.single = 'metadata'; var data = $.data(elem, settings.single); if (data) return data; data = "{}"; if (settings.type == "class") { var m = settings.cre.exec(elem.className); if (m) data = m[1]; } else if (settings.type == "elem") { if (!elem.getElementsByTagName) return undefined; var e = elem.getElementsByTagName(settings.name); if (e.length) data = $.trim(e[0].innerHTML); } else if (elem.getAttribute != undefined) { var attr = elem.getAttribute(settings.name); if (attr) data = attr; } if (data.indexOf('{') < 0) data = "{" + data + "}"; data = eval("(" + data + ")"); $.data(elem, settings.single, data); return data; } } }); $.fn.metadata = function( opts ){ return $.metadata.get( this[0], opts ); }; })(jQuery);

// jQuery Reflection Plugin - reflection.js v1.03 - (c) 2006-2009 Christophe Beyls <http://www.digitalia.be> - MIT-style license.
(function (a) { a.fn.extend({ reflect: function (b) { b = a.extend({ height: 1 / 3, opacity: 0.5 }, b); return this.unreflect().each(function () { var c = this; if (/^img$/i.test(c.tagName)) { function d() { var g = c.width, f = c.height, l, i, m, h, k; i = Math.floor((b.height > 1) ? Math.min(f, b.height) : f * b.height); if (a.browser.msie) { l = a("<img />").attr("src", c.src).css({ width: g, height: f, marginBottom: i - f, filter: "flipv progid:DXImageTransform.Microsoft.Alpha(opacity=" + (b.opacity * 100) + ", style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy=" + (i / f * 100) + ")" })[0] } else { l = a("<canvas />")[0]; if (!l.getContext) { return } h = l.getContext("2d"); try { a(l).attr({ width: g, height: i }); h.save(); h.translate(0, f - 1); h.scale(1, -1); h.drawImage(c, 0, 0, g, f); h.restore(); h.globalCompositeOperation = "destination-out"; k = h.createLinearGradient(0, 0, 0, i); k.addColorStop(0, "rgba(255, 255, 255, " + (1 - b.opacity) + ")"); k.addColorStop(1, "rgba(255, 255, 255, 1.0)"); h.fillStyle = k; h.rect(0, 0, g, i); h.fill() } catch (j) { return } } a(l).css({ display: "block", border: 0 }); m = a(/^a$/i.test(c.parentNode.tagName) ? "<span />" : "<div />").insertAfter(c).append([c, l])[0]; m.className = c.className; a.data(c, "reflected", m.style.cssText = c.style.cssText); a(m).css({ width: g, height: f + i, overflow: "hidden" }); c.style.cssText = "display: block; border: 0px"; c.className = "reflected" } if (c.complete) { d() } else { a(c).load(d) } } }) }, unreflect: function () { return this.unbind("load").each(function () { var c = this, b = a.data(this, "reflected"), d; if (b !== undefined) { d = c.parentNode; c.className = d.className; c.style.cssText = b; a.removeData(c, "reflected"); d.parentNode.replaceChild(c, d) } }) } }) })(jQuery);

/*jQuery Corner Plugin: simple corner rounding - Examples and documentation at: http://jquery.malsup.com/corner/
* version 2.11 (15-JUN-2010) -* Dual licensed under the MIT and GPL licenses:
* Authors: Dave Methvin and Mike Alsup
* corner() takes a single string argument:  $('#myDiv').corner("effect corners width")
* effect:  name of the effect to apply, such as round, bevel, notch, bite, etc (default is round). 
* corners: one or more of: top, bottom, tr, tl, br, or bl.  (default is all corners)
* width:   width of the effect; in the case of rounded corners this is the radius. 
*          specify this value using the px suffix such as 10px (yes, it must be pixels).*/
(function($){var style=document.createElement('div').style,moz=style['MozBorderRadius']!==undefined,webkit=style['WebkitBorderRadius']!==undefined,radius=style['borderRadius']!==undefined||style['BorderRadius']!==undefined,mode=document.documentMode||0,noBottomFold=$.browser.msie&&(($.browser.version<8&&!mode)||mode<8),expr=$.browser.msie&&(function(){var div=document.createElement('div');try{div.style.setExpression('width','0+0');div.style.removeExpression('width');}catch(e){return false;}return true;})();$.support=$.support||{};$.support.borderRadius=moz||webkit||radius;function sz(el,p){return parseInt($.css(el,p))||0;};function hex2(s){var s=parseInt(s).toString(16);return(s.length<2)?'0'+s:s;};function gpc(node){while(node){var v=$.css(node,'backgroundColor'),rgb;if(v&&v!='transparent'&&v!='rgba(0, 0, 0, 0)'){if(v.indexOf('rgb')>=0){rgb=v.match(/\d+/g);return'#'+hex2(rgb[0])+hex2(rgb[1])+hex2(rgb[2]);}return v;}if(node.nodeName.toLowerCase()=='html')break;node=node.parentNode;}return'#ffffff';};function getWidth(fx,i,width){switch(fx){case'round':return Math.round(width*(1-Math.cos(Math.asin(i/width))));case'cool':return Math.round(width*(1+Math.cos(Math.asin(i/width))));case'sharp':return Math.round(width*(1-Math.cos(Math.acos(i/width))));case'bite':return Math.round(width*(Math.cos(Math.asin((width-i-1)/width))));case'slide':return Math.round(width*(Math.atan2(i,width/i)));case'jut':return Math.round(width*(Math.atan2(width,(width-i-1))));case'curl':return Math.round(width*(Math.atan(i)));case'tear':return Math.round(width*(Math.cos(i)));case'wicked':return Math.round(width*(Math.tan(i)));case'long':return Math.round(width*(Math.sqrt(i)));case'sculpt':return Math.round(width*(Math.log((width-i-1),width)));case'dogfold':case'dog':return(i&1)?(i+1):width;case'dog2':return(i&2)?(i+1):width;case'dog3':return(i&3)?(i+1):width;case'fray':return(i%2)*width;case'notch':return width;case'bevelfold':case'bevel':return i+1;}};$.fn.corner=function(options){if(this.length==0){if(!$.isReady&&this.selector){var s=this.selector,c=this.context;$(function(){$(s,c).corner(options);});}return this;}return this.each(function(index){var $this=$(this),o=[$this.attr($.fn.corner.defaults.metaAttr)||'',options||''].join(' ').toLowerCase(),keep=/keep/.test(o),cc=((o.match(/cc:(#[0-9a-f]+)/)||[])[1]),sc=((o.match(/sc:(#[0-9a-f]+)/)||[])[1]),width=parseInt((o.match(/(\d+)px/)||[])[1])||10,re=/round|bevelfold|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dogfold|dog/,fx=((o.match(re)||['round'])[0]),fold=/dogfold|bevelfold/.test(o),edges={T:0,B:1},opts={TL:/top|tl|left/.test(o),TR:/top|tr|right/.test(o),BL:/bottom|bl|left/.test(o),BR:/bottom|br|right/.test(o)},strip,pad,cssHeight,j,bot,d,ds,bw,i,w,e,c,common,$horz;if(!opts.TL&&!opts.TR&&!opts.BL&&!opts.BR)opts={TL:1,TR:1,BL:1,BR:1};if($.fn.corner.defaults.useNative&&fx=='round'&&(radius||moz||webkit)&&!cc&&!sc){if(opts.TL)$this.css(radius?'border-top-left-radius':moz?'-moz-border-radius-topleft':'-webkit-border-top-left-radius',width+'px');if(opts.TR)$this.css(radius?'border-top-right-radius':moz?'-moz-border-radius-topright':'-webkit-border-top-right-radius',width+'px');if(opts.BL)$this.css(radius?'border-bottom-left-radius':moz?'-moz-border-radius-bottomleft':'-webkit-border-bottom-left-radius',width+'px');if(opts.BR)$this.css(radius?'border-bottom-right-radius':moz?'-moz-border-radius-bottomright':'-webkit-border-bottom-right-radius',width+'px');return;}strip=document.createElement('div');$(strip).css({overflow:'hidden',height:'1px',minHeight:'1px',fontSize:'1px',backgroundColor:sc||'transparent',borderStyle:'solid'});pad={T:parseInt($.css(this,'paddingTop'))||0,R:parseInt($.css(this,'paddingRight'))||0,B:parseInt($.css(this,'paddingBottom'))||0,L:parseInt($.css(this,'paddingLeft'))||0};if(typeof this.style.zoom!=undefined)this.style.zoom=1;if(!keep)this.style.border='none';strip.style.borderColor=cc||gpc(this.parentNode);cssHeight=$(this).outerHeight();for(j in edges){bot=edges[j];if((bot&&(opts.BL||opts.BR))||(!bot&&(opts.TL||opts.TR))){strip.style.borderStyle='none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none');d=document.createElement('div');$(d).addClass('jquery-corner');ds=d.style;bot?this.appendChild(d):this.insertBefore(d,this.firstChild);if(bot&&cssHeight!='auto'){if($.css(this,'position')=='static')this.style.position='relative';ds.position='absolute';ds.bottom=ds.left=ds.padding=ds.margin='0';if(expr)ds.setExpression('width','this.parentNode.offsetWidth');else{ds.width='100%';}}else if(!bot&&$.browser.msie){if($.css(this,'position')=='static')this.style.position='relative';ds.position='absolute';ds.top=ds.left=ds.right=ds.padding=ds.margin='0';if(expr){bw=sz(this,'borderLeftWidth')+sz(this,'borderRightWidth');ds.setExpression('width','this.parentNode.offsetWidth - '+bw+'+ "px"');}else{ds.width='100%';}}else{ds.position='relative';ds.margin=!bot?'-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px':(pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px';}for(i=0;i<width;i++){w=Math.max(0,getWidth(fx,i,width));e=strip.cloneNode(false);e.style.borderWidth='0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px';bot?d.appendChild(e):d.insertBefore(e,d.firstChild);}if(fold&&$.support.boxModel){if(bot&&noBottomFold)continue;for(c in opts){if(!opts[c])continue;if(bot&&(c=='TL'||c=='TR'))continue;if(!bot&&(c=='BL'||c=='BR'))continue;common={position:'absolute',border:'none',margin:0,padding:0,overflow:'hidden',backgroundColor:strip.style.borderColor};$horz=$('<div/>').css(common).css({width:width+'px',height:'1px'});switch(c){case'TL':$horz.css({bottom:0,left:0});break;case'TR':$horz.css({bottom:0,right:0});break;case'BL':$horz.css({top:0,left:0});break;case'BR':$horz.css({top:0,right:0});break;}d.appendChild($horz[0]);var $vert=$('<div/>').css(common).css({top:0,bottom:0,width:'1px',height:width+'px'});switch(c){case'TL':$vert.css({left:width});break;case'TR':$vert.css({right:width});break;case'BL':$vert.css({left:width});break;case'BR':$vert.css({right:width});break;}d.appendChild($vert[0]);}}}}});};$.fn.uncorner=function(){if(radius||moz||webkit)this.css(radius?'border-radius':moz?'-moz-border-radius':'-webkit-border-radius',0);$('div.jquery-corner',this).remove();return this;};$.fn.corner.defaults={useNative:true,metaAttr:'data-corner'};})(jQuery);

/* jQuery Drop Shadow Plugin 1.6  12-13-2007
SYNTAX: 
$(selector).dropShadow(options);  // Creates new drop shadows
$(selector).redrawShadow();       // Redraws shadows on elements
$(selector).removeShadow();       // Removes shadows from elements
$(selector).shadowId();           // Returns an existing shadow's ID
OPTIONS:
left    : integer (default = 4)
top     : integer (default = 4)
blur    : integer (default = 2)
opacity : decimal (default = 0.5)
color   : string (default = "black")
swap    : boolean (default = false)*/
(function($){var dropShadowZindex=1;$.fn.dropShadow=function(options){var opt=$.extend({left:4,top:4,blur:2,opacity:.5,color:"black",swap:false},options);var jShadows=$([]);this.not(".dropShadow").each(function(){var jthis=$(this);var shadows=[];var blur=(opt.blur<=0)?0:opt.blur;var opacity=(blur==0)?opt.opacity:opt.opacity/(blur*8);var zOriginal=(opt.swap)?dropShadowZindex:dropShadowZindex+1000;var zShadow=(opt.swap)?dropShadowZindex+1:dropShadowZindex;var shadowId;if(this.id){shadowId=this.id+"_dropShadow";}else{shadowId="ds"+(1+Math.floor(9999*Math.random()));}$.data(this,"shadowId",shadowId);$.data(this,"shadowOptions",options);jthis.attr("shadowId",shadowId).css("zIndex",zOriginal);if(jthis.css("position")!="absolute"){jthis.css({position:"relative",zoom:1});}bgColor=jthis.css("backgroundColor");if(bgColor=="rgba(0, 0, 0, 0)")bgColor="transparent";if(bgColor!="transparent"||jthis.css("backgroundImage")!="none"||this.nodeName=="SELECT"||this.nodeName=="INPUT"||this.nodeName=="TEXTAREA"){shadows[0]=$("<div></div>").css("background",opt.color);}else{shadows[0]=jthis.clone().removeAttr("id").removeAttr("name").removeAttr("shadowId").css("color",opt.color);}shadows[0].addClass("dropShadow").css({height:jthis.outerHeight(),left:blur,opacity:opacity,position:"absolute",top:blur,width:jthis.outerWidth(),zIndex:zShadow});var layers=(8*blur)+1;for(i=1;i<layers;i++){shadows[i]=shadows[0].clone();}var i=1;var j=blur;while(j>0){shadows[i].css({left:j*2,top:0});shadows[i+1].css({left:j*4,top:j*2});shadows[i+2].css({left:j*2,top:j*4});shadows[i+3].css({left:0,top:j*2});shadows[i+4].css({left:j*3,top:j});shadows[i+5].css({left:j*3,top:j*3});shadows[i+6].css({left:j,top:j*3});shadows[i+7].css({left:j,top:j});i+=8;j--;}var divShadow=$("<div></div>").attr("id",shadowId).addClass("dropShadow").css({left:jthis.position().left+opt.left-blur,marginTop:jthis.css("marginTop"),marginRight:jthis.css("marginRight"),marginBottom:jthis.css("marginBottom"),marginLeft:jthis.css("marginLeft"),position:"absolute",top:jthis.position().top+opt.top-blur,zIndex:zShadow});for(i=0;i<layers;i++){divShadow.append(shadows[i]);}jthis.after(divShadow);jShadows=jShadows.add(divShadow);$(window).resize(function(){try{divShadow.css({left:jthis.position().left+opt.left-blur,top:jthis.position().top+opt.top-blur});}catch(e){}});dropShadowZindex+=2;});return this.pushStack(jShadows);};$.fn.redrawShadow=function(){this.removeShadow();return this.each(function(){var shadowOptions=$.data(this,"shadowOptions");$(this).dropShadow(shadowOptions);});};$.fn.removeShadow=function(){return this.each(function(){var shadowId=$(this).shadowId();$("div#"+shadowId).remove();});};$.fn.shadowId=function(){return $.data(this[0],"shadowId");};$(function(){var noPrint="<style type='text/css' media='print'>";noPrint+=".dropShadow{visibility:hidden;}</style>";$("head").append(noPrint);});})(jQuery);

// FancyZoom image popup
//(function (a) { a.fn.fancyZoom = function (p) { var p = p || {}; var m = p && p.directory ? p.directory : "images"; var e = false; if (a("#zoom").length == 0) { var f = a.browser.msie ? "gif" : "png"; var k = '<div id="zoom" style="display:none;"> <table id="zoom_table" style="border-collapse:collapse; width:100%; height:100%;"> <tbody> <tr> <td class="tl" style="background:url(' + m + "/tl." + f + ') 0 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> <td class="tm" style="background:url(' + m + "/tm." + f + ') 0 0 repeat-x; height:20px; overflow:hidden;" /> <td class="tr" style="background:url(' + m + "/tr." + f + ') 100% 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> </tr> <tr> <td class="ml" style="background:url(' + m + "/ml." + f + ') 0 0 repeat-y; width:20px; overflow:hidden;" /> <td class="mm" style="background:#fff; vertical-align:top; padding:10px;"> <div id="zoom_content"> </div> </td> <td class="mr" style="background:url(' + m + "/mr." + f + ') 100% 0 repeat-y;  width:20px; overflow:hidden;" /> </tr> <tr> <td class="bl" style="background:url(' + m + "/bl." + f + ') 0 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> <td class="bm" style="background:url(' + m + "/bm." + f + ') 0 100% repeat-x; height:20px; overflow:hidden;" /> <td class="br" style="background:url(' + m + "/br." + f + ') 100% 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> </tr> </tbody> </table> <a href="#" title="Close" id="zoom_close" style="position:absolute; top:0; left:0;"> <img src="' + m + "/closebox." + f + '" alt="Close" style="border:none; margin:0; padding:0;" /> </a> </div>'; a("body").append(k); a("html").click(function (q) { if (a(q.target).parents("#zoom:visible").length == 0) { l(); } }); a(document).keyup(function (q) { if (q.keyCode == 27 && a("#zoom:visible").length > 0) { l(); } }); a("#zoom_close").click(l); } var o = a("#zoom"); var j = a("#zoom_table"); var i = a("#zoom_close"); var h = a("#zoom_content"); var b = a("td.ml,td.mm,td.mr"); this.each(function (q) { a(a(this).attr("href")).hide(); a(this).click(n); }); return this; function n(w) { if (e) { return false; } e = true; var q = a(a(this).attr("href")); var u = p.width; var v = p.height; var r = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth); var E = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight); var C = window.pageXOffset || (window.document.documentElement.scrollLeft || window.document.body.scrollLeft); var B = window.pageYOffset || (window.document.documentElement.scrollTop || window.document.body.scrollTop); var F = { width: r, height: E, x: C, y: B }; var r = (u || q.width()) + 60; var E = (v || q.height()) + 60; var z = F; var A = Math.max((z.height / 2) - (E / 2) + B, 0); var D = (z.width / 2) - (r / 2); var s = w.pageY; var t = w.pageX; i.attr("curTop", s); i.attr("curLeft", t); i.attr("scaleImg", p.scaleImg ? "true" : "false"); a("#zoom").hide().css({ position: "absolute", top: s + "px", left: t + "px", width: "1px", height: "1px" }); g(); i.hide(); if (p.closeOnClick) { a("#zoom").click(l); } if (p.scaleImg) { h.html(q.html()); a("#zoom_content img").css("width", "100%"); } else { h.html(""); } a("#zoom").animate({ top: A + "px", left: D + "px", opacity: "show", width: r, height: E }, 500, null, function () { if (p.scaleImg != true) { h.html(q.html()); } d(); i.show(); e = false; }); return false; } function l() { if (e) { return false; } e = true; a("#zoom").unbind("click"); g(); if (i.attr("scaleImg") != "true") { h.html(""); } i.hide(); a("#zoom").animate({ top: i.attr("curTop") + "px", left: i.attr("curLeft") + "px", opacity: "hide", width: "1px", height: "1px" }, 500, null, function () { if (i.attr("scaleImg") == "true") { h.html(""); } d(); e = false; }); return false; } function c(s) { a("#zoom_table td").each(function (u) { var t = a(this).css("background-image").replace(/\.(png|gif|none)\"\)$/, "." + s + '")'); a(this).css("background-image", t); }); var r = i.children("img"); var q = r.attr("src").replace(/\.(png|gif|none)$/, "." + s); r.attr("src", q); } function g() { if (a.browser.msie && parseFloat(a.browser.version) >= 7) { c("gif"); } } function d() { if (a.browser.msie && a.browser.version >= 7) { c("png"); } } }; })(jQuery);

/* ------------------------------------------------------------------------
* Class: prettyPhoto
* Use: Lightbox clone for jQuery
* Author: Stephane Caron (http://www.no-margin-for-errors.com)
* Version: 3.0.1
* ------------------------------------------------------------------------- */

(function ($)
{
    $.prettyPhoto = { version: '3.0' }; $.fn.prettyPhoto = function (pp_settings)
    {
        pp_settings = jQuery.extend({ animation_speed: 'fast', slideshow: false, autoplay_slideshow: false, opacity: 0.80, show_title: true, allow_resize: true, default_width: 500, default_height: 344, counter_separator_label: '/', theme: 'facebook', hideflash: false, wmode: 'opaque', autoplay: true, modal: false, overlay_gallery: true, keyboard_shortcuts: true, changepicturecallback: function () { }, callback: function () { }, markup: '<div class="pp_pic_holder"> \
      <div class="ppt">&nbsp;</div> \
      <div class="pp_top"> \
       <div class="pp_left"></div> \
       <div class="pp_middle"></div> \
       <div class="pp_right"></div> \
      </div> \
      <div class="pp_content_container"> \
       <div class="pp_left"> \
       <div class="pp_right"> \
        <div class="pp_content"> \
         <div class="pp_loaderIcon"></div> \
         <div class="pp_fade"> \
          <a href="#" class="pp_expand" title="Expand the image">Expand</a> \
          <div class="pp_hoverContainer"> \
           <a class="pp_next" href="#">next</a> \
           <a class="pp_previous" href="#">previous</a> \
          </div> \
          <div id="pp_full_res"></div> \
          <div class="pp_details clearfix"> \
           <p class="pp_description"></p> \
           <a class="pp_close" href="#">Close</a> \
           <div class="pp_nav"> \
            <a href="#" class="pp_arrow_previous">Previous</a> \
            <p class="currentTextHolder">0/0</p> \
            <a href="#" class="pp_arrow_next">Next</a> \
           </div> \
          </div> \
         </div> \
        </div> \
       </div> \
       </div> \
      </div> \
      <div class="pp_bottom"> \
       <div class="pp_left"></div> \
       <div class="pp_middle"></div> \
       <div class="pp_right"></div> \
      </div> \
     </div> \
     <div class="pp_overlay"></div>', gallery_markup: '<div class="pp_gallery"> \
        <a href="#" class="pp_arrow_previous">Previous</a> \
        <ul> \
         {gallery} \
        </ul> \
        <a href="#" class="pp_arrow_next">Next</a> \
       </div>', image_markup: '<img id="fullResImage" src="" />', flash_markup: '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="{width}" height="{height}"><param name="wmode" value="{wmode}" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{path}" /><embed src="{path}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="{width}" height="{height}" wmode="{wmode}"></embed></object>', quicktime_markup: '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="{height}" width="{width}"><param name="src" value="{path}"><param name="autoplay" value="{autoplay}"><param name="type" value="video/quicktime"><embed src="{path}" height="{height}" width="{width}" autoplay="{autoplay}" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/"></embed></object>', iframe_markup: '<iframe src ="{path}" width="{width}" height="{height}" frameborder="no"></iframe>', inline_markup: '<div class="pp_inline clearfix">{content}</div>', custom_markup: ''
        }, pp_settings); var matchedObjects = this, percentBased = false, correctSizes, pp_open, pp_contentHeight, pp_contentWidth, pp_containerHeight, pp_containerWidth, windowHeight = $(window).height(), windowWidth = $(window).width(), pp_slideshow; doresize = true, scroll_pos = _get_scroll(); $(window).unbind('resize').resize(function () { _center_overlay(); _resize_overlay(); }); if (pp_settings.keyboard_shortcuts) {
            $(document).unbind('keydown').keydown(function (e)
            {
                if (typeof $pp_pic_holder != 'undefined') {
                    if ($pp_pic_holder.is(':visible')) {
                        switch (e.keyCode) {
                            case 37: $.prettyPhoto.changePage('previous'); break; case 39: $.prettyPhoto.changePage('next'); break; case 27: if (!settings.modal)
                                    $.prettyPhoto.close(); break;
                        }; return false;
                    };
                };
            });
        }
        $.prettyPhoto.initialize = function ()
        {
            settings = pp_settings; if ($.browser.msie && parseInt($.browser.version) == 6) settings.theme = "light_square"; _buildOverlay(this); if (settings.allow_resize)
                $(window).scroll(function () { _center_overlay(); }); _center_overlay(); set_position = jQuery.inArray($(this).attr('href'), pp_images); $.prettyPhoto.open(); return false;
        }
        $.prettyPhoto.open = function (event)
        {
            if (typeof settings == "undefined") { settings = pp_settings; if ($.browser.msie && $.browser.version == 6) settings.theme = "light_square"; _buildOverlay(event.target); pp_images = $.makeArray(arguments[0]); pp_titles = (arguments[1]) ? $.makeArray(arguments[1]) : $.makeArray(""); pp_descriptions = (arguments[2]) ? $.makeArray(arguments[2]) : $.makeArray(""); isSet = (pp_images.length > 1) ? true : false; set_position = 0; }
            if ($.browser.msie && $.browser.version == 6) $('select').css('visibility', 'hidden'); if (settings.hideflash) $('object,embed').css('visibility', 'hidden'); _checkPosition($(pp_images).size()); $('.pp_loaderIcon').show(); if ($ppt.is(':hidden')) $ppt.css('opacity', 0).show(); $pp_overlay.show().fadeTo(settings.animation_speed, settings.opacity); $pp_pic_holder.find('.currentTextHolder').text((set_position + 1) + settings.counter_separator_label + $(pp_images).size()); $pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position])); (settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html('&nbsp;'); movie_width = (parseFloat(grab_param('width', pp_images[set_position]))) ? grab_param('width', pp_images[set_position]) : settings.default_width.toString(); movie_height = (parseFloat(grab_param('height', pp_images[set_position]))) ? grab_param('height', pp_images[set_position]) : settings.default_height.toString(); if (movie_width.indexOf('%') != -1 || movie_height.indexOf('%') != -1) { movie_height = parseFloat(($(window).height() * parseFloat(movie_height) / 100) - 150); movie_width = parseFloat(($(window).width() * parseFloat(movie_width) / 100) - 150); percentBased = true; } else { percentBased = false; }
            $pp_pic_holder.fadeIn(function () { imgPreloader = ""; switch (_getFileType(pp_images[set_position])) { case 'image': imgPreloader = new Image(); nextImage = new Image(); if (isSet && set_position > $(pp_images).size()) nextImage.src = pp_images[set_position + 1]; prevImage = new Image(); if (isSet && pp_images[set_position - 1]) prevImage.src = pp_images[set_position - 1]; $pp_pic_holder.find('#pp_full_res')[0].innerHTML = settings.image_markup; $pp_pic_holder.find('#fullResImage').attr('src', pp_images[set_position]); imgPreloader.onload = function () { correctSizes = _fitToViewport(imgPreloader.width, imgPreloader.height); _showContent(); }; imgPreloader.onerror = function () { alert('Image cannot be loaded. Make sure the path is correct and image exist.'); $.prettyPhoto.close(); }; imgPreloader.src = pp_images[set_position]; break; case 'youtube': correctSizes = _fitToViewport(movie_width, movie_height); movie = 'http://www.youtube.com/v/' + grab_param('v', pp_images[set_position]); if (settings.autoplay) movie += "&autoplay=1"; toInject = settings.flash_markup.replace(/{width}/g, correctSizes['width']).replace(/{height}/g, correctSizes['height']).replace(/{wmode}/g, settings.wmode).replace(/{path}/g, movie); break; case 'vimeo': correctSizes = _fitToViewport(movie_width, movie_height); movie_id = pp_images[set_position]; var regExp = /http:\/\/(www\.)?vimeo.com\/(\d+)/; var match = movie_id.match(regExp); movie = 'http://player.vimeo.com/video/' + match[2] + '?title=0&amp;byline=0&amp;portrait=0'; if (settings.autoplay) movie += "&autoplay=1;"; vimeo_width = correctSizes['width'] + '/embed/?moog_width=' + correctSizes['width']; toInject = settings.iframe_markup.replace(/{width}/g, vimeo_width).replace(/{height}/g, correctSizes['height']).replace(/{path}/g, movie); break; case 'quicktime': correctSizes = _fitToViewport(movie_width, movie_height); correctSizes['height'] += 15; correctSizes['contentHeight'] += 15; correctSizes['containerHeight'] += 15; toInject = settings.quicktime_markup.replace(/{width}/g, correctSizes['width']).replace(/{height}/g, correctSizes['height']).replace(/{wmode}/g, settings.wmode).replace(/{path}/g, pp_images[set_position]).replace(/{autoplay}/g, settings.autoplay); break; case 'flash': correctSizes = _fitToViewport(movie_width, movie_height); flash_vars = pp_images[set_position]; flash_vars = flash_vars.substring(pp_images[set_position].indexOf('flashvars') + 10, pp_images[set_position].length); filename = pp_images[set_position]; filename = filename.substring(0, filename.indexOf('?')); toInject = settings.flash_markup.replace(/{width}/g, correctSizes['width']).replace(/{height}/g, correctSizes['height']).replace(/{wmode}/g, settings.wmode).replace(/{path}/g, filename + '?' + flash_vars); break; case 'iframe': correctSizes = _fitToViewport(movie_width, movie_height); frame_url = pp_images[set_position]; frame_url = frame_url.substr(0, frame_url.indexOf('iframe') - 1); toInject = settings.iframe_markup.replace(/{width}/g, correctSizes['width']).replace(/{height}/g, correctSizes['height']).replace(/{path}/g, frame_url); break; case 'custom': correctSizes = _fitToViewport(movie_width, movie_height); toInject = settings.custom_markup; break; case 'inline': myClone = $(pp_images[set_position]).clone().css({ 'width': settings.default_width }).wrapInner('<div id="pp_full_res"><div class="pp_inline clearfix"></div></div>').appendTo($('body')); correctSizes = _fitToViewport($(myClone).width(), $(myClone).height()); $(myClone).remove(); toInject = settings.inline_markup.replace(/{content}/g, $(pp_images[set_position]).html()); break; }; if (!imgPreloader) { $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; _showContent(); }; }); return false;
        }; $.prettyPhoto.changePage = function (direction) { currentGalleryPage = 0; if (direction == 'previous') { set_position--; if (set_position < 0) { set_position = 0; return; }; } else if (direction == 'next') { set_position++; if (set_position > $(pp_images).size() - 1) { set_position = 0; } } else { set_position = direction; }; if (!doresize) doresize = true; $('.pp_contract').removeClass('pp_contract').addClass('pp_expand'); _hideContent(function () { $.prettyPhoto.open(); }); }; $.prettyPhoto.changeGalleryPage = function (direction) { if (direction == 'next') { currentGalleryPage++; if (currentGalleryPage > totalPage) { currentGalleryPage = 0; }; } else if (direction == 'previous') { currentGalleryPage--; if (currentGalleryPage < 0) { currentGalleryPage = totalPage; }; } else { currentGalleryPage = direction; }; itemsToSlide = (currentGalleryPage == totalPage) ? pp_images.length - ((totalPage) * itemsPerPage) : itemsPerPage; $pp_pic_holder.find('.pp_gallery li').each(function (i) { $(this).animate({ 'left': (i * itemWidth) - ((itemsToSlide * itemWidth) * currentGalleryPage) }); }); }; $.prettyPhoto.startSlideshow = function () { if (typeof pp_slideshow == 'undefined') { $pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function () { $.prettyPhoto.stopSlideshow(); return false; }); pp_slideshow = setInterval($.prettyPhoto.startSlideshow, settings.slideshow); } else { $.prettyPhoto.changePage('next'); }; }
        $.prettyPhoto.stopSlideshow = function () { $pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function () { $.prettyPhoto.startSlideshow(); return false; }); clearInterval(pp_slideshow); pp_slideshow = undefined; }
        $.prettyPhoto.close = function () { clearInterval(pp_slideshow); $pp_pic_holder.stop().find('object,embed').css('visibility', 'hidden'); $('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed, function () { $(this).remove(); }); $pp_overlay.fadeOut(settings.animation_speed, function () { if ($.browser.msie && $.browser.version == 6) $('select').css('visibility', 'visible'); if (settings.hideflash) $('object,embed').css('visibility', 'visible'); $(this).remove(); $(window).unbind('scroll'); settings.callback(); doresize = true; pp_open = false; delete settings; }); }; _showContent = function ()
        {
            $('.pp_loaderIcon').hide(); $ppt.fadeTo(settings.animation_speed, 1); projectedTop = scroll_pos['scrollTop'] + ((windowHeight / 2) - (correctSizes['containerHeight'] / 2)); if (projectedTop < 0) projectedTop = 0; $pp_pic_holder.find('.pp_content').animate({ 'height': correctSizes['contentHeight'] }, settings.animation_speed); $pp_pic_holder.animate({ 'top': projectedTop, 'left': (windowWidth / 2) - (correctSizes['containerWidth'] / 2), 'width': correctSizes['containerWidth'] }, settings.animation_speed, function ()
            {
                $pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(correctSizes['height']).width(correctSizes['width']); $pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed); if (isSet && _getFileType(pp_images[set_position]) == "image") { $pp_pic_holder.find('.pp_hoverContainer').show(); } else { $pp_pic_holder.find('.pp_hoverContainer').hide(); }
                if (correctSizes['resized']) $('a.pp_expand,a.pp_contract').fadeIn(settings.animation_speed); if (settings.autoplay_slideshow && !pp_slideshow && !pp_open) $.prettyPhoto.startSlideshow(); settings.changepicturecallback(); pp_open = true;
            }); _insert_gallery();
        }; function _hideContent(callback) { $pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility', 'hidden'); $pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed, function () { $('.pp_loaderIcon').show(); callback(); }); }; function _checkPosition(setCount) { if (set_position == setCount - 1) { $pp_pic_holder.find('a.pp_next').css('visibility', 'hidden'); $pp_pic_holder.find('a.pp_next').addClass('disabled').unbind('click'); } else { $pp_pic_holder.find('a.pp_next').css('visibility', 'visible'); $pp_pic_holder.find('a.pp_next.disabled').removeClass('disabled').bind('click', function () { $.prettyPhoto.changePage('next'); return false; }); }; if (set_position == 0) { $pp_pic_holder.find('a.pp_previous').css('visibility', 'hidden').addClass('disabled').unbind('click'); } else { $pp_pic_holder.find('a.pp_previous.disabled').css('visibility', 'visible').removeClass('disabled').bind('click', function () { $.prettyPhoto.changePage('previous'); return false; }); }; (setCount > 1) ? $('.pp_nav').show() : $('.pp_nav').hide(); }; function _fitToViewport(width, height) { resized = false; _getDimensions(width, height); imageWidth = width, imageHeight = height; if (((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allow_resize && !percentBased) { resized = true, fitting = false; while (!fitting) { if ((pp_containerWidth > windowWidth)) { imageWidth = (windowWidth - 200); imageHeight = (height / width) * imageWidth; } else if ((pp_containerHeight > windowHeight)) { imageHeight = (windowHeight - 200); imageWidth = (width / height) * imageHeight; } else { fitting = true; }; pp_containerHeight = imageHeight, pp_containerWidth = imageWidth; }; _getDimensions(imageWidth, imageHeight); }; return { width: Math.floor(imageWidth), height: Math.floor(imageHeight), containerHeight: Math.floor(pp_containerHeight), containerWidth: Math.floor(pp_containerWidth) + 40, contentHeight: Math.floor(pp_contentHeight), contentWidth: Math.floor(pp_contentWidth), resized: resized }; }; function _getDimensions(width, height) { width = parseFloat(width); height = parseFloat(height); $pp_details = $pp_pic_holder.find('.pp_details'); $pp_details.width(width); detailsHeight = parseFloat($pp_details.css('marginTop')) + parseFloat($pp_details.css('marginBottom')); $pp_details = $pp_details.clone().appendTo($('body')).css({ 'position': 'absolute', 'top': -10000 }); detailsHeight += $pp_details.height(); detailsHeight = (detailsHeight <= 34) ? 36 : detailsHeight; if ($.browser.msie && $.browser.version == 7) detailsHeight += 8; $pp_details.remove(); pp_contentHeight = height + detailsHeight; pp_contentWidth = width; pp_containerHeight = pp_contentHeight + $ppt.height() + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height(); pp_containerWidth = width; }
        function _getFileType(itemSrc) { if (itemSrc.match(/youtube\.com\/watch/i)) { return 'youtube'; } else if (itemSrc.match(/vimeo\.com/i)) { return 'vimeo'; } else if (itemSrc.indexOf('.mov') != -1) { return 'quicktime'; } else if (itemSrc.indexOf('.swf') != -1) { return 'flash'; } else if (itemSrc.indexOf('iframe') != -1) { return 'iframe'; } else if (itemSrc.indexOf('custom') != -1) { return 'custom'; } else if (itemSrc.substr(0, 1) == '#') { return 'inline'; } else { return 'image'; }; }; function _center_overlay() { if (doresize && typeof $pp_pic_holder != 'undefined') { scroll_pos = _get_scroll(); titleHeight = $ppt.height(), contentHeight = $pp_pic_holder.height(), contentwidth = $pp_pic_holder.width(); projectedTop = (windowHeight / 2) + scroll_pos['scrollTop'] - (contentHeight / 2); $pp_pic_holder.css({ 'top': projectedTop, 'left': (windowWidth / 2) + scroll_pos['scrollLeft'] - (contentwidth / 2) }); }; }; function _get_scroll() { if (self.pageYOffset) { return { scrollTop: self.pageYOffset, scrollLeft: self.pageXOffset }; } else if (document.documentElement && document.documentElement.scrollTop) { return { scrollTop: document.documentElement.scrollTop, scrollLeft: document.documentElement.scrollLeft }; } else if (document.body) { return { scrollTop: document.body.scrollTop, scrollLeft: document.body.scrollLeft }; }; }; function _resize_overlay() { windowHeight = $(window).height(), windowWidth = $(window).width(); if (typeof $pp_overlay != "undefined") $pp_overlay.height($(document).height()); }; function _insert_gallery()
        {
            if (isSet && settings.overlay_gallery && _getFileType(pp_images[set_position]) == "image") {
                itemWidth = 52 + 5; navWidth = (settings.theme == "facebook") ? 58 : 38; itemsPerPage = Math.floor((correctSizes['containerWidth'] - 100 - navWidth) / itemWidth); itemsPerPage = (itemsPerPage < pp_images.length) ? itemsPerPage : pp_images.length; totalPage = Math.ceil(pp_images.length / itemsPerPage) - 1; if (totalPage == 0) { navWidth = 0; $pp_pic_holder.find('.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous').hide(); } else { $pp_pic_holder.find('.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous').show(); }; galleryWidth = itemsPerPage * itemWidth + navWidth; $pp_pic_holder.find('.pp_gallery').width(galleryWidth).css('margin-left', -(galleryWidth / 2)); $pp_pic_holder.find('.pp_gallery ul').width(itemsPerPage * itemWidth).find('li.selected').removeClass('selected'); goToPage = (Math.floor(set_position / itemsPerPage) <= totalPage) ? Math.floor(set_position / itemsPerPage) : totalPage; if (itemsPerPage) { $pp_pic_holder.find('.pp_gallery').hide().show().removeClass('disabled'); } else { $pp_pic_holder.find('.pp_gallery').hide().addClass('disabled'); }
                $.prettyPhoto.changeGalleryPage(goToPage); $pp_pic_holder.find('.pp_gallery ul li:eq(' + set_position + ')').addClass('selected');
            } else { $pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave'); $pp_pic_holder.find('.pp_gallery').hide(); } 
        }
        function _buildOverlay(caller)
        {
            theRel = $(caller).attr('rel'); galleryRegExp = /\[(?:.*)\]/; isSet = (galleryRegExp.exec(theRel)) ? true : false; pp_images = (isSet) ? jQuery.map(matchedObjects, function (n, i) { if ($(n).attr('rel').indexOf(theRel) != -1) return $(n).attr('href'); }) : $.makeArray($(caller).attr('href')); pp_titles = (isSet) ? jQuery.map(matchedObjects, function (n, i) { if ($(n).attr('rel').indexOf(theRel) != -1) return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : ""; }) : $.makeArray($(caller).find('img').attr('alt')); pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function (n, i) { if ($(n).attr('rel').indexOf(theRel) != -1) return ($(n).attr('title')) ? $(n).attr('title') : ""; }) : $.makeArray($(caller).attr('title')); $('body').append(settings.markup); $pp_pic_holder = $('.pp_pic_holder'), $ppt = $('.ppt'), $pp_overlay = $('div.pp_overlay'); if (isSet && settings.overlay_gallery) {
                currentGalleryPage = 0; toInject = ""; for (var i = 0; i < pp_images.length; i++) {
                    var regex = new RegExp("(.*?)\.(jpg|jpeg|png|gif)$"); var results = regex.exec(pp_images[i]); if (!results) { classname = 'default'; } else { classname = ''; }
                    toInject += "<li class='" + classname + "'><a href='#'><img src='" + pp_images[i] + "' width='50' alt='' /></a></li>";
                }; toInject = settings.gallery_markup.replace(/{gallery}/g, toInject); $pp_pic_holder.find('#pp_full_res').after(toInject); $pp_pic_holder.find('.pp_gallery .pp_arrow_next').click(function () { $.prettyPhoto.changeGalleryPage('next'); $.prettyPhoto.stopSlideshow(); return false; }); $pp_pic_holder.find('.pp_gallery .pp_arrow_previous').click(function () { $.prettyPhoto.changeGalleryPage('previous'); $.prettyPhoto.stopSlideshow(); return false; }); $pp_pic_holder.find('.pp_content').hover(function () { $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn(); }, function () { $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut(); }); itemWidth = 52 + 5; $pp_pic_holder.find('.pp_gallery ul li').each(function (i) { $(this).css({ 'position': 'absolute', 'left': i * itemWidth }); $(this).find('a').unbind('click').click(function () { $.prettyPhoto.changePage(i); $.prettyPhoto.stopSlideshow(); return false; }); });
            }; if (settings.slideshow) {
                $pp_pic_holder.find('.pp_nav').prepend('<a href="#" class="pp_play">Play</a>')
                $pp_pic_holder.find('.pp_nav .pp_play').click(function () { $.prettyPhoto.startSlideshow(); return false; });
            }
            $pp_pic_holder.attr('class', 'pp_pic_holder ' + settings.theme); $pp_overlay.css({ 'opacity': 0, 'height': $(document).height(), 'width': $(document).width() }).bind('click', function () { if (!settings.modal) $.prettyPhoto.close(); }); $('a.pp_close').bind('click', function () { $.prettyPhoto.close(); return false; }); $('a.pp_expand').bind('click', function (e) { if ($(this).hasClass('pp_expand')) { $(this).removeClass('pp_expand').addClass('pp_contract'); doresize = false; } else { $(this).removeClass('pp_contract').addClass('pp_expand'); doresize = true; }; _hideContent(function () { $.prettyPhoto.open(); }); return false; }); $pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click', function () { $.prettyPhoto.changePage('previous'); $.prettyPhoto.stopSlideshow(); return false; }); $pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click', function () { $.prettyPhoto.changePage('next'); $.prettyPhoto.stopSlideshow(); return false; }); _center_overlay();
        }; return this.unbind('click').click($.prettyPhoto.initialize);
    }; function grab_param(name, url) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(url); return (results == null) ? "" : results[1]; } 
})(jQuery);

// jQuery Background Position Plugin v. 1.21 - Author Alexander Farkas 
(function($){if(!document.defaultView||!document.defaultView.getComputedStyle){var oldCurCSS=jQuery.curCSS;jQuery.curCSS=function(elem,name,force){if(name==='background-position'){name='backgroundPosition';}if(name!=='backgroundPosition'||!elem.currentStyle||elem.currentStyle[name]){return oldCurCSS.apply(this,arguments);}var style=elem.style;if(!force&&style&&style[name]){return style[name];}return oldCurCSS(elem,'backgroundPositionX',force)+' '+oldCurCSS(elem,'backgroundPositionY',force);};}var oldAnim=$.fn.animate;$.fn.animate=function(prop){if('background-position'in prop){prop.backgroundPosition=prop['background-position'];delete prop['background-position'];}if('backgroundPosition'in prop){prop.backgroundPosition='('+prop.backgroundPosition;}return oldAnim.apply(this,arguments);};function toArray(strg){strg=strg.replace(/left|top/g,'0px');strg=strg.replace(/right|bottom/g,'100%');strg=strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");var res=strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);return[parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];}$.fx.step.backgroundPosition=function(fx){if(!fx.bgPosReady){var start=$.curCSS(fx.elem,'backgroundPosition');if(!start){start='0px 0px';}start=toArray(start);fx.start=[start[0],start[2]];var end=toArray(fx.options.curAnim.backgroundPosition);fx.end=[end[0],end[2]];fx.unit=[end[1],end[3]];fx.bgPosReady=true;}var nowPosX=[];nowPosX[0]=((fx.end[0]-fx.start[0])*fx.pos)+fx.start[0]+fx.unit[0];nowPosX[1]=((fx.end[1]-fx.start[1])*fx.pos)+fx.start[1]+fx.unit[1];fx.elem.style.backgroundPosition=nowPosX[0]+' '+nowPosX[1];};})(jQuery);

// JQuery Curvy Corners Plugin Ver. 2.1.1 by Mike Jolley  http://blue-anvil.com - http://code.google.com/p/jquerycurvycorners/ 
eval(function (p, a, c, k, e, r) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] } ]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p } ('(17($){17 1w(a){10.3p=a;10.1I=10.1W=10.1H=10.1X=0;10.3Y=10.3r=10.3y=10.3B="";10.2y=2C};1w.1N.2s=17(a,b,c,d){11(!a){10.1I=10.1W=10.1H=10.1X=1i(c);10.3Y=10.3r=10.3y=10.3B=d}1l{3E=a.1y(0)+b.1y(0);10[3E+\'R\']=1i(c);10[3E+\'u\']=d}};1w.1N.1j=17(a){11(/^(t|b)(l|r)(R|u)$/.2S(a))18 10[a];11(/^(t|b)(l|r)2R$/.2S(a)){12 b=a.1y(0)+a.1y(1);18 10[b+\'R\']+10[b+\'u\']}11(/^(t|b)2R?$/.2S(a)){12 c=a.1y(0);c+=10[c+\'2Z\']>10[c+\'34\']?\'l\':\'r\';12 d=10[c+\'R\'];11(a.1U===3&&a.1y(2)===\'u\')d+=10[c=\'u\'];18 d}20 1p 1P(\'67\\\'t 6d 5G \'+a);};1w.1N.41=17(a){11(a!==\'t\'&&a!==\'b\')20 1p 1P("55 54 3m \'t\' 4Y \'b\'");18 1a.69(10[a+\'2Z\']-10[a+\'34\'])};1w.1N.3U=17(a){10.3Y=10.3r=10.3y=10.3B=\'14\';11(\'1R\'1F a)10.1I=a.1R.1b;11(\'1V\'1F a)10.1W=a.1V.1b;11(\'1t\'1F a)10.1H=a.1t.1b;11(\'2f\'1F a)10.1X=a.2f.1b;11(\'2y\'1F a)10.2y=a.2y};1w.1N.4X=17(a){12 b=[\'1R\',\'1V\',\'1t\',\'2f\'];12 c=0;12 i,2u;1D(i 1F b)11(!2U(i)){2u=10[b[i]+\'u\'];11(2u!==\'\'&&2u!==\'14\'){c=1p 1w;1r}}11(!c)c=10;1l{12 d,31,e=6F.5n(a,\'1h\');1D(i 1F b)11(!2U(i)){d=b[i];2u=10[d+\'u\'];31=10[d+\'R\'];11(2u!==\'14\'){12 e=a.1d.1h;a.1d.1h=31+2u;31=a.1d.66;a.1d.1h=e}c[d+\'R\']=31;c[d+\'u\']=\'14\'}a.1d.1h=e}18 c};1w.1N.4W=17(a){11(a!==\'t\'&&a!==\'b\')20 1p 1P("55 54 3m \'t\' 4Y \'b\'");18 10[a+\'2Z\']+10[a+\'34\']};1w.1N.4V=17(a){12 b=0;11(10[a+\'2Z\'])++b;11(10[a+\'34\'])++b;18 b};1w.1N.4U=17(){12 a=[];11(10.1I)a.2L(\'1R\');11(10.1W)a.2L(\'1V\');11(10.1H)a.2L(\'1t\');11(10.1X)a.2L(\'2f\');18 a};11(2T 2X===\'2w\')2X=1p 3c;$.3b.3a=17(2F){12 3I=1L;12 3P,3T,33;2o{3P=(1f.2H.1d.6B!==2w)}2k(36){}2o{3T=(1f.2H.1d.5F!==2w)}2k(36){}2o{33=(1f.2H.1d.4T!==2w)}2k(36){}11(3P||3T||33)3I=2C;11(2F 4S 1w){1n=2F}1l{12 2F=1Y.68({1R:{1b:8},1V:{1b:8},1t:{1b:8},2f:{1b:8},2y:2C},2F);12 1n=1p 1w(10);1n.3U(2F)}17 1c(){10.1x=37[1];10.4R=37[0];12 G=$(10.1x);12 H;10.5S=1p 3c();10.2g=10.2m=10.2x=H=2p;12 I=G.6a();11(G.3d(\'6e\'))20 1p 1P("6f 6k 6z 4P 4N "+10.1x.5e+" 5h.","1P");11(G.13(\'3z\')===\'4M\'){G.13(\'3z\',\'4M-5O\')}11(!I){10.2W=17(){};18}11(37[0]4S 1w){10.19=37[0].4X(10.1x)}1l{10.19=1p 1w(\'\');10.19.3U(10.4R)}12 J=G.13("4L")?G.13("4L"):0;12 K=G.13("4K")?G.13("4K"):0;12 L=G.13("4J")?G.13("4J"):0;12 M=G.13("4E")?G.13("4E"):0;12 N=G.13("6v");12 O=G.13("6A");12 P=G.13("6E");12 Q=G.13("6I");12 R=G.13("5c");12 S=G.13("5f");12 T=G.13("5k");12 U=G.13("5q");12 V=G.13("2D");12 W=G.13("1s");12 X=G.13("1T");12 Y,1e;Y=G.13("4B")?G.13("4B"):0;1e=G.13("4x")?G.13("4x"):0;12 Z=G.13("1O");12 3m=G.13("4v");12 4u=G.13("6u");12 4s=G.13("35");12 4r=G.13("3n");12 6C=G.13("1g");12 2b=1Y.2N.4q>7&&$.2N.4p?G.13("2d"):2p;12 1Z=10.19.1j(\'4o\');12 1t=10.19.1j(\'5p\');12 1C=17(a){11(2T a===\'5t\')18 a;11(2T a!==\'5u\')20 1p 1P(\'5z 5D 5E \'+2T a);12 b=/^[-\\d.]([a-z]+)$/.2O(a);11(b&&b[1]!=\'14\')20 1p 1P(\'5H 5N \'+b[1]);11(2U(a=1i(a)))a=0;18 a};12 4l=17(a){18 a<=0?"0":a+"14"};2o{10.1k=1C(J);10.1Q=1C(K);10.1o=1C(L);10.32=1C(M);10.2n=1c.2i(V);10.4k=1C(3m);10.6c=1C(4u);10.3C=1C(4s);10.3D=1C(4r);10.2c=I;10.2Q=G.6r();10.3G=1c.2i(N);10.3H=1c.2i(O);10.4j=1c.2i(P);10.4h=1c.2i(Q);10.3K=10.1k+"14"+" "+R+" "+10.3G;10.3L=10.1Q+"14"+" "+S+" "+10.3H;10.3q=10.1o+"14"+" "+T+" "+10.4j;10.3o=10.32+"14"+" "+U+" "+10.4h;10.1s=(W!="4g"&&W!="5b")?W:"";10.1T=X}2k(e){}12 28=10.2Q;12 24=I;11($.2N.4f){Y=1C(Y);1e=1C(1e);11(Y){12 t=24+10.1o+10.32;11(Y>t)Y=t;Y=(t/Y*25)+\'%\'}11(1e){12 t=28+10.1k+10.1Q;11(1e>t)1e=t;1e=(t/1e*25)+\'%\'}}10.2Y=1f.26("2q");11(2b)10.2Y.1d.2d=2b;3g(10.1x.4e)10.2Y.1v(10.1x.3Z(10.1x.4e));11(Z!="2a")G.13("1O","4d");10.1x.1d.4c=\'0\';10.1x.1d.1g=10.1x.1d.1s=\'4g\';10.1x.1d.2D=\'2z\';10.1x.1d.1z=(24+10.1o+10.32)+\'14\';10.1x.1d.1E=(28+10.1k+10.1Q)+\'14\';12 2l=1f.26("2q");$(2l).13({1z:24+\'14\',\'4c\':"0",1O:"2a",1E:4l(28+10.1k+10.1Q-1Z-1t),1q:1Z+"14",1h:"0",\'2D\':V,\'1s\':10.1s,\'1T\':10.1T,\'5T\':\'5U\'});11(2b)$(2l).13(\'2d\',\'2d\');11(10.1o)$(2l).13(\'3v\',10.3q);11(10.1k&&!1Z)$(2l).13(\'4b\',10.3K);11(10.32)$(2l).13(\'3x\',10.3o);11(10.1Q&&!1t)$(2l).13(\'4a\',10.3L);10.2x=10.1x.1v(2l);I=$(10.2x).13("1z");11(I===""||I==="43"||I.39("%")!==-1)20 1P(\'6b 1z 3d \'+I);10.2c=(I!=""&&I!="43"&&I.39("%")==-1)?1i(I):$(10.2x).1z();10.2W=17(){10.1u=10.1e=0;11(10.1S){12 e=17(a,b,c){11(a===0)18 0;12 d;11(a===\'1M\'||a===\'1G\')18 c-b;11(a===\'6g\')18(c-b)/2;11(a.39(\'%\')>0)18(c-b)/(25/1i(a));18 1C(a)};10.1u=e(Y,10.1S.1z,24);10.1e=e(1e,10.1S.1E,28)}1l 11(10.1s){10.1u=1C(Y);10.1e=1C(1e)}11(1Z){f=1f.26("2q");$(f).13({1z:10.2c+"14",\'3k\':"2t",2G:"2I",1O:"2a",\'35\':10.1k+"14",\'3n\':10.1k+"14",1E:1Z+"14",1q:-1Z+"14",1h:-10.1o+"14"});10.2g=10.2x.1v(f)}11(1t){12 f=1f.26("2q");$(f).13({1z:10.2c+"14",\'3k\':"2t",2G:"2I",1O:"2a",\'35\':10.1Q+"14",\'3n\':10.1Q+"14",1E:1t+"14",1G:-1t+"14",1h:-10.1o+"14"});10.2m=10.2x.1v(f)}12 g=10.19.4U();1D(12 i 1F g)11(!2U(i)){12 h=g[i];12 j=10.19[h+\'R\'];12 l,29,21,2V;11(h=="1V"||h=="1R"){l=10.1k;29=10.3G;2V=10.1k}1l{l=10.1Q;29=10.3H;2V=10.1Q}21=j-2V;12 m=1f.26("2q");$(m).13({1O:"2a","48-3S":"2t",2G:"2I"}).1E(10.19.1j(h+\'2R\')).1z(10.19.1j(h+\'2R\'));12 n,1A,3h;12 o=2b?1i(/5o\\(46.(\\d+)\\)/.2O(2b)[1]):25;1D(n=0;n<j;++n){12 p=(n+1>=21)?-1:1a.44(1a.2h(1a.1J(21,2)-1a.1J(n+1,2)))-1;11(21!=j){12 q=(n>=21)?-1:1a.49(1a.2h(1a.1J(21,2)-1a.1J(n,2)));12 r=(n+1>=j)?-1:1a.44(1a.2h(1a.1J(j,2)-1a.1J((n+1),2)))-1}12 s=(n>=j)?-1:1a.49(1a.2h(1a.1J(j,2)-1a.1J(n,2)));11(p>-1)10.2e(n,0,10.2n,o,(p+1),m,2C,j);11(21!=j){11(10.19.2y){1D(1A=p+1;1A<q;++1A){11(10.1s!=""){12 u=1c.3i(n,1A,21)*25;10.2e(n,1A,29,o,1,m,u>=30,j)}1l 11(10.2n!==\'2z\'){12 v=1c.45(10.2n,29,1c.3i(n,1A,21));10.2e(n,1A,v,o,1,m,1L,j)}1l 10.2e(n,1A,29,o>>1,1,m,1L,j)}11(r>=q){11(q==-1)q=0;10.2e(n,q,29,o,(r-q+1),m,1L,0)}3h=29;1A=r}1l{11(r>p){10.2e(n,(p+1),29,o,(r-p),m,1L,0)}}}1l{3h=10.2n;1A=p}11(10.19.2y&&10.2n!==\'2z\'){3g(++1A<s){10.2e(n,1A,3h,(1c.3i(n,1A,j)*o),1,m,2V<=0,j)}}}1D(12 t=0,k=m.47.1U;t<k;++t){12 w=m.47[t];12 x=1i($(w).13(\'1q\'));12 y=1i($(w).13(\'1h\'));12 A=1i($(w).13(\'1E\'));11(h=="1R"||h=="1t"){$(w).13(\'1h\',(j-y-1)+"14")}11(h=="1V"||h=="1R"){$(w).13(\'1q\',(j-A-x)+"14")}$(w).13(\'1T\',10.1T);11(10.1s)2E(h){1m"1V":$(w).13(\'1K\',(10.1u-10.1o+j-24-y)+"14 "+(10.1e+A+x+10.1k-j)+"14");1r;1m"1R":$(w).13(\'1K\',(10.1u-j+y+1+10.1o)+"14 "+(10.1e-j+A+x+10.1k)+"14");1r;1m"1t":$(w).13(\'1K\',(10.1u-j+y+1+10.1o)+"14 "+(10.1e-28-10.1k+(!1Y.2B.2A?x:-x)+j)+"14");1r;1m"2f":11(!1Y.2B.2A){$(w).13(\'1K\',(10.1u-10.1o-24+j-y)+"14 "+(10.1e-28-10.1k+x+j)+"14")}1l{$(w).13(\'1K\',(10.1u-10.1o-24+j-y)+"14 "+(10.1e-28-10.1k+j-x)+"14")}}}2E(h){1m"1R":$(m).13(\'1q\',m.1d.1h="0");10.2g.1v(m);1r;1m"1V":$(m).13(\'1q\',m.1d.1M="0");10.2g.1v(m);1r;1m"1t":$(m).13(\'1G\',m.1d.1h="0");10.2m.1v(m);1r;1m"2f":$(m).13(\'1G\',m.1d.1M="0");10.2m.1v(m)}}12 B={t:10.19.41(\'t\'),b:10.19.41(\'b\')};1D(z 1F B){11(2T z===\'17\')4i;11(!10.19.1j(z+\'R\'))4i;11(B[z]){12 C=(10.19[z+"2Z"]<10.19[z+"34"])?z+"l":z+"r";12 D=1f.26("2q");$(D).13({\'1E\':B[z]+"14",\'1z\':10.19.1j(C+\'2R\'),\'1O\':"2a",\'3k\':"2t",\'2G\':"2I",\'2D\':10.2n,\'1s\':10.1s,\'1T\':10.1T});11(2b)$(D).13(\'2d\',\'2d\');2E(C){1m"1R":$(D).13({\'1G\':\'\',\'1h\':\'0\',\'3v\':10.3q,\'1K\':10.1u+"14 "+(10.1k+10.1e-10.19.1I)+"14"});10.2g.1v(D);1r;1m"1V":$(D).13({\'1G\':\'\',\'1M\':\'0\',\'3x\':10.3o,\'1K\':(10.1u-10.2c+10.19.1W)+"14 "+(10.1k+10.1e-10.19.1W)+"14"});10.2g.1v(D);1r;1m"1t":$(D).13({\'1q\':\'\',\'1h\':\'0\',\'3v\':10.3q,\'1K\':10.1u+"14 "+(10.1e-10.1k-10.2Q+B[z]+10.19.1H)+"14"});10.2m.1v(D);1r;1m"2f":$(D).13({\'1q\':\'\',\'1M\':\'0\',\'3x\':10.3o,\'1K\':(10.1o+10.1u-10.2c+10.19.1X)+"14 "+(10.1e-10.1k-10.2Q+B[z]+10.19.1X)+"14"});10.2m.1v(D)}}12 E=1f.26("2q");11(2b)$(E).13(\'2d\',\'2d\');$(E).13({\'1O\':"4d",\'3k\':"2t",\'2G\':"2I",\'1z\':10.4m(z),\'2D\':10.2n,\'1s\':10.1s,\'1T\':10.1T});2E(z){1m"t":11(10.2g){11(!1Y.2B.2A){$(E).13(\'1E\',25+1Z+"14")}1l{$(E).13(\'1E\',25+1Z-10.1k+"14")}$(E).13(\'4n\',10.19.1I?(10.19.1I-10.1o)+"14":"0");$(E).13(\'4b\',10.3K);11(10.1s){12 F=10.19.1I?(10.1o+10.1u-10.19.1I)+"14 ":10.1u+"14 ";$(E).13(\'1K\',F+10.1e+"14");$(10.2x).13(\'1K\',10.1u+"14 "+(10.1e-1Z+10.1o)+"14")}10.2g.1v(E)}1r;1m"b":11(10.2m){11(!1Y.2B.2A){$(E).13(\'1E\',1t+"14")}1l{$(E).13(\'1E\',1t-10.1Q+"14")}$(E).13(\'4n\',10.19.1H?(10.19.1H-10.1o)+"14":"0");$(E).13(\'4a\',10.3L);11(10.1s){12 F=10.19.1H?(10.1u+10.1o-10.19.1H)+"14 ":10.1u+"14 ";$(E).13(\'1K\',F+(10.1e-28-10.1k+1t)+"14")}10.2m.1v(E)}}}z=24;11(1Y.2B.2A)z-=10.3C+10.3D;$(10.2Y).13({\'1O\':\'2a\',\'1h\':10.1o+"14",\'4v\':10.4k+"14",\'1q\':10.1k+"14",\'35\':10.3C+"14",\'3n\':10.3D+"14",\'1z\':z+"14",\'3X\':G.13(\'3X\')}).3W(\'3Q\');G.13(\'3X\',\'1h\').3W(\'3O\');10.1x.1v(10.2Y);11(H)$(H).13(\'3z\',6D)};11(10.1s){Y=10.3N(Y);1e=10.3N(1e);11(10.1S){10.1S.4t=10;10.2v=10.2W;10.2W=17(){11(10.1S.6N)10.2v();1l 10.1S.56=1p 57(\'$(10.4t).2v();\')}}}};1c.1N.3N=17(c){11(c===\'1q\'||c===\'1h\'||1i(c)===0)18 0;11(!(/^[-\\d.]+14$/.2S(c))&&!10.1S){10.1S=1p 58;12 d=17(a){12 b=/59\\("?([^\'"]+)"?\\)/.2O(a);18(b?b[1]:a)};10.1S.5a=d(10.1s)}18 c};1c.1N.2e=17(a,b,c,d,e,f,g,h){12 i=1f.26("2q");$(i).13({"1E":e+"14","1z":"2t","1O":"2a","48-3S":"2t","2G":"2I","1q":b+"14","1h":a+"14","3j-4w":c});12 j=10.19.1j(\'4o\');11(g&&10.1s!=""){$(i).13({"3j-1O":"-"+(10.2c-(h-a)+10.1k)+"14 -"+((10.2Q+j+b)-10.1k)+"14","3j-5d":10.1s})}11(d!=25)$(i).13({46:(d/25)});f.1v(i)};1c.1N.4m=17(a){12 b,3F;b=!1Y.2B.2A?0:10.19.4V(a)*10.1o;11((3F=10.2c-10.19.4W(a)+b)<0)20 1P("65 5g 1x 1z");18 3F+\'14\'};1c.4y=17(a){12 d=1f.26(\'5i\');d.1d.2D=a;1f.2H.1v(d);11(5j.4z){12 b=1f.5l.4z(d,2p).5m(\'3j-4w\');d.4A.3Z(d);11(b.2j(0,3)==="3s")b=1c.2P(b);18 b}1l{12 c=1f.2H.5r();c.5s(d);c.4C(\'4D\',1L,a);12 e=c.5v(\'4D\');12 f="3s("+(e&5w)+", "+((e&5x)>>8)+", "+((e&5y)>>16)+")";d.4A.3Z(d);c=2p;18 1c.2P(f)}};1c.45=17(a,b,c){11(a===\'2z\'||b===\'2z\')20 1P(\'5A 5B 5C 2z\');11(a.1y(0)!==\'#\'){a=1c.2i(a)}11(b.1y(0)!==\'#\'){b=1c.2i(b)}12 d=1i(a.2j(1,2),16);12 e=1i(a.2j(3,2),16);12 f=1i(a.2j(5,2),16);12 g=1i(b.2j(1,2),16);12 h=1i(b.2j(3,2),16);12 i=1i(b.2j(5,2),16);11(c>1||c<0)c=1;12 j=1a.40((d*c)+(g*(1-c)));11(j>2K)j=2K;11(j<0)j=0;12 k=1a.40((e*c)+(h*(1-c)));11(k>2K)k=2K;11(k<0)k=0;12 l=1a.40((f*c)+(i*(1-c)));11(l>2K)l=2K;11(l<0)l=0;18"#"+1c.2r(j)+1c.2r(k)+1c.2r(l)};1c.2r=17(a){12 b=[\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'A\',\'B\',\'C\',\'D\',\'E\',\'F\'];18 b[a>>>4]+\'\'+b[a&15]};1c.3i=17(x,y,r){12 a;12 b=r*r;12 c=1p 3c(2);12 d=1p 3c(2);12 e=0;12 f="";12 g=1a.2h(b-1a.1J(x,2));11(g>=y&&g<(y+1)){f="5I";c[e]=0;d[e]=g-y;++e}g=1a.2h(b-1a.1J(y+1,2));11(g>=x&&g<(x+1)){f+="5J";c[e]=g-x;d[e]=1;++e}g=1a.2h(b-1a.1J(x+1,2));11(g>=y&&g<(y+1)){f+="5K";c[e]=1;d[e]=g-y;++e}g=1a.2h(b-1a.1J(y,2));11(g>=x&&g<(x+1)){f+="5L";c[e]=g-x;d[e]=0}2E(f){1m"5M":a=1a.3f(d[0],d[1])+((1a.4F(d[0],d[1])-1a.3f(d[0],d[1]))/2);1r;1m"5P":a=1-(((1-c[0])*(1-d[1]))/2);1r;1m"5Q":a=1a.3f(c[0],c[1])+((1a.4F(c[0],c[1])-1a.3f(c[0],c[1]))/2);1r;1m"5R":a=d[0]*c[1]/2;1r;4G:a=1}18 a};1c.2P=17(a){2o{12 b=1c.4H(a);12 c=1i(b[0]);12 d=1i(b[1]);12 f=1i(b[2]);12 g="#"+1c.2r(c)+1c.2r(d)+1c.2r(f)}2k(e){4I("5V 5W 5X 5Y 5Z 60 61 62 4N 63 1F 17 2P")}18 g};1c.4H=17(a){12 b=a.64(4,a.39(")"));18 b.3R(", ")};1c.2i=17(a){11(a!=""&&a!="2z"){11(a.2j(0,3)==="3s"){a=1c.2P(a)}1l 11(a.1y(0)!==\'#\'){a=4y(a)}1l 11(a.1U===4){a="#"+a.1y(1)+a.1y(1)+a.1y(2)+a.1y(2)+a.1y(3)+a.1y(3)}}18 a};18 10.2J(17(){11(!$(10).3d(\'.3O\')){11(3I){11(1n.1j(\'1I\')){$(10).13({\'1g-1q-1h-1b\':1n.1j(\'1I\')+\'14\',\'-1B-1g-1b-3J\':1n.1j(\'1I\')+\'14\',\'-3e-1g-1q-1h-1b\':1n.1j(\'1I\')+\'14\'})}11(1n.1j(\'1W\')){$(10).13({\'1g-1q-1M-1b\':1n.1j(\'1W\')+\'14\',\'-1B-1g-1b-3A\':1n.1j(\'1W\')+\'14\',\'-3e-1g-1q-1M-1b\':1n.1j(\'1W\')+\'14\'})}11(1n.1j(\'1H\')){$(10).13({\'1g-1G-1h-1b\':1n.1j(\'1H\')+\'14\',\'-1B-1g-1b-3w\':1n.1j(\'1H\')+\'14\',\'-3e-1g-1G-1h-1b\':1n.1j(\'1H\')+\'14\'})}11(1n.1j(\'1X\')){$(10).13({\'1g-1G-1M-1b\':1n.1j(\'1X\')+\'14\',\'-1B-1g-1b-3u\':1n.1j(\'1X\')+\'14\',\'-3e-1g-1G-1M-1b\':1n.1j(\'1X\')+\'14\'})}}1l{11(!$(10).3d(\'.4O\')){$(10).3W(\'4O\');38=$(10).4Q(\'1d\');11(38==\'2w\'){38=\'\'}2X.2L({3t:10,19:1n,1d:38,6h:$(10).6i(2C)})}12 a=1p 1c(1n,10);a.2W()}}})};$.3b.6j=17(){18 10.2J(17(i,e){27=e;$.2J(2X,17(a,b){11(b.3t==27&&$(\'.3Q\',27).3S()>0){$(27).6l($(27).6m(\'.3Q:6n\').6o());1d=b.1d==\'2w\'?b.1d:\'\';$(27).6p(\'3O\').4Q(\'1d\',1d);18 1L}})})};$.3b.6q=17(){18 10.2J(17(i,e){27=e;$.2J(2X,17(a,b){11(b.3t==27){$(27).3a(b.19);18 1L}})})};$.3b.2v=17(){18 10.2J(17(i,e){3V=e;11(\'2v\'1F 3V)3V.2v();1l 20 1P(\'6s 2v 17\')})};$(17(){11($.2N.4p){2o{1f.4C("6t",1L,2C)}2k(e){};17 2M(a){11(!1i(a))18\'14\';12 b=/^[\\d.]+(\\w+)$/.2O(a);18 b[1]};12 t,i,j;17 3M(a){12 b=a.1d;11(1Y.2N.4q>6.0){12 c=b[\'-1B-1g-1b\']||0;12 d=b[\'-1B-1g-1b-3A\']||0;12 e=b[\'-1B-1g-1b-3J\']||0;12 f=b[\'-1B-1g-1b-3u\']||0;12 g=b[\'-1B-1g-1b-3w\']||0}1l{12 c=b[\'1B-1g-1b\']||0;12 d=b[\'1B-1g-1b-3A\']||0;12 e=b[\'1B-1g-1b-3J\']||0;12 f=b[\'1B-1g-1b-3u\']||0;12 g=b[\'1B-1g-1b-3w\']||0}11(c){12 t=c.3R(\'/\');t=t[0].3R(/\\s+/);11(t[t.1U-1]===\'\')t.6w();2E(t.1U){1m 3:e=t[0];d=g=t[1];f=t[2];c=1L;1r;1m 2:e=f=t[0];d=g=t[1];c=1L;1m 1:1r;1m 4:e=t[0];d=t[1];f=t[2];g=t[3];c=1L;1r;4G:4I(\'6x 4P 6y: \'+c)}}11(c||e||d||f||g){12 h=1p 1w(a.3p);11(c)h.2s(2p,2p,1i(c),2M(c));1l{11(d)h.2s(\'t\',\'r\',1i(d),2M(d));11(e)h.2s(\'t\',\'l\',1i(e),2M(e));11(g)h.2s(\'b\',\'l\',1i(g),2M(g));11(f)h.2s(\'b\',\'r\',1i(f),2M(f))}$(a.3p).3a(h)}}1D(t=0;t<1f.22.1U;++t){2o{11(1f.22[t].3l){1D(i=0;i<1f.22[t].3l.1U;++i){1D(j=0;j<1f.22[t].3l[i].23.1U;++j){3M(1f.22[t].3l[i].23[j])}}}1D(i=0;i<1f.22[t].23.1U;++i)3M(1f.22[t].23[i])}2k(e){}}}1l 11($.2N.4f){2o{33=(1f.2H.1d.4T!==2w)}2k(36){}11(!33){17 4Z(a){18/1g-((1q|1G)-(1h|1M)-)?1b/.2S(1f.22.50(a).51.52)};23=[];1D(t=0;t<1f.22.1U;++t){11(4Z(t)){12 k=1f.22.50(6G).51.52;k=k.6H(/\\/\\*(\\n|\\r|.)*?\\*\\//g,\'\');12 l=1p 53("^\\\\s*([\\\\w.#][-\\\\w.#, ]+)[\\\\n\\\\s]*\\\\{([^}]+1g-((1q|1G)-(1h|1M)-)?1b[^}]*)\\\\}","6J");12 m;3g((m=l.2O(k))!==2p){12 n=1p 53("(..)1g-((1q|1G)-(1h|1M)-)?1b:\\\\s*([\\\\d.]+)(1F|6K|14|6L|6M)","g");12 o,42=1p 1w(m[1]);3g((o=n.2O(m[2]))!==2p){11(o[1]!=="z-")42.2s(o[3],o[4],o[5],o[6]);23.2L(42)}}}}1D(i 1F 23)11(!2U(i))$(23[i].3p).3a(23[i])}}})})(1Y);', 62, 422, '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||this|if|var|css|px|||function|return|spec|Math|radius|curvyObject|style|backgroundPosY|document|border|left|parseInt|get|borderWidth|else|case|bd|borderWidthL|new|top|break|backgroundImage|bl|backgroundPosX|appendChild|curvyCnrSpec|box|charAt|width|inty|moz|bm|for|height|in|bottom|blR|tlR|pow|backgroundPosition|false|right|prototype|position|Error|borderWidthB|tl|backgroundObject|backgroundRepeat|length|tr|trR|brR|jQuery|bk|throw|borderRadius|styleSheets|rules|bp|100|createElement|thisdiv|bo|bcolor|absolute|bj|boxWidth|filter|drawPixel|br|topContainer|sqrt|format_colour|substr|catch|bq|bottomContainer|boxColour|try|null|div|IntToHex|setcorner|1px|propu|dispatch|undefined|shell|antiAlias|transparent|boxModel|support|true|backgroundColor|switch|bc|overflow|body|hidden|each|255|push|units|browser|exec|rgb2Hex|boxHeight|Ru|test|typeof|isNaN|borderWidthTB|applyCorners|redrawList|contentContainer|lR||propR|borderWidthR|checkStandard|rR|paddingLeft|err|arguments|thestyles|indexOf|corner|fn|Array|is|webkit|min|while|outsideColour|pixelFraction|background|fontSize|imports|be|paddingRight|borderStringR|selectorText|borderStringL|tru|rgb|node|bottomright|borderLeft|bottomleft|borderRight|blu|display|topright|bru|leftPadding|rightPadding|propname|f_width|borderColour|borderColourB|ba|topleft|borderString|borderStringB|procIEStyles|backgroundCheck|hasCorners|bb|autoPadDiv|split|size|checkMozilla|setfrom|obj|addClass|textAlign|tlu|removeChild|round|radiusdiff|cornerspec|auto|floor|BlendColour|opacity|childNodes|font|ceil|borderBottom|borderTop|padding|relative|firstChild|opera|none|borderColourR|continue|borderColourL|topPadding|bn|fillerWidth|marginLeft|tR|msie|version|bh|bg|holdingElement|bf|paddingTop|color|backgroundPositionY|getComputedColour|getComputedStyle|parentNode|backgroundPositionX|execCommand|ForeColor|borderRightWidth|max|default|rgb2Array|alert|borderLeftWidth|borderBottomWidth|borderTopWidth|inline|to|drawn|corners|attr|settings|instanceof|BorderRadius|cornerNames|radiusCount|radiusSum|cloneOn|or|opera_contains_border_radius|item|ownerNode|text|RegExp|must|Param|onload|Function|Image|url|src|initial|borderTopStyle|image|tagName|borderBottomStyle|exceeds|elements|DIV|window|borderLeftStyle|defaultView|getPropertyValue|get_style|alpha|bR|borderRightStyle|createTextRange|moveToElementText|number|string|queryCommandValue|0xFF|0xFF00|0xFF0000|unexpected|Cannot|blend|with|styleToNPx|type|MozBorderRadius|property|Unexpected|Left|Top|Right|Bottom|LeftRight|unit|block|TopRight|TopBottom|LeftBottom|masterCorners|direction|ltr|There|was|an|error|converting|the|RGB|value|Hexadecimal|substring|Radius|pixelLeft|Don|extend|abs|innerWidth|Shell|bottomPadding|recognize|table|You|center|copy|clone|removeCorners|cannot|html|children|first|contents|removeClass|redrawCorners|innerHeight|No|BackgroundImageCache|paddingBottom|borderTopColor|pop|Illegal|specification|apply|borderBottomColor|WebkitBorderRadius|bi|boxDispSave|borderLeftColor|curvyBrowser|sheetnumber|replace|borderRightColor|mg|em|ex|pt|complete'.split('|'), 0, {}))

// jQuery blockUI plugin Version 2.36 (16-NOV-2010) Examples at: http://malsup.com/jquery/block/ Copyright (c) 2007-2008 M. Alsup 
; (function ($) { if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) { alert('blockUI requires jQuery v1.2.3 or later!  You are using v' + $.fn.jquery); return; } $.fn._fadeIn = $.fn.fadeIn; var noOp = function () { }; var mode = document.documentMode || 0; var setExpr = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8); var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent) && !mode; $.blockUI = function (opts) { install(window, opts); }; $.unblockUI = function (opts) { remove(window, opts); }; $.growlUI = function (title, message, timeout, onClose) { var $m = $('<div class="growlUI"></div>'); if (title) $m.append('<h1>' + title + '</h1>'); if (message) $m.append('<h2>' + message + '</h2>'); if (timeout == undefined) timeout = 3000; $.blockUI({ message: $m, fadeIn: 700, fadeOut: 1000, centerY: false, timeout: timeout, showOverlay: false, onUnblock: onClose, css: $.blockUI.defaults.growlCSS }); }; $.fn.block = function (opts) { return this.unblock({ fadeOut: 0 }).each(function () { if ($.css(this, 'position') == 'static') this.style.position = 'relative'; if ($.browser.msie) this.style.zoom = 1; install(this, opts); }); }; $.fn.unblock = function (opts) { return this.each(function () { remove(this, opts); }); }; $.blockUI.version = 2.35; $.blockUI.defaults = { message: '<h1>Please wait...</h1>', title: null, draggable: true, theme: false, css: { padding: 0, margin: 0, width: '30%', top: '40%', left: '35%', textAlign: 'center', color: '#000', border: '3px solid #aaa', backgroundColor: '#fff', cursor: 'wait' }, themedCSS: { width: '30%', top: '40%', left: '35%' }, overlayCSS: { backgroundColor: '#000', opacity: 0.6, cursor: 'wait' }, growlCSS: { width: '350px', top: '10px', left: '', right: '10px', border: 'none', padding: '5px', opacity: 0.6, cursor: 'default', color: '#fff', backgroundColor: '#000', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', 'border-radius': '10px' }, iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank', forceIframe: false, baseZ: 1000, centerX: true, centerY: true, allowBodyStretch: true, bindEvents: true, constrainTabKey: true, fadeIn: 200, fadeOut: 400, timeout: 0, showOverlay: true, focusInput: true, applyPlatformOpacityRules: true, onBlock: null, onUnblock: null, quirksmodeOffsetHack: 4, blockMsgClass: 'blockMsg' }; var pageBlock = null; var pageBlockEls = []; function install(el, opts) { var full = (el == window); var msg = opts && opts.message !== undefined ? opts.message : undefined; opts = $.extend({}, $.blockUI.defaults, opts || {}); opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {}); var css = $.extend({}, $.blockUI.defaults.css, opts.css || {}); var themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {}); msg = msg === undefined ? opts.message : msg; if (full && pageBlock) remove(window, { fadeOut: 0 }); if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) { var node = msg.jquery ? msg[0] : msg; var data = {}; $(el).data('blockUI.history', data); data.el = node; data.parent = node.parentNode; data.display = node.style.display; data.position = node.style.position; if (data.parent) data.parent.removeChild(node); } var z = opts.baseZ; var lyr1 = ($.browser.msie || opts.forceIframe) ? $('<iframe class="blockUI" style="z-index:' + (z++) + ';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="' + opts.iframeSrc + '"></iframe>') : $('<div class="blockUI" style="display:none"></div>'); var lyr2 = $('<div class="blockUI blockOverlay" style="z-index:' + (z++) + ';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'); var lyr3, s; if (opts.theme && full) { s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:' + z + ';display:none;position:fixed">' + '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' + (opts.title || '&nbsp;') + '</div>' + '<div class="ui-widget-content ui-dialog-content"></div>' + '</div>'; } else if (opts.theme) { s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:' + z + ';display:none;position:absolute">' + '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' + (opts.title || '&nbsp;') + '</div>' + '<div class="ui-widget-content ui-dialog-content"></div>' + '</div>'; } else if (full) { s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:' + z + ';display:none;position:fixed"></div>'; } else { s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:' + z + ';display:none;position:absolute"></div>'; } lyr3 = $(s); if (msg) { if (opts.theme) { lyr3.css(themedCSS); lyr3.addClass('ui-widget-content'); } else lyr3.css(css); } if (!opts.applyPlatformOpacityRules || !($.browser.mozilla && /Linux/.test(navigator.platform))) lyr2.css(opts.overlayCSS); lyr2.css('position', full ? 'fixed' : 'absolute'); if ($.browser.msie || opts.forceIframe) lyr1.css('opacity', 0.0); var layers = [lyr1, lyr2, lyr3], $par = full ? $('body') : $(el); $.each(layers, function () { this.appendTo($par); }); if (opts.theme && opts.draggable && $.fn.draggable) { lyr3.draggable({ handle: '.ui-dialog-titlebar', cancel: 'li' }); } var expr = setExpr && (!$.boxModel || $('object,embed', full ? null : el).length > 0); if (ie6 || expr) { if (full && opts.allowBodyStretch && $.boxModel) $('html,body').css('height', '100%'); if ((ie6 || !$.boxModel) && !full) { var t = sz(el, 'borderTopWidth'), l = sz(el, 'borderLeftWidth'); var fixT = t ? '(0 - ' + t + ')' : 0; var fixL = l ? '(0 - ' + l + ')' : 0; } $.each([lyr1, lyr2, lyr3], function (i, o) { var s = o[0].style; s.position = 'absolute'; if (i < 2) { full ? s.setExpression('height', 'Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:' + opts.quirksmodeOffsetHack + ') + "px"') : s.setExpression('height', 'this.parentNode.offsetHeight + "px"'); full ? s.setExpression('width', 'jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"') : s.setExpression('width', 'this.parentNode.offsetWidth + "px"'); if (fixL) s.setExpression('left', fixL); if (fixT) s.setExpression('top', fixT); } else if (opts.centerY) { if (full) s.setExpression('top', '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'); s.marginTop = 0; } else if (!opts.centerY && full) { var top = (opts.css && opts.css.top) ? parseInt(opts.css.top) : 0; var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + ' + top + ') + "px"'; s.setExpression('top', expression); } }); } if (msg) { if (opts.theme) lyr3.find('.ui-widget-content').append(msg); else lyr3.append(msg); if (msg.jquery || msg.nodeType) $(msg).show(); } if (($.browser.msie || opts.forceIframe) && opts.showOverlay) lyr1.show(); if (opts.fadeIn) { var cb = opts.onBlock ? opts.onBlock : noOp; var cb1 = (opts.showOverlay && !msg) ? cb : noOp; var cb2 = msg ? cb : noOp; if (opts.showOverlay) lyr2._fadeIn(opts.fadeIn, cb1); if (msg) lyr3._fadeIn(opts.fadeIn, cb2); } else { if (opts.showOverlay) lyr2.show(); if (msg) lyr3.show(); if (opts.onBlock) opts.onBlock(); } bind(1, el, opts); if (full) { pageBlock = lyr3[0]; pageBlockEls = $(':input:enabled:visible', pageBlock); if (opts.focusInput) setTimeout(focus, 20); } else center(lyr3[0], opts.centerX, opts.centerY); if (opts.timeout) { var to = setTimeout(function () { full ? $.unblockUI(opts) : $(el).unblock(opts); }, opts.timeout); $(el).data('blockUI.timeout', to); } }; function remove(el, opts) { var full = (el == window); var $el = $(el); var data = $el.data('blockUI.history'); var to = $el.data('blockUI.timeout'); if (to) { clearTimeout(to); $el.removeData('blockUI.timeout'); } opts = $.extend({}, $.blockUI.defaults, opts || {}); bind(0, el, opts); var els; if (full) els = $('body').children().filter('.blockUI').add('body > .blockUI'); else els = $('.blockUI', el); if (full) pageBlock = pageBlockEls = null; if (opts.fadeOut) { els.fadeOut(opts.fadeOut); setTimeout(function () { reset(els, data, opts, el); }, opts.fadeOut); } else reset(els, data, opts, el); }; function reset(els, data, opts, el) { els.each(function (i, o) { if (this.parentNode) this.parentNode.removeChild(this); }); if (data && data.el) { data.el.style.display = data.display; data.el.style.position = data.position; if (data.parent) data.parent.appendChild(data.el); $(el).removeData('blockUI.history'); } if (typeof opts.onUnblock == 'function') opts.onUnblock(el, opts); }; function bind(b, el, opts) { var full = el == window, $el = $(el); if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked'))) return; if (!full) $el.data('blockUI.isBlocked', b); if (!opts.bindEvents || (b && !opts.showOverlay)) return; var events = 'mousedown mouseup keydown keypress'; b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler); }; function handler(e) { if (e.keyCode && e.keyCode == 9) { if (pageBlock && e.data.constrainTabKey) { var els = pageBlockEls; var fwd = !e.shiftKey && e.target === els[els.length - 1]; var back = e.shiftKey && e.target === els[0]; if (fwd || back) { setTimeout(function () { focus(back) }, 10); return false; } } } var opts = e.data; if ($(e.target).parents('div.' + opts.blockMsgClass).length > 0) return true; return $(e.target).parents().children().filter('div.blockUI').length == 0; }; function focus(back) { if (!pageBlockEls) return; var e = pageBlockEls[back === true ? pageBlockEls.length - 1 : 0]; if (e) e.focus(); }; function center(el, x, y) { var p = el.parentNode, s = el.style; var l = ((p.offsetWidth - el.offsetWidth) / 2) - sz(p, 'borderLeftWidth'); var t = ((p.offsetHeight - el.offsetHeight) / 2) - sz(p, 'borderTopWidth'); if (x) s.left = l > 0 ? (l + 'px') : '0'; if (y) s.top = t > 0 ? (t + 'px') : '0'; }; function sz(el, p) { return parseInt($.css(el, p)) || 0; }; })(jQuery);

// jQuery HoverPulse Plugin by M. Alsup - @version: 1.01  26-FEB-2009 - Examples and docs at: http://malsup.com/jquery/hoverpulse/ - Dual licensed under the MIT and GPL 
(function ($)
{
    $.fn.hoverpulse = function (options)
    {
        if (this.length == 0) {
            if (!$.isReady && this.selector) { var s = this.selector, c = this.context; $(function () { $(s, c).hoverpulse(options); }); }
            return this;
        }
        var opts = $.extend({}, $.fn.hoverpulse.defaults, options); this.parent().parent().css('z-index', 5000); this.parent().css({ position: 'relative', width: opts.width + 'px', height: opts.width + 'px' }); this.css({ position: 'absolute', top: 0, left: 0 }); this.each(function () { var $this = $(this); var w = $this.width(), h = $this.height(); $this.data('hoverpulse.size', { w: parseInt(w), h: parseInt(h) }); }); return this.hover(function () { var $this = $(this); $this.parent().css('z-index', opts.zIndexActive); var size = $this.data('hoverpulse.size'); var w = size.w, h = size.h; $this.stop().animate({ top: ('-' + opts.size + 'px'), left: ('-' + opts.size + 'px'), height: (h + 2 * opts.size) + 'px', width: (w + 2 * opts.size) + 'px' }, opts.speed); }, function () { var $this = $(this); var size = $this.data('hoverpulse.size'); var w = size.w, h = size.h; $this.stop().animate({ top: 0, left: 0, height: (h + 'px'), width: (w + 'px') }, opts.speed, function () { $this.parent().css('z-index', opts.zIndexNormal); }); });
    }; $.fn.hoverpulse.defaults = { width: 50, height: 50, size: 40, speed: 400, zIndexActive: 1000, zIndexNormal: 1 };
})(jQuery);

/* jQuery maskedInput Plugin Version: 1.1 - Copyright (c) 2007 Josh Bush (digitalbush.com)
(function($){function getCaretPosition(ctl){var res={begin:0,end:0};if(ctl.setSelectionRange){res.begin=ctl.selectionStart;res.end=ctl.selectionEnd;}else if(document.selection&&document.selection.createRange){var range=document.selection.createRange();res.begin=0-range.duplicate().moveStart('character',-100000);res.end=res.begin+range.text.length;}return res;};function setCaretPosition(ctl,pos){if(ctl.setSelectionRange){ctl.focus();ctl.setSelectionRange(pos,pos);}else if(ctl.createTextRange){var range=ctl.createTextRange();range.collapse(true);range.moveEnd('character',pos);range.moveStart('character',pos);range.select();}};var charMap={'9':"[0-9]",'a':"[A-Za-z]",'*':"[A-Za-z0-9]"};$.mask={addPlaceholder:function(c,r){charMap[c]=r;}};$.fn.unmask=function(){return this.trigger("unmask");};$.fn.mask=function(mask,settings){settings=$.extend({placeholder:"_",completed:null},settings);var reString="^";for(var i=0;i<mask.length;i++)reString+=(charMap[mask.charAt(i)]||("\\"+mask.charAt(i)));reString+="$";var re=new RegExp(reString);return this.each(function(){var input=$(this);var buffer=new Array(mask.length);var locked=new Array(mask.length);for(var i=0;i<mask.length;i++){locked[i]=charMap[mask.charAt(i)]==null;buffer[i]=locked[i]?mask.charAt(i):settings.placeholder;}function focusEvent(){checkVal();writeBuffer();setTimeout(function(){setCaretPosition(input[0],0);},0);};input.bind("focus",focusEvent);input.bind("blur",checkVal);if($.browser.msie)this.onpaste=function(){setTimeout(checkVal,0);};else if($.browser.mozilla)this.addEventListener('input',checkVal,false);var ignore=false;function keydownEvent(e){var pos=getCaretPosition(this);var k=e.keyCode;ignore=(k<16||(k>16&&k<32)||(k>32&&k<41));if((pos.begin-pos.end)!=0&&(!ignore||k==8||k==46)){clearBuffer(pos.begin,pos.end);}if(k==8){while(pos.begin-->=0){if(!locked[pos.begin]){buffer[pos.begin]=settings.placeholder;if($.browser.opera){writeBuffer(pos.begin);setCaretPosition(this,pos.begin+1);}else{writeBuffer();setCaretPosition(this,pos.begin);}return false;}}}else if(k==46){clearBuffer(pos.begin,pos.begin+1);writeBuffer();setCaretPosition(this,pos.begin);return false;}else if(k==27){clearBuffer(0,mask.length);writeBuffer();setCaretPosition(this,0);return false;}};input.bind("keydown",keydownEvent);function keypressEvent(e){if(ignore){ignore=false;return;}e=e||window.event;var k=e.charCode||e.keyCode||e.which;var pos=getCaretPosition(this);var caretPos=pos.begin;if(e.ctrlKey||e.altKey){return true;}else if((k>=41&&k<=122)||k==32||k>186){while(pos.begin<mask.length){var reString=charMap[mask.charAt(pos.begin)];var match;if(reString){var reChar=new RegExp(reString);match=String.fromCharCode(k).match(reChar);}else{pos.begin+=1;pos.end=pos.begin;caretPos+=1;continue;}if(match)buffer[pos.begin]=String.fromCharCode(k);else return false;while(++caretPos<mask.length){if(!locked[caretPos])break;}break;}}else return false;writeBuffer();if(settings.completed&&caretPos>=buffer.length)settings.completed.call(input);else setCaretPosition(this,caretPos);return false;};input.bind("keypress",keypressEvent);function clearBuffer(start,end){for(var i=start;i<end;i++){if(!locked[i])buffer[i]=settings.placeholder;}};function writeBuffer(pos){var s="";for(var i=0;i<mask.length;i++){s+=buffer[i];if(i==pos)s+=settings.placeholder;}input.val(s);return s;};function checkVal(){var test=input.val();var pos=0;for(var i=0;i<mask.length;i++){if(!locked[i]){while(pos++<test.length){var reChar=new RegExp(charMap[mask.charAt(i)]);if(test.charAt(pos-1).match(reChar)){buffer[i]=test.charAt(pos-1);break;}}}}var s=writeBuffer();if(!s.match(re)){input.val("");clearBuffer(0,mask.length);}};input.one("unmask",function(){input.unbind("focus",focusEvent);input.unbind("blur",checkVal);input.unbind("keydown",keydownEvent);input.unbind("keypress",keypressEvent);if($.browser.msie)this.onpaste=null;else if($.browser.mozilla)this.removeEventListener('input',checkVal,false);});});};})(jQuery);
*/

(function($) {
	//Helper Functions for Caret positioning
	function getCaretPosition(ctl){
		var res = {begin: 0, end: 0 };
		if (ctl.setSelectionRange){
			res.begin = ctl.selectionStart;
			res.end = ctl.selectionEnd;
		}else if (document.selection && document.selection.createRange){
			var range = document.selection.createRange();			
			res.begin = 0 - range.duplicate().moveStart('character', -100000);
			res.end = res.begin + range.text.length;
		}
		return res;
	};

	function setCaretPosition(ctl, pos){		
		if(ctl.setSelectionRange){
			ctl.focus();
			ctl.setSelectionRange(pos,pos);
		}else if (ctl.createTextRange){
			var range = ctl.createTextRange();
			range.collapse(true);
			range.moveEnd('character', pos);
			range.moveStart('character', pos);
			range.select();
		}
	};
	
	//Predefined character definitions
	var charMap={
		'9':"[0-9]",
		'a':"[A-Za-z]",
		'*':"[A-Za-z0-9]"
	};
	
	//Helper method to inject character definitions
	$.mask={
		addPlaceholder : function(c,r){
			charMap[c]=r;
		}
	};
	
	$.fn.unmask=function(){
		return this.trigger("unmask");
	};
	
	//Main Method
	$.fn.mask = function(mask,settings) {	
		settings = $.extend({
			placeholder: "_",
			completed: null
		}, settings);
			
		//Build Regex for format validation
		var reString="^";	
		for(var i=0;i<mask.length;i++)
			reString+=(charMap[mask.charAt(i)] || ("\\"+mask.charAt(i)));					
		reString+="$";
		var re = new RegExp(reString);

		return this.each(function(){		
			var input=$(this);
			var buffer=new Array(mask.length);
			var locked=new Array(mask.length);		

			//Build buffer layout from mask
			for(var i=0;i<mask.length;i++){
				locked[i]=charMap[mask.charAt(i)]==null;
				buffer[i]=locked[i]?mask.charAt(i):settings.placeholder;					
			}
			
			/*Event Bindings*/
			function focusEvent(){					
				checkVal();
				writeBuffer();
				setTimeout(function(){
					setCaretPosition(input[0],0);
				},0);
			};			
			input.bind("focus",focusEvent);

			input.bind("blur",checkVal);
			
			//Paste events for IE and Mozilla thanks to Kristinn Sigmundsson
			if ($.browser.msie) 
				this.onpaste= function(){setTimeout(checkVal,0);};                     
			else if ($.browser.mozilla)
				this.addEventListener('input',checkVal,false);
			
			var ignore=false;  //Variable for ignoring control keys
			
			function keydownEvent(e){
				var pos=getCaretPosition(this);													
				var k = e.keyCode;
				ignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));
				
				//delete selection before proceeding
				if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){
					clearBuffer(pos.begin,pos.end);
				}	
				//backspace and delete get special treatment
				if(k==8){//backspace					
					while(pos.begin-->=0){
						if(!locked[pos.begin]){								
							buffer[pos.begin]=settings.placeholder;
							if($.browser.opera){
								//Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.								
								writeBuffer(pos.begin);
								setCaretPosition(this,pos.begin+1);
							}else{
								writeBuffer();
								setCaretPosition(this,pos.begin);
							}									
							return false;								
						}
					}						
				}else if(k==46){//delete
					clearBuffer(pos.begin,pos.begin+1);
					writeBuffer();
					setCaretPosition(this,pos.begin);
					return false;
				}else if (k==27){
					clearBuffer(0,mask.length);
					writeBuffer();
					setCaretPosition(this,0);
					return false;
				}
									
			};
			input.bind("keydown",keydownEvent);

			function keypressEvent(e){					
				if(ignore){
					ignore=false;
					return;
				}
				e=e||window.event;
				var k=e.charCode||e.keyCode||e.which;

				var pos=getCaretPosition(this);					
				var caretPos=pos.begin;	
				
				if(e.ctrlKey || e.altKey){//Ignore
					return true;
				}else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters
					while(pos.begin<mask.length){	
						var reString=charMap[mask.charAt(pos.begin)];
						var match;
						if(reString){
							var reChar=new RegExp(reString);
							match=String.fromCharCode(k).match(reChar);
						}else{//we're on a mask char, go forward and try again
							pos.begin+=1;
							pos.end=pos.begin;
							caretPos+=1;
							continue;
						}

						if(match)
							buffer[pos.begin]=String.fromCharCode(k);
						else
							return false;//reject char

						while(++caretPos<mask.length){//seek forward to next typable position
							if(!locked[caretPos])							
								break;							
						}
						break;
					}
				}else
					return false;								

				writeBuffer();
				if(settings.completed && caretPos>=buffer.length)
					settings.completed.call(input);
				else
					setCaretPosition(this,caretPos);
				
				return false;				
			};
			input.bind("keypress",keypressEvent);

			/*Helper Methods*/
			function clearBuffer(start,end){
				for(var i=start;i<end;i++){
					if(!locked[i])
						buffer[i]=settings.placeholder;
				}				
			};
			
			function writeBuffer(pos){
				var s="";
				for(var i=0;i<mask.length;i++){
					s+=buffer[i];
					if(i==pos)
						s+=settings.placeholder;
				}
				input.val(s);
				return s;
			};
			
			function checkVal(){	
				//try to place charcters where they belong
				var test=input.val();
				var pos=0;
				for(var i=0;i<mask.length;i++){
					if(!locked[i]){
						while(pos++<test.length){
							//Regex Test each char here.
							var reChar=new RegExp(charMap[mask.charAt(i)]);
							if(test.charAt(pos-1).match(reChar)){
								buffer[i]=test.charAt(pos-1);
								break;
							}									
						}
					}
				}
				var s=writeBuffer();
				if(!s.match(re)){							
					input.val("");	
					clearBuffer(0,mask.length);
				}					
			};
			
			input.one("unmask",function(){
				input.unbind("focus",focusEvent);
				input.unbind("blur",checkVal);
				input.unbind("keydown",keydownEvent);
				input.unbind("keypress",keypressEvent);
				if ($.browser.msie) 
					this.onpaste= null;                     
				else if ($.browser.mozilla)
					this.removeEventListener('input',checkVal,false);
			});
							
		});
	};
})(jQuery);

