/* -------------------------------------------------------------- 


Runs at bottom of the page
-------------------------------------------------------------- */

animating = false;

$(document).ready(function(){
	runOnDOMready();
});

$(window).load(function() {
	imagesLoader();
});

function runOnDOMready() {
	common();
	lists();
	rollovers();
	products();
	locations();
	library();
	customDropDown();
	myfolder();
	alerts();
	showMenus();
}








	
/* -------------------------------------------------------------- 
Common Page-level functions
-------------------------------------------------------------- */
function common() {
	ieNavClasses();
	dropdowns();
	
	
	}




/* -------------------------------------------------------------- 
Core functions
-------------------------------------------------------------- */

function filterClasses(klass) {
	if ($('html').hasClass('ie6')) {
		klass = replaceAll(klass, ieNavClass[0], "");
		klass = replaceAll(klass, ieNavClass[1], "");
	}
	klass = replaceAll(klass, "first", "");
	klass = replaceAll(klass, "last", "");
	klass = replaceAll(klass, "even", "");
	klass = replaceAll(klass, "current", "");
	klass = replaceAll(klass, "dropdown", "");
	klass = replaceAll(klass, " ", "");
	return klass;
}

var ieNavClass = new Array();
function ieNavClasses() {
	// function to sort fix IE6's lack of multiple CSS class selector
	if ($('html').hasClass('ie6')) {
		//
		$("."+ieNavClass[0]).removeClass(ieNavClass[0]);
		$("."+ieNavClass[1]).removeClass(ieNavClass[1]);
		//
		$(".navContainer ul li.current").each(function(i,val) {
			var klass = $(this).attr("class");
			klass = filterClasses(klass);
			klass = klass + "-current";
			$(this).addClass(klass);
			ieNavClass[0] = klass;
		});
		$(".navContainer ul li.dropdown").each(function(i,val) {
			var klass = $(this).attr("class");
			klass = filterClasses(klass);
			klass = klass + "-dropdown";
			$(this).addClass(klass);
			ieNavClass[1] = klass;
		});
	}
}

function dropdowns() {
	var animating = false;
	var currentWas = "";
	//
	
	$('#nav').children('li').children('a').each(function(i,val){
		
		$(this).click(function(e) {
			
			var fil = $(this).html();
			
			if (!animating && (fil == 'COLLECTIONS' || fil == 'PRODUCTS')) {
				animating = true;
				var el = $(this);
				var klass = el.parent("li").attr("class");
				klass = filterClasses(klass);
				dd_Klass = ".dropdown-" + klass;
				// check that the clicked option has a coressponding dropdown div
				// it does this off the name, not off the array index
				if ($(dd_Klass).length > 0) {
					e.preventDefault();
					if ($(".navContainer > ul li.dropdown").length > 0) {
						// one already open, so close it up, then open the next,
						// but wait, is this the same one being clicked?
						if (!el.parent("li").hasClass("dropdown")) {
							$(".navContainer > ul li.dropdown").removeClass("dropdown");
							el.parent("li").addClass("dropdown");
							//$(".navContainer").addClass("heightFix");
							ieNavClasses();
							$(".dropdown-open").fadeOut("normal", function(){																															
								$(".dropdown-open").removeClass("dropdown-open");
								// open next
								$(dd_Klass).fadeIn("normal", function(){	
									$(dd_Klass).addClass("dropdown-open");
									createVerticalLine($(dd_Klass));
									$('.dropdown-open').children('p.close').fadeIn('normal');
									animating = false;							
								});
							});
						} else {
							// its the same, so close the open one
							$('.dropdown-open').children('p.close').fadeOut(100);
							$(".navContainer > ul li.dropdown").removeClass("dropdown");
							//$(".navContainer").removeClass("heightFix");
							ieNavClasses();
							$(".dropdown-open").slideUp("normal", function(){			
								$(".dropdown-open").removeClass("dropdown-open");
								$(".navContainer").removeClass("dd-open");
								if (currentWas != "") {
									$(".navContainer > ul li."+currentWas).addClass("current");
									ieNavClasses();
									currentWas = "";
								}
								animating = false;
							});
						}
					} else {
						// none already open, just open one up
						el.parent("li").addClass("dropdown");
						$(".navContainer").addClass("dd-open");
						//
						if (el.parent().parent().find("li.current").length > 0) {
							currentWas = filterClasses(el.parent().parent().find("li.current").attr("class"));
							el.parent().parent().find("li.current").removeClass("current");
							ieNavClasses();
						}
						//
						$(dd_Klass).slideDown("normal", function(){
							ieNavClasses();
							$(dd_Klass).addClass("dropdown-open");
							createVerticalLine($(dd_Klass));
							$('.dropdown-open').children('p.close').fadeIn('normal');
							animating = false;
						});	
					}
				}				
			}
		});
	
	});
	
	$(".navContainer").find("p.close").click(function(e) {
		e.preventDefault();
		$('.dropdown-open').children('p.close').fadeOut(100);
		$(".navContainer > ul li.dropdown").removeClass("dropdown");
		//$(".navContainer").removeClass("heightFix");
		ieNavClasses();
		$(".dropdown-open").slideUp("slow", function(){
			$(".dropdown-open").removeClass("dropdown-open");
			$(".navContainer").removeClass("dd-open");
			if (currentWas != "") {
				$(".navContainer > ul li."+currentWas).addClass("current");
				ieNavClasses();
				currentWas = "";
			}
		});
	});
	
	$('.dropdown').children('p.close').hover(function() {
		$(this).addClass('close-hover');
	}, function() {
		$(this).removeClass('close-hover');
	});
}

