/************************************************************************************************************
(C) www.dhtmlgoodies.com, February 2006
************************************************************************************************************/	
// Patterns
var formValidationMasks = new Array();
formValidationMasks['email'] = /\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/gi;	// Email
formValidationMasks['numeric'] = /^[0-9]+$/gi;			// Numeric
formValidationMasks['zip'] = /^[0-9]{5}\-[0-9]{4}$/gi;	// Numeric

var formElementArray = new Array();

function validateInput(e,inputObj) {
	if(!inputObj)inputObj = this;		
	var inputValidates = true;

	if(formElementArray[inputObj.name]['required'] && (inputObj.tagName=='input' || inputObj.tagName=='INPUT' ) && inputObj.value.length==0) {inputValidates = false;}
	if(formElementArray[inputObj.name]['required'] && (inputObj.tagName=='select' || inputObj.tagName=='SELECT' ) && inputObj.selectedIndex==0){
		inputValidates = false;
	}
	if(formElementArray[inputObj.name]['mask'] && !inputObj.value.match(formValidationMasks[formElementArray[inputObj.name]['mask']]))inputValidates = false;

	if(formElementArray[inputObj.name]['freemask']){
		var tmpMask = formElementArray[inputObj.name]['freemask'];
		tmpMask = tmpMask.replace(/-/g,'\\-');
		tmpMask = tmpMask.replace(/S/g,'[A-Z]');
		tmpMask = tmpMask.replace(/N/g,'[0-9]');
		tmpMask = eval("/^" + tmpMask + "$/gi");
		if(!inputObj.value.match(tmpMask))inputValidates = false;
	}	
	
	if(formElementArray[inputObj.name]['regexpPattern']){
		var tmpMask = eval(formElementArray[inputObj.name]['regexpPattern']);
		if(!inputObj.value.match(tmpMask))inputValidates = false;
	}
	if(!(formElementArray[inputObj.name]['required']) && inputObj.value.length==0 && (inputObj.tagName=='input' || inputObj.tagName=='INPUT' )) inputValidates = true;
	
	if(inputValidates){
		inputObj.parentNode.className='validInput';
	}else{
		inputObj.parentNode.className='invalidInput';
	}
}

function isFormValid() {
	var divs = document.getElementsByTagName('span');
	for(var no=0;no<divs.length;no++){
		if(divs[no].className=='invalidInput')return false;
	}
	return true;	
}

function initFormValidation() {
	//alert('initFormValidation')
	var inputFields = document.getElementsByTagName('input');
	var selectBoxes = document.getElementsByTagName('select');
	
	var inputs = new Array();

	for(var no=0;no<inputFields.length;no++){
		inputs[inputs.length] = inputFields[no];
	}	

	for(var no=0;no<selectBoxes.length;no++){
		inputs[inputs.length] = selectBoxes[no];
	}
	
	for(var no=0;no<inputs.length;no++){
		var className = inputs[no].parentNode.className;
		if(className && className.indexOf('validInput')>=0)continue;		
		var required = inputs[no].getAttribute('required');
		if(!required)required = inputs[no].required;		
		
		var mask = inputs[no].getAttribute('mask');
		if(!mask)mask = inputs[no].mask;
		
		var freemask = inputs[no].getAttribute('freemask');
		if(!freemask)freemask = inputs[no].freemask;
		
		var regexpPattern = inputs[no].getAttribute('regexpPattern');
		if(!regexpPattern)regexpPattern = inputs[no].regexpPattern;
		
		//var div = document.createElement('DIV');
                /**/
		var div = document.createElement('span');
		div.className = 'invalidInput';
		inputs[no].parentNode.insertBefore(div,inputs[no]);
		div.appendChild(inputs[no]);
		div.style.width = inputs[no].offsetWidth + 'px';
		
		inputs[no].onblur = validateInput;
		inputs[no].onchange = validateInput;
		inputs[no].onpaste = validateInput;
		inputs[no].onkeyup = validateInput;
		
		formElementArray[inputs[no].name] = new Array();
		formElementArray[inputs[no].name]['mask'] = mask;
		formElementArray[inputs[no].name]['freemask'] = freemask;
		formElementArray[inputs[no].name]['required'] = required;
		formElementArray[inputs[no].name]['regexpPattern'] = regexpPattern;

		validateInput(false,inputs[no]);
	}	
}

