/**
 * @author Cesar Arguinzones
 * 
 * Modificado para seleccionar primero los años de experiencia
 * v 0.3 Modificado intentando q sea mas rapido en IE
 */
var cavTabla = {
    'defaultCheckBox':null,
    'footerFix': null, 
    'defaults':{
		'CAS': 65,
		'HTA': '1.800',
		'ARR': '0,12',
		'DOT': '0,15',
		'MAT': '0,10',
		'PER': '0,22',
		'SER': '0,04',
		'Smin': '2.450,00',
		'K1': '0,125',
		'K2': 1,
		'Fuc': '1,25',
		'CR': 1,
		'FR': 1,
		'nombre':'',
		'cav':'',
		'K':0,
		'SD':0,
		'CN':0,
		'CI':0,
		'THI':0,
		'NHTI':0,
		'personal':0,
		'Ex':0
	},
	/*
	 * Esta variable indica si la pagina tiene cambios sin guardar.
	 */
	'isDirty': false,
	'theRules' : [],
/*
 * -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * 	            Declaramos algunos de los elementos aqui ya que IE es muy lento haciendo DOM querys           +
 *                                     y los inicializamos en el metodo init()                                +
 * -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 */																											//+	
	'inputSubtotal': null,																					//+	
	'inputIVA': null,																						//+
	'inputTotal': null,                                                                                     //+
	'masterRowClone': null,																					//+   
	'lastRow': null,																						//+  
	'selectPersonal': null,																					//+
	'selectYears': null,																					//+
// -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	
	'isPost': false,
	
	'valid': true,
	
	'gAjaxH' : {
		'onAjaxRequest': function() {
			cavTabla.showOverlay();
			$('guardando').setStyle('z-index',200).setStyle('display','');
		},
		'onAjaxComplete': function() {
			$('guardando').setStyle('display','none');
			cavTabla.hideOverlay();
		},
		'onAjaxFailure': function() {
			$('guardando').setStyle('display','none');
			cavTabla.hideOverlay();
		}
	},
	
	'iva': 0.12,
	'rowCount': 0,
	'personal':['Arquitecto Coordinador',
				'Arquitecto Asesor de Proyecto',
				'Arquitecto Supervisor',
				'Arquitecto Asistente',
				'Dibujante'
				],
				
	'T':[	
			'P1','P1','P2','P2','P2','P3','P3','P4','P4',
			'P5','P5','P6','P6','P7','P7','P8','P8','P8','P8','P9','P9',
			'P9A','P9A','P9A','P9A','P9A','P10','P10','P10','P10','P10'
		],
		
	'T2':[	
			'T1','T1','T2','T2','T2','T3','T3','T4','T4',
			'T5','T5','T6','T6','T7','T7','T8','T8','T8','T8','T9','T9',
			'T9A','T9A','T9A','T9A','T9A','T10','T10','T10','T10','T10'
		],
	
	'E':[
			{'option':'0 a 1','value':'1.35'},
			{'option':'1 a 2','value':'1.48'},
			{'option':'2 a 3','value':'1.61'},
			{'option':'3 a 4','value':'1.74'},
			{'option':'4 a 5','value':'1.87'},
			{'option':'5 a 6','value':'2.00'},
			{'option':'6 a 7','value':'2.12'},
			{'option':'7 a 8','value':'2.25'},
			{'option':'8 a 9','value':'2.38'},
			{'option':'9 a 10','value':'2.51'},
			{'option':'10 a 11','value':'2.64'},
			{'option':'11 a 12','value':'2.77'},
			{'option':'12 a 13','value':'2.90'},
			{'option':'13 a 14','value':'3.03'},
			{'option':'14 a 15','value':'3.16'},
			{'option':'15 a 16','value':'3.29'},
			{'option':'16 a 17','value':'3.41'},
			{'option':'17 a 18','value':'3.54'},
			{'option':'18 a 19','value':'3.67'},
			{'option':'19 a 20','value':'3.80'},
			{'option':'20 a 21','value':'3.93'},
			{'option':'21 a 22','value':'4.06'},
			{'option':'22 a 23','value':'4.19'},
			{'option':'23 a 24','value':'4.32'},
			{'option':'24 a 25','value':'4.45'},
			{'option':'25 a 26','value':'4.58'},
			{'option':'26 a 27','value':'4.70'},
			{'option':'27 a 28','value':'4.83'},
			{'option':'28 a 29','value':'4.96'},
			{'option':'29 a 30','value':'5.09'},
			{'option':'30+','value':'5.22'}
		],
		
	'founded':false,
	
	'inputClasses' : ['CAS','HTA','ARR','DOT','MAT','PER','SER','Smin','K1','K2','Fuc','K','CN','CI','THI','NHTI','SD','nombre','cav'],
	
	'textClases' : ['nombre','cav'],
		
	'init':function( dataRows, defaultRow){
	    $('selectAllCheck').addEvent('click',function(){
            if(this.checked){
                $$('.deleteRow').each(function(element){
                    if(cavTabla.defaultRow !== element) {
                        element.checked = true;
                    }   
                });
            }
            else{
                $$('.deleteRow').each(function(element){
                    if(cavTabla.defaultRow !== element) {
                        element.checked = false;
                    }   
                });
            }
        });
	    this.footerFix = $('footerfix');
	    this.setToolTips();
	    this.defaultRow = $E('#tableTemplateContainer .deleteRow');
		this.inputSubtotal = $('inputSubtotal');
		this.inputIVA = $('inputIVA');
		this.inputTotal = $('inputTotal');
		this.masterRowClone = $E('#tableTemplateContainer .row');
		
		this.dataRows = dataRows || [];
		
		this.defaults = defaultRow || this.defaults;
		
		this.selectYears = this.makeSelect(this.selectYears, this.E);
		this.selectPersonal = this.makeSelect(this.selectPersonal, this.personal);
		
		$('download').addEvent('click', this.downloadDataCSV.bind(this));
		$('excel-download').addEvent('click', this.downloadDataEXCEL.bind(this));
		
		
		$('newRowLink').addEvent('click', function(){
			this.addRow(this.defaults);
		}.bind(this));
		
		$('deleteRowLink').addEvent('click', this.deleteRow.bind(this));
		
		this.saveDataButton = $('saveData');
		this.saveDataButton.addEvent('click', function(){this.saveData();}.bind(this)).setProperty('disabled','disabled');
		
		if(this.dataRows.length>0){
			$each(this.dataRows, function(element,index){
				this.addRow(element);
				this.updateTotals();
			},this);
		}
		else{
			$('newRowLink').fireEvent('click');	
		}
		
		this.setToogles();
		$('guardando').setStyle('display','none');
	},
	
	'makeSelect': function(object, values){
		var select = new Element('select');
		select.setProperty('class','selectOpacity');
		var defaultOption = new Element('option');
		defaultOption.value = 0;
		defaultOption.text = "Seleccione...";
		defaultOption.innerText = "Seleccione...";
		defaultOption.selected = "selected";
		defaultOption.injectInside(select);
		values.each(function(el, index){
			var option = new Element('option');
			option.value = (el.value) ? el.value : index + 1;
			option.text = (el.option)? el.option : el;
			option.innerText = option.text;
			option.injectInside(select);
			//lastOption = option;
		});
		return select;
	},
	
	'manageEvent': function(evt){
		this.saveDataButton.setProperty('disabled','');
		this.isDirty = true;
		var td = evt.target.getParent();
		var parentRow = td.getParent();
		//var cellClass = td.getProperty('class');
		if(td.hasClass('Ex') || td.hasClass('personal')){
			this.fillT(parentRow);
		}
		this.updateValues(parentRow);
		evt.target.setStyle('background-color','');
		//this.saveData(true);
	},
	
	'updateValues': function(row){
		this.getK(row);
		this.getSD(row);
		this.getCN(row);
		this.getCI(row);
		this.getTHI(row);
		this.getCSP(row);
	},
	
	'fillSelect' : function(select,selected){
		var theSelect = select.clone();
		var isSomeOptionSelected = false;
		$each(theSelect.options, function(opt){
			if(opt.value==selected && selected !== 0){
				opt.selected = 'selected';
				isSomeOptionSelected = true;
			}
			else{
				opt.selected = '';
			}
		});
		if(isSomeOptionSelected === false){
			theSelect.setStyle('background-color','#00C8FF');
		}
		return theSelect;
	},
	
	'fillT': function(currentRow){
		var select = currentRow.$Ex;
		var currentValue = select.options[select.selectedIndex].text.toInt();
		//console.log(currentValue);
		var selectPersonal = currentRow.$personal;
		var personalValue = selectPersonal.options[selectPersonal.selectedIndex].value;
		var element = currentRow.$T;
		element.value = (personalValue == 5)? this.T2[currentValue] || "" : this.T[currentValue] || "";
	},
	
	'getK': function(currentRow){
		// K: ((E-4,5)/7,5)+1,7
		var select = currentRow.$Ex;
		var currentE = select.options[select.selectedIndex].text.toInt();
		currentE = isNaN(currentE) ? 0 : currentE;
		var K = ((currentE - 4.5)/7.5)+1.7;
		currentRow.$K.value = this.formatNumberToSpanish(K.toFixed(3)+'');
	},
	
	'getCurrentRow': function(element){
		return element.getParent().getParent();
	},
	
	'getSD': function(currentRow){
		// SD: Sueldo Directo mensual: (K2 x Smin (K + K1))	
		var K2 = this.formatNumberToEnglish(currentRow.$K2.value);
		K2 = isNaN(K2) ? 0 : K2;
		var Smin = this.formatNumberToEnglish(currentRow.$Smin.value);
		Smin = isNaN(Smin) ? 0 : Smin;
		var K1 = this.formatNumberToEnglish(currentRow.$K1.value);
		K1 = isNaN(K1) ? 0 : K1;
		var K = this.formatNumberToEnglish(currentRow.$K.value);
		K = isNaN(K) ? 0 : K;
		var SD = (K2 * (Smin * (K + K1)));
		currentRow.$SD.value = this.formatNumberToSpanish(SD.toFixed(2));
	},
	
	'getCN': function(currentRow){
		// CN: Costo de nómina en Bs/h= (12 x SD(1 + CAS/100))/HTA 
		var SD = this.formatNumberToEnglish(currentRow.$SD.value);
		var CAS = this.formatNumberToEnglish(currentRow.$CAS.value);
		var HTA = this.formatNumberToEnglish(currentRow.$HTA.value);
		var CN = (12 * SD * (1 + CAS / 100)) / HTA; 
		currentRow.$CN.value = this.formatNumberToSpanish(CN.toFixed(2));	
	},
	
	'getCI': function(currentRow){
		// CI: Costos Indirectos= (ARR + DOT + PER + SER) x CN
		var ARR = this.formatNumberToEnglish(currentRow.$ARR.value);
		var DOT = this.formatNumberToEnglish(currentRow.$DOT.value);
		var PER = this.formatNumberToEnglish(currentRow.$PER.value);
		var SER = this.formatNumberToEnglish(currentRow.$SER.value);
		var CN =  this.formatNumberToEnglish(currentRow.$CN.value);
		var MAT = this.formatNumberToEnglish(currentRow.$MAT.value);
		var CI =  (ARR + DOT + PER + MAT + SER) * CN;
		currentRow.$CI.value = this.formatNumberToSpanish(CI.toFixed(0));
	},
	
	'getTHI': function(currentRow){
		// THI: (CN + CI) x Fuc
		var CN = this.formatNumberToEnglish(currentRow.$CN.value);
		var CI = this.formatNumberToEnglish(currentRow.$CI.value);
		var Fuc = this.formatNumberToEnglish(currentRow.$Fuc.value);
		var THI = (CN + CI) * Fuc;
		currentRow.$THI.value = this.formatNumberToSpanish(THI.toFixed(2));
	},
	
	'getCSP': function(currentRow){
		// CSP: (THI x NHTI)
		var THI = this.formatNumberToEnglish(currentRow.$THI.value);
		THI = isNaN(THI) ? 0 : THI;
		var NHTI = this.formatNumberToEnglish(currentRow.$NHTI.value) || "";
		NHTI = isNaN(NHTI) ? 0 : NHTI;
		var CSP = THI * NHTI;
		
		currentRow.$CSP.value = this.formatNumberToSpanish(CSP.toFixed(2));
		
		
		
		
		this.updateTotals();
	},
	
	'updateTotals': function(){
		
		var elements = $ES('#appContainer .CSP input');
		var subTotal = 0;
		elements.each(function(el){
			subTotal += isNaN(this.formatNumberToEnglish(el.value))? 0 : this.formatNumberToEnglish(el.value);
		},this);
		var iva = subTotal * this.iva;
		var total = subTotal + iva;
		
		this.inputSubtotal.value = this.formatNumberToSpanish(subTotal.toFixed(2)+'');
		
		this.inputIVA.value = this.formatNumberToSpanish(iva.toFixed(2)+'');
		
		this.inputTotal.value = this.formatNumberToSpanish(total.toFixed(2)+'');
	}, //END: function updateTotals()
	
	'updateIVA': function(){
		var subTotal = isNaN(parseFloat(this.inputSubtotal.value)) ? 0 : parseFloat(this.inputSubtotal.value);
		var iva = subTotal * this.iva;
		this.inputIVA.value = iva.toFixed(2);
	}, // END: function updateIVA()
	
	'addRow': function(defaults){
	   
	   var my$E = $E;
		
		this.lastRow = $ES('#appContainer .row').getLast() ? $ES('#appContainer .row').getLast() : $E('.header');
		
		var rowClone = this.masterRowClone.clone();
		rowClone.$THI = my$E('.THI input', rowClone);
		rowClone.$NHTI = my$E('.NHTI input', rowClone);
		rowClone.$CN = my$E('.CN input', rowClone);
		rowClone.$CI = my$E('.CI input', rowClone);
		rowClone.$Fuc = my$E('.Fuc input', rowClone);
		
		rowClone.$ARR = my$E('.ARR input', rowClone);
		rowClone.$DOT = my$E('.DOT input', rowClone);
		rowClone.$PER = my$E('.PER input', rowClone);
		rowClone.$SER = my$E('.SER input', rowClone);
		rowClone.$MAT = my$E('.MAT input', rowClone);
		
		rowClone.$SD = my$E('.SD input', rowClone);
		rowClone.$CAS = my$E('.CAS input', rowClone);
		rowClone.$HTA = my$E('.HTA input', rowClone);
		
		rowClone.$Smin = my$E('.Smin input', rowClone);
		rowClone.$K = my$E('.K input', rowClone);
		rowClone.$K1 = my$E('.K1 input', rowClone);
		rowClone.$K2 = my$E('.K2 input', rowClone);
		
		//rowClone.$Ex = $E('.Ex select',rowClone);
		rowClone.$T = my$E('.T input',rowClone);
		rowClone.$CSP = my$E('.CSP input', rowClone);
		
		rowClone.$nombre = my$E('.nombre input', rowClone);
		rowClone.$cav = my$E('.cav input', rowClone);
		
		//var rows = $$('#appContainer .row');
		
		//var lastRow = (rows.length > 0) ? rows.getLast() : $E('.header');
		var rowCount = ++this.rowCount;
		rowClone.id = 'row'+rowCount; //--- rowClone.setProperty('id','row'+rowCount);
		this.setDefaults(rowClone, defaults);
		rowClone.injectAfter(this.lastRow);
		//this.lastRow = rowClone;
		var inputFields = $ES('input',rowClone);
		this.setEventsForInputs(inputFields);

		$ES('select',rowClone).each(function(el){
			el.addEvent('change',function(evt){
				this.manageEvent(new Event(evt));
			}.bind(this));
		}.bind(this));
		
		this.fixLogo();
		
	}, // END: function addRow()
	
	/*'deleteRow': function(){
		if(this.rowCount>1){
			var currentRow = this.lastRow;
			this.lastRow = this.lastRow.getPrevious();
			currentRow.remove();
			this.rowCount--;
		}
		
	}, // END: function deleteRow()*/
	'deleteRow': function(){
		if(this.rowCount>1){
		    $$('.deleteRow').each(function(element){
                if(this.defaultRow !== element && element.checked===true) {
                    //console.log(element.getParent().getParent());
                    if(this.rowCount > 1){
                        element.getParent().getParent().remove();
                        this.rowCount--;
                    }
                }   
            },this);
			/*var currentRow = this.lastRow;
			this.lastRow = this.lastRow.getPrevious();
			currentRow.remove();
			this.rowCount--;*/
		}
		this.fixLogo();
	}, // END: function deleteRow()
	'setEventsForInputs': function(inputs){
		inputs.each(function(el){
			/*el.addEvent('change',function(evt){
				this.manageEvent(new Event(evt));
			}.bind(this));*/
			
			el.onMyChange = this.manageEvent.bind(this);
			
			el.addEvent('focus',function(evt){
				this.$oldValue = this.value;
			});
			el.addEvent('blur',function(evt){
				evt = new Event(evt);
				if(this.$oldValue != this.value){
					this.onMyChange(evt);
				}
			});
			if(el.getParent().getProperty('class')!='nombre'){
				el.addEvent('keydown',function(e){
					e = new Event(e);
					var allowedKeys = [	'96','97','98','99','100','101','102','103','104',
										'105','8','46','39','37','44','188','116','9',
										'48','49','50','51','52','53','54','55','56','57'];
					var key = e.event.charCode || e.event.keyCode;
					key += '';
					if(!$A(allowedKeys).contains(key)) {
						e.preventDefault();
						e.returnValue = false;
						return false;
					}
					else{
						if(this.value.contains(',') && key=='188'){
							e.preventDefault();
							e.returnValue = false;
							return false;
						}
					}
				});
				el.addEvent('keyup',function(e){
					//alert(this.value);
					e = new Event(e);
					var key = e.event.charCode || e.event.keyCode;
					key += '';
					if(key=='188'){return;}
					this.value = cavTabla.formatNumber(this.value);
				});
			}
		}.bind(this));
	}, // END: function setEventsForInputs(inputs)
	
	'setDefaults': function(element, defaults){
		//var inputClasses = ['CAS','HTA','ARR','DOT','MAT','PER','SER','Smin','K1','K2','Fuc','K','CN','CI','THI','NHTI','SD','nombre','cav'];
		//var textClases = ['nombre','cav'];
		this.inputClasses.each(function(clase){
			var input = element['$'+clase];
			input.value = this.textClases.contains(clase) ? this.choose(defaults[clase], ""): this.choose(defaults[clase], 0);
			if(input.getProperty('readonly')===false && (input.value.trim()=='0' || input.value.trim()==="")){
				input.setStyle('background-color','#00C8FF');
			}
		}.bind(this));
		
		var selectEx = this.fillSelect(this.selectYears,defaults.Ex); 
		$E('.Ex', element).empty().adopt(selectEx);
		element.$Ex = selectEx;
		
		var selectPersonal = this.fillSelect(this.selectPersonal,defaults.personal);
		$E('.personal', element).empty().adopt(selectPersonal);
		element.$personal = selectPersonal;

		if(defaults.Ex!==0){
			this.fillT(element);
		}
		this.getCSP(element);
	}, // END: function setDefaults(element, defaults)
	
	'downloadDataCSV': function(){
	    this.downloadData('csv');
	},
	
	'downloadDataEXCEL': function(){
	    this.downloadData('xls');
	},
	
	'downloadData': function(method){
	    var method = method || 'csv';
		var valid = true;
		var inputClasses = ['CAS','HTA','ARR','DOT','MAT','PER','SER','Smin','K1','K2','Fuc','K','CN','CI','THI','NHTI','SD','nombre','cav','T','CSP'];
		var selectClases = ['Ex','personal'];
		var rows = $ES('#appContainer .row');
		var data = [];
		
		rows.each(function(row, rowIndex){
			var dataRow = {};
			
			selectClases.each(function(selectClass, selectIndex){
				var selectElement = row['$'+selectClass];
				//var td = selectElement.getParent();
				if(selectElement.selectedIndex == '0'){
					valid = false;
					selectElement.setStyle('background-color','red');
					return;
				}
				var selectText = selectElement.options[selectElement.selectedIndex].text;
				dataRow[selectClass] = selectText;
			}, this);
			
			inputClasses.each(function(inputClass, inputIndex){
				var inputElement = row['$'+inputClass];
				var td = inputElement.getParent();
				var className = td.getProperty('class').split(' ')[0];
				var inputValue = inputElement.value; 
				if((inputValue.trim()==="" || inputValue=='0') && inputElement.getProperty('readonly')!==true){
					valid = false;
					inputElement.setStyle('background-color','red');
					return;
				}
				dataRow[className] = inputValue;
			},this);
			
			data[rowIndex] = dataRow;
			
		}, this);
		
		if(valid){
			if(this.isDirty){
				this.saveData(true);
			}
			this.isPost = true;
			$('tableForm').action = 'index.php?option=com_jumi&fileid=5&no_html=1&method='+method;
			$('tableForm').method = 'post';
			$('formData').value = Json.toString(data);
			//$('ckData').value = Json.toString(cookieData);
			$('tableForm').submit();
		}else {
			alert('Debe llenar los campos en rojo para poder descargar el CSV');
		}
	},
	
	'saveData' : function(sync){
	    $('guardando').setText('Guardando...');
		var cookieData = [];
		var inputClasses = ['CAS','HTA','ARR','DOT','MAT','PER','SER','Smin','K1','K2','Fuc','K','CN','CI','THI','NHTI','SD','nombre','cav'];
		var selectClases = ['Ex','personal'];
		var rows = $ES('#appContainer .row');
		
		rows.each(function(row, rowIndex){
			//var myRow = {};
			var myCookieRow = {};
			
			selectClases.each(function(selectClass, selectIndex){
				var selectElement = row['$'+selectClass];
				//var td = selectElement.getParent();
				var selectValue = parseFloat(selectElement.options[selectElement.selectedIndex].value);
				myCookieRow[selectClass] = selectValue;
			}, this);
			
			inputClasses.each(function(inputClass, inputIndex){
				var inputElement = row['$'+inputClass];
				var td = inputElement.getParent();
				var className = td.getProperty('class').split(' ')[0];
				var inputValue = inputElement.value; 
				myCookieRow[className] = inputValue;
			},this);
			cookieData[rowIndex] = myCookieRow;
			
		}, this);
		//  -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		var updater = sync ? new Ajax('index.php?option=com_jumi&fileid=5&no_html=1&method=save',{
			'method':'post',
			'postBody':'uuid='+$('uuid').value+'&ckData='+Json.toString(cookieData),
			'async':false
		}) : new Ajax(/*window.hk47xx_domain+*/'index.php?option=com_jumi&fileid=5&no_html=1&method=save',{
			'method':'post',
			'postBody':'uuid='+$('uuid').value+'&ckData='+Json.toString(cookieData)
		});
		updater.addEvent('onRequest', this.gAjaxH.onAjaxRequest);
		updater.addEvent('onComplete', this.gAjaxH.onAjaxComplete);
		updater.addEvent('onFailure', this.gAjaxH.onAjaxFailure);
		//  -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		updater.request();
		
		this.saveDataButton.setProperty('disabled','disabled');
		this.isDirty = false;
	},

	'setToogles': function(){
		$('ciToggle').addEvent('click',function(e){
			e = new Event(e);
			e.preventDefault();
			this.toggleDisplay(0);
		}.bind(this));
		$('cnToggle').addEvent('click',function(e){
			e = new Event(e);
			e.preventDefault();
			this.toggleDisplay(1);
		}.bind(this));
		$('kToggle').addEvent('click',function(e){
			e = new Event(e);
			e.preventDefault();
			this.toggleDisplay(2);
		}.bind(this));
		
		
		
	}, // END: function setToogles()

	'toggleDisplay' : function(rule){
		if(this.theRules[rule].style.display == 'none'){
            this.theRules[rule].style.display = '';
        }
		else{
            this.theRules[rule].style.display = 'none';
        }
	}, // END: function toggleDisplay()
	
	'formatNumberToEnglish': function(val){
		val = val.replace(/\./g,'');
		val = val.replace(/,/g,'.');
		return parseFloat(val);
	},
	
	'formatNumberToSpanish' : function(num){
		num = num.replace(/\./,',');
		return(this.formatNumber(num));
	},
	
	'choose': function(first, second){
		if(first !== undefined && first !== null){
			if(typeof(first)== 'string' && first.trim()!==""){
				return first;
			}
			else if(typeof(first)=='number' && !isNaN(first) && first!='0'){
				return first;
			}
			else{
				return second;	
			}
		}
		else{
			return second;	
		}
	},
	
	'formatNumber':function(num){
		var partes = num.split(',');
		var parteEntera = partes[0];
		var parteDecimal = partes[1] || '';
		parteEntera = parteEntera.replace(/\./g,'');
		var value = "";
		var regx = /(\d+)(\d{3})/;
		while (regx.test(parteEntera)) {
			parteEntera = parteEntera.replace(regx, '$1' + '.' + '$2');
		}
		if(parteDecimal){
			value = parteEntera+','+parteDecimal;
		}
		else{
			value = parteEntera;	
		}
		return value;
	},

	'beforeClose': function(){
		//alert(this.isPost +' '+this.isDirty);
		if(this.isPost===false && this.isDirty===true){
			this.saveData(true);	
		}
		this.isPost = false;
	},
	
	'showOverlay': function(){
		var x = window.getScrollWidth();
		var y = window.getScrollHeight();
		x = window.ie ? x-21 : x;
		y = window.ie ? y-4 : y;
		this.theRules[3].style.visibility = 'hidden';
		$('myOverlay').setStyle('width',x).setStyle('height',y).setStyle('z-index',100).setStyle('display','');
	},
	'hideOverlay': function(){
		this.theRules[3].style.visibility = 'visible';
		$('myOverlay').setStyle('display','none');
	},
	'setToolTips': function(){
        var myTooltips = new Tips($$(  ".header .personal",".header .nombre",".header .cav",
                                        ".header .Ex",".header .T",".header .K1",".header .K2",
                                        ".header .K",".header .Smin",".header .SD",".header .CAS",
                                        ".header .HTA",".header .CN",".header .ARR",".header .DOT",
                                        ".header .MAT",".header .PER",".header .SER",".header .CI",
                                        ".header .Fuc",".header .THI",".header .NHTI",".header .CSP"),
                                    {offsets:{x:10,y:-20},showDelay:500,hideDelay:0});
    },
    'fixLogo': function(){
        if(window.ie){
            var fixLogoIE = function(){
                this.footerFix.setStyle('bottom',1).setStyle('bottom',0);
            };
            return fixLogoIE;
        }
        else{
            return (function(){});
        }  
    }()
};

window.addEvent('domready', function(){
    //console.log('on domready...');
  $('uuid').value = window.hk47xx_uuid;
	if (document.styleSheets[3].cssRules){
		cavTabla.theRules = document.styleSheets[3].cssRules;
	}	
	else if (document.styleSheets[3].rules){
		cavTabla.theRules = document.styleSheets[3].rules;
	}
	if(Cookie.get('uuid')){
		$('guardando').setStyle('display','').setText('Cargando...');
		var updt = new Ajax(/*window.hk47xx_domain+*/'index.php?option=com_jumi&fileid=5&no_html=1&method=retrieve',
		{
			'method':'post',
			'postBody':'uuid='+$('uuid').value,
			'onComplete':function(r){
				r = eval('('+r+')');
				cavTabla.init(r);
			}
		});
		updt.addEvent('onRequest', cavTabla.gAjaxH.onAjaxRequest);
		updt.addEvent('onComplete', cavTabla.gAjaxH.onAjaxComplete);
		updt.addEvent('onFailure', cavTabla.gAjaxH.onAjaxFailure);
		updt.request();
	}
	else{
		cavTabla.init(/*dataRows*/);
	}
	//new Modalizer().modalShow();
	
	
});

