/*
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 AHDSS - Calculo del importe de la solicitud sin gastos de envio.
 version:  d01-m04-a07.
 -- -- -- -- -- -- -- -- --
 Mauricio F. Tolezano - Acuataller (www.acuataller.com)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
*/

org.mendezmende.partidas.CalcularImporteSolicitud = function ()
{	
	this.u 							= null;
	this.tarifa 					= null;
	this.tarifaCertificadas 		= null;
	this.partidasCopias 			= [];
	this.partidasCopiasCertificadas 		= [];
	this.legalizadas				 = [];	
	this.idSubTotal 				= null;
	this.htmlMostrarTotal 			= null;
}


org.mendezmende.partidas.CalcularImporteSolicitud.prototype = {	
	
	
	iniciar : function ( idFormulario, idCopias, idCopiasCertificadas, claseCopias, claseLegalizadas, idTotal, idSubTotal, tarifa, tarifaCertificadas )
	{	
		if (!document.getElementById) return;
		
		this.u = new com.acuataller.utiles.Utiles();
		this.u.setClaseBandera('dom');

		this.tarifa 			= parseFloat( this.formatoDecimal( tarifa				) );
		this.tarifaCertificadas = parseFloat( this.formatoDecimal( tarifaCertificadas	) );
		
		this.idSubTotal 		= idSubTotal;
		this.htmlMostrarTotal 	= document.getElementById( idTotal ).getElementsByTagName('span')[0];


		this.asignarEventos( idFormulario, idCopias, idCopiasCertificadas, claseCopias, claseLegalizadas );
		
		this.compensarIE6();
	},
	
	
	calcular : function ()
	{		
		var totalCopias 		= 0;
		var totalCertificadas 	= 0;
		
		for(i=0; copias=this.partidasCopias[i]; i++)
		{
			var copiasSimples 		= parseInt( copias.value							 );
			var copiasCertificadas 	= parseInt( this.partidasCopiasCertificadas[i].value );
			copiasSimples			= !isNaN  (	copiasSimples		)? copiasSimples 		: 0;
			copiasCertificadas		= !isNaN  (	copiasCertificadas	)? copiasCertificadas 	: 0;
			
			var legalizada = this.legalizadas[i].checked;

			//if( copiasCertificadas > copiasSimples )
			//{
			//	copiasSimples =	copiasCertificadas;
			//	copias.value  = copiasCertificadas;
			//}

			//alert(copiasCertificadas);
			
			//if (legalizada==1  &&  copiasCertificadas==0 ) {
			//copiasCertificadas=1;
			//this.partidasCopiasCertificadas[i].value=1;

			//}



			//copiasSimples = copiasSimples - copiasCertificadas;	
			// 
			//
		
			totalCopias  	  += copiasSimples;
			totalCertificadas += copiasCertificadas;
				
			// Subtotal.
			var subTotal = ( copiasSimples * this.tarifa ) + ( copiasCertificadas * this.tarifaCertificadas );					
			this.mostrarSubTotal( subTotal, i+1 );
		}
		
		var importe = (totalCopias * this.tarifa) + (totalCertificadas * this.tarifaCertificadas);
		this.mostrarImporte(importe);
	},
	
	

	mostrarSubTotal : function (subTotal, indice)
	{
		htmlSubTotal = document.getElementById( this.idSubTotal+indice );
		
		if(htmlSubTotal)
		{
			subTotal = this.formatoMoneda( subTotal, 2 );
			htmlSubTotal.replaceChild( this.u.createTextNode( subTotal ), htmlSubTotal.firstChild );
		}
	},	
	
	mostrarImporte : function (importe)
	{
		importe = this.formatoMoneda( importe, 2 );
		this.htmlMostrarTotal.replaceChild( this.u.createTextNode( importe ), this.htmlMostrarTotal.firstChild );
	},
	
	
	asignarEventos: function( idFormulario, idCopias, idCopiasCertificadas, claseCopias, claseLegalizadas ) 
	{		
		var _this = this;
		
		for(i=0; copias=document.getElementById( idFormulario ).getElementsByTagName('input')[i]; i++)
		{


			if( copias.id==idCopias && copias.className==claseCopias )
			{
				copias.onkeyup=function() {
					_this.calcular();
				}
				this.partidasCopias.push( copias );
			}
			
			if( copias.id==idCopiasCertificadas && copias.className==claseCopias )
			{


				copias.onkeyup=function() {
					
					_this.calcular();
				}
				this.partidasCopiasCertificadas.push( copias );
			}			
			
			if(copias.className==claseLegalizadas )
			{

				copias.onClick=function() {

					_this.calcular();
				}
				this.legalizadas.push( copias );
			}	
		}
	},
	
	
	compensarIE6 : function ()
	{	
		// Para compensar un salto que hace IE 6 la primera vez que se cambia el total.
		// alert(this.htmlMostrarTotal.firstChild);
		this.htmlMostrarTotal.replaceChild( this.htmlMostrarTotal.firstChild, this.htmlMostrarTotal.firstChild );
	},
	
	
	formatoMoneda : function (base, presicion)
	{
		base = this.formatoDecimal(base);
		
		var m = Math.pow(10, presicion);
  		var a = Math.round(base * m) / m;
		var s = a.toString().replace('.',',');
		
		var decimalIndex = s.indexOf(',');
		if (presicion > 0 && decimalIndex < 0)
		{
			decimalIndex = s.length;
			s += ',';
		}		
		while (decimalIndex + presicion + 1 > s.length)
		{
			s += '0';
		}
		return s;
	},
	
	formatoDecimal : function (f)
	{
		return parseFloat( f.toString().replace(',','.') );
	}
	
	
}


org.mendezmende.partidas.ImporteSolicitud = {

	
	iniciar : function () {
	
		var importePartidas = new org.mendezmende.partidas.CalcularImporteSolicitud();
	
		importePartidas.iniciar( 	'formulario-solicitud-partidas', 
									'spnc[]', 
									'spncc[]', 
									'partida',
									'legalizadas',
									'importeSolicitudPartidas',
									'subTotalPartida-',
									document.getElementById( 'precioCopia' 				).value,
									document.getElementById( 'precioCopiaCertificada' 	).value
									);
		
		var importeVerificaciones = new org.mendezmende.partidas.CalcularImporteSolicitud();
	
		importeVerificaciones.iniciar( 	'formulario-solicitud-partidas', 
									  	'spnc[]',
										'spncc[]', 
										'verificacion',
										'importeSolicitudVerificaciones', 
										'subTotalVerificacion-',
										document.getElementById( 'precioCopia' 				).value,
										document.getElementById( 'precioCopiaCertificada' 	).value
										);
	}
}
ELO.functionsToCallOnload.push("org.mendezmende.partidas.ImporteSolicitud.iniciar()");


