/*
 * init mooform here
 */
var dataFrmContact = [{
	name: 'firstname',
	valid: 'required',	
	message: 'Name is required'		
},{
	name: 'email_address',
	valid: 'required|email',	
	message: 'Email address is required|Email address is invalid'		
},{
	name: 'subject',
	valid: 'required',	
	message: 'Subject is required'		
},{
	name: 'comment',
	valid: 'required',	
	message: 'Comment is required'		
}];
var initFrmContact = function(){
	var frmContactInstance = new MooForm('frmContact', dataFrmContact, {		
		onSubmit: function(){
			new Request.HTML({
				url: $('frmContact').action,
				onRequest: function(){
					$('sendSuccess').setStyle('display', 'none');	
					$('sendFailed').setStyle('display', 'none');	
				},
				onComplete: function(){					
					if(arguments[2] == 'success'){
						$('sendSuccess').setStyle('display', 'block');	
						$('sendFailed').setStyle('display', 'none');	
						setTimeout(function(){
							window.location.href = 'index.php';
						}, 5000);
					}
					else{
						$('sendSuccess').setStyle('display', 'none');	
						$('sendFailed').setStyle('display', 'block');	
					}
				}
			}).post($('frmContact'));	
		}
	});	
}

var dataFrmLogin = [{
	name: 'email',
	valid: 'required|email',	
	message: 'Email address is required|Email address is invalid'		
},{
	name: 'password',
	valid: 'required',	
	message: 'password is required'		
}];
var initFrmLogin = function(){
	var frmLoginInstance = new MooForm('frmLogin', dataFrmLogin, {		
		onSubmit: function(){
			new Request.HTML({
				url: $('frmLogin').action,
				onRequest: function(){
					$('loginFailed').setStyle('display', 'none');
				},
				onComplete: function(){
					if(arguments[2] == 'success'){
						window.location.href = 'index.php';
					}
					else{
						$('loginFailed').setStyle('display', 'block');						
					}
				}
			}).post($('frmLogin'));
			return false;
		}
	});	
}

var dataFrmGetPassword = [{
	name: 'email',
	valid: 'required|email',	
	message: 'Email address is required|Email address is invalid'		
}];
var initFrmGetPassword = function(){
	var frmGetPasswordInstance = new MooForm('frmGetPassword', dataFrmGetPassword, {		
		onSubmit: function(){
			new Request.HTML({
				url: $('frmGetPassword').action,
				onRequest: function(){
					$('getPasswordSuccess').setStyle('display', 'none');	
					$('getPasswordFailed').setStyle('display', 'none');	
				},
				onComplete: function(){					
					if(arguments[2] == 'success'){
						$('getPasswordSuccess').setStyle('display', 'block');	
						$('getPasswordFailed').setStyle('display', 'none');
						setTimeout(function(){
							window.location.href = 'index.php';
						}, 5000);
					}
					else{
						$('getPasswordSuccess').setStyle('display', 'none');	
						$('getPasswordFailed').setStyle('display', 'block');						
					}
				}
			}).post($('frmGetPassword'));	
		}
	});	
}

var dataFrmRegister = [{
	name: 'gender',
	valid: 'checked',	
	message: 'Gender is required'		
},{
	name: 'firstname',
	valid: 'required',	
	message: 'Firstname is required'		
},{
	name: 'lastname',
	valid: 'required',	
	message: 'Lastname is required'		
},{
	name: 'street_address',
	valid: 'required',	
	message: 'Street address is required'		
},{
	name: 'city',
	valid: 'required',	
	message: 'City is required'		
},{
	name: 'state',
	valid: 'required',	
	message: 'State is required'		
},{
	name: 'postcode',
	valid: 'required',	
	message: 'Postcode is required'		
},{
	name: 'country',
	valid: 'selected',	
	message: 'Country is required'		
},{
	name: 'telephone',
	valid: 'required|phone',	
	restrict: '[0-9]',
	message: 'Telephone is required|Telephone is invalid'		
},{
	name: 'email_address',
	valid: 'required|email',	
	message: 'Email address is required|Email address is invalid'		
},{
	name: 'password',
	valid: 'required|minimum',	
	minimum: 5,
	message: 'Password is required|Password must be at least 5 characters'		
},{
	name: 'confirmation',
	valid: 'required|minimum|compare',	
	minimum: 5,
	other: 'password',
	type: 'string',
	operator: '=',
	message: 'Confirmation password is required|Confirmation password must be at least 5 characters|Confirmation password does not matched'		
}];
var initFrmRegister = function(){
	var frmRegisterInstance = new MooForm('frmRegister', dataFrmRegister, {		
		onSubmit: function(){
			new Request.HTML({
				url: $('frmRegister').action,
				onRequest: function(){
					$('registerFailed').setStyle('display', 'none');	
				},
				onComplete: function(){					
					if(arguments[2] == 'success'){
						window.location.href = 'index.php?do=registered';
					}
					else{
						$('registerFailed').setStyle('display', 'block');						
					}
				}
			}).post($('frmRegister'));			
		}
	});	
}


