// Rotator
(function($) {
	function Rotator(elem, options) {
		var selected = 0;
		elem = $(elem);
		if (elem.find('div').size() > 1){
			elem.prepend($('<ul></ul>'));									// Add area for list
			elem.find('div').each(function(index, Element){						// Add rotator buttons for each panel
				var node = '<li title="'+$(this).find('a').attr('title')+'" data="'+(index+1)+'">'+(index+1)+'</li>';
				if (index == 0) node = '<li class="selected" title="'+$(this).find('a').attr('title')+'" data="'+(index+1)+'">'+(index+1)+'</li>'
				elem.find('ul').prepend($(node));							
			});	
			elem.find('ul li').click(function(event){							// Add click functionaliy to buttons
				elem.stopTime();
				fadeIn(parseInt($(this).attr("data"))-1, options.transition);
				event.preventDefault();
			});	
			elem.everyTime(														// Create auto-rotatiion
				options.duration + options.transition, 
				function(i){fadeIn(selected+1, options.transition);}
			);
		}
		elem.find('div').first().show().addClass('selected');				// Select the first thing
		
		function fadeIn(pos, speed){										// Fades panel out then new one in
			divs = elem.find('div');				
			btns = elem.find('ul li');
			divs.fadeOut();
			btns.removeClass('selected');
			$(divs.get(selected)).fadeOut(speed, function(){
				$(divs.get(selected)).fadeIn();
			});
			selected = pos % divs.size();
			$($.grep(btns, function(n, i){
  				return ($(n).attr("data") == selected+1);
			})).addClass('selected');
					
		};
		
		function slideTo(pos, speed){										// Slides panels left or right to bring target into view
			divs = elem.find('div');				
			btns = elem.find('ul li');
			btns.removeClass('selected');
			pos = pos % divs.size();
			divs.each(function(index, Element){
				$(this).css('left', -615 * (selected - index));
				$(this).animate({left:-615 * (pos - index)}, speed);
				$(this).show();
			});		
			selected = pos;
			$($.grep(btns, function(n, i){
  				return ($(n).attr("data") == selected+1);
			})).addClass('selected');
		};		
	};
	
	$.fn.rotator = function(options) {  								// Method to attach rotator to elements
  		var defaults = {duration: 4000,transition:1000};  
  		var options = $.extend(defaults, options||{});       
		return this.each(function()
		{
    		var el = new Rotator($(this), options);
    		$(this).data("rotator", el);  
    	});        
 	}; 
})(jQuery);

// Wishlist
(function($) {
	$.fn.wishlist_add_btn = function(options) {	// Method to create add to wishlist buttons
		return this.each(function()
		{
  			$(this).css('cursor','pointer');
			$(this).click(function(event){
				event.preventDefault();	
			  	var self=this;
			  	
			  	$(this).children().remove();
			  	$(this).append($('<img src="/2008/images/ajax_loader.gif" border="0" />'));
			  	
				var params = '&product_id='+$(this).attr('data');

				$.getJSON( '?action=custom&ss=add_to_wishlist' + params, 
					function(json) {
						$(self).children().remove();
						//$(self).append($('<span style="font-size:10px">'+json.message+'</span>'));
						$(self).append($('<img src="/2010/images/product_added.png" alt="product_added.png" width="50" height="62" border="0"/>'));
						$(self).click(function(){window.location = '/account/wishlist/';});
					}
				);
			});	
  		});	
  	};
  	
  	$.fn.wishlist_remove_btn = function(options) {  
	 	return this.each(function()
		{
  			$(this).css('cursor','pointer');
			$(this).click(function(event){
				event.preventDefault();		
			  	var self=this;
			  	
			  	$(this).children().remove();
			  	$(this).append($('<img src="/2008/images/ajax_loader.gif" border="0" />'));
			  	
				var params = '&product_id='+$(this).attr('data');

				$.getJSON( '?action=custom&ss=remove_from_wishlist' + params, 
					function(json) {
						$(self).children().remove();
						if (json.errors){
							for (var i = 0;i<l;++i) { 
								message += myResponse.errors[i].message+"\r\n";
							}
							alert(message);
						} else {
							$(self).append($('<span style="font-size:10px">Product Removed</span>'));
						}
					}
				);
			});	
  		});	
  	};

})(jQuery);




