function PageOrder() {
	
	// Initialize Variables
	
	// Objects Sum Price
	var OrderTotalPages = $('OrderTotalPages').getElement('strong span');
	var OrderTotalSubPages = $('OrderTotalSubPages').getElement('strong span');
	var OrderTotalOptions = $('OrderTotalOptions').getElement('strong span');
	var OrderTotalJS = $('OrderTotalJS').getElement('strong span');
	var OrderTotalCMS = $('OrderTotalCMS').getElement('strong span');
	var OrderTotalDiscount = $('OrderTotalDiscount').getElement('strong span');
	var OrderTotalTotal = $('OrderTotalTotal').getElement('a span');
	var OrderTotalTotal2 = $('OrderTotalTotal2').getElement('strong span');
	
	var OrderPricePlan = $('OrderPricePlan');
	var OrderDiscount = $('OrderDiscount');

	// Objects Quantity
	var OrderTotalPagesCount = $('OrderTotalPages').getElement('b input');
	var OrderTotalSubPagesCount = $('OrderTotalSubPages').getElement('b input');
	var OrderTotalOptionsCount = $('OrderTotalOptions').getElement('b');
	var OrderTotalJSCount = $('OrderTotalJS').getElement('b');
	var OrderTotalCMSCount = $('OrderTotalCMS').getElement('b');
	var OrderTotalDiscountCount = $('OrderTotalDiscount').getElement('b span');
	
	// Objects Options
	var OrderItemsOptionsMarkup = $$('.BoxCOrderFieldTypeMarkup .BoxCOrderItem .pItem .FormCheckBox');
	var OrderItemsOptionsJS = $$('.BoxCOrderFieldTypeJS .BoxCOrderItem .pItem .FormCheckBox');
	var OrderItemsOptionsCMS = $$('.BoxCOrderFieldTypeCMS .BoxCOrderItem .pItem .FormCheckBox');
	
	// Objects Total Item Box
	var OrderItemBoxOptionsMarkup = $('OrderTotalOptions');
	var OrderItemBoxOptionsJS = $('OrderTotalJS');
	var OrderItemBoxOptionsCMS = $('OrderTotalCMS');
	var OrderItemBoxDiscount = $('OrderTotalDiscount');
	
	
	
	function FireRefresh() {
		$('FeTotalPages').fireEvent('change');
	};
	
	
	
	// Toggle Slide | Order Fields
	var MySlide1 = '.BoxCOrderField';
	var MySlide1Toggle = 'h3';
	var MySlide1Content = 'div.BoxDContent';
	
	function ToggleBoxCOrderFields() {
		$$(MySlide1).each(function(item) {
			var thisSlider = new Fx.Slide(item.getElement(MySlide1Content), {
				duration: 300,
				transition: Fx.Transitions.linear
			});
			// thisSlider.hide();
			var fThisSliderToggle = function() {
				thisSlider.toggle();
			};
			item.getElement(MySlide1Toggle).addEvent('click', fThisSliderToggle);
			item.getElement('.BoxBRC4t').addEvent('click', fThisSliderToggle);
			item.getElement('.BoxBRC4b').addEvent('click', fThisSliderToggle);
		});
		
		$$('.BoxCOrderFieldTypeMarkup h3')[0].fireEvent('click');
		$$('.BoxCOrderFieldTypeJS h3')[0].fireEvent('click');
		$$('.BoxCOrderFieldTypeCMS h3')[0].fireEvent('click');
	};
	
	
	
	// Accordion | Order Items
	var MyAccordion1 = '.BoxCOrderItems';
	var MyAccordion1Toggler = '.BoxCOrderItems .BoxCOrderItem b';
	var MyAccordion1Element = '.BoxCOrderItems .BoxCOrderItem .pDetails';
	
	function AccordionBoxCOrderItem() {
		var myAccordion = new Accordion($(MyAccordion1), MyAccordion1Toggler, MyAccordion1Element, {
			opacity: false,
			display: -1,
			alwaysHide: true,
			transition: Fx.Transitions.linear,
			duration: 100,
			onActive: function(toggler, element) {
				toggler.setStyle('color', '#930');
			},
			onBackground: function(toggler, element) {
				toggler.setStyle('color', '#333');
			}
		},
		$(MyAccordion1));
	
		$$(MyAccordion1Toggler).addEvent('mouseenter',
		function() {
			this.fireEvent('click');
		});
	
	};
	
	
	
	// Slider | Change Pages Ammount
	function SliderPages() {
	
		var mySlide1 = new Slider($('BoxDSlider1'), $('BoxDSlider1Knob'), {
			steps: 10,
			wheel: true,
			onChange: function(pos) {
				$('FeTotalPages').set('value', pos);
				FireRefresh();
			}
		}).set(1);
	
		$('FeTotalPages').addEvent('change',
		function() {
			mySlide1.set($('FeTotalPages').get('value'));
		});
	
		var mySlide2 = new Slider($('BoxDSlider2'), $('BoxDSlider2Knob'), {
			steps: 20,
			wheel: true,
			onChange: function(pos) {
				$('FeTotalSubPages').set('value', pos);
				FireRefresh();
			}
		}).set(0);
	
		$('FeTotalSubPages').addEvent('change',
		function() {
			mySlide2.set($('FeTotalSubPages').get('value'));
		});
	
	};
	
	
	
	// Scroller | Price Plan Changer
	function ChangerPricePlan() {
		var OrderPricePlan = $('OrderPricePlan');
		
		var el = $('BoxCOrderPlanWrap');
		var ButtonsNext = $$('.BoxCPrice a');
		var q = 3;
		var h = 300;
		// var fullheight = el.get('height');
		var offset = 0;
		var plan = OrderPricePlan.selectedIndex + 1;
		
		var morph = new Fx.Morph('BoxCOrderPlanWrap', {
			duration: 1000,
			transition: Fx.Transitions.Circ.easeOut
		});
		
		var FxChange = function(e) {
			e.stop();
			plan = OrderPricePlan.selectedIndex - 1;
			if (plan < 0) { plan = q-1 };
			if (plan >= q) { plan = 0 };
			offset = -h * (plan);
			morph.start({ 'margin-left': offset });
			OrderPricePlan.options[plan].selected = true;
			FireRefresh();
		};
		
		var FnButtonsBind = function(item) {
			item.addEvent('click', FxChange);
		};
		
		ButtonsNext.each(FnButtonsBind);
	};
	
	
	// Scroller | Discount Changer
	function ChangerDiscount() {
		var OrderDiscount = $('OrderDiscount');
		
		var el = $('BoxCOrderDiscountWrap');
		var ButtonsNext = $$('.BoxCOrderDiscountItem a');
		var q = 4;
		var h = 105;
		var offset = 0;
		var plan = OrderDiscount.selectedIndex + 1;
		
		var morph = new Fx.Morph('BoxCOrderDiscountWrap', {
			duration: 1000,
			transition: Fx.Transitions.Circ.easeOut
		});
		
		var FxChange = function(e) {
			e.stop();
			plan = OrderDiscount.selectedIndex - 1;
			if (plan < 0) { plan = q-1 };
			if (plan >= q) { plan = 0 };
			offset = -h * (plan);
			morph.start({ 'margin-top': offset });
			OrderDiscount.options[plan].selected = true;
			FireRefresh();
		};
		
		var FnButtonsBind = function(item) {
			item.addEvent('click', FxChange);
		};
		
		[ButtonsNext, $('BoxCOrderDiscountChange')].each(FnButtonsBind);
	};
	
	
	
	// Calculator | Fn Get and Set
	function myGet(obj) {
		return obj.get('text').toInt();
	};
	function mySet(obj, value) {
		return obj.set('text', value);
	};
	function myGetValue(obj) {
		// return obj.get('value').toInt();
		return obj.value;
	};
	function mySetValue(obj, value) {
		// return obj.set('value', value);
		return obj.value = value;
	};
	
	
	
	// Calculator | Order Total Count
	function OrderTotalCount() {
		
		// Calculator | Order Options Count
		function CountOrderOptions() {
			function CountOrderOption(option, optioncount, optionvalue) {
				var count = 0;
				var value = 0;
				function calc(item) {
					if (item.checked) {
						count = count + 1;
						value = value + item.value.toInt();
					};
				};
				
				option.each(calc);
				mySet(optioncount, count);
				mySet(optionvalue, value);
			};
			
			CountOrderOption(OrderItemsOptionsMarkup, OrderTotalOptionsCount, OrderTotalOptions);
			CountOrderOption(OrderItemsOptionsJS, OrderTotalJSCount, OrderTotalJS);
			CountOrderOption(OrderItemsOptionsCMS, OrderTotalCMSCount, OrderTotalCMS);
			if (myGet(OrderTotalCMS) == 0) { mySet(OrderTotalCMSCount, 0) };
			
			function OrderOptionsSlider(item) {
				var morph = new Fx.Morph(item, {
					duration: 400,
					transition: Fx.Transitions.Back.easeInOut
				});
				var fSliderHide = function() {
					var HideEff1 = function() { morph.start({ 'opacity': '0' }) };
					var HideEff2 = function() { morph.start({ 'margin-left': [ '0px', '-76px'] }) };
					var HideEff3 = function() { morph.start({ 'display': 'none' }) };
					morph.start({ 'opacity': '0' }).chain(HideEff2).chain(HideEff3);
				};
				var fSliderShow = function() {
					var ShowEff1 = function() { morph.start({ 'display': 'block' }) };
					var ShowEff2 = function() { morph.start({ 'margin-left': [ '-76px', '0px'] }) };
					var ShowEff3 = function() { morph.start({ 'opacity': '1' }) };
					morph.start({ 'display': 'block' }).chain(ShowEff2).chain(ShowEff3);
				};
				// var fSlideToggle = function() { if (item.getStyle('display') == 'none' ) { fSliderShow(); } else { fSliderHide(); }; };
				if ((item.getStyle('display') != 'none') && (myGet(item.getElement('b')) == 0)) { fSliderHide(); }; 
				if ((item.getStyle('display') == 'none') && (myGet(item.getElement('b')) != 0)) { fSliderShow(); }; 
			};
			
			[OrderItemBoxOptionsMarkup, OrderItemBoxOptionsJS, OrderItemBoxOptionsCMS, OrderItemBoxDiscount].each(OrderOptionsSlider);
		};
		
		
		
		// Calculator | Order Total
		function CountOrderTotalTotal() {
			var Price = OrderPricePlan.value;
			var Discount = OrderDiscount.value / 100;
			
			mySet(OrderTotalDiscountCount, Discount * 100);
			mySet(OrderTotalPages, myGetValue(OrderTotalPagesCount) * Price);
			mySet(OrderTotalSubPages, myGetValue(OrderTotalSubPagesCount) * Price * 0.5);
			
			CountOrderOptions();
			
			var OrderTotalSubTotalValue = myGet(OrderTotalPages) + myGet(OrderTotalSubPages) + myGet(OrderTotalOptions) + myGet(OrderTotalJS) + myGet(OrderTotalCMS);
			var OrderTotalDiscountValue = (OrderTotalSubTotalValue * myGet(OrderTotalDiscountCount)/100).round();
			var OrderTotalTotalValue = OrderTotalSubTotalValue - OrderTotalDiscountValue;
			mySet(OrderTotalDiscount, OrderTotalDiscountValue);
			mySet(OrderTotalTotal, OrderTotalTotalValue);
			mySet(OrderTotalTotal2, OrderTotalTotalValue);
			mySetValue($('FeTotalPrice'), OrderTotalTotalValue);
		};
	
		function OrderTotalBind() {
			var BindArrChange = [ OrderTotalPagesCount, OrderTotalSubPagesCount, OrderPricePlan, OrderDiscount ];
			var BindArrClick = [ OrderItemsOptionsMarkup, OrderItemsOptionsJS, OrderItemsOptionsCMS ];
			var FnBindArrChange = function(item) { item.addEvent('change', CountOrderTotalTotal); };
			var FnBindArrClick = function(item) { item.addEvent('click', CountOrderTotalTotal); };
			BindArrChange.each(FnBindArrChange);
			BindArrClick.each(FnBindArrClick);
		};
	
		CountOrderTotalTotal()
		OrderTotalBind();
	};
	
	
	function FormSubmitBind() {
		var FormOrder = $('FormOrder');
		var Arr1 = $$('.FormSubmit');
		var FnBindFormSubmit = function(item) {
			item.addEvent('click',
			function() {
				// FormOrder.submit();
				// FormOrder.fireEvent('submit');
				// $('FormSubmit').fireEvent('click');
				// CheckFormOrder.reinitialize;
			});
		};
		Arr1.each(FnBindFormSubmit);
	};
	


	// FormSubmitBind();
	ChangerPricePlan();
	ChangerDiscount();
	SliderPages();
	OrderTotalCount();
	ToggleBoxCOrderFields();
	AccordionBoxCOrderItem();
};

