var quicklook	= {};

function getQueryStringParameter(name, custom_query_string) {
	name		= name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

	var regexS	= "[\\?&]"+name+"=([^&#]*)";
	var regex	= new RegExp(regexS);

	if (custom_query_string) {
		var results	= regex.exec(custom_query_string);
	}
	else {
		var results	= regex.exec(window.location.href);
	}

	if( results == null ) {
		return "";
	}
	else {
		return results[1];
	}
}


jQuery(document).ready(function () {
    quicklook.active = false;
    quicklook_bind_links();
    quicklook_create_elements();
});


function quicklook_bind_links() {
    $('.ProductItemImage').bind('mouseenter', function () {
        var image_url_array = $(this).find('img')[0].src.split('/');
		var	sku	= getQueryStringParameter('product', $(this).attr('href'));
        $('#quicklook_flag').remove();
        $(this).prepend('<a href="/#' + sku + '" id="quicklook_flag"></a>');
        $('#quicklook_flag').css({
            display: 'block'
        });
        // $('#quicklook_flag').animate({
        // 	opacity	: 1.0
        // }, 100);
        $('#quicklook_flag').css({
            opacity: 1.0
        });
    });
	$('.ProductItemImage').bind('mouseleave', function() {
		$('#quicklook_flag').remove();
	});

	$('#quicklook_flag').live('click', function() {
		quicklook_show($(this)[0].hash.replace('#', ''));
		return false;
	});
	$('#quicklook_flag').live('mouseenter', function() {
		if (jQuery.support.opacity) {
			$(this).nextUntil('img').stop().animate({
				opacity	: 0.5
			}, 150);
		}
		return false;
	});
	$('#quicklook_flag').live('mouseleave', function() {
		if (jQuery.support.opacity) {
			$(this).nextUntil('img').stop().animate({
				opacity	: 1.0
			}, 150);
		}
		return false;
	});

	$('#quicklook_shroud').live('click', function() {
		quicklook_hide();
		return false;
	});
	
	$('#quicklook_close a').live('click', function() {
		quicklook_hide();
		return false;
	});
	
	$('#quicklook_tabs li a').live('click', function() {
		if ($(this).html() == 'General Info') {
			$('#quicklook_tab_indicator').stop().animate({
				left	: 468,
				width	: 102
			}, 100, function() {
				$('#quicklook_information_description').hide();
				$('#quicklook_information_general_info').show();
			});
		}
		else {
			$('#quicklook_tab_indicator').stop().animate({
				left	: 367,
				width	: 100
			}, 100, function() {
				$('#quicklook_information_general_info').hide();
				$('#quicklook_information_description').show();
			});
		}
		return false;
	});
}


function quicklook_create_elements() {
	quicklook_addCSS('/css/quicklook.css');
	if (!jQuery.support.opacity) {
		quicklook_addCSS('/css/quicklook-ie.css');
		
		// Fix IE7 z-index issue.
		// $(function() {
		// 	var zIndexNumber = 1000;
		// 	$('div').each(function() {
		// 		$(this).css('zIndex', zIndexNumber);
		// 		zIndexNumber -= 10;
		// 	});
		// });
	}

	$('body').prepend('<div id="quicklook_shroud"></div>');
	$('#container').prepend('<div id="quicklook_container"><div id="quicklook"></div></div>');
	$('#quicklook').append('<div id="quicklook_close"><a href="/" title="Close this window.">[close]</a></div>');
	$('#quicklook').append('<div id="quicklook_tab_indicator"></div>');
	$('#quicklook').append('<ul id="quicklook_tabs"><li id="quicklook_tab_general_info"><a href="/">General Info</a></li><li id="quicklook_tab_description"><a href="/">Description</a></li></ul>');
	$('#quicklook').append('<div id="quicklook_information"><div id="quicklook_information_general_info"></div><div id="quicklook_information_description"></div></div>');
	$('#quicklook').append('<div id="quicklook_price"></div>');
	$('#quicklook').append('<div id="quicklook_options"></div>');
	$('#quicklook').append('<div id="quicklook_image"></div>');
	$('#quicklook').append('<div id="quicklook_sku"></div>');
	
	$('#quicklook_information_description').hide();
	
	var image			= new Image();
		image.src		= '/img/quicklook-sprite.png';

	var image			= new Image();
		image.src		= '/img/quicklook-sprite-ie.gif';

	var image			= new Image();
		image.src		= '/img/quicklook-ie.gif';
}


function quicklook_addCSS (url) {
	var	css	= document.createElement('link');

	css.href	= url;
	css.rel		= 'stylesheet';
	css.type	= 'text/css';
	document.getElementsByTagName('head')[0].appendChild(css);
}