var dataFrmAccount = [{
	name: 'gender',
	valid: 'checked',	
	message: 'Gender is required'		
},{
	name: 'firstname',
	valid: 'required',	
	message: 'Firstname is required'		
},{
	name: 'lastname',
	valid: 'required',	
	message: 'Lastname is required'		
},{
	name: 'street_address',
	valid: 'required',	
	message: 'Street address is required'		
},{
	name: 'city',
	valid: 'required',	
	message: 'City is required'		
},{
	name: 'state',
	valid: 'required',	
	message: 'State is required'		
},{
	name: 'postcode',
	valid: 'required',	
	message: 'Postcode is required'		
},{
	name: 'country',
	valid: 'selected',	
	message: 'Country is required'		
},{
	name: 'telephone',
	valid: 'required|phone',	
	restrict: '[0-9]',
	message: 'Telephone is required|Telephone is invalid'		
},{
	name: 'email_address',
	valid: 'required|email',	
	message: 'Email address is required|Email address is invalid'		
},{
	name: 'old_password',
	valid: 'required|minimum',	
	minimum: 5,
	message: 'Old password is required|Old password must be at least 5 characters'		
},{
	name: 'new_password',
	valid: function(){
		var npass = $('new_password').value.trim();
		if(npass != ''){
			if(npass.length < 5) return false;			
		}
		return true;
	},	
	message: 'New password must be at least 5 characters'		
}];
var initFrmAccount = function(){
	var frmAccountInstance = new MooForm('frmAccountInfo', dataFrmAccount, {		
		onSubmit: function(){
			new Request.HTML({
				url: $('frmAccountInfo').action,
				onRequest: function(){
					$('registerSuccess').setStyle('display', 'none');
					$('registerFailed').setStyle('display', 'none');	
				},
				onComplete: function(){					
					if(arguments[2] == 'failed'){						
						$('registerSuccess').setStyle('display', 'none');
						$('registerFailed').setStyle('display', 'block');							
					}
					else{
						$('registerFailed').setStyle('display', 'none');	
						$('registerSuccess').setStyle('display', 'block');
						window.location.href = 'index.php?do=account';
					}
				}
			}).post($('frmAccountInfo'));
			return false;
		}
	});	
}