/***********************************************************************************************
	AGREGAR CAMPO PARA ARCHIVOS
************************************************************************************************/

var numero = 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
   return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
   return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
   return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
   return evt.srcElement ?  evt.srcElement : evt.target;
}

addField = function () {
   container = d('files');
   
   span = c('div');
   span.className = 'file';
   span.id = 'file' + (++numero);

   field = c('input');   
   field.name = 'archivo[]';
   field.type = 'file';
   
   
   
   a = c('a');
   a.name = span.id;
   a.href = 'javascript:void(0)';
   a.onclick = removeField;
   a.innerHTML = 'Quitar';

   lab = c('label');
   lab.className = 'dato';
	
	lab.appendChild(a);
    span.appendChild(lab);
    span.appendChild(field);
    container.appendChild(span);
}
removeField = function (evt) {
   lnk = f(e(evt));
   span = d(lnk.name);
   span.parentNode.removeChild(span);
}



/***********************************************************************************************
	AGREGAR CAMPOS PARA COTIZACIONES
************************************************************************************************/

var cot = 1;


addCotizacion = function () {

   	container = d('cotizaciones'); // Extrae el elemento id = cotizaciones

	ul = c('ul');
	li3 = c('li');
	label3 = c('label');
	label3.className = 'dato';
	strAgregar = '<a href="javascript:void(0)" onclick="addCotizacion()" title="Agrega otra cotizaci&oacute;n a la solicitud">Agregar otra m&aacute;quina</a>&nbsp;|&nbsp;';				
	//label3.innerHTML=strAgregar;
	label3.innerHTML="&nbsp;";
	spanAgregar = c('span');
	spanAgregar.innerHTML =strAgregar;
   	div = c('div');
   	div.id = 'cotizacion_' + (++cot);
	a = c('a');
   	a.name = div.id;
   	a.href = 'javascript:void(0)';
   	a.onclick = removeCotizacion;
   	a.innerHTML = 'Quitar';

	strCotizacion =	'	<li><label class="dato">Marca</label><input name="marca[]" type="text" value="" size="30"  required="1"/></li>'+
					'	<li><label class="dato">Modelo</label><input name="modelo[]" type="text" value="" size="30"  required="1"/> </li>';

	li3.appendChild(label3);
	li3.appendChild(spanAgregar);
	li3.appendChild(a);

	ul.innerHTML=strCotizacion;
    ul.appendChild(li3);
    div.appendChild(ul);
    container.appendChild(div);
	
	//initFormValidation();
}

//var foto = 1;
addSenializacion = function () {

   	container = d('cotizaciones'); // Extrae el elemento id = cotizaciones

	ul = c('ul');
	li3 = c('li');
	label3 = c('label');
	label3.className = 'dato';
	//strAgregar = ' <a href="javascript:void(0)" onclick="addSenializacion()" title="Agrega otra cotizaci&oacute;n a la solicitud">Agregar otra m&aacute;quina</a>&nbsp;|&nbsp;';				
	strAgregar = ' <a href="javascript:void(0)" onclick="addSenializacion()" title="Agrega otra cotización a la solicitud">Agregar otra cotización</a>&nbsp;|&nbsp;';

	label3.innerHTML="&nbsp;";
	spanAgregar = c('span');
	spanAgregar.innerHTML =strAgregar;
   	div = c('div');
   	div.id = 'cotizacion_' + (++cot);
	a = c('a');
   	a.name = div.id;
   	a.href = 'javascript:void(0)';
   	a.onclick = removeSenializacion;
   	a.innerHTML = 'Quitar';
	//foto = foto+1;
	strCotizacion =	'	<li><label class="dato">Medida</label><input name="medida[]" value="" size="30" required="1" type="text"></li>'+
					'	<li><label class="dato">Cantidad</label> <input name="cantidad[]" value="" size="30" mask="numeric" required="1" type="text"></li>'+
					'	<li><label class="dato">Foto (opcional)</label><input name="archivo[]" type="file" size="28"></li>'+
					'	<br />';

	li3.appendChild(label3);
	li3.appendChild(spanAgregar);
	li3.appendChild(a);

	ul.innerHTML=strCotizacion;
    ul.appendChild(li3);
    div.appendChild(ul);
    container.appendChild(div);
	
	//initFormValidation();
}