function createVerticalLine(elem) {
	if (elem.hasClass('dropdown-collections')) {
		var height = $('.pixel').parent().height();
		$('.pixel').css({'height' : height + 'px'});
		$('.pixel').show('fast');
	} 
	
}

// this function search and replaces a string and returns the new string
// http://www.daveshuck.com/blog/index.cfm/2006/12/13/Javascript-examples--removeElement-and-replaceAll
function replaceAll( str, searchTerm, replaceWith, ignoreCase )   {
   var regex = "/"+searchTerm+"/g";
   if( ignoreCase ) regex += "i";
   return str.replace( eval(regex), replaceWith );
}

function searchVersion(browser) {
	var dataString = navigator.userAgent;
	var index = dataString.indexOf(browser);
	if (index == -1) return;
	var bVersion = parseFloat(dataString.substring(index+browser.length+1));
	return bVersion.toString().split(".")[0];
}

/* CustomDropDown
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*/
function customDropDown() {
	
	$(".customDropDown").each(function (i) {
		
		var isLong = false;
		var ul = $(this).find('ul');
		var isEmpty = false;
		ul.children('li:first-child').addClass('first');
		var liSize = ul.children().size();
		if (liSize == 0) {
			isEmpty = true;
		}
		else if (liSize > 15) {
			isLong = true;
		}
		
		$(this).find("h5").addClass("hover");

		var ddInput = $(this).children()[0];
		var ddDiv = $(this).children()[1];
		//
		ddInput = $(ddInput);
		ddDiv = $(ddDiv);
		//
		ddDiv.hide();
		//
		var clickFunction = $(this).attr("id");
		//
		ddInput.click(
			function () {
				if (!isEmpty) {
					//if (isLong) ul.addClass('long');
					toggleDD();
				}
				else {
					alert("No options available for this criteria.");
				}
			}
		);
		
		function toggleDD() {
			if (ddDiv.hasClass('dd-open')) {
				if (ddDiv.hasClass('dd-selected')) {
					if (ddDiv.find('.dd-hide')[0]) {
						ddDiv.find('.dd-hide').removeClass('dd-hide').show();
						ddDiv.prev().addClass('wborder');
						if (isLong)
							ddDiv.children('ul').addClass('long');
						
					} else {
						ddDiv.find('li:not(.selected)').addClass('dd-hide');
						ddDiv.prev().removeClass('wborder');
						if (isLong)
							ddDiv.children('ul').removeClass('long');
					}
				} else {
					ddDiv.slideUp('fast');
					ddDiv.removeClass('dd-open');
					ddDiv.prev().removeClass('dd-open').removeClass('wborder');
					
				}
			} else {
				if (isLong)
					ddDiv.children('ul').addClass('long');
				ddDiv.find('li').show();
				ddDiv.slideDown('fast');
				ddDiv.addClass('dd-open');
				ddDiv.prev().addClass('dd-open').addClass('wborder');
				
			}
		}
		
		/* Bind click events */
		ddDiv.find('li').click(function(e) {
			e.preventDefault();
			// if itself is already been selected, we show all options
			if ($(this).hasClass('selected')) {
				$(this).parent().parent().parent().removeClass('option_selected');
				$(this).parent().parent().removeClass('dd-selected').show(); 
				$(this).removeClass('selected');
				
				$(this).parent().parent().slideUp('fast');
				$(this).parent().parent().removeClass('dd-open');
				$(this).parent().parent().prev().removeClass('dd-open');
				
				$(this).parent().find('.dd-hide').removeClass('dd-hide');
				
				$(this).parent().parent().prev().removeClass('wborder');
				
			} else {
				$(this).parent().parent().parent().addClass('option_selected');
				$(this).parent().parent().addClass('dd-selected'); 
				$(this).parent().find('.selected').removeClass('selected');
				$(this).removeClass('dd-hide').addClass('selected');
				$(this).parent().find('li:not(.selected)').addClass('dd-hide');
				
				$(this).parent().parent().prev().removeClass('wborder');
				
				if (isLong)
					$(this).parent().removeClass('long');
			}
		});
		
		/* Hover click events */
		ddDiv.find('li').hover(function() {
			if (ddDiv.hasClass('dd-selected')) {
				if (!$(this).hasClass('selected')) {
					$(this).addClass('dd-hover-alt');
				} else {
					$(this).addClass('dd-hover-selected');
				}
			} else {
				if ( $(this).hasClass('selected') && ddDiv.find('.dd-hide')[0] ) {
				} else {
					$(this).addClass('dd-hover');
					$(this).next().addClass('dd-hover-next');
					if ($(this).hasClass('.last')) {
						$(this).parent().parent().parent().addClass('customDropDownSelected');
					}
				}
			}
			
		}, function() {
			$(this).removeClass('dd-hover');
			$(this).removeClass('dd-hover-alt')
			$(this).removeClass('dd-hover-selected');
			$(this).parent().children().removeClass('dd-hover-next');
			$(this).parent().parent().parent().removeClass('customDropDownSelected');
		})
		
		
	});
	
	
}



