//declaration
var cart = {};
cart.o={};
var gb=[];
// set json hook to globar hook
for ( var i in globar )
	gb[globar[i].name] = globar[i].value;


// ready
$( document ).ready(function(){
	init();
	initEvent();
	initValidation();
	$('div.pp1 a').lightBox({imageBtnPrev:false,imageBtnNext:false });
	//autofill();
});

// for testing only
function autofill (  )
{
	$( '#name' ).val('Elliot tester');
	$( '#email' ).val('elliot@forecepts.com');
	$( '#contact1' ).val('12345678');
	$( '#contact2' ).val('12345678');
	$( '#addr' ).val('forecepts');
	$( '#country' ).val('Malaysia');
}

function init (  )
{
	cart = { amount:0 , gst:0, discount:0,shipping:0 };
	cart.o={};
	if ( gb.paypal == '0' )
		$( '#paymethod' ).children('option[value="2"]').remove();
	if ( gb.paycheque == '0' )
		$( '#paymethod' ).children('option[value="1"]').remove();
	if ( gb.paycash == '0' )
		$( '#paymethod' ).children('option[value="0"]').remove();
}

//init
function initEvent (  ) {
	// input filter
	$("input.qty").keypress(function (e) {
		return ( e.which >= 48 && e.which <= 57 || e.which == 8 || e.which == 0 )
	});
	
	$( '#chk-sameinfo' ).change(function(){

		if($( this ).attr('checked') ){
			$( '.deliver-info' ).val('Same As Billing Infomation');
			$( '.deliver-info' ).attr('disabled','disabled');
		} else {
			$( '.deliver-info' ).removeAttr('disabled');
			$( '.deliver-info' ).val('');
		}
	});
	$( '#btn-reset' ).click(function(){
		$( '.deliver-info' ).removeAttr('disabled');
	});
	$( 'form' ).keypress(function( e ){  
		if ( e.which == 13 ) {
			return false;
		} 
	});

	var country = new Array("Afghanistan", "Albania", "Algeria", "Andorra", "Angola", "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Brazil", "Brunei", "Bulgaria", "Burkina Faso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Central African Republic", "Chad", "Chile", "China", "Colombia", "Comoros", "Congo, Democratic Republic", "Congo, Republic of the", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Fiji", "Finland", "France", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Greece", "Greenland", "Grenada", "Guatemala", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Honduras", "Hong Kong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, North", "Korea, South", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Mauritania", "Mauritius", "Mexico", "Micronesia", "Moldova", "Mongolia", "Morocco", "Monaco", "Mozambique", "Namibia", "Nauru", "Nepal", "Netherlands", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Norway", "Oman", "Pakistan", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Poland", "Portugal", "Qatar", "Romania", "Russia", "Rwanda", "Samoa", "San Marino", " Sao Tome", "Saudi Arabia", "Senegal", "Serbia and Montenegro", "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "Spain", "Sri Lanka", "Sudan", "Suriname", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Togo", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "Yemen", "Zambia", "Zimbabwe");
	$('#country,#delivercountry').autocomplete(country,{matchContains: "word"});

}
function initValidation (  ) {

	var validator = $("form").validate({ 
		rules: { 
			name: {required:true},
			email:{email:true,required:true},
			contact1:{required:true,digits:true,minlength:8,maxlength:15},
			contact2:{required:true,digits:true,minlength:8,maxlength:15},
			addr:{required:true},
			postcode:{digits:true,minlength:5,maxlength:8},
			country:{required:true},
			delivername:{required:true},
			deliveremail:{email:true,required:true},
			delivercontact1:{required:true,digits:true,minlength:8,maxlength:15},
			delivercontact2:{required:true,digits:true,minlength:8,maxlength:15},
			deliveraddr:{required:true},
			deliverpostcode:{digits:true,minlength:5,maxlength:8},
			delivercountry:{required:true}
		}
	}); 
}
// public
function carting( e )
{
	var id = $(e).attr('value');
	( $(e).hasClass('chkbox') )	? addToCart( id ): removeFromCart( id ) ;
}

