window.onload = function(){
	//busca los stretch y stretcher
	myStretch = document.getElementsByClassName('stretch');
	myStretcher = document.getElementsByClassName('stretcher');

	//define las variables
	fi=typeof fadeIn!="undefined"?true:false;
	du=typeof segundosDeDuracion!="undefined"?segundosDeDuracion*1000:500;
	mi=typeof mostradoInicial!="undefined"?mostradoInicial:"undefined";
	di=typeof desplegadoInicial!="undefined"?desplegadoInicial:"undefined";
	fca=typeof funcionarComoAcordeon!="undefined"?funcionarComoAcordeon:1;

	//revisa si vienen las variables en la URL
	variablesPorURL=window.location.search.substring(1);
	v=variablesPorURL.split("=");
	for(i=0;i<v.length;i+=2){
		if(v[i]=="mostradoInicial"){
			mi=v[i+1];
			setTimeout(scrl,1000);
		}
	}

	function scrl(){
		niceScroll(mi);
	}

	//definir nicescroll si es que no se ha cargado
	if(!ubicacionActual){
		var ubicacionActual=-1, destino, velocidad, t;
		function niceScroll(dest, vel){
			if(!vel){ vel=10; }
			destino=dest;
			velocidad=vel;
			ir();
		}

		function ir(){
			donde=findPos(document.getElementById(destino),'y');
			if(navigator.appName=="Netscape"){ ubi=window.pageYOffset; }
			else{ ubi=document.documentElement.scrollTop; }
			if((ubi>donde || ubi<donde) && ubicacionActual!=ubi){
				ubicacionActual=ubi;
				dest=ubicacionActual+((donde-ubicacionActual)/8);
				window.scroll(0,dest);
				setTimeout(ir,velocidad);
			}
			else{
				ubicacionActual=-1;
			}
		}
		function findPos(obj) {
			var curTop=0;
			if (obj.offsetParent) {
				curTop = obj.offsetTop;
				while (obj = obj.offsetParent) {
					curTop += obj.offsetTop;
				}
			}
			return curTop;
		}
	}


	//setea las propiedades para el acordeon
	myAccordion = new fx.Accordion(myStretch, myStretcher, {
		 opacity: fi,
		 duration: du,
		 show: mi,
		 display: di
	});
};

function cerrarStretchersInteriores(padre){
	for(i=0;i<myStretcher.length;i++){
		if(padre=='todos' && myStretcher[i].offsetHeight>0){
			myStretch[i].className="stretch cerrado";
			myAccordion.fxa[i].toggle();
		}
		else{
			if(myStretcher[i].parentNode==padre && myStretcher[i].offsetHeight>0) {
				myStretch[i].className="stretch cerrado";
				myAccordion.fxa[i].toggle();
			}
		}
	}
}



function esInterior(id){
	var interior=true;
	if(myStretcher[id].parentNode.id=="despliegues") interior=false;
	return interior;
}

function destacar(objeto){

	var inactivo="stretch abierto";
	var activo="stretch cerrado";

	for(i=0;i<myStretcher.length;i++){
		x=myStretcher[i];
		if(x!=objeto){ x.className=inactivo; }
	}

	if(objeto.className==activo) {	objeto.className=inactivo; }
	else { objeto.className=activo; }
}

/********************************************************/


var Class = {
	create: function() {
		return function() {
			this.initialize.apply(this, arguments);
		}
	}
}

Object.extend = function(destination, source) {
	for (property in source) destination[property] = source[property];
	return destination;
}

Function.prototype.bind = function(object) {
	var __method = this;
	return function() {
		return __method.apply(object, arguments);
	}
}

Function.prototype.bindAsEventListener = function(object) {
var __method = this;
	return function(event) {
		__method.call(object, event || window.event);
	}
}

function $() {
	if (arguments.length == 1) return get$(arguments[0]);
	var elements = [];
	$c(arguments).each(function(el){
		elements.push(get$(el));
	});
	return elements;

	function get$(el){
		if (typeof el == 'string') el = document.getElementById(el);
		return el;
	}
}

