function oCart(container,variable,settings) {
	this.container = $(container);
	if(this.container == null) alert('no cart container specified!');
	this.variable = variable;
	this.settings = settings;
	this.data = [];
	this.basket = null; //dinamic div for big cart
  if (document.all) {
    this.setAttr = new Function ("o", "a", "v", "at = document.createAttribute(a); at.value = v; o.setAttributeNode(at);");
  } else {
    this.setAttr = new Function ("o", "a", "v", "o.setAttribute(a, v);");
  }
}

oCart.prototype.drawBox = function () {
	var cartTop = document.createElement('div');
	cartTop.className = 'cart_top';
	cartTop.innerHTML = '&nbsp';
	this.container.appendChild(cartTop);

	this.cartItems = document.createElement('div');
	this.cartItems.id = this.variable+'_items';
	this.cartItems.className = 'cart_wrapper';
	this.container.appendChild(this.cartItems);

	var cartBottom = document.createElement('div');
	cartBottom.className = 'cart_bottom';
	cartBottom.innerHTML = '&nbsp';
	this.container.appendChild(cartBottom);
}

oCart.prototype.getData = function (additionalPars) {
  if($(this.variable+'_icon')!=null) $(this.variable+'_icon').src = 'img/indicator.gif';
  var pars = '';
  if(additionalPars != null) {
  	pars = additionalPars;
  }
  selfPointer = this;
  var req = new Ajax.Request(
  'zend_fe.php?cr=customers&an=showcartajax', 
  {
    method: 'post', 
    parameters: pars, 
    onComplete: function(r) {
      selfPointer.data = eval(r.responseText);
      if($(selfPointer.variable+'_icon')!=null) $(selfPointer.variable+'_icon').src = 'img/cart.png';
      selfPointer.drawItems();
    }
  });
}

