// JavaScript Document
//Clase creadora del efecto
var classEfectos = function(nom, mt){
	//Variables
	var obj = nom;
	this.mt = mt;
	this.funfin = '';
	this.time = 1;
	this.parar = false;
	
	//Metodos
	this.iniEfecto = function(){
		//Inicia valores del efecto
		ini_val_efecto(this.mt);
		this.interv = setInterval(obj+".efecto()", this.time);
	}
}

// Funcion que realiza el efecto
classEfectos.prototype.efecto = function(){		
	//Inicia el efecto
	var temp = false;
	for(var i = 0; i < this.mt.length; i++){
		if(this.parar==true){
			break;
		}
		if(this.mt[i][5]!=''){
			//Recupera el valor que hay en el momento en la propuiedad
			if(this.mt[i][1]=='opacity')
				valact = parseFloat(getStyle(this.mt[i][0], this.mt[i][1])*100);
			else
				valact = parseFloat(getStyle(this.mt[i][0], this.mt[i][1]).replace(this.mt[i][2], ''));
				
			if(this.mt[i][3]>this.mt[i][4]){
				if(valact>this.mt[i][4]){
					if(this.mt[i][1]=='opacity'){
						var val = (valact+this.mt[i][5]);
						setOpacity(this.mt[i][0], val);
					}
					else{
						var val = (valact+this.mt[i][5])+this.mt[i][2];
						setStyle(this.mt[i][0], this.mt[i][1], val);
					}
					temp = true;
				}
			} else {
				if(valact<this.mt[i][4]){
					if(this.mt[i][1]=='opacity'){
						var val = (valact+this.mt[i][5]);
						setOpacity(this.mt[i][0], val);
					}
					else{
						var val = (valact+this.mt[i][5])+this.mt[i][2];
						setStyle(this.mt[i][0], this.mt[i][1], val);
					}
					temp = true;
				}
			}
		}
	}
	
	if(temp != true || this.parar==true){
		//Pone los valores Finales del efecto
		fin_val_efecto(this.mt);
		
		if(this.parar==false){
			//termina el Efecto
			this.finefecto();
			//llama a una funcion al terminar el efecto
			if(this.funfin!='')
				eval(this.funfin+"();");
		}
	}
}

// Funcion que realiza el efecto
classEfectos.prototype.finefecto = function(){
	clearInterval(this.interv);	
	this.interv=(-1);
}
	
//Pone los valores Iniciales de un efecto
var ini_val_efecto = function(mt){
	for(var i = 0; i < mt.length; i++){
		if(mt[i][1]=='opacity')
			setOpacity(mt[i][0], mt[i][3]);
		else
			setStyle(mt[i][0], mt[i][1], (mt[i][3]+mt[i][2]));
	}
}

//Pone los valores Finales de un efecto
var fin_val_efecto = function(mt){
	//alert('')
	for(var i = 0; i < mt.length; i++){
		if(mt[i][1]!='opacity')
			setStyle(mt[i][0], mt[i][1], (mt[i][4]+mt[i][2]));
		else
			setOpacity(mt[i][0], mt[i][4]);
	}
}

//Funcion que retorna el valor del parametro del elemento seleccionado
function getStyle(elemid, prop){
	var elem = document.getElementById(elemid);
	var valor = "";
	if(elem!=null){	
		if(document.defaultView && document.defaultView.getComputedStyle){
			valor = document.defaultView.getComputedStyle(elem, '').getPropertyValue(prop);
		}
		else if(elem.currentStyle) {
			prop = prop.replace(/\-(\w)/g, function (strMatch, p1) {
				return p1.toUpperCase();
			});
			valor = elem.currentStyle[prop];
		}
	}
	return valor;
}

//Funcion que asigna el valor del parametro del elemento seleccionado
function setStyle(elemid, prop, val){
	//alert(elemid+" "+prop+" "+val);
	var elem = document.getElementById(elemid);
	prop = prop.replace(/\-(\w)/g, function (strMatch, p1) {
		return p1.toUpperCase();
	});
	if(elem!=null)
		elem.style[prop] = val;
}

//Funcion que asigna el valor de opacidad del elemento seleccionado
function setOpacity(elemid, val){
	//alert(elemid+" "+val);
	var elem = document.getElementById(elemid);
	if(elem!=null){
		elem.style.filter="alpha(opacity="+ val +")";
		elem.style.opacity= (val/100) ;
	}
}

//Funcion que pone el href a un elemento a
function setHref(elemid, val){
	var elem = document.getElementById(elemid);
	if(elem!=null)
		elem.href='javascript:'+val;
}

//Funcion que cambia la clase de un elemento seleccionado
function cambiarcss(elemid, clase){	
	var elem = document.getElementById(elemid);
	if(elem!=null)
		elem.className = clase;
}

//Oculta o muestra el elemento seleccionado
function ver_ocultar(id, tipo){	
	var elem=document.getElementById(id);
	if(elem!=null)
	elem.style.visibility=tipo;
}