/*
-----------------------------------------------
Site: Kaleido
Author: Tom Fadial
Description: Global JavaScript
----------------------------------------------- */

var global;
$(function() {
	global = {

		scope: {
			page: $('#page'),
				header: $('#header'),
				content: $('#content'),
					main_content: $('#main_content'),
					sidebar: $('#sidebar'),
					footer: $('#footer')
		},

		prepareSite : function() {
			// prevent ie background flickering
			try {document.execCommand("BackgroundImageCache", false, true);} catch(err) {};
		},

		applyCorners : function() {
			$('.corner_container').each(function() {
				$(this).markupCorners();
			});

			$('.nav_links li').markupCorners();

			$('.module').markupCorners();

			$('.filter_group ul li').markupCorners();

			$('.search_wrap').markupCorners();
		},

		prepareFilters : {

			touchModule : function() {
				$s.sidebar.find('.module.filter').touchHeight();
			},

			collapseToggle : function() {
				var filters = $s.sidebar.find('.filter_group');

				filters.each(function() {
					var title = $(this).find('.title');
					var content = $(this).find('.content');

					title.addClass('toggle');

					title.toggle(function() {
						content.slideUp('fast');
						$(this).addClass('closed');
						global.prepareFilters.touchModule();
					}, function() {
						content.slideDown('fast');
						$(this).removeClass('closed');
						global.prepareFilters.touchModule();
					});
				});
			},

			showMore : function () {
				var lists = $s.sidebar.find('.filter_group ul');
				var prefs = {
					show_count: 5,
					more_text: "Show More...",
					less_text: "Show Less..."
				};

				lists.each(function() {
					var $this = $(this);
					var filter = $(this).children('li');
					var show_more = $('<li class="more">'+prefs.more_text+'</li>');

					filter.each(function(i) {
						if (i > (prefs.show_count - 1)) {$(this).addClass('excess');}
					});

					if (filter.length > prefs.show_count) {
						$this.append(show_more);
					}

					show_more.toggle(function() {
						$this.addClass('show_more');
						$(this).text(prefs.less_text);
						global.prepareFilters.touchModule();
					}, function() {
						$this.removeClass('show_more');
						$(this).text(prefs.more_text);
						global.prepareFilters.touchModule();
					});
				});
				
			}

		},

		prepareScore : function() {
			$s.main_content.find('.score .meter').each(function() {
				var empty = $('<span class="empty score_fill"></span>');
				var score_bar = $('<div class="score_bar"><!-- --></div>');
				var score_fill = $(this).children('strong');
				var score = parseInt(score_fill.text())+'%';

				$(this).append(empty,score_bar);
				score_fill.width(score);
			});
		},

		preparePopup : function() {
			var close = $('<a href="#close" class="close">Close</a>');

			close
				.appendTo($s.header)
				.click(function() {
					window.close();
				});
		},

		init : function() {
			global.prepareSite();
			global.applyCorners();
			global.prepareFilters.collapseToggle();
			global.prepareFilters.showMore();
			global.prepareScore();
			if ($('body').is('.popup')) {global.preparePopup();}
		}
	}

	var $s = global.scope;
	global.init();
});


jQuery.fn.extend({
	markupCorners : function(o) {
		if (typeof o == 'undefined') {o = ['tl', 'tr', 'bl', 'br']}
		var e = $(this);
		var corner = $('<div class="corner"><!-- --></div>');
		var corners = {
			tl: corner.clone().addClass('top left top_left'),
			tr: corner.clone().addClass('top right top_right'),
			bl: corner.clone().addClass('bottom left bottom_left'),
			br: corner.clone().addClass('bottom right bottom_right')
		}
		e.addClass('corner_container');
		$.each(o, function(i, c) {
			e.append(corners[c]);
		});
	},
	minHeight : function(height) {
		if ($.browser.msie && (typeof window.XMLHttpRequest == "undefined")) {$(this).height(height);}
		else {$(this).css('min-height', height)}
	},
	touchHeight : function() {
		$(this).height("100%").height('auto');
	}
});

