if(!n2a){
	var n2a = {};
}

n2a.product = {
	element : [],
	instance : function(prop){
		var me = this;
		var index = me.element.length;
		me.element[index] = new me._class(me,index,prop);
		return me.element[index];
	},
	_class : function(_parent,_index,props){
		var _this = this;
		_this.parent = _parent;
		_this.index = _index;
		_this.handler = props.handler || "../project/product/handler.php";
		_this.imgUrl = "../img/barcode/";
		_this.defaultImage = "../imgUser/navailable.png";
		_this.renderTo = props.renderTo;
		_this.template = '<div class="ucol1"><div class="icontainer">' + 
						'<img src="{%=imagen%}" onerror="n2a.product.element['+_this.index+'].imgError(this,\'{%=entidadID%}\');" height="48" /></div></div>' +
						'<div class="ucol2" style="width:250px;">' +
						'	<div class="l1">{%=nombre%} </div>' +
						'	<div class="l1"> {%=precio_msg%}</div>' +
						'	<div class="l2">Internacional:{%=codigo%}</div>' +
						'	<div class="l2">{%=dcto_aplicado%}</div>' +
						'</div>'+
						'<div class="ucol2" style="width:133px;">' + 
							'<input type="text" class="txt" value="{%=num%}" onblur="Cart._updateNumField(\'{%=entidadID%}\',this.value);" /><br/> <span id="msgfor_{%=entidadID%}"></span> '+
						'</div>' +
						'<div class="ucol2" style="width:133px;">' + 
							'{%=sbtotales%}' +
						'</div>' +
						'<div class="ucol3" style="width:120px;">' + 
							'<img src="../img/trash_16x16.gif" class="ibtn" style="cursor:pointer;" onclick="Cart.removeItem(\'{%=entidadID%}\');"  />' +
						'</div>';
						
		_this.onclick = function(item,n,el){};
		_this.beforeRender = function(item,n,el){};
		_this.ondblclick = function(item,n,el){};
		_this.template = (props.template)?props.template:_this.template;
		_this.qry = "";
		var ecount = {};
		
		_this.imgError = function(img,id){
			if(!ecount[id])ecount[id] = 0;
			if(ecount[id]>2)return;
			img.src = _this.defaultImage;
			ecount[id]++;
		}

		_this.render = function(json){			
			var item,uitem;
			capa = document.getElementById(_this.renderTo);
			capa.innerHTML = "";
			var urlimg;
			var precioAntes = 0;
			var precioFinal = 0;
			var sbtotal = 0;
			var sbtotalAntes = 0;
			for(var i=0;i<json.data.length;i++){
				item = json.data[i];
				urlimg = item.imagen;
				item.dcto_aplicado = 
				item.isjuego = item.es_juego?"Es juego":"No es juego";
				item.imagen = urlimg;
				sbtotal = Number(item.pfinal)*item.num;
				sbtotalAntes = Number(item.precio)*item.num;
				
				item.sbtotales = "$"+n2a.format.format_currency(sbtotal);
				item.precio_msg = "Precio: "+ n2a.format.format_currency(item.precio);
				
				precioAntes += sbtotalAntes;
				precioFinal += sbtotal;
				
				if(item.precio != item.pfinal){
					item.precio_msg = "Precio <strike>$"+n2a.format.format_currency(item.precio)+"</strike> &nbsp; <b>$"+n2a.format.format_currency(item.pfinal)+"</b>";
				}
				item.dcto_aplicado = _this.dctoAplicado(item.operaciones);
				uitem = _this.buildItem(item,i);
				capa.appendChild(uitem);
			}
			
			
			
			var capaDetalles = document.createElement("DIV");			
			var htmDetalle = "<div class='cartPrecio'>";
			var ahorro = precioAntes - precioFinal;
			if(ahorro>0){
				ivaTotal = (precioFinal * 0.16);
				htmDetalle += "<span>Precio:</span>$<strike>" + n2a.format.format_currency(precioAntes) + "</strike>"+
						"<br/><span>Subtotal:</span> $" + n2a.format.format_currency(precioFinal)+ 
						'<br/><span>16% IVA:</span> $'+n2a.format.format_currency(ivaTotal)+
						"<br/><span>Total:</span> $" + n2a.format.format_currency(Number( precioFinal + ivaTotal )) +
						'<br/><span>Te regalamos el IVA:</span> - $'+n2a.format.format_currency(ivaTotal)+
						"<br/><span>Gran Total:</span> $" + n2a.format.format_currency(precioFinal)+
						"<br/><span class='msgred'>Usted ahorr&oacute: $"+ n2a.format.format_currency(Number(ahorro + ivaTotal))+
						" pesos</span>"+						
						"</div> ";		
			}else{
				ivaTotal = (precioFinal * 0.16);
				htmDetalle += "<span>Subtotal:</span> $" + n2a.format.format_currency(precioFinal)+
						'<br/><span>16% IVA:</span> $'+n2a.format.format_currency(ivaTotal)+
						"<br/><span>Total:</span> $" + n2a.format.format_currency(Number( precioFinal + ivaTotal )) +
						'<br/><span>Te regalamos el IVA:</span> - $'+n2a.format.format_currency(ivaTotal)+
						"<br/><span>Gran Total:</span> $" + n2a.format.format_currency(precioFinal)+
						"<br/><span class='msgred'>Usted ahorr&oacute: $"+ n2a.format.format_currency(Number(ivaTotal))+
						" pesos</span>"+			
						"</div> ";
			} 
			
			capaDetalles.innerHTML = htmDetalle;
			//capaDetalles.style.display = getCssRule(".trprecio");
			capaDetalles.id = 'capaDetalles';
			capa.appendChild(capaDetalles);
			try{
				if(dp){
					if(dp.fn)dp.fn(json);
				}
			}catch(ex){
			}
		};
		
		_this.dctoAplicado = function(reglas){
			var htm = "";
			var regla;
			var operacion;
			var tipo;
			for(var i=0;i<reglas.length;i++){
				regla = reglas[i];
				operacion = (regla.operacion=="restar")?"resto":"sumo";
				tipo = (regla.operador=="%")?"%":" pesos";
				htm += "Se " + operacion + " " + regla.cantidad + tipo;
			}
			return htm;
		};
		
		_this.buildItem = function(item,n){
			var div = document.createElement("div");
			var normal = "useritem";
			var over = "useritem over";
			div.className = normal;
			var nitem = _this.beforeRender(item,n,this);
			if(nitem !== null){
				for(var pr in nitem){
					item[pr] = nitem[pr];
				}
			}
			div.innerHTML = n2a.template.tpl(_this.template,item);
			div.onclick = function(){
				_this.onclick(item,n,this);
			}
			
			div.ondblclick = function(){
				_this.ondblclick(item,n,this);
			}
			
			div.onmouseover = function(){
				this.className = over;
			}
			div.onmouseout = function(){
				this.className = normal;
			}
			return div;
		}
	}
};