removeSenializacion = function (evt) {
   //foto = foto-1;	
   lnk = f(e(evt));
   div = d(lnk.name);
   div.parentNode.removeChild(div);
}


removeCotizacion = function (evt) {
   lnk = f(e(evt));
   div = d(lnk.name);
   div.parentNode.removeChild(div);
}



/***********************************************************************************************
	AGREGAR CAMPOS PARA ETIQUETAS
************************************************************************************************/

//var eti = 1;


addEtiqueta = function () {
   	container = d('etiquetas'); // Extrae el elemento id = cotizaciones
	ul = c('ul');
	li3 = c('li');
	label3 = c('label');
	label3.className = 'dato';
	strAgregar = '<a href="javascript:void(0)" onclick="addEtiqueta()" title="Agrega otra cotizaci&oacute;n a la solicitud">Agregar otra etiqueta</a>&nbsp;|&nbsp;';			
	label3.innerHTML=strAgregar;
	label3.innerHTML="&nbsp;";
	spanAgregar = c('span');
	spanAgregar.innerHTML =strAgregar;
   	div = c('div');
   	div.id = 'cotizacion_' + (++cot);
	
	a = c('a');
   	a.name = div.id;
   	a.href = 'javascript:void(0)';
   	a.onclick = removeCotizacion;
   	a.innerHTML = 'Quitar';

	li3.appendChild(label3);
	li3.appendChild(spanAgregar);
	li3.appendChild(a);


	ul.innerHTML=doEtiqueta();
        ul.appendChild(li3);
        div.appendChild(ul);
        container.appendChild(div);	
	//initFormValidation();
	//enableTooltips("datosCotizaciones");
	//enableTooltips(div.id);
	//enableTooltips('ayuda_'+cot);
}

doEtiqueta = function (){

	strEtiqueta =	'	'+
					'		<li><label class="dato" for="material">Material</label>'+
					'                   <select name="material[]" required="1">'+
					'                       <option value="" selected="selected"></option>'+
					'                       <option value="Vinil adhesivo blanco impreso y recortado">Vinil adhesivo blanco impreso y recortado</option>'+
					'                       <option value="Reflejante 3M grado ingeniería impreso y recortado">Reflejante 3M grado ingeniería impreso y recortado</option>'+
					'                       <option value="Vinil adhesivo recortado (sin fondo)">Vinil adhesivo recortado (sin fondo)</option>'+
					'                       <option value="Vinil sobre imán">Vinil sobre imán</option>'+
					'                       <option value="Vinil transparente">Vinil transparente</option>'+
					'                       <option value="Vinil electroestático blando">Vinil electroestático blando</option>'+
					'                       <option value="Vinil electroestático transparente">Vinil electroestático transparente</option>'+
					'                       <option value="Vinil microperforado">Vinil microperforado</option>'+
					'                       <option value="Vinil tipo aluminio">Vinil tipo aluminio</option>'+
					'                       <option value="Diamantado en vinil o lona">Diamantado en vinil o lona</option>'+
					'                   </select>'+
					'		</li>'+
					'		<li id="ayuda_'+cot+'"><label class="dato" for="medida">Medida</label><a title="Proporcionanos la medida de la etiqueta."><input name="medida[]" type="text" id="medida" value="" size="30" required="1" />&nbsp;</a></li>'+
					'		<li><label class="dato" for="cantidad">Cantidad</label><input name="cantidad[]" type="text" id="cantidad" value="" size="10" mask="numeric" required="1" /></li>'+
					'		<li><label class="dato">Foto (opcional)</label><input name="archivo[]" type="file" size="28"></li>'+
					'		<br />';
	return strEtiqueta;


}


removeEtiqueta = function (evt) {
   lnk = f(e(evt));
   div = d(lnk.name);
   div.parentNode.removeChild(div);
}