/* AnchorSlide
----------------------------------------------------------------------------------------*/
var AnchorSlide = Class.create({
	initialize : function(anchor) {
		this.anchor = anchor;
		this.content = this.anchor.hash.substr(1);
		this.setup();
	},
	setup: function(ev) {
		this.anchor.observe('click', this.scroll_to.bind(this));
	},
	scroll_to: function(ev) {
		new Effect.ScrollTo(this.content);
		ev.stop();
	}
});

/* ReturnSigninForm - PXP236:Return items:01/18/2011:Hai: signin form on customer service page
------------------------------------------------------------------------------------------------*/
var ReturnSigninForm = Class.create({
	initialize: function(errPop) {
		this.form = $('return_signin_form') || $('return_signin_form_signedin');
		this.submit = this.form.down('a.btn_common_blue');
		this.validator = new Validation(this.form, { onSubmit: false });
		this.errPop = errPop;
		this.setup();
	},
	setup: function() {
		var validate_listener = this.validate_returns_form.bindAsEventListener(this);

		if (this.form == $('return_signin_form')) {
			// try to validate & submit when clicking "Create Return" button
			this.submit.observe('click', validate_listener);
			
			// try to validate & submit form when pressing enter in a field
			this.form.descendants().each(function(element){
				if (element.match('input')) {
					element.observe('keyup', validate_listener);
				}
			});
		} else if (this.form == $('return_signin_form_signedin')) {
			this.submit.observe('click', function() {
				this.form.submit();
			}.bind(this));
		}
	},
	validate_returns_form: function(event) {  //ajax validate form
		if(event.keyCode && event.keyCode != Event.KEY_RETURN) {
			return;
		}
		new Ajax.Request('/pex/control/returnSignin', {
			method: 'post',
			parameters: Form.serialize(this.form),
			onComplete: this.refresh.bind(this)
		});
		event.stop();
	},
	refresh: function(response, json) {  //on ajax validate response, try to submit
		if (json.status == 'SUCCESS') {
			this.form.submit();
		} else {
			this.showMsgPopup(json.errors);
		}
	},
	showMsgPopup: function(msg) {
		$('overlay_alert').down('.overlay_content').down('p').innerHTML = msg;
		this.errPop.setReferenceElement( this.form.down('.btn_common_blue') );
		this.errPop.setTopOffset(-120);
		this.errPop.setLeftOffset(100);
		document.fire('error:msg');
		if ($('trigger_pw_rga')) {  //forgot password link contained in json error msg
			new ForgotPassword($('trigger_pw_rga'), $('overlay_pw'));
		}
	}
});

/* CreateReturnForm - PXP236:Return items:01/18/2011:Hai: create RGA form on customer service page
----------------------------------------------------------------------------------------------------*/
var CreateReturnForm = Class.create({
	initialize: function(errPop) {
		this.form = $('create_return_form');
		this.submit = this.form.down('a.btn_common_blue');
		this.validator = new Validation(this.form, { onSubmit: false });
		this.errPop = errPop;
		this.setup();
	},
	setup: function() {
		var validate_listener = this.validate_returns_form.bindAsEventListener(this);

		// try to validate & submit when clicking "Create Return" button
		this.submit.observe('click', validate_listener);

		// try to validate & submit form when pressing enter in a field
		this.form.descendants().each( function(element) {
			if (element.match('input')) {
				element.observe('keyup', validate_listener);
			}
		});
	},
	validate_returns_form: function(event) {  //ajax validate form
		if(event.keyCode && event.keyCode != Event.KEY_RETURN) {
			return;
		}
		new Ajax.Request('/pex/control/createReturnFromOrderId', {
			method: 'post',
			parameters: Form.serialize(this.form),
			onComplete: this.refresh.bind(this)
		});
		event.stop();
	},
	refresh: function(response, json) {  //on ajax validate response, try to submit
		if (json.status == 'SUCCESS') {
			this.form.submit();
		} else {
			this.showMsgPopup(json.errors);
		}
	},
	showMsgPopup: function(msg) {
		$('overlay_alert').down('.overlay_content').down('p').innerHTML = msg;
		this.errPop.setReferenceElement( this.form.down('.btn_common_blue') );
		this.errPop.setTopOffset(-120);
		this.errPop.setLeftOffset(-350);
		document.fire('error:msg');
	}
});

