﻿var LF = LF || {};

LF.util = LF.util || {};

// debug non-implLFented links
window.log = function () {
	log.history = log.history || [];
	log.history.push(arguments);
	if (this.console) {
		console.log(Array.prototype.slice.call(arguments));
	}
};

$.fn.debug_links = function () {
    return this.each(function () {
        $(this).click(function () {
            alert('Sorry, this link is not implemented yet.'); return false;
        });
    });
};

$.fn.turnLightsDown = function () {
    return this.each(function () {
        $(this).click(function () {
        	LF.util.addOverlay();
		});
	});
};

$.fn.cyclicalSlider = function ( options ) {
    var settings = {
    	'animationSpeed': 1000,
		'slideTimer': 5000
    };
    
	return this.each(function()
    {
 		// If options exist, merge them with our default settings
		if ( options ) { 
			$.extend( settings, options );
		}
		var $this = $(this);
		var intItemWidth = parseInt($this.find('li').css('width'), 10);
		var intItemCount = $this.find('li').length;
		var intWidth = intItemWidth * intItemCount;
		var intLeft = intItemWidth * -1;
		var objSlideContainer = $this.children('ul');
		
		objSlideContainer.css('width', intWidth);

		_sliderAnimation = function () {
			if ((intLeft * -1) != intWidth) {
				if ($.browser.msie && $.browser.version < 7) {
					objSlideContainer.css({
						left: intLeft
					});
				} else {
					objSlideContainer.animate({
						left: intLeft
					}, settings.animationSpeed);
				}
				intLeft = intLeft - intItemWidth;
			} else {
				objSlideContainer.css('left', 0);
				intLeft = 0;
			}
		};

		setInterval('_sliderAnimation()', settings.slideTimer);
	});
};

$.fn.swapElement = function ( options ) {
    var settings = {
    	'viewTimer': 10000,
		'fadeSpeed': 500
    };
    
	return this.each(function()
    {
 		// If options exist, merge them with our default settings
		if ( options ) { 
			$.extend( settings, options );
		}
		var $this = $(this);
	
		_switchElement = function() {
			var intListLength = $this.children('li').length;
			var indexActiveLi = $this.children('li.active').index();
			var elemActive = $this.children('li.active');
			var elemNext = elemActive.next();
			
			if (intListLength == (indexActiveLi + 1)) {
				elemNext = $this.children('li:first');
			}
			
			elemActive.fadeOut(settings.fadeSpeed, function() {
				elemActive.removeClass();		
				elemNext.fadeIn(settings.fadeSpeed, function() {
					elemNext.addClass('active');
				});
			});
		};
		
		setInterval('_switchElement()', settings.viewTimer);
	});

};

LF.util.addOverlay = function () {
	$('body').append('<div class="UiBlock"></div>');
	
	if ($.browser.msie && $.browser.version < 7) {
		$('.UiBlock').css({
			display: 'block',
			opacity: 0.7
		});
	} else {
		$('.UiBlock').css({
			display: 'block',
			opacity: 0
		}).animate({
			opacity: 0.7
		}, 'fast');
	}
	if ($.browser.msie && $.browser.version < 7) {
		var intContentHeight = parseInt(($('body').height()), 10);
		$('.UiBlock').css({ 'height': intContentHeight });
	}

};

LF.util.openThenAdjustPopup = function (objPopup) {
	objPopup.show();
	var popupMarginLeft = parseInt((objPopup.outerWidth() / 2) * -1, 10);
	var popupMarginTop = parseInt((objPopup.outerHeight() / 2) * -1, 10);
	objPopup.css('margin', popupMarginTop + 'px 0 0 ' + popupMarginLeft + 'px');
};

LF.util.swapPopup = function (objPopupClose, objPopupOpen) {
	objPopupClose.hide();
	LF.util.openThenAdjustPopup(objPopupOpen);
};

LF.util.removePopupOverlay = function () {
	$('.UiBlock').remove();
	$('div.popup').hide();
};

LF.util.splitUrlVars = function(strUrl) {
	var getData = new Array();

	var vars = strUrl.split('?')[1];
	if (vars) {
		vars = vars.substr(0);

		var pairs = vars.split("&");

		for (var i = 0; i < pairs.length; i++) {
			var formData = pairs[i].split("=");
			var name = formData[0];
			var value = formData[1];
			getData[name] = value;
		}
	}

	return getData;
};

LF.util.hasFlashPlugin = function() {
	var UNDEF = "undefined",
		OBJECT = "object",
		SHOCKWAVE_FLASH = "Shockwave Flash",
		SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
		FLASH_MIME_TYPE = "application/x-shockwave-flash",
		plugin = false,
		nav = navigator;

	if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
		d = nav.plugins[SHOCKWAVE_FLASH].description;
		if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
			plugin = true;
		}
	}

	return plugin;
};

(function ($) {
	$.fn.serializeJSON = function () {
		var json = {};
		var key;
		jQuery.map($(this).serializeArray(), function (n, i) {
			if( n['name'].indexOf('[]') != -1 ) {
				
				key = n['name'].split('[]').join('');
				
				if( json[key] == undefined )
					json[key] = [];
				
				json[key].push( n['value'] );
			}
			else
				json[n['name']] = n['value'];
		});
		
		return json;
	};
})(jQuery);

