/*
LeadRate Marquee V 1.9 BETA
 */
(function($) {
	$.fn.lr = function(options) {
		var settings = {
			lrInterval : 4000,
			lrFadeIn : 1000,
			lrFadeOut : 1000,
			lrcounterClassDefault : 'spCounter',
			lrcounterClassActive : 'spCounterActive',
			lrClass : 'marquee',
			lrClassActive : 'mqActive',
			lrLastActive : 'mqLastActive',
			lrNextButton : 'mqArrowHolder_next',
			lrPrevButton : 'mqArrowHolder_prev',
			lrbeforeStartSlide : false,
			afterStartSlide : false,
			lrfirstStartSlide : false,
			lrlastStartSlide : false,
			lrnextStartSlide : false,
			lrprevStartSlide : false
		};
		return this.each(function() {
			// If options exist, lets merge them
				// with our default settings
				if (options) {
					$.extend(settings, options);
				}
				// General Variables
				var lrInterval = settings.lrInterval + settings.lrFadeOut+ settings.lrFadeIn;
				var lrplaytime;
				var $lrParent;
				var lrClass = settings.lrClass;
				$lrParent = jQuery(this);
				$lrChildren = $lrParent.children();
				$lrtype = jQuery('.' + settings.lrcounterClassDefault).parent().attr('lrtype');
				var lrtotal = $('.mqText').length;
				var lrfirstSlide = 1;
				var lrlastSlide = lrtotal;
				var lrCurrentSlide = lrfirstSlide;
				var x = 1;
				$('.mqTexts').find(".mqText").each(function() {
					jQuery(this).attr('rel', x).css({
							position : 'absolute',
							top : 0,
							left : 0,
							zIndex : 99
						});
					x++;
				});
				var y = 1;
				$('.mqImages').find('.mqImg').each(function(){
					jQuery(this).attr('rel', y);
					y++;
				});
				
				goToSlide(lrCurrentSlide, $lrtype);
				// next function
				function lrnextiTem() {
					lrCurrentSlide = jQuery('.mqActive').attr('rel');
					var lrnextindex = parseFloat(lrCurrentSlide) + 1;
					$lrChildren.removeClass(settings.lrClassActive);
					if (lrnextindex > lrtotal) {
						var lrnextindex = 1;
					}
					// next slide callback
					if (typeof settings.lrnextStartSlide == 'function') {
						settings.lrnextStartSlide(lrnextindex, $lrtype, lrClass);
					}
					// call goToSlide function
					goToSlide(lrnextindex, $lrtype);
				};
				// prev function
				function lrpreviTem() {
					lrCurrentSlide = jQuery('.' + settings.lrClassActive).attr('rel');
					var lrpreviTem = parseFloat(lrCurrentSlide) - 1;
					if (lrpreviTem < 1) {
						var lrpreviTem = jQuery('.' + settings.lrClass).last()
								.attr('rel');
					}
					// prev slide callback
					if (typeof settings.lrprevStartSlide == 'function') {
						settings.lrprevStartSlide(lrpreviTem, $lrtype);
					}
					// call goToSlide function
					goToSlide(lrpreviTem, $lrtype);

				};

				function goToSlide(slideIndex, $lrtype) {
					if ($lrtype) {
						if ($lrtype == 1) {
							jQuery('.' + settings.lrcounterClassDefault).not(
									'[rel=' + slideIndex + ']').removeClass(
									settings.lrcounterClassActive).find(
									'img:first').show();
							jQuery(
									'.' + settings.lrcounterClassDefault
											+ '[rel=' + slideIndex + ']').find(
									'img:first').hide();
							jQuery(
									'.' + settings.lrcounterClassDefault
											+ '[rel=' + slideIndex + ']')
									.addClass(settings.lrcounterClassActive)
									.find('img:last').show();
						} else if ($lrtype == 2) {
							jQuery('.' + settings.lrcounterClassDefault).not(
									'[rel=' + slideIndex + ']').removeClass(
									settings.lrcounterClassActive);
							jQuery(
									'.' + settings.lrcounterClassDefault
											+ '[rel=' + slideIndex + ']')
									.addClass(settings.lrcounterClassActive)
									.show();
						} else if ($lrtype == 3) {
							jQuery('.' + settings.lrcounterClassDefault).not(
									'[rel=' + slideIndex + ']').removeClass(
									settings.lrcounterClassActive).hide();
							jQuery(
									'.' + settings.lrcounterClassDefault
											+ '[rel=' + slideIndex + ']')
									.addClass(settings.lrcounterClassActive)
									.show();
						}
					}
					// lrbeforeStartSlide callback function
					if (typeof settings.lrbeforeStartSlide == 'function') {
						settings.lrbeforeStartSlide(slideIndex, $lrtype, lrClass);
					}
					if (slideIndex == lrfirstSlide) {
						if (typeof settings.lrfirstStartSlide == 'function') {
							settings.lrfirstStartSlide(slideIndex, $lrtype, lrClass);
						}
					}
					if (slideIndex == lrlastSlide) {
						if (typeof settings.lrlastStartSlide == 'function') {
							// lrlastStartSlide callback function
							settings.lrlastStartSlide(slideIndex, $lrtype);
						}
					}
					
					$(".mqImg, .mqText").not('[rel=' + slideIndex + ']').animate({opacity : 0}, settings.LrFadeOut)
					
					.css('zIndex', 98).removeClass(settings.lrClassActive);
					
					// fade in the current slide
					jQuery('[rel=' + slideIndex + ']').css('zIndex', 99).animate({opacity : 1}, settings.LrFadeIn,function() {
										// ie fade fix
						if (jQuery.browser.msie) {jQuery('[rel=' + slideIndex+ ']').get(0).style.removeAttribute('filter');};
					});
					
					jQuery('[rel=' + slideIndex + ']').addClass(settings.lrClassActive);
							
					if (typeof settings.afterStartSlide == 'function') {
						settings.afterStartSlide(slideIndex, $lrtype);
					}

				}
				// Play function

				function lrplay() {
					lrplaytime = setInterval(lrnextiTem, lrInterval);
				}
				;
				// Pause function

				function lrpause() {
					clearTimeout(lrplaytime);
				}
				;
				// Pagination
				jQuery('.' + settings.lrcounterClassDefault).bind(
						'click',
						function(e) {
							var goTo = jQuery(this).attr('rel');
							lrCurrentSlide = jQuery('.' + settings.lrClassActive).attr('rel');
							if (lrCurrentSlide != goTo) {
								lrpause();
								goToSlide(goTo, $lrtype);
								lrplaytime = setInterval(lrnextiTem, lrInterval);
								e.preventDefault();
							} else {
								return false;
							}
						});
				// On click Next button
				jQuery('#' + settings.lrNextButton).bind('click', function(e) {
					lrpause();
					lrnextiTem();
					lrplaytime = setInterval(lrnextiTem, lrInterval);
					e.preventDefault();
				});
				// On click Prev button
				jQuery('#' + settings.lrPrevButton).bind('click', function(e) {
					lrpause();
					lrpreviTem();
					lrplaytime = setInterval(lrnextiTem, lrInterval);
					e.preventDefault();
				});
				// Run!
				lrplay();

			});

	};
})(jQuery);