if (!window.Element) var Element = new Object();

Object.extend(Element, {
	remove: function(element) {
		element = $(element);
		element.parentNode.removeChild(element);
	},

	hasClassName: function(element, className) {
		element = $(element);
		if (!element) return;
		var hasClass = false;
		element.className.split(' ').each(function(cn){
			if (cn == className) hasClass = true;
		});
		return hasClass;
	},

	addClassName: function(element, className) {
		element = $(element);
		Element.removeClassName(element, className);
		element.className += ' ' + className;
	},

	removeClassName: function(element, className) {
		element = $(element);
		if (!element) return;
		var newClassName = '';
		element.className.split(' ').each(function(cn, i){
			if (cn != className){
				if (i > 0) newClassName += ' ';
				newClassName += cn;
			}
		});
		element.className = newClassName;
	},

	cleanWhitespace: function(element) {
		element = $(element);
		$c(element.childNodes).each(function(node){
			if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node);
		});
	},

	find: function(element, what) {
		element = $(element)[what];
		while (element.nodeType != 1) element = element[what];
		return element;
	}
});

var Position = {
	cumulativeOffset: function(element) {
		var valueT = 0, valueL = 0;
		do {
			valueT += element.offsetTop  || 0;
			valueL += element.offsetLeft || 0;
			element = element.offsetParent;
		} while (element);
		return [valueL, valueT];
	}
};

document.getElementsByClassName = function(className) {
	var children = document.getElementsByTagName('*') || document.all;
	var elements = [];
	$c(children).each(function(child){
		if (Element.hasClassName(child, className)) elements.push(child);
	});
	return elements;
}

//useful array functions
Array.prototype.iterate = function(func){
	for(var i=0;i<this.length;i++) func(this[i], i);
}
if (!Array.prototype.each) Array.prototype.each = Array.prototype.iterate;

function $c(array){
	var nArray = [];
	for (var i=0;i<array.length;i++) nArray.push(array[i]);
	return nArray;
}

var fx = new Object();
//base
fx.Base = function(){};
fx.Base.prototype = {
	setOptions: function(options) {
	this.options = {
		duration: 500,
		onComplete: '',
		transition: fx.sinoidal
	}
	Object.extend(this.options, options || {});
	},

	step: function() {
		var time  = (new Date).getTime();
		if (time >= this.options.duration+this.startTime) {
			this.now = this.to;
			clearInterval (this.timer);
			this.timer = null;
			if (this.options.onComplete) setTimeout(this.options.onComplete.bind(this), 10);
		}
		else {
			var Tpos = (time - this.startTime) / (this.options.duration);
			this.now = this.options.transition(Tpos) * (this.to-this.from) + this.from;
		}
		this.increase();
	},

	custom: function(from, to) {
		if (this.timer != null) return;
		this.from = from;
		this.to = to;
		this.startTime = (new Date).getTime();
		this.timer = setInterval (this.step.bind(this), 13);
	},

	hide: function() {
		this.now = 0;
		this.increase();
	},

	clearTimer: function() {
		clearInterval(this.timer);
		this.timer = null;
	}
}

//stretchers
fx.Layout = Class.create();
fx.Layout.prototype = Object.extend(new fx.Base(), {
	initialize: function(el, options) {
		this.el = $(el);
		this.el.style.overflow = "hidden";
		this.iniWidth = this.el.offsetWidth;
		this.iniHeight = this.el.offsetHeight;
		this.setOptions(options);
	}
});

fx.Height = Class.create();
Object.extend(Object.extend(fx.Height.prototype, fx.Layout.prototype), {
	increase: function() {
		this.el.style.height = this.now + "px";
	},

	toggle: function() {
		if (this.el.offsetHeight > 0) this.custom(this.el.offsetHeight, 0);
		else this.custom(0, this.el.scrollHeight);
	}
});