// Navigation
(function($) {
	function Nav(elem, options) {
		var defaults = {
			over: makeTall, // function = onMouseOver callback (REQUIRED)
			out: makeShort // function = onMouseOut callback (REQUIRED)};
		}; 
		var options = $.extend(defaults, options||{});  
		elem.find('li').hoverIntent(options).hover(function() {
			$(this).addClass("subhover"); //On hover over, add class "subhover"
		}, function(){	//On Hover Out
			$(this).removeClass("subhover"); //On hover out, remove class “subhover”
		});
		elem.children().each(function(index, Element){				// Setup li's for each sub-nav
			$(this).find('li').css('float', 'none');
			$(this).find('li').each(function(index, Element){
				if(index >= 18){
					$(this).parent().height(20*18);
					$(this).css('margin-left', 170 * Math.floor(index / 18));
					if (index % 18 == 0) $(this).css('margin-top', -(20*18) );
				}
			});
		});
		function makeTall() {		
			if($(this).find("ul.subnav li").size() > 18){				// If more than 15 elements, make wider
				$(this).find("ul.subnav").css('width', 170 * Math.floor(($(this).find("ul.subnav li").size() +17) / 18));
			};
			$(this).find("ul.subnav").slideDown('fast').show();
		};
		function makeShort(){ $(this).find("ul.subnav").slideUp('normal');};
	};

	$.fn.nav = function(options) {  									// Method to attach rotator nav to elements
  		var defaults = {
			sensitivity: 7, // number = sensitivity threshold (must be 1 or higher)
			interval: 100, // number = milliseconds for onMouseOver polling interval
			timeout: 400 // number = milliseconds delay before onMouseOut
		};  
  		var options = $.extend(defaults, options||{});       
		return this.each(function()
		{
    		var el = new Nav($(this), options);
    		$(this).data("rotator", el);  
    	});        
 	}; 
})(jQuery);

(function($) {
	$.log = function(message) {	// Logging
		if(window.console) { console.debug(message); } else { alert(message); }
	};
	$.track = function(options){			// URL Trackign
		var defaults = {
			remove_duplicates: false // number = sensitivity threshold (must be 1 or higher)
		}; 
		var options = $.extend(defaults, options||{});		
		var recent_urls = JSON.parse($.cookie("recent_urls")||"[]");	
		if(options.remove_duplicates == true){
			for(var i = recent_urls.length -1; i >=0; i-- ){
				if(recent_urls[i].url == document.location.href) recent_urls.splice(i, 1);
			};
		};
		if(recent_urls.length >= 10) recent_urls.pop();	
		recent_urls.unshift({url:document.location.href,title:$("title").text()});
		$.cookie("recent_urls", JSON.stringify(recent_urls), {path: '/', expires: 7 });
		
		return recent_urls;		
	};
})(jQuery);

function simple_tooltip(target_items, n, c){
	$(target_items).each(function(i){
		$("body").append("<div class='"+c+"' id='"+n+i+"'><p>"+$(this).attr('title')+"</p></div>");
		var my_tooltip = $("#"+n+i);

		$(this).removeAttr("title").mouseover(function(){
				my_tooltip.css({opacity:1, display:"none"}).fadeIn(400);
		}).mousemove(function(kmouse){
				my_tooltip.css({left:kmouse.pageX-0, top:kmouse.pageY+22});
		}).mouseout(function(){
				my_tooltip.fadeOut(400);
		});
	});
}

$(function(){						// On Ready	
	$("div.rotator").rotator();		// Attach Rotator
	$("ul.topnav").nav();			// Attach Navigation
	$("a#video_floater").fancybox({
		'transitionIn'	: 'none',
		'transitionOut'	: 'none',
		'transitionIn'	: 'elastic',
		'transitionOut'	: 'elastic'
	});
	getLoginState();
	getQuantity();
});


