// methods for shopping cart support

var valid_for_paypal = false;

function verify_paypal(){
	// gather info into json to validate
	
	var cart = new Object;

	cart.custom = jQ('#paypal_custom').attr('value');

	cart.items = new Array();

	jQ('.paypalbutton').each(function(i){

		var tagname = jQ(this).attr('name');
		// single item in cart
		if(tagname == 'item_name' || tagname == 'quantity' || tagname == 'amount'){
			if(cart.items.length < 1){
				var item = new Object;
				cart.items.push(item);
			}
			
			switch(tagname){
				case 'item_name':
					cart.items[0].name = jQ(this).attr('value');
					break;
					
				case 'quantity':
					cart.items[0].quantity = jQ(this).attr('value');
					break;
						
				case 'amount':
					cart.items[0].amount = jQ(this).attr('value');
					break;
			}

			
		}else{
			// multiple items in cart
			var itemno = 1;
			if(-1 != tagname.indexOf('item_name')){
				itemno = tagname.substring(10);
			}else if(-1 != tagname.indexOf('quantity')){
				itemno = tagname.substring(9);
			}else if(-1 != tagname.indexOf('amount')){
				itemno = tagname.substring(7);
			}
	
			var spot = false;
			
			for(var counter = 0; counter < cart.items.length; counter++){
				if(cart.items[counter].no == itemno){
					spot = counter;
					break;
				}
			}
			
			if(spot === false){
				item = new Object;
				item.no = itemno;
				spot = cart.items.length;
				cart.items.push(item);
				
			}
			
			if(-1 != tagname.indexOf('item_name')){
				cart.items[spot].name = jQ(this).attr('value');
					
			}else if(-1 != tagname.indexOf('quantity')){
				cart.items[spot].quantity = jQ(this).attr('value');
					
			}else if(-1 != tagname.indexOf('amount')){
				cart.items[spot].amount = jQ(this).attr('value');
				
			}
			
		}
		
		
	});

	JSONcart = jQ.toJSON(cart);

	if(valid_for_paypal){
		return true;
	}else{
		
		jQ.post('/cart.php?action=validate', {cart: JSONcart}, function(data){
			if(data == '1'){
				valid_for_paypal = true;
				jQ('#paypalform').submit();
			}else{
				alert('It looks like your shopping cart has been tampered with.  Please clear your cache and readd items to your cart');
			}

		});
		return false;		
		
	}
}


function add_to_cart(json_data, callbackfun){
	cart_status_update('working...');
	var json_string = jQ.toJSON(json_data);
	jQ.post('/cart.php?action=update', {user_id:userId, data: json_string}, function(data){
		cart_status_update('Cart Updated');
		if (data) {
			callbackfun(true);
			refresh_cart(data);
		}else{
			callbackfun(false);
		}
	
	});
}

function buyer_signup_start(){
	var username = jQ('#email').attr('value');
	var pass1 = jQ('#password1').attr('value');
	var pass2 = jQ('#password2').attr('value');
	
	if(username == ''){
		alert('Please provide an e-mail address');
		return false;
	}
	
	if(pass1 == ''){
		alert('Please supply a password');
		return false;
	}
	
	if(pass2 == ''){
		alert('Please retype your password');
		return false;
	}
	
	if(pass1 != pass2){
		alert('The passwords you have provide do not match');
		return false;
	}
	
	jQ.post('/cart.php?action=buyer_signup', {email: username, password1: pass1, password2: pass2}, function(data){
		if(data == '1'){
			refresh_cart();
		}else{
			jQ('#cart_content').empty().append(data);
		}
	});
}

function cart_logout(){
	jQ.post('/cart.php?action=buyer_logout', function(data){
		jQ('#cart_panel').parent().remove();
	});
	
}

function buyer_signup(){
	jQ.get('/cart.php?action=buyer_signup', {cart_create_buyer: '1'}, function(data){
		jQ('#cart_content').empty().append(data);
	});
}

// clears out everying inside the shopping cart
function clear_cart(){
	cart_status_update('working...');
	jQ.ajax({
		type:'post',
		url:'/cart.php?action=clear',
		success:function(data) {
			refresh_cart(data)
		}
	});
}

// used to add or update items in cart
function update_quantity(pid)
{
	var quant = parseInt(jQ('#quantity_'+pid).val());
	if(quant != NaN) {
		cart_status_update('working...');
		jQ.ajax({
			type:'post',
			url:'/cart.php?action=quantity',
			data:{product_id:pid, quantity:quant},
			success:function(data) {
				refresh_cart(data);
				cart_status_update('Quantity Updated');
			}
		});
	}
}

function refresh_cart(data){
	if (typeof(data) == 'undefined') {
		jQ.get('cart.php?action=showcart', function(data) {
			refresh_cart(data);
		});
	} else {
		if (jQ('#cart_panel').length) {
			jQ('#cart_panel').parent().html(data);
		} else {
			jQ('body').append('<div id="cart_container"></div>');
			jQ('#cart_container').html(data);
		}
	}
}


function remove_item(pid) {
	jQ.ajax({
		type:'post',
		url:'/cart.php?action=remove',
		data:{product_id: pid},
		success:function(data) {
			refresh_cart(data)
		}
	});
}

function calculate_shipping(id) {
	var post = {};
	jQ('#item_shipping_wrapper_'+id).find('input, select').each(function(){
		var name = jQ(this).attr('name');
		post[name] = jQ(this).val();
	});
	jQ.ajax({
		type:'post',
		url:'/cart.php?action=shippincalc',
		success:function(data){
			alert(data);
		}
	});
}

function cart_login(){
	if(arguments[0] == 'guest'){
			cart_login_type = 'guest';
	}else{
		cart_login_type = 'buyer';
		
	}
		
		var username = jQ('#cart_username').attr('value');
		var pwd = jQ('#cart_pwd').attr('value');
		if(username == '' && cart_login_type != 'guest'){
			if(cart_login_type == 'buyer'){
				alert('Please provide your email');
			}else{
				alert('Please provide a username');
			}
			return false;
		}
		
		if(pwd == '' && cart_login_type != 'guest'){
			alert('Please provide a password');
			return false;
		}
		
		jQ.post('/cart.php?action=buyer_login', {uname: username, pass: pwd, cart_login_type: cart_login_type}, function(data){
			var response = parseInt(data);
			if(response == 0) {
				if (jQ('#buyer_login_error').length > 0) {
					jQ('#buyer_login_error')
				}
				jQ('#cart_content > h2').after('<span id="buyer_login_error">Email or Password are incorrect</span>');
			} else {
				// SUCCESS!!
				refresh_cart(data)

			}
		});
}

function cart_status_update(status) {
	jQ('#cart_panel_top_gradient').append('<div class="cart_status_update_space">'+status+'</div>');
	setTimeout("jQ('.cart_status_update_space:first').fadeOut(100)", 3000);
}
