function ShoppingCart() {
   
	///
	this.initialize = function(){
		this.getData();
		this.addons = [];
		this.terms = "";
		this.getTerms();
    }
	this.getData = function(){
		var ap = new AjaxPlace({clas: "LSShoppingCart", func:"getShoppingCart"});
		ap.folder = "admin/";
		var callback = function(transport){
				///alert(transport.responseText);
				var r = eval(transport.responseText);
				App.shopppingCart.showFromSession(r); 
				$("cart_data").innerHTML = this.drawData(r);
		}
		ap.call({ onSuccess:callback.bind(this) });
	}
	this.drawData = function(obj, noRemove){
		var str = '<table class="cart_table" width="830" border="0" cellpadding="0" cellspacing="1"><tr class="cart_header">';
		str += (noRemove==true) ? "" : '<td width="74" align="center">Remove</td>';
		str += '<td height="40" align="left" style="padding-left:15px;">Product Name</td><td width="150" align="center">Price</td></tr>';
		////
		var courses = obj[0];
		var packs = obj[1];
		var tpl = '<tr class="#{clas}">';
		tpl += (noRemove==true) ? "" : '<td align="center"><a href="#" onclick="#{clickfunc}(#{id}); return false;" >remove</a></td>';
		var myTemplate = new Template(tpl + '<td height="35"  align="left" style="padding-left:15px;">#{name}</td><td align="center"><span class="cart_price">USD $#{price}</span>#{recurring}</td></tr>');
		var p = 0;
		
		for(var t = 0; t<courses.length; t++){
			courses[t].clickfunc = "App.section.removeCourse";
			courses[t].clas = (p%2 == 0) ? "cart_row" : "cart_row1";
			courses[t].recurring = (courses[t].id_suscription_type == 2)? '<br/>(Recurring every ' + courses[t].suscription_time + ' days)' : '';
			str += myTemplate.evaluate( courses[t] );
			for(var j=0; j<courses[t].addons.length; j++){
				if(noRemove==true && courses[t].addons[j].selected == "N"){
					continue;
				}
				courses[t].addons[j].required = (courses[t].addons[j].required == "Y") ? 'disabled="disabled"' : '';
				courses[t].addons[j].selected = (courses[t].addons[j].selected == "Y") ? 'checked="checked"' : '';
				courses[t].addons[j].recurring = (courses[t].addons[j].recurring == "Y") ? '(Recurring fee)' : '(One time fee)';
				if(noRemove==true){
					courses[t].addons[j].required = 'disabled="disabled"';
				}
				str += "<tr style='background-color:#EEEEEE'>";
				str += (noRemove==true) ? "" : "<td></td>";
				var idr = "addon_" + courses[t].addons[j].idr;
				if(noRemove!=true){
					this.addons.push(idr);
				}
				str += '<td height="20"  align="left" style="padding-left:25px;"><input style=" background-color:#EEEEEE;border:none;" id="'+idr+'" type="checkbox" ' + courses[t].addons[j].required + ' ' + courses[t].addons[j].selected + ' /> ' + courses[t].addons[j].name + '</td><td align="center"><span class="cart_price">USD $' + courses[t].addons[j].price + '</span><br/>' + courses[t].addons[j].recurring + '</td></tr>'
			}
			p++;
		}
		for(var t = 0; t<packs.length; t++){
			packs[t].clickfunc = "App.section.removePack";
			packs[t].clas = (p%2 == 0) ? "cart_row" : "cart_row1";
			str += myTemplate.evaluate( packs[t] );
			p++;
		}
		str += '</table';
		if(courses.length == 0 && packs.length == 0){
			str = '<div style="height:200px;" align="center"><table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"><tr><td align="center" valign="middle"><b>Your Shopping Cart is empty!</b><br/><a href="#" onclick="App.loadSection(0); return false;">Press here</a> to return to home page</td></tr></table></div>';
		}else{
			var obj = obj[2][0];
			myTemplate = new Template('<div class="#{clas}" style="height:35px;"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="35" align="right" class="cart_total_legend">#{legend}</td><td width="150" align="center" class="cart_total">USD $#{value}</td></tr></table></div>');
			for(var t =0;t<3;t++){
				var clas = (t==0) ? "" : "cart_separator";
				var legend = (t==0) ? "price:" : (t==1) ? "discount:" : "total:";
				//VALORES CON 2 DECIMALES
				var fNeto = parseFloat(obj.neto).toFixed(2);
				var fDiscount = parseFloat(obj.discount).toFixed(2);
				var fTotal = parseFloat(obj.total).toFixed(2);
				var value = (t==0) ? fNeto : (t==1) ? fDiscount : fTotal;
				var o = {legend:legend, value:value, clas:clas};
				str += myTemplate.evaluate( o );
			}
			str += '<div id="submit_cart" style="height:45px;"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="45" align="left"><a href="#" onclick="App.loadSection(0); return false;"><img border="0" src="images/bt_continueshop.gif" width="154" height="24" /></a></td><td width="250" align="right"><a href="#" onclick="App.section.recalculate(); return false;"><img border="0" src="images/update.gif" width="120" height="24" /></a><a style="margin-left:10px;" href="#" onclick="App.section.checkout(); return false;"><img border="0" src="images/bt_checkout.gif" width="96" height="24" /></a></td></tr></table></div>';
			////alert(App.user.isLogged);
			if( App.user.isLogged == true ){
				///str += '<div style="height:45px;"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="45" align="left"></td><td align="right"><a href="#" onclick="App.section.Paypal(); return false;"><img border="0" src="images/btn_xpressCheckout.gif" /></a></td></tr></table></div>';
			}
		}
		///alert(str);
		return str;
	}
	this.recalculate = function(){
		this.sendAddons(this.getData.bind(this));
	}
	this.sendAddons = function(callbacks){
		var str = "";
		var i = 0;
		for(var t=0; t<this.addons.length; t++){
			if( $(this.addons[t]).checked){
				if(i>0){
					str += ",";
				}
				str += this.addons[t].split("_")[1];
				i++;
			}
		}
		var ap = new AjaxPlace({clas: "LSShoppingCart", func:"addAddons", args:[str]});
		ap.folder = "admin/";
		var callback = function(transport){
				callbacks();
		}
		ap.call({ onSuccess:callback.bind(this) });
	}
	this.removeCourse = function(id){
		if(!confirm("Are you sure you want to remove this product from your shopping cart?"))
			return;
		var ap = new AjaxPlace({clas: "LSShoppingCart", func:"removeCourse", args:[id]});
		ap.folder = "admin/";
		var callback = function(transport){
				///alert(transport.responseText);
				App.shopppingCart.removeCourse(id);
				this.getData();
		}
		ap.call({ onSuccess:callback.bind(this) });
		///alert("quito curso "+id);
	}
	this.removePack = function(id){
		if(!confirm("Are you sure you want to remove this product from your shopping cart?"))
			return;
		var ap = new AjaxPlace({clas: "LSShoppingCart", func:"removePackage", args:[id]});
		ap.folder = "admin/";
		var callback = function(transport){
				App.shopppingCart.removePackage(id);
				this.getData();
		}
		ap.call({ onSuccess:callback.bind(this) });
	}
	
	this.checkout = function(){
		var cb = function(){
			if(this.terms != ""){
				this.terms = Functions.replace(this.terms, '\\n', '<br/>');
				var str = "<div style='height:300px; overflow:auto; background-color:#eeeeee; padding:5px;'>" + this.terms + "</div><br/><a href='#' onclick='App.loadSection(7); return false;'>Accept Terms</a>";
				Modalbox.show(str, {title: "Terms and Conditions", width: 500} );
			}else{
				App.loadSection(7);
			}
			
		}
		this.sendAddons(cb.bind(this));
	}
	
	this.getTerms = function(){
		var ap = new AjaxPlace({clas: "LSSetting", func:"getData", args:["TERM"]});
		ap.folder = "admin/";
		var callback = function(transport){
				this.terms = eval(transport.responseText)[0].val;
		}
		ap.call({ onSuccess:callback.bind(this) });	
	}
	
	this.getPaypalToken = function(){
	}
	this.Paypal = function(){
		Modalbox.show('<div align="center"><iframe frameborder="0" src="https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-5SC90393HW281860W" id="paypal_if" width="780" height="400"></iframe><br/></div>', {/*afterLoad: this.fillDetails.bind(this) ,*/title: "PayPal", width: 800} );
	}
	
}