function getQuantity(){
	var protocal = ('https:' == document.location.protocol ? 'https://store' : 'http://www');
	
	$.post(protocal+'.simplysoles.com/item_quantity/', function(text) {
		if (!text){$('#quantity').html(""); return false;}
		var arr  = text.split(",");
		var total = 0;
		for (var h in arr){
			if ((arr[h] != null) && (arr[h] != '')) total += parseInt(arr[h]);
		}
		$('#quantity').html(total);
		if ($('#quantity').html() == 'NaN'){$('#quantity').html(""); return false;}
  	});
}


function getLoginState(){
 	$('#login_state').html('log in');
	$.post('/login_checker/', function(text) {
		$('#login_state').html(text);
	});
	
}

function view_large() {
	var left_column = document.getElementById('left_column');
	var select = document.getElementsByTagName('select');
	var isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
	if (document.getElementById('view_large').style.display == 'none') {
		//first hide the other popup
		if (document.getElementById('popup')) {
			document.getElementById('popup').style.visibility = "hidden";
			document.getElementById('popup').style.display = "none";
		}
		
		//then show ours
		document.getElementById('view_large').style.display = 'block';
		
		//hide all drop downs for IE6
		if (isIE6) {
			for (var i=0; i<select.length; i++) {
				select[i].style.visibility = 'hidden';
			}
		}
	} else {
		document.getElementById('view_large').style.display = 'none';
		
		//restore all drop downs for IE6
		if (isIE6) {
			document.getElementById('product_attributes').style.visibility = 'visible';
			for (var i=0; i<select.length; i++) {
				select[i].style.visibility = 'visible';
			}
		}
	}
}

