/**
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing 
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 * 
 * TERMS OF USE - EASING EQUATIONS
 * Copyright © 2001 Robert Penner
 * All rights reserved.
 * 
 * Open source under the BSD License.
 */
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d);},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b;},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b;},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b;},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b;},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b;},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b;},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b;},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b;},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b;},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b;}});

/**
 * PNG fix for IE6
 * Copyright (c) 2009 Janis Skarnelis http://fancy.klade.lv/
 * 
 */
$.fn.fixPNG=function(){return this.each(function(){var image=$(this).css('backgroundImage');if(image.match(/^url\(["']?(.*\.png)["']?\)$/i)){image=RegExp.$1;$(this).css({'backgroundImage':'none','filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod="+($(this).css('backgroundRepeat')=='no-repeat'?'crop':'scale')+", src='"+image+"')"}).each(function(){var position=$(this).css('position');if(position!='absolute'&&position!='relative')
	$(this).css('position','relative');});}});};

/**
 * Custom javascript code containing utility functions and prototypal enhancements. Includes a form validator class object and 'eP' namespace.
 * 
 * @category Javascript
 * @author Parag Majumdar <admin@bitsofparag.com>
 * @copyright Oct 18, 2009 Bitsofparag.com
 * @link www.bitsofparag.com
 */
	var ePUtil=(function(){var make=(function(u){function object(parent,c_props){var nuobj;function F(){}
	F.prototype=parent;nuobj=new F();nuobj.uber=parent;for(var i in c_props){nuobj[i]=c_props[i];}
	return nuobj;}
	function copyObject(parent,child){var nuobj=child||{};for(var i in parent){if(typeof parent[i]==='object'){nuobj[i]=(parent[i].constructor===Array)?[]:{};copyObject(parent[i],nuobj[i]);}else{nuobj[i]=parent[i];}}
	return nuobj;}
	return{imageObject:function(img,myimg){return object(img,myimg);}};})(ePUtil);var userAgent=navigator.userAgent.toLowerCase();var browserVersion=(userAgent.match(/.+(?:rv|webkit|khtml|opera|msie)[\/: ]([\d.]+)/)||[0,'0'])[1];var IE6=(/msie/.test(userAgent)&&!/opera/.test(userAgent)&&parseInt(browserVersion)<7&&!window.XMLHttpRequest);return{isIE6:function(){return(IE6)?true:false;},ie6Warn:function(){var warn="<div id='warn-overlay'><div id='warn-container'><h2><em>Yikes!</em> You are using IE6</h2><p>Please change to firefox or upgrade to internet explorer 8</p><img src='/images/bp_ie6.jpg' width='600' height='382' /></div></div>";$('body').append($(warn)).find('#warn-overlay').fixPNG();$('body').bind('click',function(){$('#warn-overlay').hide().remove();$('body').unbind('click');});},regex:(function(){var email=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;var username=/^([^<>\?\{\}\[\]\\\^\%]*)$/;var url=/^([\w\.\-\+]+:{0,1}[\w\.\-\+]*@)?([A-Za-z0-9\-\.]+)(:[0-9]+)?(\/|\/([\w#!:\.\?\+=&%@!\-\/\(\)]+))?$/;var photoid=/(?:\/)(\d+)(?:\/)/;var regexImg='[^\.]\.(jpg|jpeg|png|tiff|gif|bmp)\s*$';function trim(text){return text.replace(/^\s+|\s+$/g,'');}
	return{test:function(input_type,valu){switch(input_type)
	{case'email':return email.test(trim(valu));case'url':return url.test(trim(valu));case'website':return url.test(trim(valu));case'username':return username.test(trim(valu));case'textarea'||'comment'||'text':return true;}},exec:function(type,valu){switch(type)
	{case'getidfromurl':return photoid.exec(valu);default:break;}},getTrim:function(text){return trim(text);},replace:function(text){text=trim(text).replace(/\W+/g,'-');text=text.replace(/^-+|-+$/g,'');return text.toLowerCase();}};})()};})();jQuery.extend({ePCache:{},ePForm:{checkLengthValidator:function(options)
	{var defaults={ln:ePUtil.regex.getTrim($(this).val()).length,min:0,max:255,cache:$.ePForm};var settings=$.extend(defaults,options||{});return(settings.ln==0)?this.eP().insertFormError(settings.cache.messages['required']):(settings.ln<settings.min)?this.eP().insertFormError(settings.cache.messages['minlength'].replace('%min%',settings.min)):(settings.ln>settings.max&&settings.max!==null)?this.eP().insertFormError(settings.cache.messages['maxlength'].replace('%max%',settings.max)):true;},emailValidator:function()
	{var cache=$.ePForm;if(!cache.checkLengthValidator.call(this,{min:5,max:40})){return false;}
	else if(!ePUtil.regex.test('email',this.val())){return this.eP().insertFormError(cache.messages['invalid'].replace('%field%','email'));}
	else{return true;}},urlValidator:function(){return true;},textValidator:function(){var cache=$.ePForm;if(!cache.checkLengthValidator.call(this,{min:5,max:null})){return false;}
	return true;},captchaValidator:function()
	{if(!$.ePForm.checkLengthValidator.call(this)){return false;}
	return true;},noValidator:function(){return true;},messages:{required:"This field is required.",invalid:"The %field% contains invalid data",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",number:"Please enter a valid number.",maxlength:"Please enter no more than %max% characters.",minlength:"Please enter at least %min% characters.",range:"Please enter a value between %0% and %1%.",max:"Please enter a value less than or equal to %max%.",min:"Please enter a value greater than or equal to %min%.",captcha:"Wrong captcha! Please copy security code as shown above."},required:{email:true,captcha:true}}});var PForm=(function($){function PForm(formid)
	{this.formid=formid;this.$form=$('#'+formid);this.isValid=true;this.isBusy=true;function _showLoading(bool){(bool)?$('<div id="ajax-loading"></div>').html('<p>Sending message...</p>').appendTo(this):$('#ajax-loading').remove();};if(typeof PForm._initialized=='undefined')
	{PForm.prototype.addValidators=function(obj){for(var fnname in obj){if(!$.ePForm.hasOwnProperty(fnname))
	{$.ePForm[fnname]=obj[fnname];}}},PForm.prototype.setValues=function(){this.$fields=this.$form.find('input, textarea, select');},PForm.prototype.addMessages=function(obj){for(var msg in obj){if(!$.ePForm.messages.hasOwnProperty(msg)){$.ePForm.messages[msg]=obj[msg];}}},PForm.prototype.setRequired=function(options){$.extend($.ePForm.required,options||{});},PForm.prototype.validate=function()
	{var that=this;$.each(this.$fields,function()
	{var seperator=this.id.lastIndexOf("_")||this.id.lastIndexOf("-")||-1;var required=this.id.substr(seperator+1);(($.ePForm.required.hasOwnProperty(required)&&$.ePForm.required[required])||ePUtil.regex.getTrim($(this).val())!=="")?$(this).eP().formFieldValidate():$(this).data('validresult',true);if(!$(this).data('validresult'))
	{that.isValid=false;}});return this;},PForm.prototype.submitForm=function(options)
	{var defaults={ajax:false,method:'POST',flash:'Message has been submitted and awaits approval. Thank you!'};var jform=this.$form;var formid='#'+this.formid;var $fields=this.$fields;var myform=$.extend(defaults,options||{});if(!this.isValid){this.isValid=true;}
	else{if(myform.ajax)
	{jform.eP().showLoading({message:'Sending message...'});var action=jform.attr('action');var serializedForm=jform.serialize();for(var i in serializedForm){serializedForm[i]=$.trim(serializedForm[i]);}
	$fields.attr('disabled','true');$.ajax({type:myform.method,url:action,data:serializedForm,cache:false,success:function(data,status){var $servererr=$(data).find(formid).find('.error_list');if($servererr.length===0)
	{$fields.not(':submit, :hidden').removeAttr('disabled').val('');$('#flash-error, #ajax-loading').remove();$('<div id="flash-message" class="left white"></div>').html('<div><p>'+myform.flash+'</p></div>').prependTo(formid).hide().fadeIn("slow").animate({'opacity':'1'},3000,'swing',null).fadeOut('slow',function(){$(this).remove();$fields.removeAttr('disabled');jform.find('.captcha_img_refresh').trigger('click.refresh');});}
	else{$('#flash-error, #ajax-loading').remove();var errhtml='<li>Oops! There was some problem in submission. Please note the errors shown below and try to resubmit the form:</li>';$.each($servererr,function(){errhtml+=$(this).html();});$('<ul id="flash-error"></ul>').append("<div></div>").find('div').html(errhtml).end().prependTo(formid).hide().fadeIn("slow");$fields.removeAttr('disabled');jform.find('.captcha_img_refresh').trigger('click.refresh');}},error:function(){}});}
	else this.$form[0].submit();}
	return this;};}
	PForm._initialized=true;}
	return PForm;})(jQuery);jQuery.prototype.eP=function(){var $this=this;return{formFieldValidate:function()
	{var defaults={fieldid:$this.attr('id')||$this.attr('name')||'no',val:$this.val(),fn:'Validator'};return $this.each(function(){var seperator=defaults.fieldid.lastIndexOf("_")||defaults.fieldid.lastIndexOf("-")||-1;var validfn=defaults.fieldid.substr(seperator+1)+defaults.fn;var applyfn=window.jQuery.ePForm[validfn];var result=(applyfn)?applyfn.apply($(this),[]):$.ePForm['noValidator'].apply($(this),[]);$(this).data('validresult',result);});},showLoading:function(options)
	{var defaults={bool:true,message:'Loading...'};var s=$.extend(defaults,options||{});return $this.each(function(){(s.bool)?$('<div id="ajax-loading"></div>').html(s.message).prependTo($(this)):$('#ajax-loading').remove();});},insertFormError:function(err)
	{$('<li class="error"></li>').html(err).insertBefore($this.parent('li')).animate({'opacity':1},1500).animate({'opacity':1},2500,function(){$(this).hide().remove();});return false;},toggleAds:function(options)
	{return $this.each(function(){$(this).click(function(){if($(this).next().is(':visible'))
	{$(this).next().fadeOut('slow',function(){$(this).prev().css({'backgroundPosition':'0% 100%'});}).end();}
	else $(this).css({'backgroundPosition':'0% 98%'}).next().fadeIn('slow').end();});});},startTweeting:function(options)
	{var defaults={username:'paragmajum',tweetcontent:$('#tweet-content'),timer:options.timer};var settings=$.extend(defaults,options||{});settings.api_url='http://twitter.com/status/user_timeline/'+settings.username+'.json?count=1&callback=?';return $this.each(function(){$.getJSON(settings.api_url,function(data){$.each(data,function(i,tweet){if(tweet.text!==undefined&&tweet.id!==settings.last_tweet_id){var date_tweet=new Date(tweet.created_at);var date_now=new Date();var date_diff=date_now-date_tweet;var hours=Math.round(date_diff/(1000*60*60));settings.last_tweet_id=tweet.id;settings.current_tweet_link='<a href="http://www.twitter.com/'+settings.username+'/status/'+tweet.id+'">';var tweet_html='<p>';tweet_html+=tweet.text+'</p>';tweet_html+='<div class="tweet_hours f70">'+hours+' hours ago<\/div>';settings.tweetcontent.empty().append(tweet_html).hide().fadeIn('slow');}
	clearTimeout(settings.timer);settings.timer=setTimeout(function(s){return function(){s.$this.eP().startTweeting(s);};}(settings),3600000);});});});},blogStyleSwitcher:function(toggle)
	{return $this.each(function(){if(toggle){$('li',$(this)).click(function(e){switch(e.target.id)
	{case'style-restore':$('#content').css({'fontSize':'100%'});$('#content-canvas').css({'width':'61.5em'});$('#blog-content').css({'width':'39.5em'});$('#style-switch-canvas').css({'width':'61.5em'});e.stopPropagation();break;case'style-widen':$('#content-canvas').css({'width':'1225px'});$('#blog-content').css({'width':'800px'});$('#style-switch-canvas').css({'width':'1223px'});e.stopPropagation();break;case'style-larger':$('#content').css({'fontSize':'120%'});e.stopPropagation();break;default:break;}});}else{$('li',$(this)).each(function(){$(this).unbind('click');});}});},setupSlides:function(options){var defaults={slides:2,prev:'#work-slide-prev',next:'#work-slide-next'};var s=$.extend(defaults,options||{});var slidewidth=$('.work-info',$this).width();var step=slidewidth;var maxstep=(s.slides-1)*step;return $this.each(function(index){var $slide=$(this);$slide.bind('previous',function(){if(parseInt($slide.css('marginLeft'),10)<0){$(s.prev).unbind('.previous.work');$slide.animate({'marginLeft':'+='+step+'px'},1000,'easeOutQuint',function(){$(s.prev).bind('click.previous.work',$.ePCache['click.previous.work']);});}}).bind('next',function(){if(parseInt($slide.css('marginLeft'),10)>(0-maxstep)){$(s.next).unbind('.next.work');$slide.animate({'marginLeft':'-='+step+'px'},1000,'easeOutQuint',function(){$(s.next).bind('click.next.work',$.ePCache['click.next.work']);});}});});},sketchHover:function(options){var defaults={hover:"hover_"};var settings=$.extend(defaults,options||{});return $this.each(function(){var sketch='#'+$(this).parent().get(0).id+settings.hover;$(this).mouseover(function(){$(sketch).stop().animate({'height':'60px'},500,'swing',null);}).stop().mouseout(function(){$(sketch).stop().animate({'height':'0px'},500,'swing',null);}).stop();});},setupStyleSwitcher:function(){var $s=$this.find('#style-switch');return $this.each(function(){$(this).show().find('ul').hide().end().bind('openstylebar',function(){$s.animate({'width':'26em'},500,function(){$(this).find('ul').css({'display':'block'}).end().eP().blogStyleSwitcher(true);});}).bind('closestylebar',function(){$s.find('ul').hide().end().animate({'width':'8em'},1000,'easeOutBounce',function(){$(this).eP().blogStyleSwitcher(false);});});});},refreshCaptcha:function(){return $this.each(function(){$(this).prev().attr('src',function(){var num=Math.round(Math.random(0)*1000)+1;var oldlink=$(this).attr('src');return oldlink.replace(oldlink.substr(oldlink.lastIndexOf('/')+1),num);});});},closeReplyForm:function(){return $this.each(function(){$(this).parent().prev().show().end().slideUp('slow').end().unbind().remove();});},latentForm:function(){return $this.each(function(){var $fields=$(this).find('input, textarea').not(':hidden, :submit');$fields.unbind('.once').one('focus.once',function(){$fields.unbind('.once');$.ePCache.mainComment.find('#captcha-main').children('a').trigger('click.refresh');(!$.ePCache.hasOwnProperty('replyComment'))?$('form',$('.post-comments-reply-form')).eP().closeReplyForm():$.ePCache.replyComment.eP().closeReplyForm();});});},setupCommentForm:function(options){var defaults={};var settings=$.extend(defaults,options||{});return $this.each(function(){$(this).bind('formsetup',function(e){var f=new PForm($(this).attr('id'));f.addValidators({'usernameValidator':function(){var cache=$.ePForm;if(!ePUtil.regex.test('username',this.val())){return this.eP().insertFormError(cache.messages['username_invalid']);}
	if(!$.ePForm.checkLengthValidator.call(this,{max:40})){return false;}
	return true;}});f.setRequired({'username':true});f.addMessages({'username_invalid':'Username contains invalid characters'});f.setValues();$(this).submit(function(e){e.preventDefault();f.validate().submitForm({'ajax':true,'flash':'Thanks! Your comment has been submitted and awaits moderation.'});});});});},prepareReplyForm:function(options,fn)
	{var defaults={linkToLoad:'',captchaDiv:'',mainComment:$.ePCache['mainComment']};var s=$.extend(defaults,options||{});return $this.each(function(){$.ePCache.mainComment.eP().latentForm();if($.ePCache.hasOwnProperty('replyComment')){$.ePCache.replyComment.eP().closeReplyForm();}
	$(this).prev().hide().end().show().eP().showLoading({message:'Loading comment form...'}).load(s.linkToLoad,function(){var $replyform=$(this).find('form');$.ePCache['replyComment']=$replyform;$replyform.css({'border':'none'}).find('textarea').css({'width':'93%'}).end();$(this).eP().showLoading({bool:false});fn.apply($replyform,[]);});});}};};
