// JavaScript Document

/*******************************
*
* SlidingElementTrigger.js
* 
* DHTML Sliding Merch Windows Trigger Class
* Ver = 1.0 - Utilizes prototype.js - /js/extern/prototype.js
*
* Dependent on DhtmlUtils instance being added to The prototypejs Element class via addMethods

* Author: John Hutcheson, control.option
*
*******************************/
var SlidingElementTrigger = Class.create();


SlidingElementTrigger.prototype = {

	//NavMenus Object Class Constructor
	
	// @param merch_window        DOM element id of element to slide
	// @param start_position      Hash style object {x:<value>, y:<value>} of start position
	// @param end_position        Hash style object {x:<value>, y:<value>} of end position
	initialize: function(trigger_element, slider_element, start_position, end_position, close_button, offIndicator, onIndicator) {
		
		//alert ("here");
		
		
		this.trigger = $(trigger_element);
		this.triggerImg = (this.trigger.tagName != "IMG") ? $(this.trigger.down("img")) : this.trigger;
		this.closeBtn = $(close_button);
		this.startPos = start_position;
		this.endPos = end_position		
		this.slidingElem = new SlidingElement($(slider_element));
		
		this.offIndicator = offIndicator ? offIndicator + '.' : '_off.';
		this.onIndicator = onIndicator ? onIndicator + '.' : '_on.';
		if (document.images) {
			var srcStringOff = this.triggerImg.src;
			var srcStringOn = srcStringOff.replace(this.offIndicator, this.onIndicator);
			var imgId = this.triggerImg.id;
			var imgWidth = this.triggerImg.width;
			var imgHeight = this.triggerImg.height;
			this.offImage = new Object();
			this.offImage[imgId] = new Image(imgWidth, imgHeight);
			this.offImage[imgId].src = srcStringOff;
			this.onImage = new Object();
			this.onImage[imgId] = new Image(imgWidth, imgHeight);
			this.onImage[imgId].src = srcStringOn;
			
		}
		
		this.boundClickDown = this.clickDown.bindAsEventListener(this);
		this.boundClickUp = this.clickUp.bindAsEventListener(this);
		
		Event.observe (this.trigger, 'click', this.boundClickDown);
		
	},
	
	clickDown: function (e) {
		Event.stop(e);
		var elt = $(Event.element(e));
		this.slidingElem.slide(this.endPos);
		Event.stopObserving (this.trigger, 'click', this.boundClickDown);
		Event.observe (this.trigger, 'click', this.boundClickUp);
		Event.observe (this.closeBtn, 'click', this.boundClickUp);
		this.triggerImg.src = this.onImage[this.triggerImg.id].src;
	},
	
	clickUp: function (e) {
		Event.stop(e);
		var elt = $(Event.element(e));
		this.slidingElem.slide(this.startPos);
		Event.stopObserving (this.trigger, 'click', this.boundClickUp);
		Event.stopObserving (this.closeBtn, 'click', this.boundClickUp);
		Event.observe (this.trigger, 'click', this.boundClickDown);
		this.triggerImg.src = this.offImage[this.triggerImg.id].src;
	}
	
}