function orderProduct(id, frm, name) {
	_product_name = name;
	$("#ajax_message").html('<img src="/2010/images/ajax_loader.gif" alt="Adding product to the cart..." border="0" height="32" width="32"><br>'+
		'The product is being added to your cart.');
	$("#ajax_adding").css('display', 'block');
	var xy = getScrollXY();
	$("#ajax_adding").css('top', (xy[1] + 100) +'px');
	//location.hash = 'ajax_adding';
	var timestamp = new Date().getTime();
	
	$("#ajax_message").ajaxError(function() {
  		$(this).html('We could not add the product to your cart as it returned an error!<br/>'+
			'<a href="Javascript:void(0);" onClick="Javascript:closeMessage();">Close this popup</a>');
	});
	
	var data = $("#"+frm).serialize();

	data += '&site_id=5&session_id='+readCookie('sessionid')+'&time='+timestamp;
	
	$.post('/perl/add_product.pl', data, function(data) {
		xml_handler_product(data);
  	});
	
	//makeXMLRequestProduct('/perl/add_product.pl?site_id=5&session_id='+readCookie('sessionid')+'&time='+timestamp+'&'+getFormValues(document.getElementById(frm)), '');
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

function xml_handler_product(text) {
	getQuantity();
	//if(xml_request_product.readyState != 4) return false;
	//if(xml_request_product.status != 200) {
	//	document.getElementById('ajax_message').innerHTML = 
	//		'We could not add the product to your cart as it returned a '+xml_request_product.status+' error!<br/>'+
	//		'<a href="Javascript:void(0);" onClick="Javascript:closeMessage();">Close this popup</a>';
	//	//location.hash = 'ajax_adding';
	//	return false;
	//}
	//var text = xml_request_product.responseText;
	if (!text) {
		document.getElementById('ajax_message').innerHTML = 
			'An unexpected error happened while trying to add the product to your cart, please try again!<br/>'+
			'<a href="Javascript:void(0);" onClick="Javascript:closeMessage();">Close this popup</a>';
		//location.hash = 'ajax_adding';
		return false;
	}
	var lines = text.split("\n");
	if (lines[0].match(/^(\w+);(\d+);(.*)$/)) {
		if (RegExp.$2 == 2) {
			lines[0].match(/^(\w+);(\d+);(.*);(.*)$/);
			document.getElementById('ajax_message').innerHTML = 
				'This item is available for preorder.<br>The expected arrival date is '+RegExp.$4+'<br /><br />'+
				'<table cellpadding="0" cellspacing="0" width="75%" align="center"><tbody><tr><td><a href="Javascript:void(0);" onclick="Javascript:closeMessage();" class="button"><div id="ajax_continue"><div style="float:left;"><img src="/2010/images/checkout_back.png" border="0"></div><div style="float:right">continue shopping</div><div style="clear:both;"></div></div></a></td><td><div id="ajax_or">or</div></td><td><a href="/cart/" class="button"><div id="ajax_checkout"><div style="float:left">check out</div><div style="float:right;"><img src="/2010/images/checkout_next.png" border="0"></div><div style="clear:both;"></div></div></a></td></tr></tbody></table>';

// 				RegExp.$3+'<br>(estimated delivery on '+RegExp.$4+')<br/>'+
// 				'<table cellpadding="0" cellspacing="0" width="60%" align="center"><tr><td><a href="Javascript:void(0);" onClick="Javascript:closeMessage();"><img src="/imgs/kp_shppng_2.gif" border="0"></a></td><td> or </td>'+
// 				'<td><a href="/cart/"><img src="/imgs/checkout_2.gif" border="0"></a></td></tr></table><br/>';

			//location.hash = 'ajax_adding';
			
			activity = 'add_to_cart';
			extra = { product: _product_name };
			trackActivity();
			
			return false;
		} else if (RegExp.$2 == 1) {
			if (RegExp.$3 == 'We do not have enough inventory for that item.') {
				document.getElementById('ajax_message').innerHTML = 
					'We apologize but that item is sold out.<br/>'+
					'<a href="/service/wishlist/">Add to Wishlist</a> or '+
					'<a href="Javascript:void(0);" onClick="Javascript:closeMessage();"><img src="/2010/images/kp_shppng_2.gif" border="0"></a></td></tr></table><br/>';
			} else {
				document.getElementById('ajax_message').innerHTML = 
					RegExp.$3+'<br /><br />'+
					'<table cellpadding="0" cellspacing="0" width="75%" align="center"><tbody><tr><td><a href="Javascript:void(0);" onclick="Javascript:closeMessage();" class="button"><div id="ajax_continue"><div style="float:left;"><img src="/2010/images/checkout_back.png" border="0"></div><div style="float:right">continue shopping</div><div style="clear:both;"></div></div></a></td><td><div id="ajax_or">or</div></td><td><a href="/cart/" class="button"><div id="ajax_checkout"><div style="float:left">check out</div><div style="float:right;"><img src="/2010/images/checkout_next.png" border="0"></div><div style="clear:both;"></div></div></a></td></tr></tbody></table>';

				activity = 'add_to_cart';
				extra = { product: _product_name };
				trackActivity();
				
			}
			//location.hash = 'ajax_adding';
			return false;
		} else {
			if (RegExp.$3 == 'Please select one option from each drop-down list.') {
				document.getElementById('ajax_message').innerHTML = 
					'Please select an option before adding an item to your cart. Thank you.<br/>'+
					'<a href="Javascript:void(0);" onClick="Javascript:closeMessage();">Close this popup</a>';
			} else {
				document.getElementById('ajax_message').innerHTML = 
					'An error happened while trying to add the product to your cart ('+RegExp.$3+'), please try again!<br/>'+
					'<a href="Javascript:void(0);" onClick="Javascript:closeMessage();">Close this popup</a>';
			}
			return false;
		}
	} else {
		document.getElementById('ajax_message').innerHTML = 
			'An unexpected error (#1) happened while trying to add the product to your cart, please try again!<br/>'+
			'<a href="Javascript:void(0);" onClick="Javascript:closeMessage();">Close this popup</a>';
		//location.hash = 'ajax_adding';
		return false;
	}
}

function closeMessage() {
	//location.hash = '#';
	document.getElementById('ajax_adding').style.display = 'none';
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}



function login() {	
	fromReferPage = 0;
	referralUrl = window.location.href;
	windowTitle = 'Share This Product';
	if (!popupHTML) {
		document.getElementById('refer_url').innerHTML = 'http://' + window.location.host + window.location.pathname;
		popupHTML = document.getElementById('login').innerHTML;
		document.getElementById('login').innerHTML = '';
	}
	sharePopup = showPopup('sharePopup','Login',popupHTML,'450px','auto',false,false,false,[ {text: "Close", handler: closeShare, isDefault: false}] )
}