var CheckFormOrder = false;

function FormValidatorOrder() {
	var CheckFormOrder = new FormCheck('FormOrder', {
		display : {
			errorsLocation : 3,
			indicateErrors : 2,
			showErrors : 0,
			addClassErrorToField : 1,
			flashTips : true,
			fadeDuration : 1000,
			scrollToFirst : true
		}
	});
};

function FnValidateFileUpload(el) {
	
	function FilesUploaded() {
		var condition = false;
		var inputs = $$('.BoxCUploadFiles ul li input');
		var fcheck = function(item) { if (item.checked) {condition = true};	};
		inputs.each(fcheck);
		if (condition) { return true } else { return false };
	};
	
	// var ConditionFile1 = $('FeFileUpload').get('value').test(/[^.*]/);
	var ConditionFile1 = FilesUploaded();
	var ConditionFile2 = $('FeFileUrl').value.test(/^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*$/i);
	var ConditionFile3 = $('FeFileEmail').get('checked');
	var ConditionFile = ConditionFile1 || ConditionFile2 || ConditionFile3;
	if (!ConditionFile) {
        el.errors.push("You should provide us with the source design to start work.");
        return false;
    } else {
    	el.errors = [];
    	el.isOk = true;
        return true;
    }
};


function FilesUploader() {
 
	var up = new FancyUpload3.Attach('demo-list', '#demo-attach, #demo-attach-2', {
		path: '../../scripts/swiff.uploader.swf',
		url: '../../scripts/files_upload.php',
		fileSizeMax: 100 * 1024 * 1024,
		fileListMax: 5,
 
		verbose: true,
 
		onSelectFail: function(files) {
			files.each(function(file) {
				new Element('li', {
					'class': 'file-invalid',
					events: {
						click: function() {
							this.destroy();
						}
					}
				}).adopt(
					new Element('span', {html: file.validationErrorMessage || file.validationError})
				).inject(this.list, 'bottom');
			}, this);	
		},
 
		onFileSuccess: function(file, response) {
			var json = new Hash(JSON.decode(response, true) || {});
			var filesrc = json.get('src');
			new Element('input', {
			    type: 'checkbox',
			    'checked': true,
			    'class': 'FormCheckBox',
			    'name': 'files[uploaded][' + file.id + ']',
			    'value': filesrc
			}).inject(file.ui.element, 'top');
			file.ui.element.highlight('#e6efc2');
		},
 
		onFileError: function(file) {
			file.ui.cancel.set('html', 'Retry').removeEvents().addEvent('click', function() {
				file.requeue();
				return false;
			});
 
			new Element('span', {
				html: file.errorMessage,
				'class': 'file-error'
			}).inject(file.ui.cancel, 'after');
		},
 
		onFileRequeue: function(file) {
			file.ui.element.getElement('.file-error').destroy();
 
			file.ui.cancel.set('html', 'Cancel').removeEvents().addEvent('click', function() {
				file.remove();
				return false;
			});
 
			this.start();
		}
 
	});
 
};




function DomReadyOrder() {
	PageOrder();
	FilesUploader();
	FormValidatorOrder();
};



// Execute all on DomReady
window.addEvent('domready',DomReadyOrder);
