// t: current time, b: begInnIng value, c: change In value, d: duration

jQuery.easing['jswing'] = jQuery.easing['swing'];



jQuery.extend( jQuery.easing,

{

	def: 'easeOutQuad',

	swing: function (x, t, b, c, d) {

		//alert(jQuery.easing.default);

		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;

	}

});

(function($) {



  $.fn.expander = function(options) {



    var opts = $.extend({}, $.fn.expander.defaults, options);

    var delayedCollapse;

    return this.each(function() {

      var $this = $(this);

      var o = $.meta ? $.extend({}, opts, $this.data()) : opts;

     	var cleanedTag, startTags, endTags;	

     	var allText = $this.html();

     	var startText = allText.slice(0, o.slicePoint).replace(/(\w)$/,'');

     	startTags = startText.match(/<\w[^>]*>/g);

   	  if (startTags) {startText = allText.slice(0,o.slicePoint + startTags.join('').length).replace(/\w+$/,'');}

   	  

     	if (startText.lastIndexOf('<') > startText.lastIndexOf('>') ) {

     	  startText = startText.slice(0,startText.lastIndexOf('<'));

     	}

     	var endText = allText.slice(startText.length);    	  

     	// create necessary expand/collapse elements if they don't already exist

   	  if (!$('span.details', this).length) {

        // end script if text length isn't long enough.

       	if ( endText.replace(/\s+$/,'').split(' ').length < o.widow ) { return; }

       	// otherwise, continue...    

       	if (endText.indexOf('</') > -1) {

         	endTags = endText.match(/<(\/)?[^>]*>/g);

          for (var i=0; i < endTags.length; i++) {



            if (endTags[i].indexOf('</') > -1) {

              var startTag, startTagExists = false;

              for (var j=0; j < i; j++) {

                startTag = endTags[j].slice(0, endTags[j].indexOf(' ')).replace(/(\w)$/,'$1>');

                if (startTag == rSlash(endTags[i])) {

                  startTagExists = true;

                }

              }              

              if (!startTagExists) {

                startText = startText + endTags[i];

                var matched = false;

                for (var s=startTags.length - 1; s >= 0; s--) {

                  if (startTags[s].slice(0, startTags[s].indexOf(' ')).replace(/(\w)$/,'$1>') == rSlash(endTags[i]) 

                  && matched == false) {

                    cleanedTag = cleanedTag ? startTags[s] + cleanedTag : startTags[s];

                    matched = true;

                  }

                };

              }

            }

          }

          endText = cleanedTag + endText;

        }

     	  $this.html([

     		startText,

     		'<a href="#" class="read-more">',

     		  o.expandText,

     		'</a>',

     		'<span class="details">',

     		  endText,

     		'</span>'

     		].join('')

     	  );

      }

   	  $this

 	    .find('span.details').hide()

 	    .end()

 	    .find('a.read-more').click(function() {

             	

 	      $(this).hide()

 	        .next('span.details')[o.expandEffect](o.expandSpeed, function() {

            var $self = $(this);

            $self.css({zoom: ''});

            if (o.collapseTimer) {

              delayedCollapse = setTimeout(function() {  

                reCollapse($self);

                },

                o.collapseTimer

              );

              

            } 	          

 	        });

 	        

        return false;

 	    });

      if (o.userCollapse) {

        $this

        .find('span.details').append(' <a class="re-collapse" href="#">' + o.userCollapseText + '</a>')

        .find('a.re-collapse').click(function() {

          clearTimeout(delayedCollapse);

          var $spanCollapse = $(this).parent();

          reCollapse($spanCollapse);

          return false;

        });

      }



    });

    function reCollapse(el) {

       el.hide()

        .prev('a.read-more').show();

    }

    function rSlash(rString) {

      return rString.replace(/\//,'');

    }

  };

    // plugin defaults

  $.fn.expander.defaults = {

    slicePoint:       100,  // the number of characters at which the contents will be sliced into two parts. 

                            // Note: any tag names in the HTML that appear inside the sliced element before 

                            // the slicePoint will be counted along with the text characters.

    widow:            4,  // a threshold of sorts for whether to initially hide/collapse part of the element's contents. 

                          // If after slicing the contents in two there are fewer words in the second part than 

                          // the value set by widow, we won't bother hiding/collapsing anything.

    expandText:         'read more...', // text displayed in a link instead of the hidden part of the element. 

                                      // clicking this will expand/show the hidden/collapsed text

    collapseTimer:    0, // number of milliseconds after text has been expanded at which to collapse the text again

    expandEffect:     'fadeIn',

    expandSpeed:      '',   // speed in milliseconds of the animation effect for expanding the text

    userCollapse:     true, // allow the user to re-collapse the expanded text.

    userCollapseText: '[collapse expanded text]'  // text to use for the link to re-collapse the text

  };

})(jQuery);





/* Classifieds widget */

$(document).ready(function() {

	$('img#classAd, div#classAdBox').hoverIntent({sensitivity: 3, interval: 200, over: function(){

		$('div#classAdBox').stop().slideDown(function(){

			$(this).css('height','auto');

		});

	},

		out: function(ev) {

			$('div#classAdBox').animate({'opacity':'1.0'},1000,function(){

				$(this).slideUp().hide();

			});

		}

		

	});



//	var rightOffset = $('img#classAd').offset().left - $('div#classAdBox').width();

//	$('div#classAdBox').css({'position':'absolute','z-index':'999','top':$('img#classAd').offset().top,'right':$('img#classAd').width()+10});

//});