//nospam for email
function noSpam(user,domain) {
	locationstring = "mailto:" + user + "@" + domain;
	window.location = locationstring;
} function noSpamPrint(user,domain) {
	document.write(user + "@" + domain);
}

//external js script loader
function loadScript(url) {
	var e = document.createElement("script");
	e.src = url;
	e.type="text/javascript";
	document.getElementsByTagName("head")[0].appendChild(e);
}

function load_content(page,target_div_id,key) {
	CURRENT_PAGE = page;
	TARGET_ELEMENT = $(target_div_id);
	DB_KEY = key || 'path';
	
	//get dstore (multiple dstores not supported at this time)
	new Ajax.Request('lib/db_ajax.php?b=dstore&p='+page, {
		method: 'get',
		onCreate: function(transport) {
			LOAD_UI = new Element('img', {src: 'images/load-bot.gif', style: 'position: relative; top: -100px;'});
			TARGET_ELEMENT.insert(LOAD_UI,{position: "after"});
		},
		onSuccess: function(transport) {
			var page = transport.responseText.evalJSON();
			DB_VALUE = ( (DB_KEY == 'path') ? page['parent']+':'+page['shortname'] : TARGET_ELEMENT.identify() );
			//get dstore content
			new Ajax.Request('lib/db_ajax.php?t='+page['dstore']+'_content&w='+DB_KEY+'&v='+DB_VALUE, {
				method: 'get',
				onSuccess: function(transport) {
					CONTENT = transport.responseText.evalJSON();
					//have data, load parser script
					loadScript('parsers/'+page['dstore']+'.js');
				},
				onFailure: function(transport) { alert('failed ajax request: '+transport.responseText); },
				onComplete: function(transport) {
					LOAD_UI.remove();
				}
			});
		},
		onFailure: function(transport) { alert('failed ajax request: '+transport.responseText); }
	});
}

function load_cart(target_div_id) {
	TARGET_ELEMENT = $(target_div_id);
	
	new Ajax.Request('lib/db_ajax.php?b=cart', {
		method: 'get',
		onSuccess: function(transport) {
			CONTENT = transport.responseText.evalJSON();
			//have data, load parser script
			loadScript('parsers/cart.js');
		},
		onFailure: function(transport) { alert('failed ajax request: '+transport.responseText); }
	});
}

function add_to_cart(prod_id,instance_to_hide) {
	new Ajax.Request('lib/cart_controller.php?interactive=true&add='+prod_id, {
		method: 'get',
		onSuccess: function(transport) {
			//show checkout link
			if (!$('checkout_message')) {
				checkout_element = new Element('div', {'class': 'checkout_message','style': 'display:none;',id: 'checkout_message'}).update('<a class="button" href="shop/checkout.php">Checkout Now</a>');
				$('basket').insert(checkout_element);
				new Effect.Appear(checkout_element,{delay: 6});
			}
			
			//show message
			MESSAGE = transport.responseText;
			message_element = new Element('div', {'class': 'basket_message'}).update(MESSAGE);
			$('basket').insert(message_element);
			new Effect.Pulsate(message_element,{from: 0.5, pulses: 2});
			new Effect.Fade(message_element,{delay: 5});
			instance_to_hide = (instance_to_hide == null ? prod_id : instance_to_hide);
			new Effect.Shrink($(instance_to_hide));
			
			//basket UI change
			$('basket').addClassName('filled');
			
		},
		onFailure: function(transport) { alert('failed ajax request: '+transport.responseText); }
	});
}

//InfoBubble object (via Prototype)
var InfoBubble = Class.create({
	initialize: function(bubble_type,bubble_id,bubble_parent,html_content) {
		//this.parent = parent;
		this.bubble_id = bubble_id;
		this.bubble_parent = bubble_parent;
		this.html_content = html_content;
		this.bubble_type = bubble_type;
		
		// //calculate bubble position
		var dimensions = this.bubble_parent.getDimensions();
		var start_x = Math.round(dimensions['width'] / 2);
		var start_y = -Math.round(dimensions['height'] / 2);
		
		// 		//determine CSS class (style) for bubble
		// 		var bubble_location = (bubble_type == 'text' ? ' top'+( ((Position.page(this.bubble_parent))[0] / window.outerWidth > 0.5) ? 'right' : 'left') : '');
				
		var bubble_html = '<div class="bubble '+bubble_type+'" id="'+this.bubble_id+'" style="display: none; top: '+start_y+'px; left: '+start_x+'px;">'+this.html_content+'</div>';
		new Insertion.Bottom(this.bubble_parent,bubble_html);
		$(this.bubble_id).controller = this;
	},
	toggleBubble: function() {
		//see if CSS needs to change, due to position of bubble
		if (this.bubble_type == 'text') {
			if (this.bubble_parent.offsetLeft > window.outerWidth/2) {
				$(this.bubble_id).removeClassName('topleft');
				$(this.bubble_id).addClassName('topright');
			} else {
				$(this.bubble_id).addClassName('topleft');
				$(this.bubble_id).removeClassName('topright');
		}	}
		Effect.toggle($(this.bubble_id),'appear', {duration: 0.25});
	},
	autoScrollToBubble: function() {
		var parentLeftEdge = $(this.bubble_parent).offsetLeft;
		var parentRightEdge = parentLeftEdge + $(this.bubble_parent).getWidth();
		var scrollLeftEdge = $('wall_container').scrollLeft;
		var scrollRightEdge = scrollLeftEdge + window.outerWidth;
		
		if (parentRightEdge > scrollRightEdge) var scrollGoal = parentRightEdge - scrollRightEdge;
		else if (parentLeftEdge < scrollLeftEdge) var scrollGoal = parentLeftEdge - scrollLeftEdge;
		
		if (scrollGoal) new Effect.ScrollHorizontal('wall_container',{to:$('wall_container').scrollLeft+(scrollGoal)});
	}
});

