var partWindowWidth = 240;
var partWindowHeight = 140;
var curSearchBarText = '';
var curRecentPartsListText = '';
var sbIsOpen = false;
var roIsOpen = false;
var rpIsOpen = false;
var plIsOpen = false;
var plWinWidth = 250;
var reBox = new Class({
	Implements: [Options, Events],
	options: {
		// Element Attributes
		link_class: 'smoothbox',
		form_class: 'smoothbox',
		useTitle: true,
		reBoxZindex: false,
		useReBoxOverlay: true,
		allowedImgTags: ["jpg","jpeg","gif","png"],
		resizeTransition: 'sine:in:out',
		defaultReBoxWidth: 300,
		defaultReBoxHeight: 110,
		
		// Transitions and Timing Controls
		ajaxDelay: 500,
		resizeDuration: 500,
		
		// Element Sugar and Spice
		reBoxCorners: true,
		cornerRadius: '6px',
		reBoxShadow: true,
		shadowOpacity: '0.99',
		titleFontSize: '11px',
		titleFontColor: '#ffffff',
		titleTextIndent: '5px',
		titleHeight: 25,
		closeTop: '16px',
		closeRight: '16px',
		closeH: '11px',
		closeW: '11px',
		reboxWindowBorderSize: '10px',
		reboxWindowBorderColor: 'url(images/popupbg.png)',
		reboxWindowFontColor: '#000000',
		reboxWindowBGColor: '#ffffff',
		reboxWindowOpacity: 1,
		reboxWindowFontFamily: 'Verdana, Geneva, Tahoma, Arial, sans-serif',
		reBoxOverlayOpacity: '.60',
		reBoxOverlayColor: '#000000',
		
		// Loading Block
		loadTitle: 'Loading...',
		loadMessage: '<p style="text-align:center;font-size:9px;padding-top:12px;margin:0px;">Loading...</p>',
		loadWidth: 250,
		loadHeight: 100,
		
		// Utility Functions
		windowOpen: $empty,
		windowClose: $empty,
		
		// Image Paths
		loadIcon: '/images/spinner.gif',
		titleBGimage: 'url(images/o_nav_bg.png) repeat-x top left',		
		closeImage: 'url(images/popup_close.png) no-repeat top left',
		
		// Element Class and ID names
		reBoxOverlayId: 'rebox_overlay',
		reBoxWindowId: 'rebox_window',
		reBoxTitleWrapId: 'rebox_title_wrap',
		reBoxTitleId: 'rebox_title',
		reBoxCloseId: 'rebox_close',
		reBoxContentId: 'rebox_content',
		reBoxLoadId: 'rebox_load',
		
		// Error Handling
		ajaxErrorTitle: 'Transport Error (404)',
		ajaxErrorMessage: '<p style="text-align:center;font-size:9px;padding-top:12px;margin:0px;">The requested file is either unavailable or does not exist, please try your request again later.</p>',
		ajaxErrorW: '205px',
		ajaxErrorH: '90px',
		sytaxErrorTitle: 'reBox Sytax Error',
		sytaxErrorMessage: '<p style="font-size:9px;padding-top:12px;margin:0px 12px;">The reBox element that was clicked is missing required attributes. <br /><br />Please confirm that the <strong>url/action</strong> attribute, <strong>title</strong> attribute and <strong>tag type</strong> is either a &lt;a&gt; or &lt;form&gt; element.<br /><br />For other elements plese see the documentation for the use of <strong>reBoxForce()</strong>.</p>',
		syntaxErrorW: '325px',
		syntaxErrorH: '150px',
		formErrorTitle: 'reBox Form Error',
		formErrorMessage: '<p style="text-align:center;font-size:9px;padding-top:12px;margin:0px;">The Selected form does not have the required ID attribute or the (x)HTML syntax is incorrect. Please correct these errors to prevent this error.</p>',
		formErrorW: '200px',
		formErrorH: '100px'
	},
	initialize: function(options){
		this.setOptions(options);
		var tags = null;
		var caption = null;
		var reBoxRequest = null;
		var reBoxBGClick = false;
		var reBoxOpen = false;
		var reBoxWidth = null;
		var reBoxHeight = null;
		var currentRequest = false;
		this.reBoxInit();
	},
	getTags: function(){
		return tags = $$("a."+this.options.link_class,"form."+this.options.form_class);
	},
	reBoxInit: function(){
		tags = this.getTags();
		tags.removeEvents();
		tags.each(function(element){
			var thisTag = element.get('tag');
			switch(thisTag){
				case 'a':
					element.addEvent('click', function(e){
						e.stop();
						this.openReBox(element);
					}.bind(this));
				break;
				case 'form':
					element.addEvent('submit', function(e){
						e.stop();
						this.openReBox(element);
					}.bind(this));
				break;
			}
		}.bind(this));
		if(!this.options.reBoxZindex){
			var allTags = $(document.body).getElements('*');
			var baseZindex = 0;
			allTags.each(function(element){
				var thisZindex = element.getStyle('z-index').toInt();
				if(thisZindex!='NaN'&&thisZindex>baseZindex){
					baseZindex = thisZindex;
				}
			});
			this.options.reBoxZindex = baseZindex+1;
		}
	},
	openReBox: function(element){
		tagType = element.get('tag');
		caption = element.get('title');
		switch(tagType){
			case 'a':
				url = element.get('href');
			break;
			case 'form':
				url = element.get('action');
			break;
		}
		if(!caption || !url || !tagType){
			this.reBoxForce(this.options.sytaxErrorTitle,this.options.sytaxErrorMessage, this.options.syntaxErrorW, this.options.syntaxErrorH)
		}else{
			var baseURL = url.split('?')[0];
			var queryString = url.split('?').getLast();
			var params = this.parseReBoxQuery(queryString);
			if($defined(params['width'])){
				reBoxWidth = params['width'].toInt();
			}else{
				reBoxWidth = this.options.defaultReBoxWidth;
			}
			if($defined(params['height'])){
				reBoxHeight = params['height'].toInt();
			}else{
				reBoxHeight = this.options.defaultReBoxHeight;
			}
			var fileType = this.getFileType(url);
			switch(fileType){
				case 'swf':
					this.prepReBoxHTML(caption);
					this.reBoxHandlers();
					this.reBoxBGClick = false;
					(function(){
						this.reBoxForce(caption, false, reBoxWidth, reBoxHeight);
					}.bind(this)).delay(this.options.ajaxDelay);
					(function(){
						$(this.options.reBoxContentId).set('html','');
						var swfObj = new Swiff(url,{
							width: reBoxWidth,
							height: reBoxHeight,
							container: $(this.options.reBoxContentId),
							params:{
								wMode:'opaque',
								swLiveConnect:'false'
							}
						});
						this.options.windowOpen.attempt();
					}.bind(this)).delay(this.options.ajaxDelay+this.options.resizeDuration+500);
				break;
				case 'img':
					this.prepReBoxHTML(caption);
					this.reBoxHandlers();
					this.reBoxBGClick = false;
					var myImages = new Asset.images([url], {
						onComplete: function(){
							var mwidth = $$('body').getLast().getStyle('width').toInt()*.9;
							var mheight = window.getHeight().toInt()*.9;
							var width_orig = myImages[0].get('width').toInt();
							var height_orig = myImages[0].get('height').toInt();
							if(width_orig <= mwidth && height_orig <= mheight){
								reBoxHeight = height_orig;
								reBoxWidth = width_orig;
							}else{
								if(width_orig > mwidth){
									var ratio = (width_orig / mwidth);
									reBoxWidth = mwidth;
									reBoxHeight = (height_orig / ratio);
									if(reBoxHeight > mheight){
										ratio = (reBoxHeight / mheight);
										reBoxHeight = mheight;
										reBoxWidth = (reBoxWidth / ratio);
									}
								}
								if(height_orig > mheight){
									var ratio = (height_orig / mheight);
									reBoxHeight = mheight;
									reBoxWidth = (width_orig / ratio);
									if(reBoxWidth > mwidth){
										ratio = (reBoxWidth / mwidth);
										reBoxWidth = mwidth;
										reBoxHeight = (reBoxHeight / ratio);
									}
								}
							}
							this.reBoxForce(caption, false, reBoxWidth.round(), reBoxHeight.round());
							$(myImages[0]).setStyles({
								width: reBoxWidth,
								height: reBoxHeight
							});
							(function(){
								$(this.options.reBoxContentId).set('html','');
								$(myImages[0]).setStyle('opacity','0');
								$(myImages[0]).inject($(this.options.reBoxContentId));
								$(myImages[0]).set('tween', {
									duration: this.options.resizeDuration,
									onComplete: function(){
										this.options.windowOpen.attempt();
									}.bind(this)
								});
								$(myImages[0]).tween('opacity','1');
							}.bind(this)).delay(this.options.ajaxDelay+this.options.resizeDuration+500);
						}.bind(this)
					});
				break;
				default:
					switch(tagType){
						case 'a':
							this.sendRebox(caption, url, tagType, queryString);
						break;
						case 'form':
							this.sendRebox(caption, url, tagType, element);
						break;
					}
				break;
			}
		}
	},
	reBoxForceAjax: function(caption,url,reboxW,reboxH){
		var baseURL = url.split('?')[0];
		var queryString = url.split('?').getLast();
		if($defined(reboxW)){
			reBoxWidth = reboxW.toInt();
		}else{
			reBoxWidth = this.options.defaultReBoxWidth;
		}
		if($defined(reboxH)){
			reBoxHeight = reboxH.toInt();
		}else{
			reBoxHeight = this.options.defaultReBoxHeight;
		}
		this.sendRebox(caption, url, 'a', queryString);
	},
	sendRebox: function(caption, url, tagType, data){
		reBoxRequest = new Request.HTML({
			method: 'post',
			url: url,
			onRequest: function() {
				this.prepReBoxHTML(caption);
				this.reBoxHandlers();
				this.reBoxBGClick = false;
			}.bind(this),
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				(function(){
					this.createReboxWindow(caption, responseHTML);
				}.bind(this)).delay(this.options.ajaxDelay);
			}.bind(this),
			onCancel: function() {
				this.removeReBox();
			}.bind(this),
			onFailure: function() {
				this.reBoxForce(this.options.ajaxErrorTitle,this.options.ajaxErrorMessage,this.options.ajaxErrorW, this.options.ajaxErrorH);
			}.bind(this)
		});
		switch(tagType){
			case 'a':
				reBoxRequest.send({
					data: data
				});
			break;
			case 'form':
				if($defined(data)){
					reBoxRequest.post(data);
				}else{
					this.reBoxForce(this.options.formErrorTitle,this.options.formErrorMessage,this.options.formErrorW, this.options.formErrorH);
				}
			break;
		}
		this.currentRequest = reBoxRequest;
	},
	reBoxForce: function(caption,content,reboxW,reboxH){
		reBoxWidth = reboxW.toInt();
		reBoxHeight = reboxH.toInt();
		if(!$defined($(this.options.reBoxWindowId))){
			this.prepReBoxHTML(caption);
			this.reBoxHandlers();
		}
		(function(){
			this.reBoxBGClick = true;
			this.createReboxWindow(caption, content);
		}.bind(this)).delay(this.options.ajaxDelay+500);
	},
	getFileType: function(url){
		var returnVal = '';
		var temp = url.split('?')['0'];
		temp = temp.split('.').getLast();
		if(this.options.allowedImgTags.contains(temp)){
			returnVal = "img";
		}else if(temp=="swf"){
			returnVal = "swf";
		}else{
			returnVal = "file"
		}
		return returnVal;
	},
	reBoxHandlers: function(){
		if(this.options.useReBoxOverlay){
			$(this.options.reBoxOverlayId).addEvent('click', function(){
				if(this.reBoxBGClick){
					this.removeReBox();
				}else{
					if($defined(this.currentRequest)){
						this.currentRequest.cancel();
					}
				}
			}.bind(this));
		}
		window.addEvents({
			'scroll': function(){
				this.positionReBox();
			}.bind(this),
			'resize': function(){
				this.positionReBox();
			}.bind(this)
		});
		document.addEvent('keydown', function(event){
			if(event.key=='esc'){
				this.removeReBox();
			}
		}.bind(this));
	},
	removeReBox: function(){
		if($defined($(this.options.reBoxOverlayId))){
			$(this.options.reBoxOverlayId).removeEvents();
		}
		if($defined($(this.options.reBoxCloseId))){
			$(this.options.reBoxCloseId).removeEvents();
		}
		if($defined($(this.options.reBoxLoadId))){
			$(this.options.reBoxLoadId).removeEvents();
			$(this.options.reBoxLoadId).destroy();
		}
		if($defined($(this.options.reBoxWindowId))){
			$(this.options.reBoxWindowId).set('tween', {
				duration: this.options.resizeDuration*.8,
				transition: this.options.resizeTransition,
				onComplete: function(){
					if($defined($(this.options.reBoxContentId))){
						$(this.options.reBoxContentId).destroy();
					}
					if($defined($(this.options.reBoxTitleWrapId))){
						$(this.options.reBoxTitleWrapId).destroy();
					}
					$(this.options.reBoxWindowId).destroy();
					this.options.windowClose.attempt();
				}.bind(this)
			});
			$(this.options.reBoxWindowId).tween('opacity', '0');
		}
		if($defined($(this.options.reBoxOverlayId))){
			$(this.options.reBoxOverlayId).set('tween', {
				duration: this.options.resizeDuration,
				transition: this.options.resizeTransition,
				onComplete: function(){
					$(this.options.reBoxOverlayId).destroy();
				}.bind(this)
			});
			$(this.options.reBoxOverlayId).tween('opacity', '0');
		}
		this.reBoxOpen = false;
		window.removeEvents('scroll','resize','keyup');
		document.removeEvent('keydown');
		this.reBoxInit();
	},
	positionReBox: function(){
		if(this.options.useReBoxOverlay){
			this.reBoxOverlaySize();
		}
		if(this.reBoxOpen){
			var pbt = this.options.resizeDuration;
			var widthTo = reBoxWidth;
			var heightTo = reBoxHeight;
		}else{
			var pbt = 10;
			var widthTo = this.options.loadWidth;
			var heightTo = this.options.loadHeight;
		}
		if($defined($(this.options.reBoxWindowId))){
			$(this.options.reBoxWindowId).set('morph', {
				duration: pbt,
				transition: this.options.resizeTransition
			});
			$(this.options.reBoxContentId).set('morph', {
				duration: pbt,
				transition: this.options.resizeTransition,
				onComplete: function(){
					if($defined($(this.options.reBoxContentId))){
						$(this.options.reBoxContentId).setStyles({
							'width': widthTo,
							'height': heightTo
						});
						this.showReBoxWindow();
					}
				}.bind(this)
			});
			var posOffSet = this.calculateOffset();
			var posOffSetX = posOffSet['X'];
			var posOffSetY = posOffSet['Y'];
			if(this.options.useTitle){
				var titleWrapH = $(this.options.reBoxTitleWrapId).getStyle('height').toInt();
				var titleOffset = titleWrapH/2;
			}else{
				var titleWrapH = 0;
				var titleOffset = 0;
			}
			$(this.options.reBoxContentId).morph({
				'width': widthTo,
				'height': heightTo
			});
			$(this.options.reBoxWindowId).morph({
				'left': (($$('body').getLast().getStyle('width').toInt() - widthTo) / 2)-posOffSetX + 'px',
				'top': ((window.getScrollTop() + (window.getHeight() - heightTo) / 2)-titleOffset)-posOffSetY + 'px',
				'width': widthTo,
				'height': heightTo+titleWrapH
			});
		}
	},
	showReBoxWindow: function(){
		if(!this.reBoxOpen){
			$(this.options.reBoxWindowId).set('tween', {
				duration: this.options.resizeDuration,
				transition: this.options.resizeTransition,
				onComplete: function(){
					if($defined($(this.options.reBoxLoadId))){ $(this.options.reBoxLoadId).destroy(); }
				}.bind(this)
			});
			$(this.options.reBoxWindowId).tween('opacity', 0, this.options.reboxWindowOpacity);
			this.reBoxOpen = true;
		}
	},
	reBoxOverlaySize: function(){
		if($($(this.options.reBoxOverlayId))){
			$(this.options.reBoxOverlayId).setStyles({
				"height": window.getScrollHeight() + 'px',
				"width": $$('body').getLast().getStyle('width')
			});
		}
	},
	parseReBoxQuery: function(query){
		if(!query){
			return {};
		}
		var params = {};
		var pairs = query.split(/[;&]/);
		for (var i = 0; i < pairs.length; i++) {
			var pair = pairs[i].split('=');
			if (!pair || pair.length != 2) 
			continue;
			params[unescape(pair[0])] = unescape(pair[1]).replace(/\+/g, ' ');
		}
		return params;
	},
	calculateOffset: function(){
		var params = {};
		params['X'] = ($(this.options.reBoxWindowId).getStyle('margin-left').toInt()+$(this.options.reBoxWindowId).getStyle('margin-right').toInt()+$(this.options.reBoxWindowId).getStyle('padding-left').toInt()+$(this.options.reBoxWindowId).getStyle('padding-right').toInt()+$(this.options.reBoxWindowId).getStyle('borderLeftWidth').toInt()+$(this.options.reBoxWindowId).getStyle('borderRightWidth').toInt())/2;
		params['Y'] = ($(this.options.reBoxWindowId).getStyle('margin-top').toInt()+$(this.options.reBoxWindowId).getStyle('margin-bottom').toInt()+$(this.options.reBoxWindowId).getStyle('padding-top').toInt()+$(this.options.reBoxWindowId).getStyle('padding-bottom').toInt()+$(this.options.reBoxWindowId).getStyle('borderTopWidth').toInt()+$(this.options.reBoxWindowId).getStyle('borderBottomWidth').toInt())/2;
		return params;
	},
	prepReBoxHTML: function(){
		if(this.options.useReBoxOverlay){
			if(!$defined($(this.options.reBoxOverlayId))){
				this.overlay = new Element('div').setProperty('id', this.options.reBoxOverlayId).inject(document.body,'bottom');
				this.overlay.setStyles({
					'position': 'absolute',
					'top': '0px',
					'left': '0px',
					'z-index': this.options.reBoxZindex,
					'opacity': '0',
					'background': this.options.reBoxOverlayColor
				});
				this.reBoxOverlaySize();
				this.overlay.set('tween', {
					duration: this.options.resizeDuration,
					transition: this.options.resizeTransition
				});
				this.overlay.tween('opacity',this.options.reBoxOverlayOpacity);
			}
		}
		if(!$defined($(this.options.reBoxWindowId))){
			this.reboxWindow = new Element('div').setProperty('id', this.options.reBoxWindowId).inject(document.body,'bottom');
			this.reboxWindow.setStyles({
				'position': 'absolute',
				'top': '-5000px',
				'left': '-5000px',
				'background': this.options.reboxWindowBorderColor,
				'padding': this.options.reboxWindowBorderSize,
				'color': this.options.reboxWindowFontColor,
				'font-family': this.options.reboxWindowFontFamily,
				'text-align': 'left',
				'opacity': '0',
				'z-index': (this.options.reBoxZindex+2),
				'overflow': 'hidden'
			});
			if(this.options.reBoxCorners){
				this.reboxWindow.setStyles({
					'-moz-border-radius': this.options.cornerRadius,
					'-webkit-border-radius': this.options.cornerRadius,
					'border-radius': this.options.cornerRadius
				});
			}
			if(this.options.reBoxShadow){
				this.reboxWindow.setStyles({
					'-moz-box-shadow': '0px 10px 40px rgba(0,0,0,'+this.options.shadowOpacity+')',
					'-webkit-box-shadow': '0px 10px 40px rgba(0,0,0,'+this.options.shadowOpacity+')',
					'box-shadow': '0px 10px 40px rgba(0,0,0,'+this.options.shadowOpacity+')'
				});
			}
		}
		if(this.options.useTitle){
			if(!$defined($(this.options.reBoxTitleWrapId))){
				this.reboxTitleWrap = new Element('div').setProperty('id', this.options.reBoxTitleWrapId).inject(this.options.reBoxWindowId,'bottom');
				this.reboxTitleWrap.setStyles({
					'background': this.options.titleBGimage,
					'line-height': this.options.titleHeight,
					'margin': '0px',
					'padding': '0px',
					'font-size': this.options.titleFontSize,
					'text-indent': this.options.titleTextIndent,
					'height': this.options.titleHeight,
					'color': this.options.titleFontColor,
					'font-weight': 'bold',
					'z-index': (this.options.reBoxZindex+3)
				});
			}
			if(!$defined($(this.options.reBoxTitleId))){
				this.reboxTitle = new Element('div').setProperty('id', this.options.reBoxTitleId).inject(this.reboxTitleWrap,'bottom');
				this.reboxTitle.setStyles({
					'float': 'left',
					'z-index': (this.options.reBoxZindex+4)
				});
			}
		}
		if(!$defined($(this.options.reBoxContentId))){
			this.reBoxContent = new Element('div').setProperty('id', this.options.reBoxContentId).inject(this.options.reBoxWindowId,'bottom');
			this.reBoxContent.setStyles({
				'background-color': this.options.reboxWindowBGColor,
				'clear': 'both',
				'border': 'none',
				'margin': '0px',
				'padding': '0p',
				'overflow': 'auto',
				'display': 'block',
				'width': this.options.loadWidth,
				'height': this.options.loadHeight,
				'z-index': (this.options.reBoxZindex+4)
			});
		}
		this.buildLoader();
		this.positionReBox();
	},
	buildLoader: function(){
		if($defined($(this.options.reBoxContentId))){
			if(!$defined($(this.options.reBoxLoadId))){
				if(this.options.useTitle){
					$(this.options.reBoxTitleId).set('html', this.options.loadTitle);
				}
				$(this.options.reBoxContentId).set('html',this.options.loadMessage);
				this.loader = new Element('img').setProperties({
					'id': this.options.reBoxLoadId,
					'src': this.options.loadIcon
				})
				this.loader.inject($(this.options.reBoxContentId),'bottom');
				this.loader.setStyles({
					'margin': '12px auto',
					'display': 'block',
					'clear': 'both'
				});
			}
		}
	},
	createReboxWindow: function(caption, html){
		this.positionReBox();
		if($defined($(this.options.reBoxWindowId))){
			this.reBoxClose = new Element('div').setProperty('id', this.options.reBoxCloseId);
			this.reBoxClose.setStyles({
				'position': 'absolute',
				'top': this.options.closeTop,
				'right': this.options.closeRight,
				'overflow': 'hidden',
				'display': 'block',
				'width': this.options.closeW,
				'height': this.options.closeH,
				'background': this.options.closeImage,
				'cursor': 'pointer',
				'z-index': (this.options.reBoxZindex+4)
			});
			(function(){
				if($defined($(this.options.reBoxLoadId))){ $(this.options.reBoxLoadId).destroy(); }
				if($defined($(this.options.reBoxWindowId))){
					this.options.windowOpen.attempt();
					if(html){ 
						$(this.options.reBoxContentId).set('html',html);
					}
					if(this.options.useTitle){
						$(this.options.reBoxTitleId).set('html',caption);
					}
					this.reBoxClose.inject($(this.options.reBoxWindowId),'top');
					this.reBoxClose.addEvent('click', function(){
						this.removeReBox();
					}.bind(this));
				}
				this.reBoxBGClick = true;
				this.reBoxInit();
			}.bind(this)).delay(this.options.resizeDuration);
		}
	}
});
var addAccount = function(passed,element,theaction){
	if(passed){
		var reuseForm = false;
		var holdingContainer = element.getParent('div');
		theaction.stop();
		self.scrollTo(0, 0);
		element.set('send', {
			url: '/server-side/add-account.php',
			onRequest: function() {
				if($defined($('mPro'))){
					$('mPro').destroy();
				}
				if($defined($('mError'))){
					$('mError').destroy();
				}
				$('submit').setStyle('display','none');
				var processingElement  = new Element('div', {'id': 'mPro', 'class': 'message_procesing'});
				processingElement.set('html', 'Processing...');
				processingElement.inject(holdingContainer,'top');
			},
			onSuccess: function(response) {
				$('mPro').destroy();
				var mainErrorCheck = response.trim().split('||');
				if(mainErrorCheck[0]=="ERROR") {
					$('submit').setStyle('display','block');
					var errorElement  = new Element('div', {'id': 'mError', 'class': 'message_error'});
					errorElement.set('html', mainErrorCheck[1]);
					errorElement.inject(holdingContainer,'top');
					(function(){
						$('mError').morph({opacity: 0,height:'0px;',overflow:'hidden','margin-top':'0px','margin-bottom':'0px'});
						(function(){
							$('mError').destroy();
						}).delay(700);
					}).delay(5000);
					reuseForm = true;
				}else{
					holdingContainer.set('morph',{
						duration: 400,
						onComplete: function(){
							holdingContainer.set('html','<div class="message_ok">Registration Completed!</div>'+mainErrorCheck[1]);
							holdingContainer.morph({
								'opacity': '1'
							});
						}
					});
					holdingContainer.morph({
						opacity: 0,
						height: '200px'
					});
				}
			},
			onFailure: function() {
				$('mPro').destroy();
				$('submit').setStyle('display','block');
				var errorElement  = new Element('div', {'id': 'mError', 'class': 'message_error'});
				errorElement.set('html', 'A Transport Error Occured');
				errorElement.inject(holdingContainer,'top');
				(function(){
					$('mError').morph({opacity: 0,height:'0px;',overflow:'hidden','margin-top':'0px','margin-bottom':'0px'});
					(function(){
						$('mError').destroy();
					}).delay(700);
				}).delay(5000);
				reuseForm = true;
			}
		}).send();
		if(reuseForm){
			var myProfile = new FormValidator('sign_up_form', {
				onFormValidate: addAccount,
				evaluateFieldsOnChange: true,
				evaluateFieldsOnBlur: true,
				useTitles: true
			});		
		}
	}
};
function getDiagramID(){
	return $('hmc_diagram_id').get('text');	
}
function getDiagramNO(){
	return $('diagram_no').get('text');	
}
function getActiveOrder(){
	if($defined($('active-order'))){
		var orderParts = $('active-order').get('html').split('-');
		return orderParts['1'];
	}else{
		return false;	
	}
}
function getPartsList(diagram_id,element){
	var partsRequest = new Request({
		url: '/server-side/get-parts-list.php',
		data: 'diagram_id='+diagram_id,
		onRequest: function() {
			$(element).set('html','<div class="ajax_loading">Loading</div>');
		},
		onFailure: function() {
			$(element).set('html','<div class="ajax_error">Sorry there was an internal transport error. Please try your request again later.</div>');
		},
		onSuccess: function(response) {
			$(element).set('html',response.trim());
			if($defined($$(".parts_list"))){
				$$(".parts_list").each(function(el){
					el.addEvents({
						'mouseenter': function(){
							el.tween('background-color','#404040');
						},
						'mouseleave': function() {
							el.tween('background-color','#212121');
						},
						'dblclick': function() {
							openPartInfoPopUp(el.getElement('.parts_list_item_no').get('html').toInt(),getDiagramID());
						}
					});
				});
			}			
		}
	});
	return partsRequest;
}
function openPartInfoPopUp(part_no,diagram_id){
	var customPOP = new reBox();
	customPOP.reBoxForceAjax('Add to Order','/server-side/get-part-info.php?format=popup&diagram_id='+diagram_id+'&part_no='+part_no,275,100);
}
function getPartInfo(part_no){
	var element = $('info_box_content_'+part_no);
	var diagram_id = getDiagramID();
	var partsRequest = new Request({
		url: '/server-side/get-part-info.php',
		data: 'diagram_id='+diagram_id+'&part_no='+part_no,
		onFailure: function() {
			$('info_box_title_'+part_no).set('html','Error');
			$('info_box_content_'+part_no).set('html','<div class="ajax_error">Sorry there was an internal transport error. Please try your request again later.</div>');
		},
		onSuccess: function(response) {
			var partInfoArray = response.trim().split('{SPLIT}');
			$('info_box_title_'+part_no).set('html',partInfoArray['0']);	
			$('info_box_content_'+part_no).set('html',partInfoArray['1']);		
		}
	});
	return partsRequest;
}
function highlightPart(element){
	var flashDelay = 125;
	if($defined($$('div.info_box'))){
		$$('div.info_box').each(function(clel){
			$$('div.item_num').setStyle('background-position','left top');
        	var which_box = clel.get('id');
			$(which_box).dispose();
			diagramInit();
    	});
	}
	if($defined($$('.item_num'))){
		$$('.item_num').setStyle('background-position','left top');
	}
	$$("."+element).setStyle('background-position','left bottom');
	(function() { $$("."+element).setStyle('background-position','left top'); }).delay(flashDelay);
	(function() { $$("."+element).setStyle('background-position','left bottom'); }).delay(flashDelay*2);
	(function() { $$("."+element).setStyle('background-position','left top'); }).delay(flashDelay*3);
	(function() { $$("."+element).setStyle('background-position','left bottom'); }).delay(flashDelay*4);
}
function diagramInit(){
	if($defined($$(".item_num"))){
	    $$("div.item_num").each(function(el){
			var part_no = el.get('text');
			el.removeEvents();
			el.addClass('part_no_'+part_no);
	        el.addEvents({
				'mouseenter': function(){
					el.setStyle('background-position','left bottom');
				},
				'mouseleave' : function() {
					if(!$defined($('info_box_'+part_no))){
						el.setStyle('background-position','left top');
					}
				},
				'click' : function() {
					openPartWindow(el,part_no);
				}
			});
    	});
	}
}
function partWindowPositionTop(el, curTop){
	var diagramH = $('hmc_diagram').getStyle('height').toInt();
	var elT =curTop;
	if(elT>(diagramH/2)){
		var posTop = elT - partWindowHeight;
	}else{
		var posTop = elT;
	}
	return posTop;
}
function partWindowPositionLeft(el, curLeft){
	var diagramW = $('hmc_diagram').getStyle('width').toInt();
	var elL = curLeft;
	if(elL>(diagramW/2)){
		var posLeft = elL - partWindowWidth;
	}else{
		var posLeft = elL;
	}
	return posLeft;
}
function openPartWindow(el,part_no){
	if($defined($$('div.info_box'))){
		$$('div.info_box').each(function(clel){
			$$('div.item_num').setStyle('background-position','left top');
        	var which_box = clel.get('id');
			$(which_box).dispose();
			diagramInit();
    	});
	}
	el.setStyle('background-position','left bottom');
	if(!$defined($('info_box_'+part_no))){
		var createHMCwin = new Element('div', {
			'id': 'info_box_'+part_no,
			'class': 'info_box'
		})
	}else{
		createHMCwin = $('info_box_'+part_no);
	}
	var insideContent = '<div class="info_box_matte"></div><div class="info_box_wrap"><div class="info_box_close">close</div><div class="info_box_title" id="info_box_title_'+part_no+'">---</div><div class="info_box_content" id="info_box_content_'+part_no+'"><div class="ajax_loading">Loading</div></div></div>';
	createHMCwin.set('html',insideContent);
	var thisTop = (el.getStyle('top').toInt()+12);
	var thisLeft = (el.getStyle('left').toInt()+12);
	createHMCwin.setStyles({
		opacity: '0',
		display: 'block',
		width: '0px',
		height: '0px',
		top: thisTop + 'px',
		cursor: 'auto',
		left: thisLeft + 'px'
	});
	createHMCwin.inject(el,'before');
	var partInfo = getPartInfo(part_no);
	partInfo.send()
	$$('div.info_box_matte').setStyle('opacity','.5');
	createHMCwin.setStyle('opacity','1');
	createHMCwin.morph({
		height: partWindowHeight+'px',
		width: partWindowWidth+'px',
		top: partWindowPositionTop(el, thisTop)+'px',
		left: partWindowPositionLeft(el, thisLeft)+'px'
	});
	el.removeEvents();
	$$('div.info_box_close').addEvent('click', function() {
		closePartWindow('info_box_'+part_no, thisTop, thisLeft);
	});
}
function closePartWindow(which_box, thisTop, thisLeft){
	$(which_box).set('morph',{
		duration: 250,
		onComplete: function(){
			$(which_box).dispose();
			$$('div.item_num').setStyle('background-position','left top');
			diagramInit();
		}
	});
	$(which_box).morph({
		height: '0px',
		width: '0px',
		top: thisTop + 'px',
		left: thisLeft + 'px'
	});
}
function openPartsListWindow(){
	$('view_parts_list').removeEvents();
	var diagramID = getDiagramID();
	var diagramNO = getDiagramNO();
	var plWinID = 'pl_win';
	var windowWidth = $$('body').getLast().getStyle('width').toInt();
	var systemWidth = $('body').getStyle('width').toInt();
	var roomOnLeft = ((windowWidth - systemWidth)/2);
	if(roomOnLeft < plWinWidth){
		$('body').setStyle('margin-left',plWinWidth+5);
	}
	var createPLwin = new Element('div', {
		'id': plWinID,
		'class': 'pl_win'
	})
	createPLwin.setStyles({
		'opacity': '0',
		'width': '0px',
		'height': '26px',
		'cursor': 'auto'
	});
	createPLwin.set('html', '<b>Parts list for: '+diagramNO+'</b>');
	createPLwin.inject($('ordering_system_nav'),'top');
	var slidePLwin = new Fx.Morph(createPLwin, {
		transition: Fx.Transitions.Sine.easeOut,
		onComplete: function(){
	        var createPLsub = new Element('div', {
				'id': plWinID+'_sub',
				'class': 'pl_win_sub'
			})
			createPLsub.setStyles({
				'position': 'absolute',
				'top': '26px',
				'left': '0px',
				'background-color': '#212121',
				'opacity': '0',
				'display': 'block',
				'width': '100%',
				'height': '0px',
				'cursor': 'auto'
			});
			createPLsub.inject(createPLwin,'bottom');
			var buildPartsList = getPartsList(diagramID,createPLsub);
			(function(){
				buildPartsList.send()
			}).delay(100);
			var plHeight = ($('hmc_diagram').getStyle('height').toInt());
			createPLsub.set('morph', {
				onComplete: function(){
					$('view_parts_list').set('html',"Close Parts List");
					$('view_parts_list').setStyle('background-image', 'url("/images/dbl_arrows_right.png")');
					$('view_parts_list').addEvent('click', function() {
						closePartsListWindow(plWinID);
					});
					$$('.pl_win_sub').setStyles({
						'overflow-y': 'auto',
						'overflow-x': 'hidden'
					});
					if($defined($$('.parts_list_item_no'))){
						$$('.parts_list_item_no').setStyle('opacity','.75');
					}
					plIsOpen = true;
				}
			});
			createPLsub.morph({'height':plHeight+'px','opacity':'1'});
		}
	});
	slidePLwin.start({
    	'left': '-'+plWinWidth+'px',
    	'width':  plWinWidth+'px',
		'opacity': 1
	});
}
function closePartsListWindow(plWinID){
	$(plWinID+'_sub').setStyle('overflow','hidden');
	var slidePLwin = new Fx.Morph(plWinID+'_sub', {
		transition: Fx.Transitions.Sine.easeOut,
		onComplete: function(){
	        $(plWinID).set('morph', {
				onComplete: function(){
					$('view_parts_list').set('html',"View Parts List");
					$('view_parts_list').setStyle('background-image', 'url("/images/dbl_arrows.png")');
					$('view_parts_list').removeEvents();
					$('view_parts_list').addEvent('click', function() {
						openPartsListWindow();
					});
					$(plWinID).destroy();
					plIsOpen = false;
					var windowWidth = document.body.getStyle('width').toInt();
					var systemWidth = $('body').getStyle('width').toInt();
					var roomOnLeft = (windowWidth - systemWidth)/2;
					if(roomOnLeft < plWinWidth){
						$('body').setStyle('margin-left','auto');
					}
				}
			});
			$(plWinID).morph({'left':'0px','width':'0px','opacity':'0'});
		}
	});
	slidePLwin.start({
    	'height': '0px',
		'opacity': 0
	});
}
function openRecentPartsListWindow(){
	curRecentPartsListText = $('view_recent_parts').get('text');
	$('view_recent_parts').set('html',"Close Parts Window");
	$('view_recent_parts').removeEvents();
	var plWinID = 'recent_pl_win';
	var createPLwin = new Element('div', {
		'id': plWinID,
		'class': 'recent_pl_win'
	});
	createPLwin.setStyles({
		'position': 'absolute',
		'top': '0px',
		'left': '450px',
		'opacity': '0',
		'width': '0px',
		'height': '0px',
		'width': '316px',
		'overflow': 'auto',
		'z-index':'88',
		'background-color': '#212121'
	});
	createPLwin.inject($('hmc_diagram'),'top');
	var buildPartsList = getRecentPartsList(plWinID);
	(function(){
		buildPartsList.send();
	}).delay(175);
	$(plWinID).set('morph', {
		transition: Fx.Transitions.Sine.easeOut,
		onComplete: function(){
			$('view_recent_parts').addEvent('click', function() {
				closeRecentPartsListWindow('recent_pl_win');
			});
			if($defined($$("div#"+plWinID+" p"))){
				$$("div#"+plWinID+" p").each(function(el){
					el.addEvents({
						'mouseenter': function(){
							el.tween('background-color','#404040');
						},
						'mouseleave': function() {
							el.tween('background-color','#212121');
						}
					});
				});
			}
		}
	});
	$(plWinID).morph({
    	'height': '300px',
		'opacity': '.97'
	});
}
function closeRecentPartsListWindow(plWinID){
	if($defined($(plWinID))){
		if($defined($(plWinID))){
			$(plWinID).setStyle('overflow','hidden');
		}
		if($defined($(plWinID))){
			$(plWinID).set('morph', {
				duration: 200,
				onComplete: function(){
					$('view_recent_parts').set('html',curRecentPartsListText);
					if($defined($(plWinID))){
						$(plWinID).destroy()
					}
				}
			});
		}
		if($defined($(plWinID))){
			$(plWinID).morph({
				'height': '0px',
				'opacity': '0'
			});
		}
	}
	(function(){
		$('view_recent_parts').removeEvents();
		$('view_recent_parts').addEvent('click', function() {
			openRecentPartsListWindow();
		});
	}).delay(200);
}
function getRecentPartsList(element){
	var partsRequest = new Request({
		url: '/server-side/get-recent-parts-list.php',
		onRequest: function() {
			$(element).set('html','<div class="ajax_loading">Loading</div>');
		},
		onFailure: function() {
			$(element).set('html','<p>Sorry there was an internal transport error. Please try your request again later.</p>');
		},
		onSuccess: function(response) {
			$(element).set('html',response.trim());
			if($defined($$(".parts_list"))){
				$$(".parts_list").each(function(el){
					el.addEvents({
						'mouseenter': function(){
							el.tween('background-color','#404040');
						},
						'mouseleave': function() {
							el.tween('background-color','#212121');
						},
						'dblclick': function() {
							openPartInfoPopUp(el.getElement('.parts_list_item_no').get('html').toInt(),getDiagramID());
						}
					});
				});
			}			
		}
	});
	return partsRequest;
}
function openSearchWindow(){
	curSearchBarText = $('view_search_bar').get('text');
	$('search_box').setStyles({
		'display':'block'
	});
	$('search_box').set('morph', {
		duration: 320,
		onComplete: function(){
			$('view_search_bar').set('html',"Close Search Box");
			$('view_search_bar').removeEvents();
			$('view_search_bar').addEvent('click', function() {
				closeSearchWindow();
			});
			sbIsOpen = true;
			document.onkeyup = function(event){
        		var event = new Event(event);
        		if (event.code == 13) {
            		searchProducts();
        		}
    		}
		}
	});
	$('search_box').morph({
		'width': '260px',
		'height': '80px',
		'opacity': '.93'
	});
}
function closeSearchWindow(){
	$$('.autocompleter-choices').setStyle('opacity','0');
	$('ajax-search').set('value','');
	$('search_box').setStyles({
		'display':'block'
	});
	$('search_box').set('morph', {
		duration: 320,
		onComplete: function(){
			$('view_search_bar').set('html',curSearchBarText);
			$('view_search_bar').removeEvents();
			$('view_search_bar').addEvent('click', function() {
				openSearchWindow();
			});
			document.onkeyup = null;
			document.onkeydown = null;
			sbIsOpen = false;
		}
	});
	$('search_box').morph({
		'width': '0px',
		'height': '0px',
		'opacity': '1'
	});
}
function addToCart(product_id){
	var thisQty = $('product-'+product_id).get('value');
	var addProduct = new Request({
		url: '/server-side/add-product.php',
		data: 'product_id='+product_id+'&qty='+thisQty,
		onFailure: function() {
			quickAlert('An Error Occured','Sorry there was an internal transport error. Please try your request again later.');
		},
		onSuccess: function(response) {
			switch(response){
				case '1':
					quickAlert('An Error Occured','An unknown error occured, our administrators were notified. Please try again later.');	
				break;
				case '2':
					quickAlert('An Error Occured','Sorry you are no longer logged in. Please use the remember me feature to avoing this.');
					(function(){
						window.location = '/login.php';				
					}).delay(2500);
				break;
				case '3':
					quickAlert('An Error Occured','Sorry there is not an active order in progress, please create an order or browse past orders.');	
				break;
				default:
					if($defined($$('div.info_box'))){
						$$('div.info_box').each(function(clel){
							$$('div.item_num').setStyle('background-position','left top');
							var which_box = clel.get('id');
							$(which_box).dispose();
							diagramInit();
						});
					}
					$('main_nav_ordering').set('html',response);
					$('main_nav_ordering').highlight('#303030');
					var closeReBox = new reBox();
					closeReBox.removeReBox();
				break;				
			}
		}
	});
	addProduct.send();
}
function updateProductQty(product_id,order_id,el){
	var thisQty = $(el+'-'+product_id).get('value').toInt();
	var updateProduct = new Request({
		url: '/server-side/update-product.php',
		data: 'product_id='+product_id+'&order_id='+order_id+'&qty='+thisQty+'&el='+el,
		onFailure: function() {
			quickAlert('An Error Occured','Sorry there was an internal transport error. Please try your request again later.');
		},
		onSuccess: function(response) {
			switch(response){
				case '99':
					$(el+'-'+product_id).value = thisQty;
					$(el+'-'+product_id).highlight('#b0c7ff');
				break;
				case '2':
					quickAlert('An Error Occured','Sorry you are no longer logged in. Please use the remember me feature to avoing this.');
					(function(){
						window.location = '/login.php';				
					}).delay(2500);
				break;
				default:
					quickAlert('An Error Occured','An unknown error occured, our administrators were notified. Please try again later.');	
				break;				
			}
		}
	});
	updateProduct.send();
}
function deleteDivContent(thisURL, thisData, thisElement){
	var confirmDelete = confirm("Are you sure? This cannot be undone.");
	if (confirmDelete){
		var delNow = new Request({
			url: thisURL,
			data: thisData,
			onFailure: function() {
				quickAlert('An Error Occured','Sorry there was an internal transport error. Please try your request again later.');
			},
			onSuccess: function(response) {
				switch(response){
					case '1':
						switch(thisURL){
							case '/server-side/del-prod-from-order.php':
								removeDelElement(thisElement);
								var thisOrderId = thisData.split('=').getLast();
								var curOrderCt = $$('u.order_item_ct_'+thisOrderId).getLast().get('html').toInt();
								$$('u.order_item_ct_'+thisOrderId).each(function(el){
									el.set('html',curOrderCt-1);
									el.highlight('#b0c7ff');
								});
							break;
							case '/server-side/del-prod-from-order.php?tag=tr':
								removeDelElementTR(thisElement);
								var thisOrderId = thisData.split('=').getLast();
								var curOrderCt = $$('u.order_item_ct_'+thisOrderId).getLast().get('html').toInt();
								$$('u.order_item_ct_'+thisOrderId).each(function(el){
									el.set('html',curOrderCt-1);
									el.highlight('#b0c7ff');
								});
							break;
							case '/server-side/del-custom-from-order.php':
								removeDelElement(thisElement);
								var thisOrderId = thisData.split('=').getLast();
								var curOrderCt = $$('u.order_item_ct_'+thisOrderId).getLast().get('html').toInt();
								$$('u.order_item_ct_'+thisOrderId).each(function(el){
									el.set('html',curOrderCt-1);
									el.highlight('#b0c7ff');
								});
							break;
							case '/server-side/del-custom-from-order.php?tag=tr':
								removeDelElementTR(thisElement);
								var thisOrderId = thisData.split('=').getLast();
								var curOrderCt = $$('u.order_item_ct_'+thisOrderId).getLast().get('html').toInt();
								$$('u.order_item_ct_'+thisOrderId).each(function(el){
									el.set('html',curOrderCt-1);
									el.highlight('#b0c7ff');
								});
							break;
							case '/server-side/delete-order.php':
								var deletedDiv = thisData.split('=').getLast();
								var thisDelId = deletedDiv.split('-').getLast();
								if(getActiveOrder()==thisDelId){
									$('main_nav_ordering').set('html','<a href="javascript: void(0);" title="New Order" onClick="createNewOrder(0);" class="button new_order_but" style="margin-top:18px;">New Order</a>');
									$('main_nav_ordering').highlight('#303030');
									$$('p.working_with').destroy();
								}
								removeDelElement(thisElement);
							break;
							default:
								removeDelElement(thisElement);
							break;
						}
					break;
					case '2':
						quickAlert('An Error Occured','Sorry you are no longer logged in. Please use the remember me feature to avoing this.<br /><br />You will be redirected momentarily');
						(function(){
							window.location = '/login.php';				
						}).delay(2500);
					break;
					default:
						quickAlert('An Error Occured','Sorry there was an error. Please try your request again later.');
					break;
				}
			}
		});
		delNow.send();	
	}
}
function removeDelElement(element){
	var curHeight = $(element).getStyle("height");
	var curWidth = $(element).getStyle("width");
	$(element).setStyles({
    	'height': (curHeight-2),
		'width': curWidth,
    	'background-image': 'none',
    	'overflow': 'hidden',
		'border': 'none'
	});
	$(element).empty();
	$(element).set('html','<p style="text-align:center;color:#ff0000;font-size:18px;line-height:'+curHeight+';padding:0px;margin:0px;">DELETED</p>');
	$(element).set('morph',{
		duration: 125,
		onComplete: function(){
			$(element).set('morph',{
				duration: 1250,
				transition: Fx.Transitions.Expo.easeOut,
				onComplete: function(){
					$(element).destroy();
				}
			});
			$(element).morph({
				'height': '0px',
				'opacity': '0',
				'border:': '0px',
				'padding-top': '0px',
				'padding-bottom': '0px',
				'margin-bottom': '0px',
				'margin-top': '0px'
			});
		}
	});
	$(element).morph({
		'background-color': '#ffe3e3',
		'border': '1px solid #ff0000'
	});
}
function removeDelElementTR(element){
	$(element).highlight('#ffe3e3', '#ffffff');
	(function(){
		$(element).destroy();
	}).delay(500)
}
function adminChangeOrderStatus(newStatus,order_id,element){
	if(newStatus==2){
		var submitData = 'order_id='+order_id+'&newstatus='+newStatus;
		if(confirm('Would you like to notify the customer of this status change?')) {
			submitData += '&sendemail=1';
		}
		var printNow = new Request({
			url: '/server-side/admin-view-po.php',
			data: submitData,
			onFailure: function() {
				quickAlert('An Error Occured','Sorry there was an internal transport error. Please try your request again later.');
			},
			onSuccess: function(response) {
				switch(response){
					case '1':
						quickAlert('An Error Occured','An unknown error occured, our administrators were notified. Please try again later.');	
					break;
					case '2':
						quickAlert('An Error Occured','Sorry you are no longer logged in. Please use the remember me feature to avoing this.');
						(function(){
							window.location = '/login.php';				
						}).delay(2500);
					break;
					default:
						var windowUrl = 'about:blank';
						var uniqueName = new Date();
						var windowName = 'Print' + uniqueName.getTime();
						var printWindow = window.open(windowUrl, windowName, 'left=0,top=0,width=200,height=75');
						printWindow.document.write(response);
						printWindow.document.close();
						printWindow.focus();
						printWindow.print();
						printWindow.close();
					break;				
				}
			}
		});
		printNow.send();
	}
	if(newStatus==3){
		var submitData = 'order_id='+order_id+'&newstatus='+newStatus;
		if(confirm('Would you like to notify the customer of this status change?')) {
			submitData += '&sendemail=1';
		}
		var updateNow = new Request({
			url: '/server-side/admin-mark-shipped.php',
			data: submitData,
			onFailure: function() {
				quickAlert('An Error Occured','Sorry there was an internal transport error. Please try your request again later.');
			},
			onSuccess: function(response) {
				switch(response){
					case '1':
						quickAlert('An Error Occured','An unknown error occured, our administrators were notified. Please try again later.');	
					break;
					case '2':
						quickAlert('An Error Occured','Sorry you are no longer logged in. Please use the remember me feature to avoing this.');
						(function(){
							window.location = '/login.php';				
						}).delay(2500);
					break;
					case '3':
						quickAlert('An Error Occured','You are not authorized to view this area.');	
					break;
				}
			}
		});
		updateNow.send();
	}
	var curHeight = $(element).getStyle("height");
	var curWidth = $(element).getStyle("width");
	$(element).setStyles({
    	'height': (curHeight-2),
		'width': curWidth,
    	'background-image': 'none',
    	'overflow': 'hidden',
		'border': 'none'
	});
	$(element).empty();
	$(element).set('html','<p style="text-align:center;color:#00cc00;font-size:18px;line-height:'+curHeight+';padding:0px;margin:0px;">Processed</p>');
	$(element).set('morph',{
		duration: 125,
		onComplete: function(){
			$(element).set('morph',{
				duration: 1250,
				transition: Fx.Transitions.Expo.easeOut,
				onComplete: function(){
					$(element).destroy();
				}
			});
			$(element).morph({
				'height': '0px',
				'opacity': '0',
				'border:': '0px',
				'padding-top': '0px',
				'padding-bottom': '0px',
				'margin-bottom': '0px',
				'margin-top': '0px'
			});
		}
	});
	$(element).morph({
		'background-color': '#ccffcc',
		'border': '1px solid #00cc00'
	});
}
function adminPrintOrder(newStatus,order_id,element){
	var submitData = 'order_id='+order_id+'&newstatus='+newStatus;
	var printNow = new Request({
		url: '/server-side/admin-view-po.php',
		data: submitData,
		onFailure: function() {
			quickAlert('An Error Occured','Sorry there was an internal transport error. Please try your request again later.');
		},
		onSuccess: function(response) {
			switch(response){
				case '1':
					quickAlert('An Error Occured','An unknown error occured, our administrators were notified. Please try again later.');	
				break;
				case '2':
					quickAlert('An Error Occured','Sorry you are no longer logged in. Please use the remember me feature to avoing this.');
					(function(){
						window.location = '/login.php';				
					}).delay(2500);
				break;
				default:
					var windowUrl = 'about:blank';
					var uniqueName = new Date();
					var windowName = 'Print' + uniqueName.getTime();
					var printWindow = window.open(windowUrl, windowName, 'left=0,top=0,width=200,height=75');
					printWindow.document.write(response);
					printWindow.document.close();
					printWindow.focus();
					printWindow.print();
					printWindow.close();
				break;				
			}
		}
	});
	printNow.send();
}
function ajaxUtilities(theData,containerID,theType){
	new Request({
			url: '/server-side/utilities.php',
			onSuccess: function(response){
				switch(theType){
					case 'name':
						$(containerID).set('color', '#ffffff');
						$(containerID).set('value',response.trim()); 
						$(containerID).tween('color', ['#ffffff', '#000000']);
					break;
					case 'phone':
						$(containerID).set('color', '#ffffff');
						$(containerID).set('value',response.trim()); 
						$(containerID).tween('color', ['#ffffff', '#000000']);
					break;
					case 'zip':
						var addressParts = response.trim().split('||');
						$('city').set('color', '#ffffff');
						$('city').set('value',addressParts[1]); 
						$('city').tween('color', ['#ffffff', '#000000']);
						$('state').set('color', '#ffffff');
						$('state').set('value',addressParts[2]);
						$('state').tween('color', ['#ffffff', '#000000']);
					break;
				}
			}
		}).send(theData);
}
function quickAlert(title, content){
	var customQA = new reBox();
	customQA.reBoxForceAjax(title,'/server-side/show-error.php?title='+escape(title)+'&content='+escape(content),300,150);
}
function selectDiagram(type,id,name){
	var customSA = new reBox();
	customSA.reBoxForceAjax('Select Diagram','/server-side/select-diagram.php?type='+escape(type)+'&id='+escape(id)+'&name='+escape(name),400,300);
}
function showLoad(element){
	if($defined($$('.hmc_diagram_loading'))){
		$$('.hmc_diagram_loading').dispose();
	}
	var loadingDiv = new Element('div', {
		'class': 'hmc_diagram_loading'
	})
	loadingDiv.set('html','Loading Content');
	loadingDiv.setStyle('opacity', '1');
	loadingDiv.inject($(element));
}
function hideLoad(){
	$$('.hmc_diagram_loading').set('morph',{
		duration: 250,
		onComplete: function(){
			$$('.hmc_diagram_loading').destroy();
		}
	});
	$$('.hmc_diagram_loading').morph({
		opacity: '0'
	});
}
function loadDiagram(diagram_id){
	$('view_parts_list').set('opacity','0');
	var element = $('hmc_diagram');
	var buildPage = new Request({
		url: '/server-side/show-diagram.php',
		data: 'diagram_id='+diagram_id,
		onRequest: function() {
			element.set('html','');
			showLoad('hmc_diagram');
		},
		onFailure: function() {
			var failresponse  = new Element('div', {'class': 'message_error'});
			failresponse.setStyles({
				'position': 'absolute',
				'top': '25px',
				'left': '10%',
				'width': '80%',
				'padding':'0px',
				'margin': '0px'
			});
			failresponse.set('html','Sorry there was an internal transport error. Please try your request again later.');
			hideLoad();
			(function(){
				element.set('html',failresponse);
			}).delay(300);
		},
		onSuccess: function(response) {
			hideLoad();
			var diagramArray = response.trim().split('{SPLIT}');
			if(diagramArray[0]=='Error'){
				var failresponse  = new Element('div', {'class': 'message_error'});
				failresponse.setStyles({
					'position': 'absolute',
					'top': '25px',
					'left': '10%',
					'width': '80%',
					'padding':'0px',
					'margin': '0px'
				});
				failresponse.set('html',diagramArray[1]);
				(function(){
					element.set('html',failresponse);
				}).delay(300);
			}else{
				element.morph({'height':diagramArray[7]+'px'});
				element.setStyles({
					'background-image': 'url('+diagramArray[5]+')',
					'background-repeat': 'no-repeat'
				});
				var diagramBox = '<div id="diagram_info"><div id="diagram_title">HMC Products, Inc</div><div id="diagram_desc">'+diagramArray[4]+'</div><div id="diagram_machine">'+diagramArray[2]+'</div><div id="diagram_no">'+diagramArray[3]+'</div><div id="hmc_diagram_id">'+diagramArray[1]+'</div></div><div class="ordering_hint">click on any # for more info.</div>';
				(function(){
					element.set('html',diagramBox+diagramArray[8]);
					$('view_parts_list').fade('1');
					diagramInit();
				}).delay(300);
			}
		}
	});
	buildPage.send();
}
function listDiagrams(){
	$('view_parts_list').set('opacity','0');
	var element = $('order_page_home_box');
	var buildPage = new Request({
		url: '/server-side/list-diagrams.php',
		onRequest: function() {
			element.set('html','');
			showLoad('order_page_home_box');
		},
		onFailure: function() {
			hideLoad();
			(function(){
				element.set('html','Sorry there was an internal transport error. Please try your request again later.');
				resetHomeButtons($('browse_diagrams'));
			}).delay(300);
		},
		onSuccess: function(response) {
			hideLoad();
			(function(){
				element.set('html',response.trim());
				resetHomeButtons($('browse_diagrams'));
				$$('#order_page_home_box p').each(function(el){
					el.setStyle('cursor','pointer');
					el.set('morph', {
						duration: 175
					});
					el.addEvents({
						'mouseenter': function(){
							el.morph({
								'background-color':'#e9e9e9'
							});
						},
						'mouseleave' : function() {
							el.morph({
								'background-color':'#ffffff'
							});
						},
						'click': function() {
							loadDiagram(el.getElement('span').get('html').toInt());
						}
					});
				});
			}).delay(300);
		}
	});
	buildPage.send();
}
function listCompanyInfo(){
	$('view_parts_list').set('opacity','0');
	var element = $('order_page_home_box');
	var buildPage = new Request({
		url: '/server-side/list-company-info.php',
		onRequest: function() {
			element.set('html','');
			showLoad('order_page_home_box');
		},
		onFailure: function() {
			hideLoad();
			(function(){
				element.set('html','Sorry there was an internal transport error. Please try your request again later.');
				resetHomeButtons($('browse_diagrams'));
			}).delay(300);
		},
		onSuccess: function(response) {
			hideLoad();
			(function(){
				element.set('html',response.trim());
				resetHomeButtons($('order_page_home_heading'));
			}).delay(300);
		}
	});
	buildPage.send();
}
function listPastOrders(status){
	$('view_parts_list').set('opacity','0');
	var element = $('order_page_home_box');
	var buildPage = new Request({
		url: '/server-side/list-past-orders.php',
		data: 'status='+status,
		onRequest: function() {
			element.set('html','');
			showLoad('order_page_home_box');
		},
		onFailure: function() {
			hideLoad();
			(function(){
				element.set('html','Sorry there was an internal transport error. Please try your request again later.');
				resetHomeButtons($('browse_diagrams'));
			}).delay(300);
		},
		onSuccess: function(response) {
			hideLoad();
			(function(){
				element.set('html',response.trim());
				resetHomeButtons($('past_orders'));
				if($defined($$('.c-delete-order'))){
					$$('.c-delete-order').each(function(el){
						el.addEvent('click', function() {
							deleteDivContent('/server-side/delete-order.php', 'order_id='+el.getParent('div').get('id'), el.getParent('div').get('id'));
						});
					});
				}
				if($defined($$('.c-cont-order'))){
					$$('.c-cont-order').each(function(el){
						el.addEvent('click', function() {
							swithOrder(el.getParent('div').get('id'));
						});
					});
				}
				if($defined($$('.c-view-order'))){
					$$('.c-view-order').each(function(el){
						el.addEvent('click', function() {
							var customVO = new reBox();
							customVO.reBoxForceAjax('View Order','/server-side/view-order.php?order_id='+el.getParent('div').get('id'),400,300);
						});
					});
				}
				if($defined($$('.c-view-po'))){
					$$('.c-view-po').each(function(el){
						el.addEvent('click', function() {
							var customVPO = new reBox();
							customVPO.reBoxForceAjax('View Purchase Order','/server-side/view-po.php?order_id='+el.getParent('div').get('id').split('-').getLast(),700,400);
						});
					});
				}
			}).delay(300);
		}
	});
	buildPage.send();
}
function buildOrderPage(whichMod){
	if($defined($('pl_win'))){
		closePartsListWindow('pl_win');	
	}
	if($defined($('recent_pl_win'))){
		closeRecentPartsListWindow('recent_pl_win');
	}
	$('view_parts_list').set('opacity','0');
	var element = $('hmc_diagram');
	element.set('html','');
	element.setStyle('height','auto');
	element.setStyle('background-image','none');
	var buildPage = new Request({
		url: '/server-side/order-page-home.php',
		onRequest: function() {
			$('hmc_diagram').set('html','');
			showLoad('ordering_system');
		},
		onFailure: function() {
			hideLoad();
			(function(){
				element.set('html','<div class="message_error" style="position:absolute;top:-5px;left:0;right:0;">Sorry there was an internal transport error. Please try your request again later.</div>');
				resetHomeButtons($('browse_diagrams'));
			}).delay(300);
		},
		onSuccess: function(response) {
			hideLoad();
			(function(){
				$('hmc_diagram').set('html',response.trim());
				switch(whichMod){
					case '1':
						listDiagrams();
					break;
					default:
						listCompanyInfo();
					break;
				}
				resetHomeButtons($('order_page_home_heading'));
				if($defined($('order_page_home_heading'))){
					$('order_page_home_heading').addEvent('click', function() {
						listCompanyInfo();
					});
				}
				if($defined($('browse_diagrams'))){
					$('browse_diagrams').addEvent('click', function() {
						listDiagrams();
					});
				}
				if($defined($('past_orders'))){
					$('past_orders').addEvent('click', function() {
						listPastOrders(10);
					});
				}
				if($defined($('new_order'))){
					$('new_order').addEvent('click', function() {
						createNewOrder(0);
					});
				}
				if($defined($('enter_part'))){
					$('enter_part').addEvent('click', function() {
						manuallyEnterPart();
					});
				}
			}).delay(300);
		}
	});
	buildPage.send();
}
function searchProducts(){
	if($defined($('pl_win'))){
		closePartsListWindow('pl_win');	
	}
	if($defined($('recent_pl_win'))){
		closeRecentPartsListWindow('recent_pl_win');
	}
	$('view_parts_list').set('opacity','0');
	var element = $('hmc_diagram');
	element.setStyle('height','auto');
	element.setStyle('background-image','none');
	if($('ajax-search').value.length>0){
		var buildPage = new Request({
			url: '/server-side/search-products.php',
			data: 'q='+$('ajax-search').value,
			onRequest: function() {
				$('hmc_diagram').set('html','');
				showLoad('ordering_system');
			},
			onFailure: function() {
				closeSearchWindow();
				hideLoad();
				(function(){
					element.set('html','<div class="message_error" style="position:absolute;top:-5px;left:0;right:0;">Sorry there was an internal transport error. Please try your request again later.</div>');
				}).delay(300);
			},
			onSuccess: function(response) {
				closeSearchWindow();
				hideLoad();
				(function(){
					$('hmc_diagram').set('html',response.trim());
					$$('div.three_col_mid').setStyle('height',$('three_col_wrapper').getStyle('height'))
				}).delay(300);
			}
		});
		buildPage.send();
	}else{
		quickAlert('Search string was empty','Please provide a search phrase before pressing submit');
	}
}
function resetHomeButtons(thisActive){
	$$('.homeButtons').each(function(el){
		el.setStyle('cursor','pointer');
		el.set('morph', {
			duration: 125
		});
		el.addEvents({
			'mouseenter': function(){
				el.morph({
					'background-color':'#91b1ff',
					'color': '#ffffff'
				});
			},
			'mouseleave' : function() {
				el.morph({
					'background-color':'#f8f8f8',
					'color':'#000000'
				});
			}
		});
		el.removeClass('homeButtonActive');
	});
	thisActive.addClass('homeButtonActive');
}
function manuallyEnterPart(){
	var customEP = new reBox();
	customEP.reBoxForceAjax('Manually Enter Part','/server-side/enter-part.php',350,215);
}
function createNewOrder(addnow){
	var customNO = new reBox();
	customNO.reBoxForceAjax('Create New Order','/server-side/new-order.php?addnow='+addnow,285,110);
}
function swithOrder(order_id){
	var loRedirect = function(loc){
		(function(){
			window.location='/ordering_system.php';
		}).delay(1750)
	};
	var customSWO = new reBox({
		windowOpen: loRedirect
	});
	customSWO.reBoxForceAjax('Switch Order','/server-side/switch-order.php?order_id='+order_id,275,110);
}
function printInvoice(order_id){
		var printNow = new Request({
		url: '/server-side/view-po.php',
		data: 'order_id='+order_id+'&print=1',
		onFailure: function() {
			quickAlert('An Error Occured','Sorry there was an internal transport error. Please try your request again later.');
		},
		onSuccess: function(response) {
			switch(response){
				case '1':
					quickAlert('An Error Occured','An unknown error occured, our administrators were notified. Please try again later.');	
				break;
				case '2':
					quickAlert('An Error Occured','Sorry you are no longer logged in. Please use the remember me feature to avoing this.');
					(function(){
						window.location = '/login.php';				
					}).delay(2500);
				break;
				default:
					var windowUrl = 'about:blank';
					var uniqueName = new Date();
					var windowName = 'Print' + uniqueName.getTime();
					var printWindow = window.open(windowUrl, windowName, 'left=0,top=0,width=200,height=75');
					printWindow.document.write(response);
					printWindow.document.close();
					printWindow.focus();
					printWindow.print();
					printWindow.close();
				break;				
			}
		}
	});
	printNow.send();
}
function emailInvoice(order_id){
	var customEI = new reBox();
	customEI.reBoxForceAjax('Sending Purchase Order Copy','/server-side/send-po.php?order_id='+order_id,300,150);
}
function placeOrder(order_id){
	var customPL = new reBox();
	customPL.reBoxForceAjax('Please confirm your order','/server-side/place-order.php?order_id='+order_id,720,400);
}
function submitOrder(order_id){
	if($defined($('shipping_id'))){
		var shippingVar = $('shipping_id').get('value');
		if(shippingVar>0){
			var customSO = new reBox();
			customSO.reBoxForceAjax('Processing Order','/server-side/place-order.php?submit=1&order_id='+order_id+'&shipping_id='+shippingVar,400,180);
			$('main_nav_ordering').set('html','<a href="javascript: void(0);" title="New Order" onClick="createNewOrder(0);" class="button new_order_but" style="margin-top:18px;">New Order</a>');
			$$('p.working_with').destroy();
			if($defined($('order_page_home_box'))){
				listCompanyInfo();
			}
		}else{
			$('shipping_id').setStyle('background-color','pink');
			alert('Please select shipping method');
		}
	}else{
		$('shipping_id').setStyle('background-color','pink');
		alert('Please select shipping method');	
	}
}
window.addEvent('domready', function() {
	$$('html').setStyle('overflow-y','scroll');
	defaultReBox = new reBox();
	if($defined($('adminPanel'))){
		$('adminPanelNav').set('opacity','.88');
		var toggleAdmin = 0;
		$('adminPanelTab').addEvent('click', function() {
			if(toggleAdmin==1){
				$('adminPanel').tween('top','-80px');
				toggleAdmin=0;
			}else{
				$('adminPanel').tween('top','0px');
				toggleAdmin=1;
			}
		});
	}
	var loRedirect = function(){
		(function(){
			window.location='/';
		}).delay(1500)
	};	
	var reBoxLogOut = new reBox({
		link_class: 'sign_out',
		windowOpen: loRedirect
	});
});