//fader
fx.Opacity = Class.create();
fx.Opacity.prototype = Object.extend(new fx.Base(), {
	initialize: function(el, options) {
		this.el = $(el);
		this.now = 1;
		this.increase();
		this.setOptions(options);
	},

	increase: function() {
		if (this.now == 1 && (/Firefox/.test(navigator.userAgent))) this.now = 0.9999;
		this.setOpacity(this.now);
	},

	setOpacity: function(opacity) {
		if (opacity == 0 && this.el.style.visibility != "hidden") this.el.style.visibility = "hidden";
		else if (this.el.style.visibility != "visible") this.el.style.visibility = "visible";
		if (window.ActiveXObject) this.el.style.filter = "alpha(opacity=" + opacity*100 + ")";
		this.el.style.opacity = opacity;
	},

	toggle: function() {
		if (this.now > 0) this.custom(1, 0);
		else this.custom(0, 1);
	}
});

//transitions
fx.sinoidal = function(pos){
	return ((-Math.cos(pos*Math.PI)/2) + 0.5);
	//this transition is from script.aculo.us
}
fx.linear = function(pos){
	return pos;
}
fx.cubic = function(pos){
	return Math.pow(pos, 3);
}
fx.circ = function(pos){
	return Math.sqrt(pos);
}

//composition effect: widht/height/opacity
fx.Combo = Class.create();
fx.Combo.prototype = {
	setOptions: function(options) {
		this.options = {
			opacity: false,
			height: true,
			width: false
		}
		Object.extend(this.options, options || {});
	},

	initialize: function(el, options) {
		this.el = $(el);
		this.setOptions(options);
		if (this.options.opacity) {
			this.o = new fx.Opacity(el, options);
			options.onComplete = null;
		}
		if (this.options.height) {
			this.h = new fx.Height(el, options);
			options.onComplete = null;
		}
		if (this.options.width) this.w = new fx.Width(el, options);
	},

	toggle: function() { this.checkExec('toggle'); },

	hide: function(){ this.checkExec('hide'); },

	clearTimer: function(){ this.checkExec('clearTimer'); },

	checkExec: function(func){
		if (this.o) this.o[func]();
		if (this.h) this.h[func]();
		if (this.w) this.w[func]();
	},

	//only if width+height
	resizeTo: function(hto, wto) {
		if (this.h && this.w) {
			this.h.custom(this.el.offsetHeight, this.el.offsetHeight + hto);
			this.w.custom(this.el.offsetWidth, this.el.offsetWidth + wto);
		}
	},

	customSize: function(hto, wto) {
		if (this.h && this.w) {
			this.h.custom(this.el.offsetHeight, hto);
			this.w.custom(this.el.offsetWidth, wto);
		}
	}
}