oCart.prototype.drawItems = function () {
	if(this.itemsContainer) {
		this.cartItems.removeChild(this.itemsContainer);
	}

	this.itemsContainer = document.createElement('table');
  this.setAttr(this.itemsContainer, 'cellpadding', '0');
  this.setAttr(this.itemsContainer, 'cellspacing', '0');
  this.itemsContainer.className = 'cart_table';
  this.setAttr(this.itemsContainer, 'width', '90%');
  this.setAttr(this.itemsContainer, 'align', 'center');
	this.cartItems.appendChild(this.itemsContainer);
	
	var parent_tbody = document.createElement('tbody');
  this.itemsContainer.appendChild(parent_tbody);
  
  var tr = document.createElement('tr');
  parent_tbody.appendChild(tr);
  
  var td = document.createElement('td');
  this.setAttr(td, 'align', 'left');
  this.setAttr(td, 'width', '50%');
	td.style.padding = '5px 0px 5px 0px';
  tr.appendChild(td);

	var img = document.createElement('img');
	img.id = this.variable+'_icon';
	img.src = 'img/cart.png';
  this.setAttr(img, 'alt', 'cart');
  this.setAttr(img, 'title', 'cart');
  td.appendChild(img);
  
  var dataLength = 0;
  var totalValue = 0;
  var currency = '&#36;';
  for(var i=0;i<this.data.length;i++) {
	  for(var j=0;j<this.data[i].length;j++) {
	  	dataLength++;
	  	totalValue += this.data[i][j][5];
			if(i==0 && j==0 && this.data[i][j][2]!='free') { //getting currency from first item
				currency = this.data[i][j][2].replace(/[.* ](.*)/,'');
			}
	  }	
  }
  
	var plural = '';
  if(dataLength>1 || !dataLength) {
  	var plural = 's';
  }
  
  var td = document.createElement('td');
  this.setAttr(td, 'align', 'right');
  this.setAttr(td, 'width', '50%');
	td.style.padding = '5px 0px 5px 0px';
	td.innerHTML = "<b>"+(dataLength)+" Item"+plural+" in Cart</b>";
  tr.appendChild(td);

	if(this.data.length) {
	  if(!this.basket) {
			this.basket = document.createElement('div');
			this.basket.id = this.variable+'_basket';
			this.basket.className = 'cartHolder';
			document.body.appendChild(this.basket);

			new Draggable(this.basket.id);
			
			var basketTop = document.createElement('div');
			basketTop.className = 'cart_big_top';
			basketTop.innerHTML = '&nbsp';
			this.basket.appendChild(basketTop);
	
			this.basketItems = document.createElement('div');
			this.basketItems.id = this.variable+'_basket_items';
			this.basketItems.className = 'cartWrapperBig';
			this.basket.appendChild(this.basketItems);
			
			var basketClose = document.createElement('div');
			basketClose.className = 'cartCloseLink';
			this.basketItems.appendChild(basketClose);
	
			var closeLink = document.createElement('a');
			closeLink.innerHTML = 'close';
			basketClose.appendChild(closeLink);
			Event.observe(basketClose, 'click', this.closeBasket.bindAsEventListener(this));
	
			var basketTitle = document.createElement('div');
			basketTitle.className = 'tableTitleCart';
			this.basketItems.appendChild(basketTitle);
	
			var basketTitleH4 = document.createElement('h4');
			basketTitleH4.innerHTML = 'Cart';
			basketTitle.appendChild(basketTitleH4);
			
			var basketBottom = document.createElement('div');
			basketBottom.className = 'cart_big_bottom';
			basketBottom.innerHTML = '&nbsp';
			this.basket.appendChild(basketBottom);
	  } else {
	  	this.basketItems.removeChild($(this.variable+'_basketItemsTable'));
	  }

		var basketItemsTable = document.createElement('table');
	  basketItemsTable.id = this.variable+'_basketItemsTable';
	  this.setAttr(basketItemsTable, 'cellpadding', '0');
	  this.setAttr(basketItemsTable, 'cellspacing', '0');
	  basketItemsTable.className = 'cartTable';
		this.basketItems.appendChild(basketItemsTable);
		
		var basketItems_tbody = document.createElement('tbody');
	  basketItemsTable.appendChild(basketItems_tbody);
  
	  var tr = document.createElement('tr');
	  basketItems_tbody.appendChild(tr);
	  
	  var th = document.createElement('th');
	  th.innerHTML = 'Item Name';
	  tr.appendChild(th);
	  
	  var th = document.createElement('th');
	  this.setAttr(th, 'colspan', '2');
	  th.className = 'rateColumn';
	  th.innerHTML = 'Price';
	  tr.appendChild(th);

	  for(var i=0;i<this.data.length;i++) {
		  for(var j=0;j<this.data[i].length;j++) {
			  //drawing creating cart items
			  var parent_tr = document.createElement('tr');
			  parent_tbody.appendChild(parent_tr);
			  
			  var parent_td = document.createElement('td');
			  this.setAttr(parent_td, 'colspan', '2');
			  parent_tr.appendChild(parent_td);

				var itemsTable = document.createElement('table');
			  this.setAttr(itemsTable, 'width', '100%');
			  this.setAttr(itemsTable, 'cellpadding', '0');
			  this.setAttr(itemsTable, 'cellspacing', '0');
				parent_td.appendChild(itemsTable);
				
				var tbody = document.createElement('tbody');
			  itemsTable.appendChild(tbody);

			  var tr = document.createElement('tr');
			  tbody.appendChild(tr);
			  
			  var td = document.createElement('td');
			  this.setAttr(td, 'nowrap', 'nowrap');
			  td.className = 'cart_item_left';
			  if(this.data[i][j][1]=='SFTP / FTPS / HTTPS Encrypted Transfers') {
				  td.innerHTML = 'SFTP / FTPS / HTTPS <br />Encrypted Transfers'; 
			  } else {
			  	td.innerHTML = this.data[i][j][1]; 
			  }
			  tr.appendChild(td);
			  
			  var td = document.createElement('td');
			  this.setAttr(td, 'width', '100%');
			  td.className = 'dots';
			  td.innerHTML = '&nbsp;';
			  tr.appendChild(td);
			  
			  var td = document.createElement('td');
			  this.setAttr(td, 'nowrap', 'nowrap');
			  td.className = 'cart_item_right';
			  td.innerHTML = this.data[i][j][2]; 
			  tr.appendChild(td);
		  	
		  	//drawing basket items
			  var tr = document.createElement('tr');
			  basketItems_tbody.appendChild(tr);
			  
			  var td = document.createElement('td');
			  this.setAttr(td, 'nowrap', 'nowrap');
			  td.className = 'rate';
			  td.innerHTML = this.data[i][j][1]; 
			  tr.appendChild(td);
			  
			  var td = document.createElement('td');
			  this.setAttr(td, 'nowrap', 'nowrap');
			  td.className = 'rateColumn';
			  td.innerHTML = this.data[i][j][2]; 
			  tr.appendChild(td);
			  
			  var td = document.createElement('td');
			  this.setAttr(td, 'nowrap', 'nowrap');
			  this.setAttr(td, 'align', 'center');
			  td.className = 'buttonsCell';
			  tr.appendChild(td);

				var delLink = document.createElement('a');
			  delLink.style.cursor = 'pointer';
			  td.appendChild(delLink);
				Event.observe(delLink, 'click', this.dropItem.bindAsEventListener(this,i,j));
				
				var delImg = document.createElement('img');
				delImg.id = this.variable+'_delitem_'+this.data[i][j][0];
				delImg.src = 'img/btn-delete.gif';
			  this.setAttr(delImg, 'alt', 'Delete');
			  this.setAttr(delImg, 'title', 'Delete');
				delLink.appendChild(delImg);
		  }
	  }

	  var parent_tr = document.createElement('tr');
	  parent_tbody.appendChild(parent_tr);
	  
	  var parent_td = document.createElement('td');
	  this.setAttr(parent_td, 'colspan', '2');
	  parent_tr.appendChild(parent_td);

		var itemsTable = document.createElement('table');
	  this.setAttr(itemsTable, 'width', '100%');
	  this.setAttr(itemsTable, 'cellpadding', '0');
	  this.setAttr(itemsTable, 'cellspacing', '0');
		parent_td.appendChild(itemsTable);
		
		var tbody = document.createElement('tbody');
	  itemsTable.appendChild(tbody);

	  var tr = document.createElement('tr');
	  tbody.appendChild(tr);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'nowrap', 'nowrap');
	  td.className = 'cart_item_left';
	  td.innerHTML = '<b>Total</b>'; 
	  tr.appendChild(td);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'width', '100%');
	  td.className = 'dots';
	  td.innerHTML = '&nbsp;';
	  tr.appendChild(td);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'nowrap', 'nowrap');
	  td.className = 'cart_item_right';
	  td.innerHTML = '<b>'+currency+' '+ totalValue+'.00'+'</b>'; 
	  tr.appendChild(td);
  
	  var tr = document.createElement('tr');
	  parent_tbody.appendChild(tr);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'align', 'left');
	  this.setAttr(td, 'width', '50%');
	  tr.appendChild(td);
		
		var a = document.createElement('a');
		a.id = this.variable+'_modify_cart';
		a.style.cursor = 'pointer';
		a.innerHTML = 'Modify Cart';
		td.appendChild(a);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'align', 'right');
	  this.setAttr(td, 'width', '50%');
	  tr.appendChild(td);
		
		var a = document.createElement('a');
		a.href = './panel/index/showorder';
		a.innerHTML = 'Checkout';
		td.appendChild(a);

		Event.observe($(this.variable+'_modify_cart'), 'click', this.showBasket.bindAsEventListener(this));

	  var tr = document.createElement('tr');
	  tr.className = 'whiteRow';
	  basketItems_tbody.appendChild(tr);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'nowrap', 'nowrap');
	  td.className = 'total';
	  td.innerHTML = 'TOTAL'; 
	  tr.appendChild(td);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'nowrap', 'nowrap');
	  td.className = 'totalMoney';
	  td.innerHTML = '<b>'+currency+' '+ totalValue+'.00'+'</b>'; 
	  tr.appendChild(td);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'nowrap', 'nowrap');
	  this.setAttr(td, 'align', 'center');
	  td.className = 'buttonsCell';
	  tr.appendChild(td);
		
		var a = document.createElement('a');
		a.href = './panel/index/showorder';
		td.appendChild(a);

		var pImg = document.createElement('img');
		pImg.src = 'img/btn-purchase.gif';
	  this.setAttr(pImg, 'alt', 'Purchase');
	  this.setAttr(pImg, 'title', 'Purchase');
		a.appendChild(pImg);

	  var tr = document.createElement('tr');
	  tr.className = 'whiteRow';
	  basketItems_tbody.appendChild(tr);
	  
	  var td = document.createElement('td');
	  this.setAttr(td, 'colspan', '3');
	  td.className = 'bottomLineCart';
	  tr.appendChild(td);
	} else {
		if(this.basket) this.basket.style.display = 'none';
	}
}