/* setSendTo
----------------------------------------------------------------------------------------*/
function setSendTo(subject, sendTo) {
  //PXP315:Beautify dropdowns:04/05/2011:Hai: these are now passed in as params
  /*var subject = document.getElementById('subject').value;
  var sendTo = document.getElementById('sendTo');*/
  
  /***PXP168:BOF Removing live chat from site adding email form:12/29/2010:By kinjal***/
  
  if(subject==""){
	  sendTo.value = "josh@pexsupply.com";  
  }
  if(subject=="Order Status"){
	  sendTo.value = "rinaldo@pexsupply.com";  
  }
  if(subject=="Check Inventory"){
	  sendTo.value = "emily@pexsupply.com";
  }
  if(subject=="Order Issue"){
	  sendTo.value = "stacey@pexsupply.com"; 
  }
  if(subject=="Quote"){
	  sendTo.value = "emily@pexsupply.com";  
  }
  if(subject=="Return"){
	  sendTo.value = "markb@pexsupply.com";
  }
  if(subject=="Product Question"){
	  sendTo.value = "stacey@pexsupply.com"; 
  }
  if(subject=="Technical Support"){
	  sendTo.value = "stacey@pexsupply.com"; 
  }
  if(subject=="Other"){
	  sendTo.value = "stacey@pexsupply.com"; 
  }

  /***PXP168:EOF Removing live chat from site adding email form:12/29/2010:By kinjal***/
}

//Begin:PXP315:Beautify dropdowns:04/05/2011:Hai
/* DropDownSubject, based on DropDown in base.js
/*----------------------------------------------------------------------------------------*/
var DropDownSubject = Class.create(DropDown, {
	select: function($super, item, ev, skipchange){
		$super(item, ev, skipchange);
		setSendTo(this.hidden.value, $('sendTo'));
	}
});
//End:PXP315:Beautify dropdowns:04/05/2011:Hai

/*----------------------------------------------------------------------------------------*/
document.observe('dom:loaded', function() {
	$$('#faqs ul li').each(function(el) {
		new SimpleToggler(el.down('a'), el.down('div'));
	});
	
	$$('a[href^=http://www.youtube.com/]').each(function(element) {
		new YouTubePlayer(element, $('video'));
	});

	$$('#definitions a[href^=#]:not([href=#])').each(function(el) {
		new AnchorSlide(el);
	})

	//Begin:PXP236:Return items:01/18/2011:Hai
	if ( ( $('return_signin_form') || $('return_signin_form_signedin') ) && $('create_return_form') ) {
		var errPop = new CustomLocationPop(null, $('overlay_alert'), null, 180, 0);  //for error msg
		new ReturnSigninForm(errPop);
		new CreateReturnForm(errPop);
	}

	var triggers = $$('a.restock_trigger');
	if ( triggers ) {
		for (var i = 0; i < triggers.length; i++) {
			triggers[i].observe('mouseover', function(e){
				if ( ! this.up('div').down('#restock_fees_div') ) {
					this.up('div').insert($('restock_fees_div'));
				}
				restockFeesDiv = this.up('div').down('#restock_fees_div');
				restockFeesDiv.style.display = 'block';
				restockFeesDiv.style.top = (this.positionedOffset().top + 25) + 'px';
				restockFeesDiv.style.left = (this.positionedOffset().left + 10) + 'px';
			});
			triggers[i].observe('mouseleave', function(e){
				this.up('div').down('#restock_fees_div').style.display = 'none';
			});
		}
	}
	//End:PXP236:Return items:01/18/2011:Hai

	//Begin:PXP315:Beautify dropdowns:04/05/2011:Hai
	if ($('subject')) {
		new DropDownSubject($('subject'), { allowFlipScroll:true, maxAbove:2000, minBelow:200, nextField:'orderId' });
	}
	//End:PXP315:Beautify dropdowns:04/05/2011:Hai
});