fx.Accordion = Class.create();
fx.Accordion.prototype = {
	setOptions: function(options) {
		this.options = {}
		Object.extend(this.options, options || {});
	},

	initialize: function(togglers, elements, options) {
		this.elements = elements;
		this.setOptions(options);
		var options = options || '';
		this.fxa = [];
		if (options && options.onComplete) options.onFinish = options.onComplete;
		var desplegar="vacio";
		temp_d=mi.split(",");
		d=[];
		for(j=0;j<temp_d.length;j++){
			d[temp_d[j]]=1;
		}
		elements.each(function(el, i){
			options.onComplete = function(){ //ejecuta esto al terminar un despliegue
				if (el.offsetHeight > 0) el.style.height = '1%';
				if (options.onFinish) options.onFinish(el);
			}
			this.fxa[i] = new fx.Combo(el, options);
			var nuevoElemento="<small></small>";
			myStretch[i].innerHTML=nuevoElemento+myStretch[i].innerHTML;

			if(this.options.display==myStretcher[i].id) { this.fxa[i].hide(); desplegar=i; }

			if(this.options.display=="undefined" && d[myStretcher[i].id]==1) { myStretch[i].className="stretch abierto"; }
			else { this.fxa[i].hide(); }

		}.bind(this));

		if(desplegar!="vacio") { myStretch[desplegar].className="stretch abierto"; this.fxa[desplegar].toggle(); }

		togglers.each(function(tog, i){
			if (typeof tog.onclick == 'function') var exClick = tog.onclick;
			tog.onclick = function(){

				//* Código agregado para cambiar valores de las preguntas RB *//
				var PreguntasRespondidas = document.getElementById("PreguntasRespondidas");

				if(PreguntasRespondidas != null){
					//Total de registros del paginador
					var intTotalRegistros = document.getElementById("intTotalRegistros");
					//Acá dejaremos el Id de la pregunta que se pincho
					var IdDePreguntaParaModificarEstado;

					if(intTotalRegistros != null){
						//Recorremos el listado de registros
						for(a=0;a<= intTotalRegistros.value;a++){
							//recuperamos el div de cada registro
							var id = eval(document.getElementById("AbreRespuesta"+a));
							//preguntamos si el contador del for es igual al que selecciono al pinchar en abrir, si esd así entonces
							//asignamos el valor del div que es a su vez la PreguntaId.
							if (eval(a) == eval(i)){
								IdDePreguntaParaModificarEstado = id.value;
								var Celda = eval(document.getElementById("Pregunta"+i));
								Celda.className = "cssTituloConsultaLeida";
							}
						}
					}

					//Armamos AJAX con la PreguntaId que hemos recuperado del listado para que cambie en BD su valor
					var prueba;
					var urlDestino = "../../common/asp/pagCambiaEstadoDePreguntaAjax.asp";
					var ajax = nuevoAjax();
					ajax.open("POST", urlDestino, true);
					ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					ajax.send("PreguntaId=" + IdDePreguntaParaModificarEstado);

					ajax.onreadystatechange=function(){
						if (ajax.readyState==4){
							var respuesta=ajax.responseText;
							if(respuesta=="Error"){
								alert("Error Fatal!!!!");
							}
							else{
								//captura html de la plantilla
								var divPlantilla = document.getElementById("PlantillaPreguntasRespondidas");
								var strPlantilla = divPlantilla.innerHTML;

								//Varible que ocuparemos para nuevo HTML
								var newHTML     = "";
								//reemplaza las marcas de la plantilla por los valores que traemos de BD
								newHTML = strPlantilla.replace("[$PREGUNTASLEIDAS]", "(" + respuesta + ")");

								//asigna nuevo HTML al divContenedor para mostrar la informacion respectiva
								var divContenedor       = document.getElementById("ContenedorPreguntasRespondidas");
								divContenedor.innerHTML = newHTML;

							}
						}
					}
				}
				//* Termina el codigo que se agrego para el AJAX RB *//

				if (exClick) exClick();
				this.showThisHideOpen(elements[i]);
			}.bind(this);
		}.bind(this));
	},

	showThisHideOpen: function(toShow){
		this.elements.each(function(el, j){
			if(el==toShow){
				if(toShow.offsetHeight>0){ myStretch[j].className="stretch cerrado"; }
				else { myStretch[j].className="stretch abierto"; }
			}
			if(fca){
				if(!esInterior(j)){
					if(el==toShow){
						this.clearAndToggle(toShow, j);
						cerrarStretchersInteriores('todos');
					}
				}
				else{
					if(el==toShow) {
						this.clearAndToggle(toShow, j);
						cerrarStretchersInteriores(toShow.parentNode);
					}
				}
			}
			else{
				if(el==toShow){
					if(!esInterior(j)){
						cerrarStretchersInteriores(toShow);
					}
					this.clearAndToggle(toShow, j);
				}
			}
		}.bind(this));
	},

	clearAndToggle: function(el, i){
		this.fxa[i].clearTimer();
		this.fxa[i].toggle();
	}
}


function nuevoAjax()
{
  var xmlhttp=false;
  try
  {
    // No IE
    xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e)
  {
    try
    {
      // IE
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(E) { xmlhttp=false; }
  }
  if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
  return xmlhttp;
}