function addToCart ( id )
{
	if ( parseInt($( '#min'+id ).val()) > parseInt($( '#qty'+id ).val()) )	{

		alert('The Minumum Purchase Quantity is ['+$( '#min'+id ).val()+']');

	} else {
		$( '#chk'+id ).removeClass('chkbox').addClass('chkedbox');
		var p = getProductInfo( id );
		var opt = {id:p.id,code:p.code,name:p.name,img:p.id+'.'+getExt(p.img),price:p.price,qty:$('#qty'+id).val()};
		cart.o[id] = {'id':opt.id,'code':opt.code,'name':opt.name,'qty':opt.qty,'price':opt.price};
		var html = getItemHTML(opt);
		$( '#cart' ).append(html);
		updateOrderAmount( id );
	}
}
function removeFromCart ( id )
{
	$( '#chk'+id ).removeClass('chkedbox').addClass('chkbox');
	$('#cart'+id).remove();
	cart.o[id] = {};
	updateOrderAmount( id );
}
function updateOrderAmount ( id )
{
	var discount = cart.discount = parseFloat(gb.discount);
	var shipping = cart.shipping = parseFloat(gb.shipping);
	var gst		 = cart.gst		 = parseFloat(gb.gst);
	var amt = 0;


	for ( var i in cart.o ) {
		var price	= cart.o[i].price || 0;
		var qty		= cart.o[i].qty || 0;
		amt += price * qty;
	}

	$( '.btn-submit' ).removeAttr('disabled');
	if ( amt == 0 )
	{
		shipping = discount = gst = 0;
		$('#discount-row,#shipping-row').css('display','none');
		$( '.btn-submit' ).attr('disabled','disabled');
	}

	cart.amount = (( amt - ( amt * discount/100 ) + shipping ) * ( 1 + gst )).toFixed(2);
	$( '#b4discount' ).html('$'+amt.toFixed(2));

	// if there is a discount
	if ( discount )
	{
		var tbr = ( jQuery.browser.msie )?'block':'table-row';
		$('#discount-row').css('display',tbr);
		amt = amt - amt * (discount/100);
		$( '#subtp' ).html( '(' +discount +'%) $'+amt.toFixed(2));
	}

	if ( shipping )
	{
		var tbr = ( jQuery.browser.msie )?'block':'table-row';
		$('#shipping-row').css('display',tbr);
		$( '#shipc' ).html( '$'+ shipping.toFixed(2));
		amt = amt + shipping;
	}

	// gst
	$( '#gstcharge' ).html('$'+(amt * gst).toFixed(2));

	// amount to be paid
	amt = amt + amt * gst;
	$( '#amount' ).val(amt);
	$( '#tp' ).html('$'+amt.toFixed(2));
	var str = JSON.stringify(cart);
	$( '#order' ).val(str);
	return amt;
}



// private
// from json
function getProductInfo ( id ) {
	for ( var i in products )
		if(products[i].id==id)
			return products[i];
}
function getItemHTML( p )
{
	var html =	'<div class="p2" id="cart'+p.id+'">'+
					'<div class="pp2"><img src="userfiles/catalogue/'+p.img.toLowerCase()+'" width="92px" height="92px" border="0"></div>'+
					'<div class="p2t">'+
						'Product Code : '+ p.code +
						'<br/>Product Name : '+ p.name +
						'<br/>Product Quantity : '+ p.qty +
						'<br/>Product Price total: '+
						'<br/>'+p.qty+' x $ '+p.price+' = $ '+ (parseFloat(p.qty)*parseFloat(p.price)).toFixed(2)+
					'</div>'+
					'<div class="p2do"><a class="p2di" onclick="removeFromCart('+p.id+')"> DELETE </a></div>'+
				'</div>';
	return html;
}

function getExt(filename) {
	return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename) : undefined;
}