var dataFrmCheckout = [{
	name: 'fname',
	valid: 'required',	
	message: 'Firstname is required'		
},{
	name: 'lname',
	valid: 'required',	
	message: 'Lastname is required'		
},{
	name: 'address',
	valid: 'required',	
	message: 'Street address is required'		
},{
	name: 'city',
	valid: 'required',	
	message: 'City is required'		
},{
	name: 'state',
	valid: 'required',	
	message: 'State is required'		
},{
	name: 'country',
	valid: 'selected',	
	message: 'Country is required'		
},{
	name: 'postcode',
	valid: 'required',	
	message: 'Postcode is required'		
},{
	name: 'email',
	valid: 'required|email',	
	message: 'Email address is required|Email address is invalid'		
},{
	name: 'phone',
	valid: 'required|phone',	
	restrict: '[0-9]',
	message: 'Phone is required|Phone is invalid'		
},{
	name: 'fax',
	valid: true,	
	restrict: '[0-9]',
	message: 'Fax is invalid'		
},{
	name: 'fname-s',
	valid: 'required',	
	message: 'Firstname is required'		
},{
	name: 'lname-s',
	valid: 'required',	
	message: 'Lastname is required'		
},{
	name: 'address-s',
	valid: 'required',	
	message: 'Street address is required'		
},{
	name: 'city-s',
	valid: 'required',	
	message: 'City is required'		
},{
	name: 'state-s',
	valid: 'required',	
	message: 'State is required'		
},{
	name: 'country-s',
	valid: 'selected',	
	message: 'Country is required'		
},{
	name: 'postcode-s',
	valid: 'required',	
	message: 'Postcode is required'		
},{
	name: 'email-s',
	valid: 'required|email',	
	message: 'Email address is required|Email address is invalid'		
},{
	name: 'phone-s',
	valid: 'required|phone',	
	restrict: '[0-9]',
	message: 'Phone is required|Phone is invalid'		
},{
	name: 'fax-s',
	valid: true,	
	restrict: '[0-9]',
	message: 'Fax is invalid'		
}];
var initFrmCheckout = function(){
	var frmCheckoutInstance = new MooForm('frmCheckout', dataFrmCheckout, {		
		onSubmit: function(){
			$('c-fname').set('html', $('fname').value);
			$('c-lname').set('html', $('lname').value);
			$('c-cname').set('html', $('cname').value);
			$('c-address').set('html', $('address').value);
			$('c-city').set('html', $('city').value);
			$('c-state').set('html', $('state').value);
			$('c-country').set('html', $('country').options[$('country').selectedIndex].text);
			$('c-postcode').set('html', $('postcode').value);
			$('c-email').set('html', $('email').value);
			$('c-phone').set('html', $('phone').value);
			$('c-fax').set('html', $('fax').value);	
			$('s-fname').set('html', $('fname-s').value);
			$('s-lname').set('html', $('lname-s').value);
			$('s-cname').set('html', $('cname-s').value);
			$('s-address').set('html', $('address-s').value);
			$('s-city').set('html', $('city-s').value);
			$('s-state').set('html', $('state-s').value);
			$('s-country').set('html', $('country-s').options[$('country-s').selectedIndex].text);
			$('s-postcode').set('html', $('postcode-s').value);
			$('s-email').set('html', $('email-s').value);
			$('s-phone').set('html', $('phone-s').value);
			$('s-fax').set('html', $('fax-s').value);	
			$('orderCheckout').addClass('hide');
			$('orderConfirm').removeClass('hide');
			var allowSubmit = $('allowSubmit');
			if(allowSubmit.value == 0){
				allowSubmit.value = 1;
				return false;
			}
			else{
				$('orderCheckout').addClass('hide');
				$('orderConfirm').addClass('hide');
				$('processing').removeClass('hide');
				$('frmCheckout').submit();
			}
		}
	});	
	var chkShipping = $('chkShipping');
	if(chkShipping){
		chkShipping.addEvent('click', function(e){			
			if(this.checked){
				$('fname-s').value = $('fname').value;
				$('lname-s').value = $('lname').value;
				$('cname-s').value = $('cname').value;
				$('address-s').value = $('address').value;
				$('city-s').value = $('city').value;
				$('state-s').value = $('state').value;
				$('country-s').value = $('country').value;
				$('postcode-s').value = $('postcode').value;
				$('email-s').value = $('email').value;
				$('phone-s').value = $('phone').value;
				$('fax-s').value = $('fax').value;				
			}
			else{
				$('fname-s').value = '';
				$('lname-s').value = '';
				$('cname-s').value = '';
				$('address-s').value = '';
				$('city-s').value = '';
				$('state-s').value = '';
				$('country-s').value = '';
				$('postcode-s').value = '';
				$('email-s').value = '';
				$('phone-s').value = '';
				$('fax-s').value = '';		
			}
		});
	}
}

var dataFrmOrder = [{
	name: 'qty',
	valid: 'required',	
	message: 'Quantity is required',
	restrict: '[0-9]',
	maxLength: 3
}];
var initFrmOrder = function(){
	var frmOrderInstance = new MooForm('frmOrder', dataFrmOrder, {		
		onSubmit: function(){			
			$('frmOrder').submit();			
		}
	});	
}

var dataFrmSearch = [{
	name: 'sid',
	valid: 'required',	
	message: 'Please enter keyword'
}];
var initFrmSearch = function(){
	var frmSearchInstance = new MooForm('frmsearch', dataFrmSearch, {
		layerWidth: 142,
		onSubmit: function(){
			window.location.href = $('frmsearch').action + $('sid').value;
		}
	});	
}

function initValidateQuantity(){
	var frmCart = $('frmCart');
	if(!frmCart) return;
	var qties = frmCart.getElements('input.qty');
	qties.each(function(qty){
		qty.addEvents({
			'keypress': function(e){
				var evt = new Event(e);
				var key = evt.getCharKey();
				var re = new RegExp('[0-9]');
				if (key != '' && !re.test(key)) { 
					evt.stop(); 
				}
			}
		});	
	});
}

function initCheckBoxes(){
	var frmCart = $('frmCart');
	if(!frmCart) return;
	var chks = frmCart.getElements('input.chk');
	chks.each(function(chk){
		chk.addEvents({
			'click': function(e){
				if(this.checked){
					this.getNext().set('value', '1');
				}
				else{
					this.getNext().set('value', '0');
				}
			}
		});	
	});
}


function initUpdateCart(){
	var aLink = $('updateCart');
	if(!aLink) return;
	var frmCart = $('frmCart');
	if(!frmCart) return;
	aLink.addEvent('click', function(e){
		e.stop();
		frmCart.action = this.href;
		frmCart.submit();
	});
}

/*
* start functions
*/
window.addEvent('domready', function(){
	initFrmContact();
	initFrmLogin();
	initFrmGetPassword();
	initFrmRegister();
	initFrmAccount();
	//initFrmSearch();
	initFrmOrder();
	initValidateQuantity();
	initCheckBoxes();
	initUpdateCart();
	initFrmCheckout();
});