oCart.prototype.showBasket = function (event) {
  if (!event) {
    event = window.event;
  }
	if(!this.inProgress) {
		this.inProgress = true;
		this.basket.style.left = (Event.pointerX(event)-580)+'px';
		this.basket.style.top = Event.pointerY(event)+'px';
		//new Effect.Appear('big_cart',{duration: 1,afterFinish: function () { inProgress = false; } });
		this.basket.style.display = 'block';
		this.inProgress = false;
	}
}

oCart.prototype.closeBasket = function (event) {
  if (!event) {
    event = window.event;
  }
	if(this.basket!=null && this.basket.style.display != 'none' && !this.inProgress) {
		this.inProgress = true;
		var selPointer = this;
		new Effect.Fade(this.basket.id,{duration: 0.1,afterFinish: function () { selPointer.inProgress = false; } });
	}
}

oCart.prototype.dropItem = function (event) {
  var args = $A(arguments);
  args.shift();
  var i = args[0]; 
  var j = args[1]; 
  var pars = 'servisesToRemove['+i+']['+this.data[i][j][3]+']['+this.data[i][j][4]+']['+this.data[i][j][0]+']='+this.data[i][j][0];
	$(this.variable+'_delitem_'+this.data[i][j][0]).src = 'img/indicator.gif';
  this.getData(pars);
  /*selfPointer = this;
  var req = new Ajax.Request(
  'zend_fe.php?cr=customers&an=showcartajax', 
  {
    method: 'post', 
    parameters: pars, 
    onComplete: function(r) {
      selfPointer.data = eval(r.responseText);
      if($(selfPointer.variable+'_icon')!=null) $(selfPointer.variable+'_icon').src = 'img/cart.png';
      selfPointer.drawItems();
    }
  });*/
}