function quicklook_show(sku) {
	$.getJSON('/quicklook.ashx?method=getProductInfo&sku=' + sku + '&iekey=' + Math.floor(Math.random() * 10000), function(data) {
		quicklook_process_data(data, sku);
	});

	$('body').css({
		overflow		: 'hidden'
	});
	$('#quicklook_shroud').css({
		display			: 'block',
		height			: $(document).height()
	});
	$('#quicklook_shroud').stop().animate({
		opacity			: 0.94
	}, 600, function() {
		$('#quicklook_container').css({
			top				: Math.round(($(window).height() - 396) / 2) + $(window).scrollTop(),
			left			: Math.round(($('#container').width() - 594) / 2),
			display			: 'block'
		});
		$('#quicklook_container').stop().animate({
			opacity			: 1.0
		}, 250);
	});
	quicklook.active	= true;
	if (window.navigator.appVersion.indexOf('MSIE 7.0') >= 0) {
		$('#quicklook_shroud').hide();
	}
}


function quicklook_hide() {
	$('#quicklook_container').stop().animate({
		opacity			: 0.0
	}, 150, function() {
		$('#quicklook_shroud').stop().animate({
			opacity	: 0.0
		}, 400, function() {
			$('#quicklook_container').css({
				top				: 0,
				left			: 0,
				display			: 'none'
			});
			$('#quicklook_shroud').css({
				top			: 0,
				left		: 0,
				display		: 'none'
			});
			$('body').css({
				overflow	: 'auto'
			});
		});	
	});
	$('#quicklook_information_general_info').html('');
	$('#quicklook_information_description').html('');
	$('#quicklook_price').html('');
	$('#quicklook_options').html('');
	$('#quicklook_image').html('');
	$('#quicklook_sku').html('');
	$('#quicklook_information_description').hide();
	$('#quicklook_information_general_info').show();
	$('#quicklook_tab_indicator').css({
		left	: 468,
		width	: 102
	});
	quicklook.active	= false;
}


function quicklook_process_data(data, sku) {
	var image_src			= '/prodImages/200/' + sku.replace('-', '_').replace('/', '') + '.jpg';
	var image				= new Image();
	
	image.src				= image_src;

	$('#quicklook_image').html('<img src="' + image_src + '" alt="" />');

	var info				= '';

	info					+= quicklook_string_cleanup('SKU',						data.Table[0].SKU);
	info					+= quicklook_string_cleanup('Category',					data.Table[0].category_name);
	
	if ((quicklook_string_cleanup('SKU', data.Table[0].SKU) != '') || (quicklook_string_cleanup('Category', data.Table[0].category_name) != '')) {
		info				+= '<br />';
	}
	
	info					+= quicklook_string_cleanup('Family',					data.Table[0].family_name);
	info					+= quicklook_string_cleanup('Finish',					data.Table[0].finish_name);
	
	if ((quicklook_string_cleanup('Family', data.Table[0].family_name) != '') || (quicklook_string_cleanup('Finish', data.Table[0].finish_name) != '')) {
		info				+= '<br />';
	}

	info					+= quicklook_string_cleanup('Width',					data.Table[0].Width);
	info					+= quicklook_string_cleanup('Height',					data.Table[0].Height);
	info					+= quicklook_string_cleanup('Length',					data.Table[0].Length);
	info					+= quicklook_string_cleanup('Wire Length',				data.Table[0].WireLength);
	
	if ((quicklook_string_cleanup('Width', data.Table[0].Width) != '') || (quicklook_string_cleanup('Height', data.Table[0].Height) != '') || (quicklook_string_cleanup('Length', data.Table[0].Length) != '') || (quicklook_string_cleanup('Wire Length', data.Table[0].WireLength) != '')) {
		info				+= '<br />';
	}

	info					+= quicklook_string_cleanup('Lamp Quantity',			data.Table[0].LampQuantity);
	info					+= quicklook_string_cleanup('Lamp Type',				data.Table[0].LampType);
	info					+= quicklook_string_cleanup('Wattage',					data.Table[0].Wattage);
	
	if ((quicklook_string_cleanup('Lamp Quantity', data.Table[0].LampQuantity) != '') || (quicklook_string_cleanup('Lamp Type', data.Table[0].LampType) != '') || (quicklook_string_cleanup('Wattage', data.Table[0].Wattage) != '')) {
		info				+= '<br />';
	}

	info					+= quicklook_string_cleanup('Energy Efficient',			data.Table[0].EEfficient);
	info					+= quicklook_string_cleanup('Energy Star Compliant',	data.Table[0].Estar);

	$('#quicklook_sku').html('<strong>SKU: </strong>' + data.Table[0].SKU);
	$('#quicklook_price').html('<strong>Price: </strong>$' + data.Table[0].Price.toFixed(2));
	$('#quicklook_information_general_info').html(info);
	$('#quicklook_information_description').html(data.Table[0].Description);
}


function quicklook_string_cleanup(label, string) {
	if ((string != '') && (string != null) && (string != false)) {
		if (string == true) {
			return '<strong>' + label + '</strong><br />';
		}
		else {
			return '<strong>' + label + ': </strong>' + string + '<br />';
		}
	}
	else {
		return '';
	}
}