//Scroll Functions
function globalScrollRight() {
	new Effect.ScrollHorizontal('wall_container',{to:$('wall_container').scrollLeft+(window.outerWidth*.75)});
}

function globalScrollLeft() {
	new Effect.ScrollHorizontal('wall_container',{to:$('wall_container').scrollLeft-(window.outerWidth*.75)});
}

function startGlobalScroll() {
	if (window.globalscroll) {
	//	new Effect.Shake($('scroll_controls'));
		return;
	}

	function doScroll() {
		//do the scrolling
		var scrollbox = $('wall_container');
		if (scrollbox.scrollLeft >= ($('wall').getWidth())-window.outerWidth) new Effect.ScrollHorizontal('wall_container',{to:0});
		scrollbox.scrollLeft+=1;
		
		//update slider
		//wall_slider.setValue(Math.floor(scrollbox.scrollLeft+1/$('wall').getWidth()*$('wood').getWidth())); 
		//alert('is '+$('drag_turtle').left+' should be '+(Math.floor(scrollbox.scrollLeft/$('wall').getWidth()*$('wood').getWidth())));
		//update slider (will automatically update the scroll)
	//	alert('before: '+wall_slider.sliderValue);
		//if (wall_slider.sliderValue >= wall_slider.maximum) wall_slider.setValue(0);
		//else 
	//	wall_slider.setValue(wall_slider.sliderValue+1);
		//wall_slider.setValueBy(0.0005);
		
	
		
	}
	window.globalscroll = new PeriodicalExecuter(doScroll, .05);
	
	$('global_scroll_off').removeClassName('button');
	$('global_scroll_on').toggleClassName('button');
}

function stopGlobalScroll() {
	if (window.globalscroll) {
		window.globalscroll.stop();
		delete window.globalscroll;
		$('global_scroll_on').removeClassName('button');
		$('global_scroll_off').toggleClassName('button');
	}
}

function initStore() {
	startGlobalScroll();
	new Effect.SlideUp('init_load');
}

function updateDragTurtle() {
	//$('drag_turtle').style.left = Math.round(value/wall_slider.maximum*($('wall_container').scrollWidth-$('wall_container').offsetWidth));
	$('drag_turtle').style.left = Math.round($('wall_container').scrollLeft/$('wall').getWidth()*window.outerWidth)+'px';
}

function showThenHideScrollControls() {
	alert('mousemove');
	if ($('scroll_right_button').style.display == 'none') {
		new Effect.Appear('scroll_right_button');
		new Effect.Appear('scroll_left_button');
		sr_disappear_effect = new Effect.Fade('scroll_right_button', {delay: 7});
		sl_disappear_effect = new Effect.Fade('scroll_left_button', {delay: 7});
	} else if (sr_disappear_effect && sl_disappear_effect) {
		alert('before'+sr_disappear_effect);
		delete sr_disappear_effect;
		delete sl_disappear_effect;
		alert('after'+sr_disappear_effect);
	}
	//['scroll_right_button','scroll_left_button'].each(Effect.Appear());
}
function showScrollControls() {
	// $('scroll_right_button').show();
	// $('scroll_left_button').show();
	// if ($('scroll_right_button').style.display == 'none') {
	// 		new Effect.Appear('scroll_right_button');
	// 		new Effect.Appear('scroll_left_button');
	// 	}
}
function hideScrollControls() {
	// $('scroll_right_button').hide();
	// $('scroll_left_button').hide();
	// if ($('scroll_right_button').style.display != 'none') {
	// 		new Effect.Fade('scroll_right_button', {delay: 5});
	// 		new Effect.Fade('scroll_left_button', {delay: 5});
	// 	}
}