Object.extend = function(dest, source, replace) {
	for(var prop in source) {
		if(replace == false && dest[prop] != null) { continue; }
		dest[prop] = source[prop];
	}
	return dest;
};

Object.extend(Function.prototype, {
	apply: function(o, a) {
		var r, x = "__fapply";
		if(typeof o != "object") { o = {}; }
		o[x] = this;
		var s = "r = o." + x + "(";
		for(var i=0; i<a.length; i++) {
			if(i>0) { s += ","; }
			s += "a[" + i + "]";
		}
		s += ");";
		eval(s);
		delete o[x];
		return r;
	},
	bind: function(o) {
		if(!Function.__objs) {
			Function.__objs = [];
			Function.__funcs = [];
		}
		var objId = o.__oid;
		if(!objId) {
			Function.__objs[objId = o.__oid = Function.__objs.length] = o;
		}

		var me = this;
		var funcId = me.__fid;
		if(!funcId) {
			Function.__funcs[funcId = me.__fid = Function.__funcs.length] = me;
		}

		if(!o.__closures) {
			o.__closures = [];
		}

		var closure = o.__closures[funcId];
		if(closure) {
			return closure;
		}

		o = null;
		me = null;

		return Function.__objs[objId].__closures[funcId] = function() {
			return Function.__funcs[funcId].apply(Function.__objs[objId], arguments);
		};
	}
}, false);

Object.extend(Array.prototype, {
	push: function(o) {
		this[this.length] = o;
	},
	addRange: function(items) {
		if(items.length > 0) {
			for(var i=0; i<items.length; i++) {
				this.push(items[i]);
			}
		}
	},
	clear: function() {
		this.length = 0;
		return this;
	},
	shift: function() {
		if(this.length == 0) { return null; }
		var o = this[0];
		for(var i=0; i<this.length-1; i++) {
			this[i] = this[i + 1];
		}
		this.length--;
		return o;
	}
}, false);

Object.extend(String.prototype, {
	trimLeft: function() {
		return this.replace(/^\s*/,"");
	},
	trimRight: function() {
		return this.replace(/\s*$/,"");
	},
	trim: function() {
		return this.trimRight().trimLeft();
	},
	endsWith: function(s) {
		if(this.length == 0 || this.length < s.length) { return false; }
		return (this.substr(this.length - s.length) == s);
	},
	startsWith: function(s) {
		if(this.length == 0 || this.length < s.length) { return false; }
		return (this.substr(0, s.length) == s);
	},
	split: function(c) {
		var a = [];
		if(this.length == 0) return a;
		var p = 0;
		for(var i=0; i<this.length; i++) {
			if(this.charAt(i) == c) {
				a.push(this.substring(p, i));
				p = ++i;
			}
		}
		a.push(s.substr(p));
		return a;
	}
}, false);

Object.extend(String, {
	format: function(s) {
		for(var i=1; i<arguments.length; i++) {
			s = s.replace("{" + (i -1) + "}", arguments[i]);
		}
		return s;
	},
	isNullOrEmpty: function(s) {
		if(s == null || s.length == 0) {
			return true;
		}
		return false;
	}
}, false);

if(typeof addEvent == "undefined")
	addEvent = function(o, evType, f, capture) {
		if(o == null) { return false; }
		if(o.addEventListener) {
			o.addEventListener(evType, f, capture);
			return true;
		} else if (o.attachEvent) {
			var r = o.attachEvent("on" + evType, f);
			return r;
		} else {
			try{ o["on" + evType] = f; }catch(e){}
		}
	};
	
if(typeof removeEvent == "undefined")
	removeEvent = function(o, evType, f, capture) {
		if(o == null) { return false; }
		if(o.removeEventListener) {
			o.removeEventListener(evType, f, capture);
			return true;
		} else if (o.detachEvent) {
			o.detachEvent("on" + evType, f);
		} else {
			try{ o["on" + evType] = function(){}; }catch(e){}
		}
	};
//esta es una copia del core de ajax, con la solucion del problema de javascript en ontimeout
//si en futuras versiones de ajax se corrige, ya no sera necesario

Object.extend(Function.prototype, {
	getArguments: function() {
		var args = [];
		for(var i=0; i<this.arguments.length; i++) {
			args.push(this.arguments[i]);
		}
		return args;
	}
}, false);

var MS = {"Browser":{}};

Object.extend(MS.Browser, {
	isIE: navigator.userAgent.indexOf('MSIE') != -1,
	isFirefox: navigator.userAgent.indexOf('Firefox') != -1,
	isOpera: window.opera != null
}, false);

var AjaxPro = {};

AjaxPro.IFrameXmlHttp = function() {};
AjaxPro.IFrameXmlHttp.prototype = {
	onreadystatechange: null, headers: [], method: "POST", url: null, async: true, iframe: null,
	status: 0, readyState: 0, responseText: null,
	abort: function() {
	},
	readystatechanged: function() {
		var doc = this.iframe.contentDocument || this.iframe.document;
		if(doc != null && doc.readyState == "complete" && doc.body != null && doc.body.res != null) {
			this.status = 200;
			this.statusText = "OK";
			this.readyState = 4;
			this.responseText = doc.body.res;
			this.onreadystatechange();
			return;
		}
		setTimeout(this.readystatechanged.bind(this), 10);
	},
	open: function(method, url, async) {
		if(async == false) {
			alert("Synchronous call using IFrameXMLHttp is not supported.");
			return;
		}
		if(this.iframe == null) {
			var iframeID = "hans";
			if (document.createElement && document.documentElement &&
				(window.opera || navigator.userAgent.indexOf('MSIE 5.0') == -1))
			{
				var ifr = document.createElement('iframe');
				ifr.setAttribute('id', iframeID);
				ifr.style.visibility = 'hidden';
				ifr.style.position = 'absolute';
				ifr.style.width = ifr.style.height = ifr.borderWidth = '0px';

				this.iframe = document.getElementsByTagName('body')[0].appendChild(ifr);
			}
			else if (document.body && document.body.insertAdjacentHTML)
			{
				document.body.insertAdjacentHTML('beforeEnd', '<iframe name="' + iframeID + '" id="' + iframeID + '" style="border:1px solid black;display:none"></iframe>');
			}
			if (window.frames && window.frames[iframeID]) {
				this.iframe = window.frames[iframeID];
			}
			this.iframe.name = iframeID;
			this.iframe.document.open();
			this.iframe.document.write("<"+"html><"+"body></"+"body></"+"html>");
			this.iframe.document.close();
		}
		this.method = method;
		this.url = url;
		this.async = async;
	},
	setRequestHeader: function(name, value) {
		for(var i=0; i<this.headers.length; i++) {
			if(this.headers[i].name == name) {
				this.headers[i].value = value;
				return;
			}
		}
		this.headers.push({"name":name,"value":value});
	},
	getResponseHeader: function(name, value) {
		return null;
	},
	addInput: function(doc, form, name, value) {
		var ele;
		var tag = "input";
		if(value.indexOf("\n") >= 0) {
			tag = "textarea";
		}
		
		if(doc.all) {
			ele = doc.createElement("<" + tag + " name=\"" + name + "\" />");
		}else{
			ele = doc.createElement(tag);
			ele.setAttribute("name", name);
		}
		ele.setAttribute("value", value);
		form.appendChild(ele);
		ele = null;
	},
	send: function(data) {
		if(this.iframe == null) {
			return;
		}
		var doc = this.iframe.contentDocument || this.iframe.document;
		var form = doc.createElement("form");
		
		doc.body.appendChild(form);
		
		form.setAttribute("action", this.url);
		form.setAttribute("method", this.method);
		form.setAttribute("enctype", "application/x-www-form-urlencoded");
		
		for(var i=0; i<this.headers.length; i++) {
			switch(this.headers[i].name.toLowerCase()) {
				case "content-length":
				case "accept-encoding":
				case "content-type":
					break;
				default:
					this.addInput(doc, form, this.headers[i].name, this.headers[i].value);
			}
		}
		this.addInput(doc, form, "data", data);
		form.submit();
		
		setTimeout(this.readystatechanged.bind(this), 0);
	}
};

var progids = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
var progid = null;

if(typeof ActiveXObject != "undefined") {
	var ie7xmlhttp = false;
	if(typeof XMLHttpRequest == "object") {
		try{ var o = new XMLHttpRequest(); ie7xmlhttp = true; }catch(e){}
	}
	if(typeof XMLHttpRequest == "undefined" || !ie7xmlhttp) {
		XMLHttpRequest = function() {
			var xmlHttp = null;
			if(!AjaxPro.noActiveX) {
				if(progid != null) {
					return new ActiveXObject(progid);
				}
				for(var i=0; i<progids.length && xmlHttp == null; i++) {
					try {
						xmlHttp = new ActiveXObject(progids[i]);
						progid = progids[i];

					}catch(e){}
				}
			}
			if(xmlHttp == null && MS.Browser.isIE) {
				return new AjaxPro.IFrameXmlHttp();
			}
			return xmlHttp;
		};
	}
}

Object.extend(AjaxPro, {
	noOperation: function() {},
	onLoading: function() {},
	onError: function() {},
	onTimeout: function() { return true; },
	onStateChanged: function() {},
	cryptProvider: null,
	queue: null,
	token: "",
	version: "7.7.31.1",
	ID: "AjaxPro",
	noActiveX: false,
	timeoutPeriod: 15*1000,
	queue: null,
	noUtcTime: false,
	regExDate: function(str,p1, p2,offset,s) {
        str = str.substring(1).replace('"','');
        var date = str;
        
        if (str.substring(0,7) == "\\\/Date(") {
            str = str.match(/Date\((.*?)\)/)[1];                        
            date = "new Date(" +  parseInt(str) + ")";
        }
        else { // ISO Date 2007-12-31T23:59:59Z                                     
            var matches = str.split( /[-,:,T,Z]/);        
            matches[1] = (parseInt(matches[1],0)-1).toString();                     
            date = "new Date(Date.UTC(" + matches.join(",") + "))";         
       }                  
        return date;
    },
    parse: function(text) {
		// not yet possible as we still return new type() JSON
//		if (!(!(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
//		text.replace(/"(\\.|[^"\\])*"/g, '')))  ))
//			throw new Error("Invalid characters in JSON parse string.");                 

        var regEx = /(\"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}.*?\")|(\"\\\/Date\(.*?\)\\\/")/g;
        text = text.replace(regEx,this.regExDate);      

        return eval('(' + text + ')');    
    },
	m : {
		'\b': '\\b',
		'\t': '\\t',
		'\n': '\\n',
		'\f': '\\f',
		'\r': '\\r',
		'"' : '\\"',
		'\\': '\\\\'
	},
	toJSON: function(o) {	
		if(o == null) {
			return "null";
		}
		var v = [];
		var i;
		var c = o.constructor;
		if(c == Number) {
			return isFinite(o) ? o.toString() : AjaxPro.toJSON(null);
		} else if(c == Boolean) {
			return o.toString();
		} else if(c == String) {
			if (/["\\\x00-\x1f]/.test(o)) {
				o = o.replace(/([\x00-\x1f\\"])/g, function(a, b) {
					var c = AjaxPro.m[b];
					if (c) {
						return c;
					}
					c = b.charCodeAt();
					return '\\u00' +
						Math.floor(c / 16).toString(16) +
						(c % 16).toString(16);
				});
            }
			return '"' + o + '"';
		} else if (c == Array) {
			for(i=0; i<o.length; i++) {
				v.push(AjaxPro.toJSON(o[i]));
			}
			return "[" + v.join(",") + "]";
		} else if (c == Date) {
//			var d = {};
//			d.__type = "System.DateTime";
//			if(AjaxPro.noUtcTime == true) {
//				d.Year = o.getFullYear();
//				d.Month = o.getMonth() +1;
//				d.Day = o.getDate();
//				d.Hour = o.getHours();
//				d.Minute = o.getMinutes();
//				d.Second = o.getSeconds();
//				d.Millisecond = o.getMilliseconds();
//			} else {
//				d.Year = o.getUTCFullYear();
//				d.Month = o.getUTCMonth() +1;
//				d.Day = o.getUTCDate();
//				d.Hour = o.getUTCHours();
//				d.Minute = o.getUTCMinutes();
//				d.Second = o.getUTCSeconds();
//				d.Millisecond = o.getUTCMilliseconds();
//			}
			return AjaxPro.toJSON("/Date(" + new Date(Date.UTC(o.getUTCFullYear(), o.getUTCMonth(), o.getUTCDate(), o.getUTCHours(), o.getUTCMinutes(), o.getUTCSeconds(), o.getUTCMilliseconds())).getTime() + ")/");
		}
		if(typeof o.toJSON == "function") {
			return o.toJSON();
		}
		if(typeof o == "object") {
			for(var attr in o) {
				if(typeof o[attr] != "function") {
					v.push('"' + attr + '":' + AjaxPro.toJSON(o[attr]));
				}
			}
			if(v.length>0) {
				return "{" + v.join(",") + "}";
			}
			return "{}";		
		}
		return o.toString();
	},
	dispose: function() {
		if(AjaxPro.queue != null) {
			AjaxPro.queue.dispose();
		}
	}
}, false);

addEvent(window, "unload", AjaxPro.dispose);

AjaxPro.Request = function(url) {
	this.url = url;
	this.xmlHttp = null;
};

AjaxPro.Request.prototype = {
	url: null,
	callback: null,
	onLoading: AjaxPro.noOperation,
	onError: AjaxPro.noOperation,
	onTimeout: AjaxPro.noOperation,
	onStateChanged: null,
	args: null,
	context: null,
	isRunning: false,
	abort: function() {
		if(this.timeoutTimer != null) {
			clearTimeout(this.timeoutTimer);
		}
		if(this.xmlHttp) {
			this.xmlHttp.onreadystatechange = AjaxPro.noOperation;
			this.xmlHttp.abort();
		}
		if(this.isRunning) {
			this.isRunning = false;
			this.onLoading(false);
		}
	},
	dispose: function() {
		this.abort();
	},
	getEmptyRes: function() {
		return {
			error: null,
			value: null,
			request: {method:this.method, args:this.args},
			context: this.context,
			duration: this.duration
		};	
	},
	endRequest: function(res) {
		this.abort();
		if(res.error != null) {
			this.onError(res.error, this);
		}

		if(typeof this.callback == "function") {
			this.callback(res, this);
		}
	},
	mozerror: function() {
		if(this.timeoutTimer != null) {
			clearTimeout(this.timeoutTimer);
		}
		var res = this.getEmptyRes();
		res.error = {Message:"Unknown",Type:"ConnectFailure",Status:0};
		this.endRequest(res);
	},
	doStateChange: function() {
		this.onStateChanged(this.xmlHttp.readyState, this);
		if(this.xmlHttp.readyState != 4 || !this.isRunning) {
			return;
		}
		this.duration = new Date().getTime() - this.__start;
		if(this.timeoutTimer != null) {
			clearTimeout(this.timeoutTimer);
		}
		var res = this.getEmptyRes();
		if(this.xmlHttp.status == 200 && this.xmlHttp.statusText == "OK") {
			res = this.createResponse(res);
		} else {
			res = this.createResponse(res, true);
			res.error = {Message:this.xmlHttp.statusText,Type:"ConnectFailure",Status:this.xmlHttp.status};
		}
		
		this.endRequest(res);
	},
	createResponse: function(r, noContent) {
		if(!noContent) {
			if(typeof(this.xmlHttp.responseText) == "unknown") {
				r.error = {Message: "XmlHttpRequest error reading property responseText.", Type: "XmlHttpRequestException"};
				return r;
			}
		
			var responseText = "" + this.xmlHttp.responseText;

			if(AjaxPro.cryptProvider != null && typeof AjaxPro.cryptProvider.decrypt == "function") {
				responseText = AjaxPro.cryptProvider.decrypt(responseText);
			}

			if(this.xmlHttp.getResponseHeader("Content-Type") == "text/xml") {
				r.value = this.xmlHttp.responseXML;
			} else {
				if(responseText != null && responseText.trim().length > 0) {
					r.json = responseText;
					var v = null;
					v = AjaxPro.parse(responseText);
					if(v != null) {
						if(typeof v.value != "undefined") r.value = v.value;
						else if(typeof v.error != "undefined") r.error = v.error;
					}
				}
			}
		}
		/* if(this.xmlHttp.getResponseHeader("X-" + AjaxPro.ID + "-Cache") == "server") {
			r.isCached = true;
		} */
		return r;
	},
	timeout: function() {
		this.duration = new Date().getTime() - this.__start;
		var r = this.onTimeout(this.duration, this);
		if(typeof r == "undefined" || r != false) {
			this.abort();
		} else {
			this.timeoutTimer = setTimeout(this.timeout.bind(this), AjaxPro.timeoutPeriod);
		}
	},
	invoke: function(method, args, callback, context) {
		this.__start = new Date().getTime();

		// if(this.xmlHttp == null) {
			this.xmlHttp = new XMLHttpRequest();
		// }

		this.isRunning = true;
		this.method = method;
		this.args = args;
		this.callback = callback;
		this.context = context;
		
		var async = typeof(callback) == "function" && callback != AjaxPro.noOperation;
		
		if(async) {
			if(MS.Browser.isIE) {
				this.xmlHttp.onreadystatechange = this.doStateChange.bind(this);
			} else {
				this.xmlHttp.onload = this.doStateChange.bind(this);
				this.xmlHttp.onerror = this.mozerror.bind(this);
			}
			this.onLoading(true);
		}
		
		var json = AjaxPro.toJSON(args) + "";
		if(AjaxPro.cryptProvider != null && typeof AjaxPro.cryptProvider.encrypt == "function") {
			json = AjaxPro.cryptProvider.encrypt(json);
		}
		
		this.xmlHttp.open("POST", this.url, async);
		this.xmlHttp.setRequestHeader("Content-Type", "text/plain; charset=utf-8");
		this.xmlHttp.setRequestHeader("X-" + AjaxPro.ID + "-Method", method);
		
		if(AjaxPro.token != null && AjaxPro.token.length > 0) {
			this.xmlHttp.setRequestHeader("X-" + AjaxPro.ID + "-Token", AjaxPro.token);
		}

		/* if(!MS.Browser.isIE) {
			this.xmlHttp.setRequestHeader("Connection", "close");
		} */

		this.timeoutTimer = setTimeout(this.timeout.bind(this), AjaxPro.timeoutPeriod);

		try{ this.xmlHttp.send(json); }catch(e){}	// IE offline exception

		if(!async) {
			return this.createResponse({error: null,value: null});
		}

		return true;	
	}
};

AjaxPro.RequestQueue = function(conc) {
	this.queue = [];
	this.requests = [];
	this.timer = null;
	
	if(isNaN(conc)) { conc = 2; }

	for(var i=0; i<conc; i++) {		// max 2 http connections
		this.requests[i] = new AjaxPro.Request();
		this.requests[i].callback = function(res) {
			var r = res.context;
			res.context = r[3][1];

			r[3][0](res, this);
		};
		this.requests[i].callbackHandle = this.requests[i].callback.bind(this.requests[i]);
	}
	
	this.processHandle = this.process.bind(this);
};

AjaxPro.RequestQueue.prototype = {
	process: function() {
		this.timer = null;
		if(this.queue.length == 0) {
			return;
		}
		for(var i=0; i<this.requests.length && this.queue.length > 0; i++) {
			if(this.requests[i].isRunning == false) {
				var r = this.queue.shift();

				this.requests[i].url = r[0];
				this.requests[i].onLoading = r[3].length >2 && r[3][2] != null && typeof r[3][2] == "function" ? r[3][2] : AjaxPro.onLoading;
				this.requests[i].onError = r[3].length >3 && r[3][3] != null && typeof r[3][3] == "function" ? r[3][3] : AjaxPro.onError;
				this.requests[i].onTimeout = r[3].length >4 && r[3][4] != null && typeof r[3][4] == "function" ? r[3][4] : AjaxPro.onTimeout;
				this.requests[i].onStateChanged = r[3].length >5 && r[3][5] != null && typeof r[3][5] == "function" ? r[3][5] : AjaxPro.onStateChanged;

				this.requests[i].invoke(r[1], r[2], this.requests[i].callbackHandle, r);
				r = null;
			}
		}
		if(this.queue.length > 0 && this.timer == null) {
			this.timer = setTimeout(this.processHandle, 0);
		}
	},
	add: function(url, method, args, e) {
		this.queue.push([url, method, args, e]);
		if(this.timer == null) {
			this.timer = setTimeout(this.processHandle, 0);
		}
		// this.process();
	},
	abort: function() {
		this.queue.length = 0;
		if (this.timer != null) {
			clearTimeout(this.timer);
		}
		this.timer = null;
		for(var i=0; i<this.requests.length; i++) {
			if(this.requests[i].isRunning == true) {
				this.requests[i].abort();
			}
		}
	},
	dispose: function() {
		for(var i=0; i<this.requests.length; i++) {
			var r = this.requests[i];
			r.dispose();
		}
		this.requests.clear();
	}
};

AjaxPro.queue = new AjaxPro.RequestQueue(2);	// 2 http connections

AjaxPro.AjaxClass = function(url) {
	this.url = url;
};

AjaxPro.AjaxClass.prototype = {
	invoke: function(method, args, e) {
	
		if(e != null) {
			if(e.length != 6) {
				for(;e.length<6;) { e.push(null); }
			}
			if(e[0] != null && typeof(e[0]) == "function") {
				return AjaxPro.queue.add(this.url, method, args, e);
			}
		}
		var r = new AjaxPro.Request();
		r.url = this.url;
		return r.invoke(method, args);
	}
};


var addNamespace = function(ns) {
	var nsParts = ns.split(".");
	var root = window;
	for(var i=0; i<nsParts.length; i++) {
		if(typeof root[nsParts[i]] == "undefined") {
			root[nsParts[i]] = {};
		}
		root = root[nsParts[i]];
	}
};

Object.extend(window, {
	$: function() {
		var elements = [];
		for(var i=0; i<arguments.length; i++) {
			var e = arguments[i];
			if(typeof e == 'string') {
				e = document.getElementById(e);
			}
			if(arguments.length == 1) {
				return e;
			}
			elements.push(e);
		}
		return elements;
	},
	Class: {
		create: function() {
			return function() {
				if(typeof this.initialize == "function") {
					this.initialize.apply(this, arguments);
				}
			};
		}
	}
}, false);

addNamespace("MS.Debug");
MS.Debug = {};		// has been removed to debug version of core.ashx

addNamespace("MS.Position");

Object.extend(MS.Position, {
	getLocation: function(ele) {
		var x = 0;
		var y = 0;
		var p;
		for(p=ele; p; p=p.offsetParent) {
			// if(p.style.position == "relative" || p.style.position == "absolute") break;
			if(p.offsetLeft && p.offsetTop) {
				x += p.offsetLeft;
				y += p.offsetTop;
			}
		}
		return {left:x,top:y};
	},
	getBounds: function(ele) {
		var offset = MS.Position.getLocation(ele);
		var width = ele.offsetWidth;
		var height = ele.offsetHeight;
		return {left:offset.left,top:offset.top,width:width,height:height};
	},
	setLocation: function(ele, loc) {
		ele.style.position = "absolute";
		ele.style.left = loc.left + "px";
		ele.style.top = loc.top + "px";
	},
	setBounds: function(ele, rect) {
		if(rect.left && rect.top) {
			MS.Position.setLocation(ele, rect);
		}
		ele.style.width = rect.width + "px";
		ele.style.height = rect.height + "px";
	}
}, false);

addNamespace("MS.Keys");

Object.extend(MS.Keys, {
	TAB: 9,
	ESC: 27,
	KEYUP: 38,
	KEYDOWN: 40,
	KEYLEFT: 37,
	KEYRIGHT: 39,
	SHIFT: 16,
	CTRL: 17,
	ALT: 18,
	ENTER: 13,
	getCode: function(e) {
		e = MS.getEvent(e);
		if(e != null) { return e.keyCode; }
		return -1;
	}
}, false);

Object.extend(MS, {
	setText: function(ele, text) {
		if(ele == null) { return; }
		if(document.all) {
			ele.innerText = text;
		} else {
			ele.textContent = text;
		}
	},
	setHtml: function(ele, html) {
		if(ele == null) { return; }
		ele.innerHTML = html;
	},
	cancelEvent: function(e) {
		e = MS.getEvent(e);
		if(window.event) {
			e.returnValue = false;
		} else if(e) {
			e.preventDefault();
			e.stopPropagation();
		}
	},
	getEvent: function(e) {
		if(window.event) { return window.event; }
		if(e) { return e; }
		return null;
	},
	getTarget: function(e) {
		e = MS.getEvent(e);
		if(window.event) { return e.srcElement; }
		if(e) { return e.target; }
	}
}, false);

var StringBuilder = function() {
	this.v = [];
};

Object.extend(StringBuilder.prototype, {
	append: function(s) {
		this.v.push(s);
	},
	appendLine: function(s) {
		this.v.push(s + "\r\n");
	},
	clear: function() {
		this.v.clear();
	},
	toString: function() {
		return this.v.join("");
	}
}, true);
if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.PageControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.PageControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	VerifyLanguage: function(hash) {
		return this.invoke("VerifyLanguage", {"hash":hash}, this.VerifyLanguage.getArguments().slice(1));
	},
	VerifySession: function(href, url, idType) {
		return this.invoke("VerifySession", {"href":href, "url":url, "idType":idType}, this.VerifySession.getArguments().slice(3));
	},
	CloseNavigator: function() {
		return this.invoke("CloseNavigator", {}, this.CloseNavigator.getArguments().slice(0));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.PageControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.PageControl = new Wke.Presentation.WebControls.PageControl_class();


//control de cierre de ventana en ie
var myclose=false;

window.onbeforeunload = function() 
{
if(window.event)
{
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth-20;
if(b && window.event.clientY < 0 || window.event.altKey)
{
    if(window.opener==null)
        myclose=true;
    return HandleOnClose();
     
}
}
}

 function HandleOnClose(){	
 if (myclose==true) var res=Wke.Presentation.WebControls.PageControl.CloseNavigator();	
 }	



function PageLoad(target, method)
{  
    var obj = new Object();
    obj.url = window.location.href;  
    AjaxCachePageControl_load(target, method, obj);
}


//Funcion que nos permite saltar a enlaces externos. Esta aquí de forma temporal
function SaltoExt(url)
{
 window.open(url);
} 



//var xmlHttp = createXmlHttpRequestObject();

//function createXmlHttpRequestObject()
//{
// 
//  var xmlHttp;
// 
//  try
//  {
//   
//    xmlHttp = new XMLHttpRequest();
//  }
//  catch(e)
//  {
//    //  IE6 
//    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
//                                    "MSXML2.XMLHTTP.5.0",
//                                    "MSXML2.XMLHTTP.4.0",
//                                    "MSXML2.XMLHTTP.3.0",
//                                    "MSXML2.XMLHTTP",
//                                    "Microsoft.XMLHTTP");
//   
//    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
//    {
//      try
//      {
//        
//        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
//      }
//      catch (e) {}
//    }
//  }
// 
//  if (!xmlHttp)
//    alert("Error creating the XMLHttpRequest object.");
//  else
//    return xmlHttp;
//}

//function process(pageprocess)
//{

//  if (xmlHttp)
//  {
//   
//    try
//    {
//     
//      xmlHttp.open("GET",pageprocess, true);
//      xmlHttp.onreadystatechange = handleRequestStateChange;
//      xmlHttp.send(null);
//    }

//    catch (e)
//    {
//      alert("Can't connect to server:\n" + e.toString());
//    }
//  }
//}


//function handleRequestStateChange()
//{
//  
//  if (xmlHttp.readyState == 4)
//  {
//    
//    if (xmlHttp.status == 200)
//    {
//      try
//      {
//        
//        //esto funciona
//      }
//      catch(e)
//      {
//        // display error message
//        alert("Error reading the response: " + e.toString());
//      }
//    }
//    else

//    {
//      // display status message
//      alert("There was a problem retrieving the data:\n" +
//            xmlHttp.statusText);
//    }
//  }
//}



/**************************************************************************/
var opacityDisableControl = 40;
var functionResize = "SetBodyHeight();";
var functionsOnLoad = "";

function GetDate() {
  var this_month = new Array(12);
  this_month[0] = fmtmes1; //"Enero";
  this_month[1] = fmtmes2; //"Febrero";
  this_month[2] = fmtmes3; //"Marzo";
  this_month[3] = fmtmes4; //"Abril";
  this_month[4] = fmtmes5; //"Mayo";
  this_month[5] = fmtmes6; //"Junio";
  this_month[6] = fmtmes7; //"Julio";
  this_month[7] = fmtmes8; //"Agosto";
  this_month[8] = fmtmes9; //"Septiembre";
  this_month[9] = fmtmes10; //"Octubre";
  this_month[10] = fmtmes11; //"Noviembre";
  this_month[11] = fmtmes12; //"Diciembre";

  var this_day_e = new Array(7);
  this_day_e[0] = fmtdia1; //"Domingo";
  this_day_e[1] = fmtdia2; //"Lunes";
  this_day_e[2] = fmtdia3; //"Martes";
  this_day_e[3] = fmtdia4; //"Mi&eacute;rcoles";
  this_day_e[4] = fmtdia5; //"Jueves";
  this_day_e[5] = fmtdia6; //"Viernes";
  this_day_e[6] = fmtdia7; //"S&aacute;bado";

  var today = new Date();
  var day   = today.getDate();
  var month = today.getMonth();
  var year  = today.getYear();
  var dia = today.getDay();
    if (year < 1000) {
       year += 1900; }
  document.write (this_day_e[dia] + " " + day + " de " + this_month[month] + " " + year);
}

/**********************************************************************************************/
/*                 Funciones para Exportar, imprimir y enviar a un amigo                      */
/**********************************************************************************************/
//Nos devuelve el texto que hayamos seleccionado de un documento.
function GetSelectedText()
{
	if (window.getSelection){
		return window.getSelection() + "";
	}
	else if (document.getSelection){
		return document.getSelection() + "";
	}
	else if (document.selection){
		return document.selection.createRange().text + "";
	}
	else{
		return "";
	}
}

/**********************************************************************************************/
/*                 Funcion para Validar Correo                                                */
/**********************************************************************************************/
function ValidateMail(mail)
{
    if(mail.search('^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$')){
        return false;
    }
    return true;
}


/**********************************************************************************************/
/*                Funciones para deshabilitar funcionalidad por permisos                      */
/**********************************************************************************************/

function Warning(errorToShow)  
{
    //htmlNoPermissions se crea en el web control PageControl
    //alert(htmlNoPermissions);
    // eval(htmlNoPermissions); antes
    eval (errorToShow);
    return false;
}

function DisableControl(id) 
{
    var obj = document.getElementById(id);
    if (navigator.appName == "Microsoft Internet Explorer"){
        DisableControlsRecursive(obj);
    }
    else{
        obj.style.opacity = (opacityDisableControl / 100);
        obj.style.MozOpacity = (opacityDisableControl / 100);
        obj.style.KhtmlOpacity = (opacityDisableControl / 100);
        obj.style.filter = "alpha(opacity=" + opacityDisableControl + ")"; 
    }
} 

function DisableControlsRecursive(obj)
{
    if (obj.hasChildNodes()){
        var children = obj.childNodes;
        var i = 0;
        
        while (i < children.length){
            if (children[i].style != null){
                children[i].style.opacity = (opacityDisableControl / 100);
                children[i].style.MozOpacity = (opacityDisableControl / 100);
                children[i].style.KhtmlOpacity = (opacityDisableControl / 100);
                children[i].style.filter = "alpha(opacity=" + opacityDisableControl + ")"; 
            }
            else {
                if (children[i].parentNode.style != null){
                    var parent = children[i].parentNode;
                    parent.style.opacity = (opacityDisableControl / 100);
                    parent.style.MozOpacity = (opacityDisableControl / 100);
                    parent.style.KhtmlOpacity = (opacityDisableControl / 100);
                    parent.style.filter = "alpha(opacity=" + opacityDisableControl + ")"; 
                }
            }
            DisableControlsRecursive(children[i]);            
            i++;
        };
    }    
}

/**********************************************************************************************/
/*                Funciones para redimensionar el body del portal                             */
/**********************************************************************************************/
function OnLoadPortal() {
	// Soluciona Explorer 6.0 para crear objetos despues de cargar la pagina   
	// Debe estar al inicio de este método. La razón es que si existe alguna de las funciones js que se buscan aquí, realiza el
	// return y ya no sigue ejecutando.
	eval(functionsOnLoad);
	
	//document.forms[0].onsubmit= function () {return validate_swlogin();};
	document.forms[0].onsubmit= function () {
	    if (typeof(validate_swlogin) == "function"){
	        return validate_swlogin();
	    }        
	};

    OnLoadCache();
    setTimeout('SetBodyHeight()',1);
    if (typeof (gotoanchorid) != "undefined") {
    setTimeout('GotoAnchor(gotoanchorid)',1);
    }
    //SetBodyHeight();
   
    //si existe una funcion con este nombre la llamaremos
    if (typeof(OnLoadPortalByProduct) == "function"){
      return OnLoadPortalByProduct();    }

    //para el extraño caso de los 1024 volvemos a llamar al gotoanchor
    if (typeof (gotoanchorid) != "undefined") {
        return GotoAnchorAux();
    }
}

function GotoAnchorAux() {
    setTimeout('GotoAnchor(gotoanchorid)', 500);
    return true;
}


function SetBodyHeight(){
    var redimension = true;
       
    /* CRC (16/04/2008)
       MODIFICACION PARA EVITAR POSICIONAMIENTO DE LA CAPA DE CONTENIDO 
       POR JAVASCRIPT CUANDO SE ESTE CARGANDO UN DOCUMENTO */
    var setBodyHeight= true;
    //if (document.getElementById("cDocument") != null){
    //    setBodyHeight= false;
    //}
    
    if(setBodyHeight) {
        if (pagesNoRedimension != "") {
            var pages = pagesNoRedimension.split("|");
            var i = 0;
            var url = window.location.href;
            url = url.substr(0, url.indexOf(".aspx") + 5);
            
            while (i < pages.length && redimension) {
                if (url.indexOf(pages[i]) != -1) {
                    redimension = false;
                }
                i++;
            }
        }
            
        if (redimension) {   
            //Si se tiene que redimensionar la capa central que tendra scroll   
            var height = document.getElementById("cContainer").offsetHeight;
            if (document.getElementById("cHead") != null){
    	        height -= document.getElementById("cHead").offsetHeight;
    	    
    	    } else if(document.getElementById("cEmbeddedHead") != null){
    	        //CRC (09/07/2008): Para contenidos que se muestran embebidos
    	        // en un Iframe, la cabecera embebida, se llama cEmbeddedHead 
    	        height -= document.getElementById("cEmbeddedHead").offsetHeight;
    	    }
        	
    	    if (document.getElementById("cFooter") != null){
    	         height -= document.getElementById("cFooter").offsetHeight;
    	    }
    	    else if (document.getElementById("cFooterHome") != null){
    	         height -= document.getElementById("cFooterHome").offsetHeight;
    	    }   	
        	   	
            if(height > 0){
                if (wcPage_body !=null && document.getElementById(wcPage_body) != null){
                    document.getElementById(wcPage_body).style.height = height + "px";
                }  
    	        if (document.getElementById("cCx") != null){
                    document.getElementById("cCx").style.height = height + "px";  
                }
                if (document.getElementById("cCn") != null){
                    document.getElementById("cCn").style.height = height + "px";  
                }
            }
        } 
        else
        {   
    	    var height = document.documentElement.clientHeight;
    	    if (document.getElementById("cHead") != null){
    	        height -= document.getElementById("cHead").offsetHeight;
    	    } 
    	    else if(document.getElementById("cEmbeddedHead") != null){
    	        //CRC (09/07/2008): Para contenidos que se muestran embebidos
    	        // en un Iframe, la cabecera embebida, se llama cEmbeddedHead 
    	        height -= document.getElementById("cEmbeddedHead").offsetHeight;
    	    }
        	
    	    if (document.getElementById("cFooter") != null){
	            height -= document.getElementById("cFooter").offsetHeight;
    	    }
    	    else if (document.getElementById("cFooterHome") != null){
	            height -= document.getElementById("cFooterHome").offsetHeight;
    	    }
        	
            if (document.getElementById(wcPage_body).offsetHeight < height){
                document.getElementById(wcPage_body).style.height = height + "px";
            }              
        }
    }
    if (typeof (gotoanchorid) != "undefined") {
        setTimeout('GotoAnchor(gotoanchorid)', 1);
    }
}

//En la redimension de la ventana se ejecutan todas las funciones javascript
//que hayamos introducido en esta variable
window.onresize = function() {
    eval(functionResize);
}


/**********************************************************************************************/
/*                                  Funciones para video EMG                                  */
/**********************************************************************************************/
function AC_AddExtension(src, ext){
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) { 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

////////////////////////////////////////
function EscribeProyectorFlash(URL_SWF,Ancho,Alto,URL_Video){
	movie = URL_SWF.split(".swf");
	var flVars = "urlVideo="+URL_Video+"&ancho="+Ancho+"&alto="+Alto;
	AC_FL_RunContent(
		'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0',
		'width', Ancho,
		'height', Alto,
		'src', URL_SWF,
		'quality', 'high',
		'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
		'align', 'middle',
		'play', 'true',
		'loop', 'true',
		'scale', 'showall',
		'wmode', 'transparent',
		'devicefont', 'false',
		'id', 'proyector',
		'name', 'proyector',
		'movie', movie[0],
		'salign', '',
		'FlashVars',flVars);
}

////////////////////////////////////////
// Funcion para ir a un producto del catalogo de la web Corporativa
function mostrarSugerencia(Producto) {
    msgWindow=window.open("http://es.sitestat.com/wkes/elconsultor/s?esclickout.externallink&amp;ns_type=clickout&amp;ns_url=[http://tienda.wke.es/cgi-bin/wke.storefront/SP/product/"+Producto+"?wn%3D0]","Producto","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=400");
}

ï»¿var opacity = 30;
var imageSrc = "../Img/popup_close.gif";
var popup = new CPopup("generic");
var PutItCenter="";

/**
 * Clase que encapsula un contenedor de la pagina web.
 */
function CPopup(nombre)
{
    this.nombre = nombre;
    this.content = null;
    this.main = null;
    this.header = null;
    this.titlediv = null;
    this.closeButton = null;
    this.contentDiv = null; 
    this.request = false;    
    this.width = null;
    this.height = null; 
    this.onLoadFunction = "";
    this.onUnloadFunction = "";     
    this.enterFunction = "";
}


CPopup.prototype.Create = function CPopup_Create()
{
    this.main = document.getElementById(this.nombre);    
    if (this.main == null)
    {     
        // Configurar las propiedades del contenedor   
        // Crear el div contenedor que constituye el popup y aniadirlo al documento
        this.main = document.createElement('div');       
        this.main.className = 'popupContainer';
        this.main.id = this.nombre;         
        this.main.container = this;
        // Insertar el contenedor en la pagina
        document.body.appendChild(this.main);
        
        // Aniadir los dos divs (cabecera y contenido)
        this.header = document.createElement('div');
        this.header.id = this.main.id + '_header';
        this.header.className = 'popupHeader';
        // Asignar los eventos de movimiento a la cabecera.       
        this.header.onmousedown = this.BeginMove;
        this.header.onmouseup = this.EndMove;
        this.header.container = this;
        this.header.lastMouseX = -1;
        this.header.lastMouseY = -1;         
        this.main.appendChild(this.header); 
           
        this.titlediv = document.createElement('div');
        this.titlediv.id = this.main.id + '_divTitle'; 
        this.titlediv.className = 'divTitle'; 
        this.header.appendChild(this.titlediv); 
        
        //Crear el boton de cierre del popup
        this.closeButton = document.createElement('img');   
        this.closeButton.src = imageSrc;     
        this.closeButton.container = this;
        this.closeButton.alt = "X";
        this.closeButton.style.cursor = "pointer";
        this.header.appendChild(this.closeButton);           
        
        //Crear la capa que tendra el contenido del popup
        this.contentDiv = document.createElement('div');
        this.contentDiv.container = this;
        this.contentDiv.id = this.nombre + '_containerDivId';
        this.main.appendChild(this.contentDiv);       
        this.contentDiv.className = 'popupContent';          
    }   
    this.CreateRequest();
    return this.main;
}

CPopup.prototype.Delete = function CPopup_Delete()
{
    window.parent.focus();    
    this.main.parentNode.removeChild(this.main);
}

function GetEvent(e)
{
		if(window.event) 
				return window.event;
	  else
	  		return e;	  		
}


//Calcula el ancho del area funcional dentro del navegador
CPopup.prototype.GetBodyWidth = function CPopup_GetBodyWidth()
{
    return document.body.offsetWidth;
};

//Calcula el alto del area funcional dentro del navegador
CPopup.prototype.GetBodyHeight = function CPopup_GetBodyHeight()
{
    var height = document.all ? document.documentElement.clientHeight :  window.innerHeight;

    //en el caso de ser un IE que se ha producido una recarga de pagina
    //la funcion anterior devuelve 0, si se quiere poner en el centro.
    if(height==0 && document.all && PutItCenter=="yes")
    {
        return document.body.offsetHeight;
    }
    return height;
};

//Calcula el ancho del area funcional dentro del navegador
CPopup.prototype.GetAbsoluteBodyWidth = function CPopup_GetAbsoluteBodyWidth()
{
    return document.body.offsetWidth;
};

//Calcula el alto del area funcional dentro del navegador
CPopup.prototype.GetAbsoluteBodyHeight = function CPopup_GetAbsoluteBodyHeight()
{
    
    var iebody = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
    var dsoctop = document.all? iebody.scrollTop : pageYOffset;
    var absoluteHeight = dsoctop + this.GetBodyHeight();   
    return absoluteHeight;
};

//Recupera la coordenada X para centrar el popup
CPopup.prototype.GetPopupXCenter = function CPopup_GetPopupXCenter()
{
    var bodyWidth = this.GetBodyWidth();
    return (bodyWidth - this.width)/2;
};
 
//Recupera la coordenada Y para centrar el popup
CPopup.prototype.GetPopupYCenter = function CPopup_GetPopupYCenter()
{
    var bodyHeight = this.GetBodyHeight();    
    return (bodyHeight - this.height)/2;
};

//Redimensiona el popup
CPopup.prototype.ResizeTo = function CPopup_ResizeTo(width, height)
{
    if (width > 0)
    {
        this.width = width;
        this.main.style.width = width + "px";
    }
    if (height > 0)
    {
        this.height = height;
        this.main.style.height = height + "px";
    }
};

//Mueve el popup a las coordenadas indicadas
CPopup.prototype.MoveTo = function CPopup_MoveTo(x, y)
{
    this.main.style.top = y + "px";
    this.main.style.left = x + "px";
};

//MOVIMIENTO
CPopup.prototype.BeginMove = function CPopup_BeginMove(e)
{          
    e = GetEvent(e);
    
    if (this.container)
    {          
        document.onselectstart = new Function("return false")
        if (window.sidebar){
            document.onmousedown = function (e){return false;}
            document.onclick = function (e){return true;}
        }
        currentWindow = this.container.main;   
        currentWindow.lastMouseX = e.clientX - parseInt(currentWindow.style.left);
        currentWindow.lastMouseY = e.clientY - parseInt(currentWindow.style.top);
        document.container = this.container;
        document.onmousemove = this.container.HandleMouseMove;       
        document.onmouseup = this.container.EndMove;   
    }   
};

CPopup.prototype.HandleMouseMove = function CPopup_HandleMouseMove(e)
{   
    e = GetEvent(e);
     
    moveXBy = e.clientX - currentWindow.lastMouseX;
    moveYBy = e.clientY - currentWindow.lastMouseY;
    
    var bodyWidth = this.container.GetAbsoluteBodyWidth();
    var bodyHeight = this.container.GetAbsoluteBodyHeight();
    
    if (bodyWidth > moveXBy + this.container.width && 0 < moveXBy)
    {
		currentWindow.container.left = moveXBy;
		currentWindow.style.left = moveXBy + 'px'; 
    }
    else if (0 > moveXBy)
    {
		currentWindow.container.left = 0;
		currentWindow.style.left = '0px'; 
    }
    else if (bodyWidth < moveXBy + this.container.width)
    {
		maxim = bodyWidth - this.container.width - 3;
		currentWindow.container.left = maxim;
		currentWindow.style.left = (maxim) + 'px'; 
    }
    
    if (bodyHeight > moveYBy + this.container.height && 0 < moveYBy)
    {
		currentWindow.container.top = moveYBy;
		currentWindow.style.top = moveYBy + 'px'; 
    } 
    else if (0 > moveYBy)
    {
		currentWindow.container.top = 0;
		currentWindow.style.top = '0px'; 
    }
    else if (bodyHeight < moveYBy + this.container.height)
    {
		maxim = bodyHeight - this.container.height - 2;
		currentWindow.container.top = maxim;
		currentWindow.style.top = (maxim) + 'px'; 
    }         
};

CPopup.prototype.EndMove = function CPopup_EndMove(e)
{       
    document.onselectstart = new Function("return true")
    if (window.sidebar){
        document.onmousedown = function (e){return true;}
        //document.onclick = function (e){return false;}
    }
    document.onmousemove = null;
};

//url : url a la que tiene que llamar
//scrollbars : si queremos que el popup tenga barras de scroll
//widthPopup : ancho que le asigna al popup
//heightPopup : alto que le asigna al popup
//unit : unidad en la que se pasa el width y el height del popup (px, %)
//center: si queremos que el popup se muestre centrado en la pantalla
CPopup.prototype.OpenGenericPopup = function CPopup_OpenGenericPopup(url, scrollbars, widthPopup, heightPopup, unit, center, onLoadFunction, onUnloadFunction, titleHeader, idType)
{
    // primero comprobamos si existe session y en caso afirmativo registramos estadisticas si estan activas.
    var res = Wke.Presentation.WebControls.PageControl.VerifySession(document.location.href, url, idType);
    if (res.value=="true")
    {
        //Si es la primera vez que se abre un popup, se debera crear dicho popup  
        if (this.main == null)
        {
            this.Create();
        }
        this.SettingsPopup(scrollbars, widthPopup, heightPopup, unit, center, onLoadFunction, onUnloadFunction, titleHeader);
        this.OpenPopup(url);
    }
    else
    {
        window.location.href=res.value;
    }
      
};

//Abrir el popup
CPopup.prototype.OpenPopup = function CPopup_OpenPopup(url)
{			
    this.main.style.visibility = "visible";	
    this.DisableWindow();
    this.LoadPopup(url);    		
};

//Cerrar el popup
CPopup.prototype.ClosePopup = function CPopup_ClosePopup()
{
    if (this.onUnloadFunction != "")
    {
        eval(this.onUnloadFunction);
    }
    if ( this.container != null)
    {
	    popup = this.container;
	}
	else
	{
	    popup = this;
	}
	popup.main.style.visibility = "hidden";		
	popup.EnableWindow();
	if (typeof(enable_logout) == "function")
	    enable_logout();
};

//Asigna las propiedades al popup
CPopup.prototype.SettingsPopup = function CPopup_SettingsPopup(scrollbars, widthPopup, heightPopup, unit, center, onLoadFunction, onUnloadFunction, titleHeader)
{
    PutItCenter = center;
    var bodyWidth = this.GetBodyWidth();  
    var bodyHeight = this.GetBodyHeight();

    if (unit == "%") //Si es en % lo pasamos a pixeles
    {
        widthPopup = (widthPopup * bodyWidth )/100;
        heightPopup = (heightPopup * bodyHeight )/100;
    }   
    
    var iebody = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
    var dsoctop = document.all? iebody.scrollTop : pageYOffset;
    
    this.GetAbsoluteBodyHeight();
    var heightContentPopup = heightPopup - 20;
    var left = center=="yes"? (bodyWidth - widthPopup)/2 : 1;
	var top = center=="yes"? dsoctop + ((bodyHeight - heightPopup)/2) : 1;		
	this.main.style.width = widthPopup + "px";
	this.main.style.height = heightPopup + "px";
	this.width = widthPopup;
	this.height = heightPopup;
	this.PutTitle(titleHeader);
	this.contentDiv.height =  heightContentPopup + "px";
	this.main.style.top = top + "px";
    this.main.style.left = left + "px";
    
	if (scrollbars == "yes")
	{
    	this.contentDiv.style.overflow =  "auto";
    }
    this.onLoadFunction = onLoadFunction;
    this.onUnloadFunction = onUnloadFunction;    
    
    this.closeButton.onclick = function() {popup.ClosePopup();}
};

//Coloca el titulo a mostrar en la cabecera del popup
CPopup.prototype.PutTitle = function CPopup_PutTitle(title)
{
    this.titlediv.innerHTML = title;
};

//Habilita la ventana principal una vez que el popup se cierra
CPopup.prototype.EnableWindow = function CPopup_EnableWindow()
{   
    var div = document.getElementById("disableDiv");
    if (div != null)
    {
        document.body.removeChild(div)    
    }
};

//Deshabilita la ventana principal mientras el popup estÃƒÂ© abierto
CPopup.prototype.DisableWindow = function CPopup_DisableWindow()
{
    var div = document.getElementById("disableDiv");
    if (div == null)
    {
        div = document.createElement("div");
        div.style.opacity = (opacity / 100);
        div.style.MozOpacity = (opacity / 100);
        div.style.KhtmlOpacity = (opacity / 100);
        div.style.filter = "alpha(opacity=" + opacity + ")"; 
        div.id = "disableDiv";
        div.className = "disableDiv";    
        document.body.appendChild(div);    
    }
    div.style.height = document.getElementById("cContainer").offsetHeight + "px";  
};

//Crea el objeto XMLHttpRequest para realizar la peticion de la pagina a cargar en el popup
CPopup.prototype.CreateRequest = function CPopup_CreateRequest()
{
    try 
    {
        this.request = new XMLHttpRequest();
    } 
    catch (trymicrosoft) 
    {
        try 
        {
            this.request = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (othermicrosoft) 
        {
            try 
            {
                this.request = new ActiveXObject("Microsoft.XMLHTTP");
               } 
            catch (failed) 
            {
                this.request = false;
            }
        }
    }
}

//Realiza la peticion de la pagina a cargar en el popup
CPopup.prototype.LoadPopup = function CPopup_LoadPopup(url) 
{
    if (!this.request)
    {
        alert("ERROR AL INICIALIZAR!");
    }
    else
    {
        if ((url.toLowerCase( ).indexOf(".gif") != -1) || (url.toLowerCase( ).indexOf(".jpg") != -1) || (url.toLowerCase( ).indexOf(".png") != -1))
        {
            this.contentDiv.innerHTML = '<img src="' + url + '" />';
        }
        else
        {
            this.contentDiv.innerHTML = '<p style="margin-top: 200px;text-align:center;"><img src="../Img/popup_load.gif" /></p>';
            this.request.open("GET", url);
            //this.request.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
            var popup = this;
            this.request.onreadystatechange = function() 
            {
                if (popup.request.readyState == 4) 
                {
                    popup.contentDiv.innerHTML = popup.request.responseText;
                    popup.enterFunction = RecoverEnterFunction(popup.request.responseText);
                    if (popup.onLoadFunction != "")
                    {
                        eval(popup.onLoadFunction);
                    }
                }
            }
            this.request.send(null);
        }
    }
};

document.onkeydown = function (e) {
    var div = document.getElementById("disableDiv");
    if (div != null)
    {     
        //solamente controlamos este evento cuando estÃ© abierto el popup   
        e = e?e:event;		   
        if (e.keyCode == 27)
        {
            window.close();
        }
        else if (e.keyCode == 116)
        {
            return false;
        }
        else if (e.keyCode == 13)
        {
            eval(popup.enterFunction);
        }
    }
};

function RecoverEnterFunction(text)
{
    var textToFind = "var functionEnter = \"";
    var firstPos = text.indexOf(textToFind);
    var enterFunction = "";
    if (firstPos != -1)
    {
        firstPos += textToFind.length;
        var lastPos = text.indexOf("\";", firstPos + 1);
        enterFunction = text.substr(firstPos, lastPos - firstPos);
        enterFunction = enterFunction.replace(";","");
    } 
    return enterFunction;
}
if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.AjaxCachePageControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.AjaxCachePageControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	AjaxCahePageControl_OnLoad: function(target, method, jobject) {
		return this.invoke("AjaxCahePageControl_OnLoad", {"target":target, "method":method, "jobject":jobject}, this.AjaxCahePageControl_OnLoad.getArguments().slice(3));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.AjaxCachePageControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.AjaxCachePageControl = new Wke.Presentation.WebControls.AjaxCachePageControl_class();


if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.DocumentControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.DocumentControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	RedirectToDocument: function(hash) {
		return this.invoke("RedirectToDocument", {"hash":hash}, this.RedirectToDocument.getArguments().slice(1));
	},
	LoadInnerHtml: function(hash) {
		return this.invoke("LoadInnerHtml", {"hash":hash}, this.LoadInnerHtml.getArguments().slice(1));
	},
	EncodeQLink: function(hash) {
		return this.invoke("EncodeQLink", {"hash":hash}, this.EncodeQLink.getArguments().slice(1));
	},
	ConvertFile: function(hash) {
		return this.invoke("ConvertFile", {"hash":hash}, this.ConvertFile.getArguments().slice(1));
	},
	GetArtHistory: function(hash) {
		return this.invoke("GetArtHistory", {"hash":hash}, this.GetArtHistory.getArguments().slice(1));
	},
	GetDocumentFragment: function(hash) {
		return this.invoke("GetDocumentFragment", {"hash":hash}, this.GetDocumentFragment.getArguments().slice(1));
	},
	GetDocumentFragmentByFragment: function(hash) {
		return this.invoke("GetDocumentFragmentByFragment", {"hash":hash}, this.GetDocumentFragmentByFragment.getArguments().slice(1));
	},
	GetArticle: function(hash) {
		return this.invoke("GetArticle", {"hash":hash}, this.GetArticle.getArguments().slice(1));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.DocumentControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.DocumentControl = new Wke.Presentation.WebControls.DocumentControl_class();


function Redirection(filename, repositoryPath, bdeFormat) {
   
    //no volvais a quitar esto!!!!!!!
    if (filename.substring(0, 2) == 'PD') {
        //var urlPdfsIni = 'http://pdfs.wke.es';
        var urlPdfsIni = pdfsRepository;
        var pdfsExt = '.pdf';
        var posPoint = filename.indexOf('.');
        var treeBranch = '/';
        // si el nombre viene con  _vigente
        var posGuion = filename.indexOf('_');
        if (posGuion > -1) {
            posPoint = posGuion;
        }
        var nomDoc = filename.substring(0, posPoint).toLowerCase();
        var i, cont;
        for (cont = 1, i = posPoint - 4; cont <= 4; cont++, i++)
            treeBranch += nomDoc.substr(i, 1) + '/';
        var url = urlPdfsIni + treeBranch + nomDoc + pdfsExt;
        window.open(url);
    }
    else {
        var hash = new Object();
        hash.filename = filename;
        hash.bdeFormat = bdeFormat != null ? bdeFormat : "";
        hash.repositoryPath = repositoryPath != null ? repositoryPath : "";
        hash.pageDocument = pageDocument != null ? pageDocument : "";
        hash.dragMatter = dragMatter != null ? dragMatter : "true";

        hash.href = document.location.href;

        var res = Wke.Presentation.WebControls.DocumentControl.RedirectToDocument(hash);

        //verificamos la sesion
        if (res.value.existSession != "true") {
            window.location.href = res.value.existSession;
            return "";
        }
        
        if (res.value != null) {
            document.location = res.value.RedirectionUrl;
        }
        else {
            alert(wcExport_message_ExportError);
        }
    }
}


//Wraper de la funcion redirection utilizada por el producto Educalex (505)
//ya que sus documentos estan generados apuntando a esta funcion para los saltos.
//Link('<IDD>', '<VERSION>', '<ANCLA>');
//Deberá de tener dos sobrecargas:
//Link('<IDD>', '<VERSION>');
//Link('<IDD>');
//Ejemplos de llamada:
//Link('LE0000195938', '20040709', 'I26'); -> Salto a un punto del documento en una versión específica
//Link('LE0000195938', 'Vigente', 'I26'); -> Salto a un punto del documento vigente
//Link('LE0000195938', '20040709'); -> Salto al documento completo en una versión específica
//Link('LE0000195938', 'Vigente'); -> Salto al documento completo vigente
//Link('LE0000195938'); -> Salto a la ficha del documento 
function Link(idd, version, anchor) {
    //El file name para poder usar la funcion Redirection(filename, repositoryPath, bdeFormat)
    // como no tengo repositoryPath ni bdeFormat al final voy a llamar a Redirection solo con el fileName
    var fileName = '';
    
    // obtengo el IDD para crear el fileName, si este no viene retornamos vacio ya que no podemos hacer nada
    if (idd == '' || idd == null) {
        return '';
    }
    fileName = idd;
    
    //Obtenemos la version para continuar construyendo el fileName
    if (version != null && version != '') {
        fileName = fileName + '_' + version + '.HTML';
    }
    else { // simpre debe terminar en HTML
        fileName = fileName + '.HTML';
    }
    //Obtenemos el anchor para continuar construyendo el fileName
    if (anchor != null && anchor != '') {
        fileName = fileName + '#' + anchor;
    }
    //Ahora que el fileName tiene el formato esperado: [IDD]_[version].HTML#[anchor]
    //procedemos a llamar a Redirection con el fileName
    Redirection(fileName);
}

// Estas funciones no valen para nada. Pero los documentos las invocan y no se pueden quitar
//  asi k las declamos para que nos nos de error javaScript
function disableLink(a)
{return true;}
function cargar_pdf(a)
{return true;}

function GotoAnchor(id)
{   
    var obj = document.getElementById(id);
    if (obj)
    {
        obj.scrollIntoView(true);
    }
}
//FUNCIONES PARA QUERYLINKS

// ==========================================================
// RCR 04/04/2003
//
// consulta_juris:
//    resuelve los enlaces de tipo consulta a jurisprudencia.
//
//    Ej.: consulta_juris('LE0000011272_art_28_1_ LE0000011272_art_28_4_', 3);
//
//   El primer parametro es la consulta a hacer en el campo f_dispos_aplic.
//   Los valores a consultar vienen separados por espacios en
//   blanco, que se convierten en ";" para llamar a fSGhtml2consulta.
//   El segundo parametro de momento lo ignoramos.
//
//   Para resolver la consulta llama a la funcion fSGhtml2consulta:
//
//   fSGhtml2consulta('JU','DISPOS_APLIC',';LE0000011272_art_28_1_;LE0000011272_art_28_4_;')
// ==========================================================
function consulta_juris(consulta,maxdocs)
{
	// PVIDAL
	// MAPAEO DIRECTO A LA NUEVA FUNCION DE QUERY LINKS
	consulta_bd(consulta, maxdocs, 'JU' );
}


// PVIDAL 07/03/2007.
// Nueva función para gestión de los queryLinks. WRAPPER para la función generateQLink.
// consulta: Valores a consultar.
// maxdocs: Nº de resultados de la consulta. Aquí no se usa.
// database: Tipo documental sobre el que se va a consultar.
function consulta_bd(consulta, maxdocs, database) {
	generateQlink(database,'COD_DISPOSICIONES',consulta);	
}

// PVIDAL 07/03/2007
// Genera un enlace del tipo 
// ResultsList.aspx?tabs=1&actualDoc=1&activeTab=1&assisData=DISPOS_APLIC$LE0000019668;LE0000013389;LE0000013413
function generateQlink(docType, assist, query) {
	// Los disp a consultar vienen separadas por ";" , ademas incluyen uno al principio y al final.
	// Eliminamos el primer y último ";"
	// tab[] es un vector definido por DocumentBrowser que nos permite conocer el id de pestaña que contiene
    // el tipo documental que nos interesa.
   
	query = query.replace(/_ /g," ");
	query = query.replace(/ /g,";");
	query = query.replace(/^;/g,"");
	query = query.replace(/;$/g,"");
	query = query.replace(/_$/g,"");
	
    // nombre del producto y directorio donde se encuentran los aspx.   
    var myPath = document.location.pathname.replace(/\/[^\/]*$/,"");
    var activeTab=tab[docType];
    // si contiene mas de una pestaña solo cogemos la primera como activa
    if (activeTab != null && activeTab.indexOf("|") > 0)
    {
        var arrayTabs = activeTab.split("|");
        activeTab=arrayTabs[0];
    }
    var params = "tabs=" + tab[docType] + "&actualDoc=1&showNavigationBar=true&activeTab=" + activeTab + "&assisData=" + assist + "$" + query
    var hash = new Object();
    hash.href = document.location.href;
    hash.urlParams = params;
    var res = Wke.Presentation.WebControls.DocumentControl.EncodeQLink(hash);
    if (res.value == null) {
        alert(wcExport_message_ExportError);
        return null;
    }
    else {
        hash = res.value;
    }

    if (hash.existSession != "true") {
        window.location.href = hash.existSession;
        return "";
    }

    document.location = "http://" + document.location.hostname + ":" + document.location.port + myPath + "/" + pageQueryLinks + hash.encodedParams;
}

function preCargarTDC(tdc, ide)
{
  var tituloLibro = document.getElementById('lTt');
  var tituloDocumento = document.getElementById('cTt');
  var saltoFicha = document.getElementById('sFicha');
  var saltoSeccionFicha = document.getElementById('sFic');
  
  document.getElementById('idx-libro').className="libroOn";
  document.getElementById('idx-capitulo').className="libroOff";

  if (tituloLibro != null)
  { 
    tituloLibro.style.display = 'block';
  }
  if (tituloDocumento != null)
  {
    tituloDocumento.style.display = 'none';
  }
  if (saltoFicha != null)
  {
    saltoFicha.style.display = 'none';
  }
  if (saltoSeccionFicha != null)
  {
    saltoSeccionFicha.style.display = 'none';
  }
  var capa='MenC';
  
  RepositoryPath="";
    
    var hash = new Object();
    hash.Idd= tdc;
    hash.Vigente= "";
    hash.RepositoryPath = repositoryPathForTdc;
    hash.LanguageDependence= new Boolean(false) ;

    var res = Wke.Presentation.WebControls.DocumentControl.LoadInnerHtml(hash);
  
  document.getElementById(capa).innerHTML=res.value;
  document.getElementById(capa).style.display = 'block';
  ControlTDC();
  AbrirTdc(ide);
} 


function AbrirTdc(ide) 
{
  var node = document.getElementById('I'+ide);
  node.childNodes[0].className= "indice-seleccionado";
  OpenTdcAtNode(node.id);
}

function OpenTdcAtNode(nodeId)
{
    if (nodeId != "")
    {
        var principalDiv = document.getElementById(nodeId);
        if (principalDiv != null)
        {
            if (principalDiv.hasChildNodes())
            // So, first we check if the object is not empty, if the object has child nodes
            {
                var children = principalDiv.childNodes;
                var i = 0;
                var stop = false;
                while ((i < children.length) && (!stop))
                {
                    if (children[i].nodeName == "A")
                    {
                        stop = true;
                        //children[i].className = "isis-b";
                        principalDiv.style.display = 'block';
                    };
                    i++;
                };
            };
            
            var principalDivAuxnew=principalDiv;
            while (principalDiv.parentNode != null)
            {
                principalDiv = principalDiv.parentNode;
                imageFolder = principalDiv.firstChild;
                //
                if ((imageFolder.nodeName == "IMG") && (imageFolder.src.indexOf("abierto") == -1))
                {
                    Toggle(imageFolder);
                };        
            };
            
            //para las nuevas tdcs
            principalDiv=principalDivAuxnew;
            while (principalDiv.parentNode != null)
            {
                principalDiv = principalDiv.parentNode;
                if ((principalDiv.nodeName == "DT"))
                {
                    principalDiv.className='dop';
                };     
                if ((principalDiv.nodeName == "DD"))
                {
                    principalDiv.className='op';
                };    
                if ((principalDiv.nodeName == "DL"))
                {
                    principalDiv.className='op';
                };    
                if (principalDiv.hasChildNodes())
                // So, first we check if the object is not empty, if the object has child nodes
                {
                    var children = principalDiv.childNodes;
                    var i = 0;
                    while ((i < children.length) )
                    {
                        if (children[i].nodeName == "DD")
                        {
                            children[i].className = "op";
                        };
                        i++;
                    };
                };
            };//fin nuevas tdcs
        }        
    }
}


function CargarTDC(tdc, ide) 
{
   // El retardo permite que en I.Explorer se cargue la TDC despues del documento.
   if(document.getElementById('MenC'))
   {
        var h=document.createElement('a');
        h.id='indexlink';
        h.setAttribute("href","javascript:abrirIndice('"+tdc+"','"+ide+"');");
        h.innerHTML=showSeeMore;
        h.style.display='block';
        document.getElementById('MenC').appendChild(h);
        var label=document.createElement('div');
        label.innerHTML=showLoadText;
        label.style.display='none';
        label.textContent=showLoadText;
        label.id='loadtdc';
        document.getElementById('MenC').appendChild(label);
   }
}

function CargarTDCImpl(tdc, ide) 
{
    var oldnode=document.getElementById('indexlink');
    var newnode=document.getElementById('loadtdc');
    newnode.style.display='block';
    setTimeout("Loading('"+tdc+"','"+ide+"')",1);
}

function reloj(isSliced)
{
 var posinicio=document.getElementsByTagName('dd');
 var posfin;
 var i=0;
 var encontrado=false;
 while (i<posinicio.length && !encontrado)
 {
    if (posinicio[i].className=="op")
    {
        var j=0;
        var aux=posinicio[i].childNodes;
        while (j<aux.length && !encontrado)
        {
            if (aux[j].className=="op")
            {
                encontrado=true;
                posfin = aux[j];
                break;
            }
            j=j+1;
        }
    }
    i=i+1;
}
 if (isSliced=="true")
     posfin.scrollIntoView(true);
 else
     posfin.scrollIntoView(false);
}

function OpenTdcNode(ide) {
    var idelist = ide.split("|");
    for (i = 0; i < idelist.length; i++) {
        if (idelist[i] != "") {
            var principalDiv = document.getElementById("I" + idelist[i]);
            if (principalDiv != null) {
                if (principalDiv.hasChildNodes())
                // So, first we check if the object is not empty, if the object has child nodes
                {
                    var children = principalDiv.childNodes;
                    var j = 0;
                    var stop = false;
                    while ((j < children.length) && (!stop)) {
                        if (children[j].nodeName == "A") {
                            stop = true;
                            principalDiv.className = "op";
                        };
                        j++;
                    };
                };

                while (principalDiv.parentNode != null) {
                    principalDiv = principalDiv.parentNode;
                    if ((principalDiv.nodeName == "DT")) {
                        principalDiv.className = 'dop';
                    };
                    if ((principalDiv.nodeName == "DD")) {
                        principalDiv.className = 'op';
                    };
                    if ((principalDiv.nodeName == "DL")) {
                        principalDiv.className = 'op';
                    };
                };
            }
        }
    }
}

function ControlTdc()
{
	if (document.getElementById('tdcBody') ){ 
	    IniciarCodigoTDC('tdcBody','dl');
    }

}

function IniciarCodigoTDC(menuId,tipo) {		
	if (!DOM1 && !DOM2) {return null;}
	var Menu = document.getElementById(menuId);
	var Submenues = Menu.getElementsByTagName(tipo);
	for (var i=0; i < Submenues.length; i++) {
	if (	tipo =='dl'){
		Menux = Submenues[i];
	} else if (tipo =='ul'){
		Menux = Submenues[i].parentNode;
	} else if (tipo =='li'){
		Menux = Submenues[i];
	}
		while (Menux.nodeName=="#text"){
			Menux = Menux.nextSibling;
    		}
		if (DOM2) {
			if (	tipo =='dl'){
				if (	Menux.firstChild.nodeName=="#text"){
					Menux.firstChild.nextSibling.addEventListener('click', OpDLcTDC, 0);
				} else {
					Menux.firstChild.addEventListener('click', OpDLcTDC, 0);	
				} 		
			} else if (tipo =='ul'){
				Menux.addEventListener('click', OpenUL, 0);	
			} else if (tipo =='li'){
				Menux.addEventListener('click', OpenUL, 0);	
			}
		}
		if (DOM1) {
			if (	tipo =='dl'){
				Menux.firstChild['onclick']=new Function('OpDLcTDC(this);');
			} else if (tipo =='ul'){
				Submenues[i].parentNode['onclick']=new Function('OpenUL(this);');
			} else if (tipo =='li'){
				if(Submenues[i].className != "ExISISc" && Submenues[i].className != "ExISISo" ){				
					Submenues[i]['onclick']=new Function('OpenUL(this);');
				}
			}
		}
	}
}


function OpDLcTDC(E) {
	var elmDT = (DOM1) ? E : E.currentTarget;
	if (DOM1) {
		  if (elmObj == null) elmObj = elmDT;
		  if (elmObj.parentNode == elmDT) return elmObj = elmDT;
	}
	if (DOM2) {
		if (elmDT.nodeName!='DT') {
			return null;
		}
	}
	var estiloActual = elmDT.className;
		elmDT.className = (estiloActual=='dcl') ? 'dop' : 'dcl';
	var	estiloDT=elmDT.className

    if(elmDT.nextSibling!=null)
    {
	while (elmDT.nextSibling.nodeName=="#text")
		{
			elmDT= elmDT.nextSibling;
    		}
    }
    var auxiliary=elmDT.nextSibling;
    if (auxiliary.id!='')
    {
        var i=0;
        for (i;i<auxiliary.childNodes.length;i++)
        {
            if (auxiliary.childNodes[i].nodeName=="DFN")
            {
                //Cargar por ajax la tdc
                var hash = new Object();
                hash.Idd=auxiliary.id;
                hash.Vigente= "";
                hash.RepositoryPath = repositoryPathForTdc;
                hash.LanguageDependence= new Boolean(false);
                var result=Wke.Presentation.WebControls.DocumentControl.LoadInnerHtml(hash);
                auxiliary.innerHTML=result.value;
                ControlTdc();
                break;
            }
        }
    }

	while(elmDT=elmDT.nextSibling)
		{
			estiloActual = elmDT.className;
			if (elmDT.nodeName=='DD') {
				if (estiloActual=='cl')
				{
				    elmDT.className ='op';
				}
				else{
				    if (estiloDT=='dop')
				    {
				       elmDT.className = 'op';
				    }
				    else{
				        elmDT.className = 'cl'
				    }
				}
			} 
		}
	if (DOM1) elmObj = elmDT;
	if (DOM2) E.stopPropagation();
}

function Loading(tdc,ide)
{
  var hash = new Object();
  hash.Idd= tdc;
  hash.Vigente= "";
  hash.RepositoryPath = repositoryPathForTdc;
  hash.LanguageDependence= new Boolean(false) ;
  var res = Wke.Presentation.WebControls.DocumentControl.LoadInnerHtml(hash);
  document.getElementById("loadtdc").innerHTML = res.value;
  var istdcsliced = false;
  var passthrought = false;
  var idelist = ide.split("|");
  for (i = 0; i < idelist.length; i++) {
      var node = document.getElementById('I' + idelist[i]);
      if (node.nodeName == "DFN") {
          istdcsliced = true;
          var tdcsecondnode = node.parentNode;
          var tdcsecondid = tdcsecondnode.id;
          hash.Idd = tdcsecondid;
          hash.Vigente = "";
          hash.RepositoryPath = repositoryPathForTdc;
          hash.LanguageDependence = new Boolean(false);
          var secondary = Wke.Presentation.WebControls.DocumentControl.LoadInnerHtml(hash);
          tdcsecondnode.innerHTML = secondary.value;
          ControlTdc();
          if (document.all)
              tdcsecondnode.previousSibling.className = "dop";
          else
              tdcsecondnode.previousSibling.previousSibling.className = "dop";
          var contlinknode = document.getElementById('I' + idelist[i]);
          var episodenode = contlinknode.parentNode.parentNode;
          if (document.all)
              episodenode.previousSibling.className = "dop";
          else
              episodenode.previousSibling.previousSibling.className = "dop";
          for (var k = 0; k < contlinknode.childNodes.length; k++) {
              if (contlinknode.childNodes[k].nodeName == "A")
                  contlinknode.childNodes[k].className = "selected-item";
          }
      }
      else {
          istdcsliced = false;
          if (!passthrought) {
              ControlTdc();
              passthrought = true;
          }
          for (var j = 0; j < node.childNodes.length; j++) {
              if (node.childNodes[j].nodeName == "A")
                  node.childNodes[j].className = "selected-item";
          }
      }
  }
  OpenTdcNode(ide);
  setTimeout("reloj('" +istdcsliced+"')",300);
}

var posIndice = false;
function OC_tab()
{
    if(posIndice){ 
        document.getElementById("cCx").style.display = "none"; 
        document.getElementById("open_close").style.right = document.getElementById("cCx").offsetWidth + 18 + "px"; 
        posIndice = false; 
    } 
    else{ 
        document.getElementById("cCx").style.display = "block"; 
        document.getElementById("cCx").style.width = "30%"; 
        document.getElementById("open_close").style.right = document.getElementById("cCx").offsetWidth + 18 + "px"; 
        posIndice = true; 
    }
}

var abierto = false; 
var clicks = 0;
function abrirIndice(tdc,ide){ 
    if (!abierto)
    { 
        document.getElementById("cCx").style.width = 30 + "%"; 
        document.getElementById("cCn").style.width = 67 + "%"; 
        document.getElementById("indexlink").innerHTML = closeIndexText; 
        document.getElementById("loadtdc").style.display = 'block';
        abierto = true; 
    } 
    else
    { 
        //document.getElementById("cCx").style.width = 94 + "px"; 
        //document.getElementById("cCn").style.width = 89 + "%"; 
        document.getElementById("loadtdc").style.display = 'none'; 
        document.getElementById("indexlink").innerHTML = showSeeMore; 
        abierto = false; 
    }
    if (clicks==0)
    {
        clicks+=1;
        CargarTDCImpl(tdc,ide);
    }
}

//Funcion que muestra el popup del Historico de Articulos
function openArtHistory(versionIdList, derogated) {
    //showDisabledLayer();
    var htmlArt;
    if (versionIdList != '') {
        var hash = new Object();
        hash.versionsList = versionIdList;
        hash.derogated = derogated;
        hash.LanguageDependence = false;
        hash.repositoryPath = "";
        var articlehistLayOut = Wke.Presentation.WebControls.DocumentControl.GetArtHistory(hash);
        var layer = document.createElement('div');
        layer.id = "cVA";
        layer.style.display = 'block';
        var container = document.getElementById("aspnetForm");
        container.appendChild(layer);
        layer.innerHTML = articlehistLayOut.value;
        setTimeout("showArticles()", 300);
    }
}

//Funcion que visualiza la capa para deshabilitar 
function showDisabledLayer() {
//    var article = document.getElementById("datos");
//    for (k = 0; k < document.getElementById("datos").childNodes.length; k++) {
//        document.getElementById("datos").childNodes[k].style.display = 'block';
//    }
    var layer = document.createElement('div');
    layer.className = "disableDiv";
    layer.style.height = 100 + "%";
    layer.id = "cVA";
    layer.style.opacity = (30 / 100);
    layer.style.MozOpacity = (30 / 100);
    layer.style.KhtmlOpacity = (30 / 100);
    layer.style.filter = "alpha(opacity=" + 30 + ")";
    var containerAux = document.getElementById("cContainer").parentNode;
    containerAux.appendChild(layer);
}
function showArtHist(versionIdList, derogated) {
    var htmlArt;
    var hash = new Object();
    hash.versionsList = versionIdList;
    hash.derogated = derogated;
    hash.LanguageDependence = false;
    hash.repositoryPath = "";
    var articlehistLayOut = Wke.Presentation.WebControls.DocumentControl.GetArtHistory(hash);
    var layer = document.createElement('div');
    layer.style.display = 'block';
    layer.style.visibility = "visible";
    layer.style.top = "50px";
    layer.style.width = "68%";
    var container = document.getElementById("cContainer").parentNode;
    container.appendChild(layer);
    layer.innerHTML = articlehistLayOut.value;
    setTimeout("showArticles()", 30);
}
//Funcion que obtiene un articulo y lo muestra en la capa de contenidos del Historico de articulos
function getArticle(node,version,versionlist) 
{
    //var versions = version.split("|");
    for (k = 0; k < document.getElementById("datos").childNodes.length; k++) 
    {
        document.getElementById("datos").childNodes[k].style.display = 'none';
    }
    //if (versionpost == null) {
    setSelectedArticle(node);
    var versions = version.split("|");
    for (i = 0; i < versions.length; i++) {
        if (document.getElementById(versions[i]) == null) {
            var dataLayer = document.getElementById("datos");
            var hash = new Object();
            hash.documentVersion = versions[i];
            if (versionlist == null)
                hash.versionsList = version;
            else
                hash.versionsList = versionlist;
            hash.LanguageDependence = false;
            hash.repositoryPath = ""
            var articleLayOut = Wke.Presentation.WebControls.DocumentControl.GetArticle(hash);
            var layer = document.createElement('div');
            layer.id = versions[i];
            layer.innerHTML = articleLayOut.value;
            for (j = 0; j < dataLayer.childNodes.length; j++) {

                if (dataLayer.childNodes[j].tagName == "DIV") {
                    if (layer.id.split("_")[0] > dataLayer.childNodes[j].id.split("_")[0]) {
                        dataLayer.insertBefore(layer, dataLayer.childNodes[j]);
                    }
                    if (j == (dataLayer.childNodes.length - 1) && (layer.id.split("_")[0] < dataLayer.childNodes[j].id.split("_")[0])) {
                        dataLayer.childNodes[j].parentNode.appendChild(layer);
                    }
                }

            }
        }
        else {
            document.getElementById(versions[i]).style.display = 'block';
        }
    }
    if (versions.length > 1)
        showArticles();
    //}
}

//Funcion para cerrar el poup del historico de ediciones 
function cerrarVersiones() {
    var div = document.getElementById("cVA");
    var parent = div.parentNode;
    if (div != null) {
        parent.removeChild(div);
    }

}
function showArticles() {
    if (document.getElementById("datos") != null && document.getElementById("datos").childNodes.length!=0) {
        for (k = 0; k < document.getElementById("datos").childNodes.length; k++) {
            document.getElementById("datos").childNodes[k].style.display = 'block';
        }
    }
}
//Funcion para colocar el class seleccionado
function setSelectedArticle(node) {
    var rootnode = node.parentNode.parentNode;
    for (i = 0; i < rootnode.childNodes.length; i++) {
        var linode = rootnode.childNodes[i];
        if (linode.childNodes[0].className != "") {
            linode.childNodes[0].className = "";
            break;
        }
    }
    node.className = "historySelected";
}
/* Funciones para el manejo de documentos grandes */


// Funcion que muestra el mensaje de carga y realiza la llamada para la carga del fragmento del documento por ajax
function goToFragmentDocumentAnchor(anchor) {
    // verificamos si podemos ir al ancla dentro del documento sino tendremos que cargar el fragmento en el que esta resida
    // empezamos por poner la capa de carga
    document.getElementById("loadDiv").style.display = "block";
    //realizamos la peticion Ajax para obtener el fragmento si fuese nnecesario
    var hash = new Object();
    hash.documentIdd = documentIdd != null ? documentIdd : "";
    hash.documentVersion = documentVersion != null ? documentVersion : "";
    hash.documentAnchor = anchor != null ? anchor : "";
    hash.documentFragmentCode = documentFragmentCode != null ? documentFragmentCode : "";
    hash.documentHightLightSourceType = documentHightLightSourceType != null ? documentHightLightSourceType : "";
    Wke.Presentation.WebControls.DocumentControl.GetDocumentFragment(hash, getDocumentFragment_CallBack);
}

// Funcion para manejar el callback de ajax  que realiza el reemplazo del contenido si hace falta y se mueve hasta el ancla
function getDocumentFragment_CallBack(res) {
    if (res.value == null) {
        document.getElementById("loadDiv").style.display = "none";   
        alert(wcExport_message_ExportError);
        return null;
    }
    else
        hash = res.value;

    //verificamos la sesion
    if (hash.existSession != "true") {
        document.getElementById("loadDiv").style.display = "none";   
        window.location.href = hash.existSession;
        return "";
    }
    
    //Verificamos si ha habido algún error => hash.documentFragmentCode=="-1"

    if (hash.documentFragmentCode == "-1") {
        document.getElementById("loadDiv").style.display = "none";   
        alert(wcExport_message_ExportError);
        return null;
    }
    
    //verificamos si hemos cambiado de fragmento para cargar el fragmento en la página
    if (documentFragmentCode != hash.documentFragmentCode && hash.documentFragmentCode != 'ISIS') {
        documentFragmentCode = hash.documentFragmentCode;
        ReplaceContainer("cCn", hash.documentContent);
        ControlFragmentDocument();
        setTimeout("SetBodyHeight();", 1); //loadingcontrol.js 
    }
    else {
        // verificamos si se esta cargando un ISIS
        if (hash.documentFragmentCode == 'ISIS') {
            ReplaceContentInContainer("MenC", hash.documentContent); //cargamos el ISIS
            documentIsLoadedISIS = true;
            setTimeout("Iniciar('ISIS','li')", 200);
            ControlFragmentDocument();
            setTimeout("SetBodyHeight();", 1); //loadingcontrol.js 
        }
    }
    
    //nos movemos al ancla
    var obj = document.getElementById(hash.documentAnchor);
    if (obj)
        obj.scrollIntoView(true);
    else {
        if (hash.documentFragmentCode != 'ISIS') {
            obj = document.getElementById("previousFragment");
            obj.scrollIntoView(true);
        }
    }
    document.getElementById("loadDiv").style.display = "none";    
}

// Funcion para realizar el reemplazo del contenido de un objeto 
function ReplaceContentInContainer(containerId, content) {
    var container = document.getElementById(containerId);
    container.innerHTML = content;
}

// Funcion para realizar el reemplazo de un objeto html
function ReplaceContainer(containerId, content) {
    var container = document.getElementById(containerId);
    container.outerHTML = content;
}


//Funcion para realizar la carga del indice sistematico de documentos grandes
function loadISIS() {
    // empezamos por poner la capa de carga
    if (!documentIsLoadedISIS) {
        document.getElementById("loadDiv").style.display = "block";
        var hash = new Object();
        hash.documentIdd = documentIdd != null ? documentIdd : "";
        hash.documentVersion = documentVersion != null ? documentVersion : "";
        hash.documentFragmentCode = 'ISIS';
        hash.href = document.location.href;
        Wke.Presentation.WebControls.DocumentControl.GetDocumentFragment(hash, getDocumentFragment_CallBack);
    }   
}


//Implementacion cross browser de outerHTML esta propiedad no existe en FF
try {
    HTMLElement.prototype.__defineGetter__.length;
    (function(body, removeChild) {
        HTMLElement.prototype.__defineGetter__(
        "outerHTML",
        function() {
            var self = body.appendChild(this.cloneNode(true)),
                outerHTML = body.innerHTML;
            body.removeChild(self);
            return outerHTML;
        }
    );
        HTMLElement.prototype.__defineSetter__(
        "outerHTML",
        function(String) {
            if (!String)
                removeChild(this);
            else if (this.parentNode) {
                body.innerHTML = String;
                while (body.firstChild)
                    this.parentNode.insertBefore(body.firstChild, this);
                removeChild(this);
                body.innerHTML = "";
            };
        }
    );
    })(
    document.createElement("body"),
    function(HTMLElement) { if (HTMLElement.parentNode) HTMLElement.parentNode.removeChild(HTMLElement); }
);
} catch (e) { };


/* copia de la funcion controlaux, en esta no se inicializa el ISIS de forma que para los fragmentos se acelere la carga*/
function ControlFragmentDocument(){
	if (document.getElementById('voces') ) 
		Iniciar('voces','li');
	if (document.getElementById('sDt') )
		Iniciar('sDt','li');
	if (document.getElementById('dFiC') )
		Iniciar('dFiC','dl');
    if (document.getElementById('dSubv')) 
        Iniciar('dSubv', 'dl');
	if (document.getElementById('dHPlus') )
		Iniciar('dHPlus','dl');
	
	if (document.getElementById('tBody')) { 
		var tipoDoc = document.getElementById('tBody');
		if (tipoDoc.className == "BL")
		    ImgOP('tBody','img');
		if (tipoDoc.className == "NE")
			ImgOP('tBody','img');
		if (tipoDoc.className == "DT")
			ImgOP('tBody','img');
		if (tipoDoc.className == "FO"){
		    ImgOP('tBody','img');
			NotasAyudaFormularios('cCn','a');
        }
        if (tipoDoc.className == "PR") 
            ImgOP('tBody', 'img');
	}
	if (document.getElementById('fBody')) { 
		var tipoDoc = document.getElementById('fBody');
		if (tipoDoc.className == "BL")
			ImgOP('fBody','img');
		if (tipoDoc.className == "NE")
			ImgOP('fBody','img');
		if (tipoDoc.className == "DT")
			ImgOP('fBody','img');
    }
        
    //Se habilita o deshabilita la barra de herramientas de los documentos de Atlas de Ciss.
    if (checkMatterForButtonBar == 'True') {
        if (document.getElementById('dHQLink')) {
            if (viewButtonBar == 'True') 
                document.getElementById('dHQLink').style.display = "block";
            else 
                document.getElementById('dHQLink').style.display = "none";
        }
    }
    //Habilito o desabilito las capas de anterior y siguiente fragmento
    EnableDisablePreviousNextButtons();
}

/* Metodo para moverse al siguiente fragmento */
function goToNextFragment() {
    var newFragment = parseInt(documentFragmentCode) + 1;
    if (newFragment > (documentLastFragmentCode - 1))
        return null;

    // empezamos por poner la capa de carga
    document.getElementById("loadDiv").style.display = "block";
    //realizamos la peticion Ajax para obtener el fragmento si fuese nnecesario
    var hash = new Object();
    hash.documentIdd = documentIdd != null ? documentIdd : "";
    hash.documentVersion = documentVersion != null ? documentVersion : "";
    hash.documentAnchor = "";
    hash.documentFragmentCode = newFragment != null ? newFragment : "";
    hash.documentHightLightSourceType = documentHightLightSourceType != null ? documentHightLightSourceType : "";
    Wke.Presentation.WebControls.DocumentControl.GetDocumentFragmentByFragment(hash, getDocumentFragment_CallBack);
}

/* Metodo para moverse al siguiente fragmento */
function goToPreviousFragment() {
    var newFragment = parseInt(documentFragmentCode) - 1;
    if (newFragment < 0)
        return null;

    // empezamos por poner la capa de carga
    document.getElementById("loadDiv").style.display = "block";
    //realizamos la peticion Ajax para obtener el fragmento si fuese nnecesario
    var hash = new Object();
    hash.documentIdd = documentIdd != null ? documentIdd : "";
    hash.documentVersion = documentVersion != null ? documentVersion : "";
    hash.documentAnchor = "";
    hash.documentFragmentCode = newFragment != null ? newFragment : "";
    hash.documentHightLightSourceType = documentHightLightSourceType != null ? documentHightLightSourceType : "";
    Wke.Presentation.WebControls.DocumentControl.GetDocumentFragmentByFragment(hash, getDocumentFragment_CallBack);
}

/* Metodo para habilitar o desabilitar las capas de siguiente y anterior */

function EnableDisablePreviousNextButtons() {
    if (documentLastFragmentCode) {
        if (parseInt(documentFragmentCode) == 0)
            document.getElementById("previousFragment").style.display = "none";
        else
            document.getElementById("previousFragment").style.display = "block";

        if (parseInt(documentFragmentCode) == (documentLastFragmentCode - 1))
            document.getElementById("nextFragment").style.display = "none";
        else
            document.getElementById("nextFragment").style.display = "block";
    }
}
/* EMG: 15/11/2007 FUNCIONALIDAD DOCUMENTOS */
/* MODIFICACIONES: 11/01/2008, 04/12/2007, 11/12/2007 */
if (document.implementation) {
	if (document.implementation.hasFeature('Events','2.0')) {
		var DOM2 = true;
	} else {
		var DOM1 = true;
		var elmObj = null;
	}
} else {
	if (document.getElementById) {
		var DOM1 = true;
		var elmObj = null;
	}
}


function Iniciar(menuId,tipo) {		
	if (!DOM1 && !DOM2) {return null;}
	var Menu = document.getElementById(menuId);
	var Submenues = Menu.getElementsByTagName(tipo);
	
	for (var i=0; i < Submenues.length; i++) {
	    if (tipo =='dl'){
		    Menux = Submenues[i];
	    } else if (tipo =='ul'){
		    Menux = Submenues[i].parentNode;
	    } else if (tipo =='li'){
		    Menux = Submenues[i];
	    }
	    while (Menux.nodeName == "#text")	{
		    Menux = Menux.nextSibling;
	    }
	    if (DOM2) {
	        if (tipo == 'dl') {
	            Menux.firstChild.addEventListener('click', OpenDL, 0);
	        } else if (tipo == 'ul') {
	            Menux.addEventListener('click', OpenUL, 0);
	        } else if (tipo == 'li') {
	            Menux.addEventListener('click', OpenUL, 0);
	        }
	    }
	    if (DOM1) {
	        if (tipo == 'dl') {
	            Menux.firstChild['onclick'] = new Function('OpenDL(this);');
	        } else if (tipo == 'ul') {
	            Submenues[i].parentNode['onclick'] = new Function('OpenUL(this);');
	        } else if (tipo == 'li') {
	            if (Submenues[i].className != "ExISISc" && Submenues[i].className != "ExISISo") {
	                Submenues[i]['onclick'] = new Function('OpenUL(this);');
	            }
	        }
	    }
	}
}
// EXPANDIR TODO ISIS
function ExISIS() {
	if (!DOM1 && !DOM2) {return null;}
	var Menu = document.getElementById('ISIS');
	var MenuEx = Menu.getElementsByTagName('li');
	var LinkEx = Menu.firstChild;
		while (LinkEx.nodeName=="#text"){
			LinkEx = LinkEx.nextSibling;
    		}
	var estiloActual = LinkEx.className;
	for (var i=0; i < MenuEx.length; i++) {
		if (estiloActual == 'ExISISc') {
			if (	MenuEx[i].className =='cl'){
				MenuEx[i].className ='op'
				
			}
		} else if (estiloActual == 'ExISISo') {
			if (	MenuEx[i].className =='op'){
				MenuEx[i].className ='cl'
			}
		}
	}
	RecorreExISIS(estiloActual);
	LinkEx.className = (estiloActual=='ExISISc') ? 'ExISISo' : 'ExISISc';
}
function RecorreExISIS(estiloActual) {
	if (!DOM1 && !DOM2) {return null;}
	var Menu = document.getElementById('ISIS');
	var Submenues = Menu.getElementsByTagName('ul');
	for (var i=0; i < Submenues.length; i++) {
		if (estiloActual == 'ExISISc') {
			Submenues[i].className  =  'op';
			Submenues[i].parentNode.className  =  'op';
		} 
		if (estiloActual == 'ExISISo') {
			Submenues[i].className  =  'cl';
			Submenues[i].parentNode.className  =  'icl';
		}
	}
}
function cComent(){ 
// function Toggle_Comentarios(node, imagen){
	var bComent = document.getElementById('dCm');
	var dTxT  = document.getElementById('dTxT');
  	var refTags = dTxT.getElementsByTagName('cite');
	var estiloActual = bComent.className;
	
	if (typeof refTags != "undefined" ) {
		for (var i=0; i < refTags.length; i++) {
			RecorreC(refTags, estiloActual )
		}
	bComent.className = (estiloActual=='dCmO') ? 'dCmC' : 'dCmO';
	}
}
function RecorreC( refTags, refTagsActual ) {
			if (refTagsActual=="dCmO") {
				for (var i = 0; i < refTags.length; ++i) {
					if (	refTags[i].className=='ccn'){
						refTags[i].className="ccnOff";
					}
				}
			} 
			if (refTagsActual=="dCmC") {
				for (var i = 0; i < refTags.length; ++i) {
					if (	refTags[i].className=='ccnOff'){
						refTags[i].className="ccn";
					}
				}
			}
}
function SelectDL(E)
{
    var dt = document.getElementById(E).getElementsByTagName("DT")[0];
    if(dt.className == "dcl" || dt.className == "")
    {
        dt.className = "dop";
    }
    else if(dt.className == "dop")
    {
        dt.className = "dcl";
    }
    var dd = document.getElementById(E).getElementsByTagName("DD");
    for(var i = 0; i< dd.length; i++)
    {
        if(dd[i].parentNode.id == E)
        {
            if(dd[i].className == "cl" )
            {
                dd[i].className = "op";
                
            }
            else if(dd[i].className == "op"|| dd[i].className == "cPt")
            {
                dd[i].className = "cl";
            } 
        }
    }
    GotoAnchor(E);
}
function OpenDL(E) {
	var elmLI = (DOM1) ? E : E.currentTarget;
	
	if (DOM1) {
		  if (elmObj == null) elmObj = elmLI;
		  if (elmObj.parentNode == elmLI) return elmObj = elmLI;
	}
	if (DOM2) {
		if (elmLI.nodeName!='DT') {
			return null;
		}
	}
	var estiloActual = elmLI.nextSibling.className;
			if (elmLI.nextSibling.nodeName=='DD') {
				estiloActual = elmLI.nextSibling.className;
				if (estiloActual=='cl'){
					elmLI.className= elmLI.className.replace(/ dcl/, "");
					elmLI.className +=' dop';
				}
				else if (estiloActual=='op'){
					elmLI.className= elmLI.className.replace(/ dop/, "");
					elmLI.className +=' dcl';
				} else {
					elmLI.className +=' dcl';
				}
				
				elmLI.nextSibling.className = (estiloActual=='cl') ? 'op' : 'cl';
			} 
	if (DOM1) elmObj = elmLI;
	if (DOM2) E.stopPropagation();
}
function OpenUL(E) {
	var elmLI = (DOM1) ? E : E.currentTarget;
	if (DOM1) {
		  if (elmObj == null) elmObj = elmLI;
		  if (elmObj.parentNode.parentNode == elmLI) return elmObj = elmLI;
	}
	if (DOM2) {
		if (elmLI.nodeName!='LI') {
			return null;
		}
	}
	var estiloActual;
		for (var i=0; i < elmLI.childNodes.length; i++) {
			if (elmLI.childNodes[i].nodeName=='UL') {
				estiloActual = elmLI.childNodes[i].className;
				if (estiloActual=='cl'){
					elmLI.className= elmLI.className.replace(/ icl/, "");
					elmLI.className +=' iop';
				}
				else if (estiloActual=='op'){
					elmLI.className= elmLI.className.replace(/ iop/, "");
					elmLI.className +=' icl';
				} else {
					elmLI.className +=' icl';
				}
				elmLI.childNodes[i].className = (estiloActual=='cl') ? 'op' : 'cl';
			} 
		}
	if (DOM1) elmObj = elmLI;
	if (DOM2) E.stopPropagation();
}
// <a href="javascript:Ancla('LE0000048213_20060530.HTML#IDAPUP4I', 'TXT', this)">3.Ejecución del planeamiento:</a>
function Ancla(ancla, target)
{
	ancla = ancla.replace(/.*#/, "");
	location = "#"+ancla;
}
function salto_ancla(ancla, target)
{
    ancla = ancla.replace(/.*#/, "");
    location = "#"+ancla;
}
function DerogacionFutura(link,fecha,texto)
{
	if (fecha) {
	    var hoy = new Date();
	    var derogacion = new Date();   
	    derogacion.setMonth(fecha.substring(4, 6)-1);
	    derogacion.setYear(fecha.substring(0, 4));
	    derogacion.setDate(fecha.substring(6, 8));
	    if (derogacion.getTime() <= hoy.getTime()) {
			var md  ='<p class="derogacion">';
			    md +='<a href='+link+' >';
			    md +=texto;
			    md +='</a>';
			    md +='</p>';
			document.write(md);
		document.write(" <style type=\"text/css\"> ");
		document.write("#cVe li.d	 {color:#C00;}");
		document.write("#cVe li.derF 	 {color:#FFF;background-color:#C00;}");
		document.write("#cVe li.derF a {color:#FFF;font-weight:bold;}");
		document.write(" </style> ");
	    }
	} 
}
/* FUNCIONES DE FORMULARIOS */
// Open Nota Ayuda
function vNt(idNT){
	var verNota    = document.getElementById(idNT);
	var estadoNota	= verNota.className;
	verNota.className = (estadoNota=='nCl') ? 'nOp' : 'nCl';
}
// Close Nota Ayuda
function cNt(id){
	var capa    = document.getElementById(id).style;
	capa.display  = 'block';
	capa.display = 'none';
	capa.visibility = 'hidden';
	capa.display  = 'block';
}

//Funcion para redirigirnos al documento vigente
function salto_a_vigente(version_vigente)
{
    var loc = String(document.location);
    var ancla = "";
    var res = loc.match(/(#\w+)$/, "");
    if (res)
    	ancla = res[1];
	document.location.replace(version_vigente + ancla);
}
/**/
function CagarBotonera(){}
function GenerarBotonera(){}
function corregirBugIE(){}
function abrir_ventana(urld) {
	var nPrcentScrW = 80;
	var nPrcentScrH = 70;
	var ancho = screen.width*nPrcentScrW/100;
	var alto = screen.height*nPrcentScrH/100;
	var posX = (screen.width-ancho)/2;
	var posY = (screen.height-alto)/2;
	var features = "width=" + ancho + ",height=" + alto + ",left=" + posX + ",top=" + posY + ",resizable=yes,status=yes,scrollbars=yes,titlebar=1,directories=1,location=yes,menubar=1,";
	window.open(urld,"",features);
}

function EditarFO(idd)
{
    var len;
    var posicion= idd.indexOf("_");
    if (posicion>=0)
    {
        // si tiene version
        len = posicion-4
    }
    else
    {
        // si no tiene version
        len = idd.length-4;
    }

    var iddAndVersion = idd.split("_");
    var formUrl = document.location.href;
	
	var ruta = idd.substr(len,1) + "/" + idd.substr(len+1,1) + "/" + idd.substr(len+2,1) + "/" + idd.substr(len+3,1) + "/" + idd + ".RTF";
    // Añadimos idd y version como parametro pq sino despues de editar no se puede imprimir ya que el pagecontrol de lector.aspx deja a vacio idd y version.
	//var urlpdf = "lector.aspx?http://rtfs.wke.es/" + ruta.toUpperCase() + "&idd=" + iddAndVersion[0] + "&version=" + iddAndVersion[1];
	var urlpdf = "lector.aspx?" + rtfsRepository + "/" + ruta.toUpperCase() + "&idd=" + iddAndVersion[0] + "&version=" + iddAndVersion[1];
	
	//abrir_ventana_pdf(urlpdf); Lo comentamos para solucionaar el problema sobre el IE 6
    //var features="fullscreen=no,top=0,left=0"; Lo ponemos a pantalla completa pq en el IE6 se quedaba como descuadrado.
    var features="fullscreen=yes,top=0,left=0";
    if (!document.all)
    {
          //wcExport_convertFile();
		var hash = new Object();
		hash.extension = "doc";
		hash.documentPart = "text";
		hash.selectedText = "";
		//Esta variable la crea el DocumentControl cuando recupera tanto el titulo del documento 
		//como el que se debe mostrar en la exportacion e impresion de texto seleccionado
		hash.titleDocExportPrint = titleExportPrint;
		hash.idd = "";
		hash.version = "";   
		
		
		hash.checkedIsAllowed= checkedIsAllowed;
              
        target = "Wke.Presentation.WebControls.ExportControl";
        method = "ConvertFile";
        
        //AjaxControl_Default(target, method, hash, wcExport_redirection_callback);  
        var res=Wke.Presentation.WebControls.DocumentControl.ConvertFile(hash);  
                //Wke.Presentation.WebControls.DocumentControl.EncodeQLink  
        if (res.value!=null)
        {
            if (res.value.hasNotPermission != null)
		    {
		        alert(htmlNoPermissionsJavascript);
		    }
		    else
		    {
                swlogin=true;
                window.open('./ExportPage.aspx');
		    }
        }
        else
        {
            alert(wcExport_message_ExportError);
        }
            
    }
    else
    {
        window.open(urlpdf, "", features);
        document.location.href = formUrl;
	}
}
function openPdf(idd)
{
	var len = idd.length-4;
	var ruta = idd.substr(len,1) + "/" + idd.substr(len+1,1) + "/" + idd.substr(len+2,1) + "/" + idd.substr(len+3,1) + "/" + idd + ".pdf";
	var urlpdf = pdfsRepository + ruta.toLowerCase();
	abrir_ventana_pdf(urlpdf);
}
function abrir_ventana_pdf(urld) {
	var nPrcentScrW = 80;
	var nPrcentScrH = 70;
	var ancho = screen.width*nPrcentScrW/100;
	var alto = screen.height*nPrcentScrH/100;
	var posX = (screen.width-ancho)/2;
	var posY = (screen.height-alto)/2;
	var features = "width=" + ancho + ",height=" + alto + ",left=" + posX + ",top=" + posY + ",resizable=yes,status=no,scrollbars=no";
	window.open(urld,"",features);
}




function Al_Presionar_combo(e)
{
   var keycode;
	if (window.event)
	{
		keycode = window.event.keyCode;
	}
	else if (e)
	{
		keycode = e.which;
	}
	else
	{
		return true;
	}
    if (keycode == 13) {
        swlogin=false;
	    salto_art_combo();
	    if(document.all)
	        e.returnValue = false;
	    else
	    {
	    e.stopPropagation();
        e.preventDefault();
        }
	    return false;
    }    
}




function IsNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }
   
   
   var msgnumber='';

function salto_art_combo()
{
	var ancla    = document.getElementById('tipo_busq_art');
	var tipoAncla = ancla[ancla.selectedIndex].value;
	var numero = document.getElementById('num_busq_art').value;
	var oldsubmit;
	if(numero == "") {
	    if (!document.all) {
            var form = document.forms[0];
            oldsubmit = form.onsubmit;
            form.onsubmit = function() { return false; };
            alert("Introduzca el n\u00famero de art\u00edculo o disposici\u00f3n");
            form.onsubmit = oldsubmit;
        }
        else
	       alert("Introduzca el n\u00famero de art\u00edculo o disposici\u00f3n");
	} 
	else if (IsNumeric(numero)==false){
        if(!document.all){
            var form  = document.forms[0];
            oldsubmit=form.onsubmit;
            form.onsubmit = function() { return false; };
            alert(msgnumber);
            form.onsubmit = oldsubmit;
        }
  	    else
            alert(msgnumber); 
    }
    else {
    numero = numero.replace(/[.,-]/, "");
    tipoAncla  += numero;
    location = "#"+tipoAncla;
    }
}

function Al_Presionar_caja(e)
{
    var keycode;
	if (window.event)
	{
		keycode = window.event.keyCode;
	}
	else if (e)
	{
		keycode = e.which;
	}
	else
	{
		return true;
	}
    if (keycode == 13) {
	    swlogin=false;
	    salto_art_caja();
	    if(document.all)
	        e.returnValue = false;
	    else
	    {
	    e.stopPropagation();
        e.preventDefault();
        return false;
	    }
	}     
}
function salto_art_caja(ventana) {
    var ancla = document.getElementById('tipo_busq_art');
    var tipoAncla = "art";
    var numero = document.getElementById('num_busq_art').value;
    var articleType = numero.substring(0, 1).toUpperCase();

    if (articleType == 'A' || articleType == 'D' || articleType == 'L' || 
        articleType == 'LO' || articleType=='R') {
        goToFragmentDocumentAnchor("art_" + numero.toUpperCase());
    }
    else {
        numero = numero.replace(/[.,-]/, "");
        ancla = tipoAncla + numero;
        location = "#" + ancla;
    }
}
function ImgOP(capaId,elemento){
	if (!DOM1 && !DOM2) {return null;}
	var capa = document.getElementById(capaId);
	var tipo = capa.getElementsByTagName(elemento);
	for (var i=0; i < tipo.length; i++) {
		if (elemento =='img'){
			nameImg = tipo[i].id;
			if(nameImg!=""){
			    vImg(nameImg);
		    }
		}
	}
}

//funcion javascript que nos muestra u oculta las imagenes del documento
function vImg(imgdoc)
{
	var len = imgdoc.length-4;
	//var ruta = "http://imgs.wke.es/";
	var ruta = pathImportantImages;
	    ruta += imgdoc.substr(len,1) + "/" + imgdoc.substr(len+1,1) + "/" + imgdoc.substr(len+2,1) + "/" + imgdoc.substr(len+3,1) + "/" + imgdoc.toLowerCase(); ;
	var ImgDoc = ruta+".jpg";
	var ImgSrc;
		var estiloActual;
			if ( document.getElementById(imgdoc) ){ 
				ImgSrc = document.getElementById(imgdoc);
				ImgSrc.src = ImgDoc;
				estiloActual = ImgSrc.className;
				ImgSrc.className = (estiloActual=='op') ? 'cl' : 'op';	
	
			}
}
function oImg(nameImg){
	var capa    = document.getElementById(nameImg);
	var estilo	= capa.className;
	capa.className = (estilo=='op') ? 'cl' : 'op';
}

function Retirar(capaId)
{
	var capa = document.getElementById(capaId);
	var cssA = capa.className;
	capa.className = (cssA=='nCl') ? 'nOp' : 'nCl';

}

function Posicionar(capaId)
{
	var capa = document.getElementById(capaId);
	var cssA = capa.className;
	capa.className = (cssA=='nCl') ? 'nOp' : 'nCl';


}

function Control()
{
    setTimeout('ControlAux();',1);
}


function ControlAux(){

	if (document.getElementById('ISIS') ){ 
		Iniciar('ISIS','li');
	}
	if (document.getElementById('voces') ){ 
		Iniciar('voces','li');
	}
	if (document.getElementById('sDt') ){ 
		Iniciar('sDt','li');
	}
	if (document.getElementById('dFiC') ){ 
		Iniciar('dFiC','dl');
    }
    if (document.getElementById('dSubv')) {
        Iniciar('dSubv', 'dl');
    }
	if (document.getElementById('dHPlus') ){ 
		Iniciar('dHPlus','dl');
	}
		
	if (document.getElementById('tBody')) { 
		var tipoDoc = document.getElementById('tBody');
		if (tipoDoc.className == "BL")
		{
			ImgOP('tBody','img');
		} 
		if (tipoDoc.className == "NE")
		{
			ImgOP('tBody','img');
		}
		if (tipoDoc.className == "DT")
		{
			ImgOP('tBody','img');
		}
		if (tipoDoc.className == "FO")
		{
		    ImgOP('tBody','img');
			NotasAyudaFormularios('cCn','a');
        }
        if (tipoDoc.className == "PR") 
        {
            ImgOP('tBody', 'img');
        }
	}
	if (document.getElementById('fBody')) { 
		var tipoDoc = document.getElementById('fBody');
		if (tipoDoc.className == "BL")
		{
			ImgOP('fBody','img');
		} 
		if (tipoDoc.className == "NE")
		{
			ImgOP('fBody','img');
		}
		if (tipoDoc.className == "DT")
		{
			ImgOP('fBody','img');
		}
    }
        
    //Se habilita o deshabilita la barra de herramientas de los documentos de Atlas de Ciss.
    if (checkMatterForButtonBar == 'True') {
        if (document.getElementById('dHQLink')) {
            if (viewButtonBar == 'True') {
                document.getElementById('dHQLink').style.display = "block";
            }
            else {
                document.getElementById('dHQLink').style.display = "none";
            }
        }
    }
}

function NotasAyudaFormularios(capaId,elemento)
{
if (!DOM1 && !DOM2) {return null;}
	//Lo utilizamos para mostrar un texto cuando pasas el raton por encima de una imagen.
	var arr=document.getElementById(capaId).getElementsByTagName(elemento);
	
	for(idarr=0;idarr<arr.length;idarr++)
	{
	    if (arr[idarr].className =="nh")
	    {
	        var capa = arr[idarr].href.replace("javascript:vNt('","");
	        capa=capa.replace("')","");

            if(DOM1)
              {
              	arr[idarr]['onmouseover']=new Function("Posicionar('"+capa+"');");
              	arr[idarr]['onmouseout']=new Function("Retirar('"+capa+"');");

              }
              else if(DOM2)
              {
                  arr[idarr].setAttribute("onmouseover","Posicionar('"+capa+"');");
                  arr[idarr].setAttribute("onmouseout","Retirar('"+capa+"');");
              }
	    }
	}
}

// Ojo. Funcion tempooral pendiente de tarea TRA-93
function ClassDerFutura(fecha)
{
   if (fecha) {
     var hoy = new Date();
     var derogacion = new Date();   
     derogacion.setMonth(fecha.substring(4, 6)-1);
     derogacion.setYear(fecha.substring(0, 4));
     derogacion.setDate(fecha.substring(6, 8));
 
     if (derogacion.getTime() <= hoy.getTime()) {
        var contexto = document.getElementById('cCx')
        var estiloActual;
        for (var i=0; i < contexto.childNodes.length; i++) {
            if (contexto.childNodes[i].nodeName=='P') {
                estiloActual = contexto.childNodes[i].className;
                if (estiloActual=='lDF'){
                    contexto.className= contexto.className.replace(/lDF/, "lDR");
                }
                contexto.childNodes[i].className = (estiloActual=='cl') ? 'op' : 'cl';
            } 
        }
    }
  } 
}






/* EMG: 29/02/2008 FUNCIONALIDAD TDC CODIGOS */
/* */


if (document.implementation) {
	if (document.implementation.hasFeature('Events','2.0')) {
		var DOM2 = true;
	} else {
		var DOM1 = true;
		var elmObj = null;
	}
} else {
	if (document.getElementById) {
		var DOM1 = true;
		var elmObj = null;
	}
}
/* */
function IniciarCodigo(menuId,tipo) {		
	if (!DOM1 && !DOM2) {return null;}
	var Menu = document.getElementById(menuId);
	var Submenues = Menu.getElementsByTagName(tipo);
	for (var i=0; i < Submenues.length; i++) {
	if (	tipo =='dl'){
		Menux = Submenues[i];
	} else if (tipo =='ul'){
		Menux = Submenues[i].parentNode;
	} else if (tipo =='li'){
		Menux = Submenues[i];
	}
		while (Menux.nodeName=="#text"){
			Menux = Menux.nextSibling;
    		}
		if (DOM2) {
			if (	tipo =='dl'){
				if (	Menux.firstChild.nodeName=="#text"){
					Menux.firstChild.nextSibling.addEventListener('click', OpDLc, 0);
				} else {
					Menux.firstChild.addEventListener('click', OpDLc, 0);	
				} 		
			} else if (tipo =='ul'){
				Menux.addEventListener('click', OpenUL, 0);	
			} else if (tipo =='li'){
				Menux.addEventListener('click', OpenUL, 0);	
			}
		}
		if (DOM1) {
			if (	tipo =='dl'){
				Menux.firstChild['onclick']=new Function('OpDLc(this);');
			} else if (tipo =='ul'){
				Submenues[i].parentNode['onclick']=new Function('OpenUL(this);');
			} else if (tipo =='li'){
				if(Submenues[i].className != "ExISISc" && Submenues[i].className != "ExISISo" ){				
					Submenues[i]['onclick']=new Function('OpenUL(this);');
				}
			}
		}
	}
}
function OpDLc(E) {
	var elmDT = (DOM1) ? E : E.currentTarget;
	if (DOM1) {
		  if (elmObj == null) elmObj = elmDT;
		  if (elmObj.parentNode == elmDT) return elmObj = elmDT;
	}
	if (DOM2) {
		if (elmDT.nodeName!='DT') {
			return null;
		}
	}
	var estiloActual = elmDT.className;
		elmDT.className = (estiloActual=='dcl') ? 'dop' : 'dcl';
    if(elmDT.nextSibling!=null)
    {
	while (elmDT.nextSibling.nodeName=="#text")
		{
			elmDT= elmDT.nextSibling;
    		}
    }
    var ajaxload = false;
    var auxiliary = elmDT.nextSibling;
    if (auxiliary.id != '') {
        var i = 0;
        for (i; i < auxiliary.childNodes.length; i++) {
            if (auxiliary.childNodes[i].nodeName == "DFN") {
                //Cargar por ajax la tdc
//                var hash = new Object();
//                hash.Idd = auxiliary.id;
//                hash.Vigente = "";
//                hash.RepositoryPath = 'tdc';
//                hash.LanguageDependence = new Boolean(false);
//                var result = Wke.Presentation.WebControls.HtmlViewerControl.LoadInnerHtml(hash);
                //                auxiliary.innerHTML = result.value;
                ajaxload = true;
                LoadingViewer(auxiliary.id,"");
                ControlTDC();
                auxiliary.className = "op";
                break;
            }
        }
    }
    if (!ajaxload) {
        while (elmDT = elmDT.nextSibling) {
            estiloActual = elmDT.className;
            if (elmDT.nodeName == 'DD') {
                elmDT.className = (estiloActual == 'cl') ? 'op' : 'cl';
            }
        }
    }
	if (DOM1) elmObj = elmDT;
	if (DOM2) E.stopPropagation();
}
function ControlTDC(){
	if (document.getElementById('tdcBody') ){ 
		IniciarCodigo('tdcBody','dl');
	}
}
function LoadingViewer(tdc, ide) {
    if (ide == "") {
        var hash = new Object();
        hash.Idd = tdc;
        hash.Vigente = "";
        hash.RepositoryPath = 'tdc';
        hash.LanguageDependence = new Boolean(false);
        var res = Wke.Presentation.WebControls.HtmlViewerControl.LoadInnerHtml(hash);
        document.getElementById(tdc).innerHTML = res.value;
        document.getElementById(tdc).className = "op";
    }
    else{
        var node = document.getElementById(ide);
        if (node.nodeName == "DFN") {
            var obj = new Object();
            var tdcsecondnode = node.parentNode;
            var tdcsecondid = tdcsecondnode.id;
            obj.Idd = tdcsecondid;
            obj.Vigente = "";
            obj.RepositoryPath = 'tdc';
            obj.LanguageDependence = new Boolean(false);
            var secondary = Wke.Presentation.WebControls.HtmlViewerControl.LoadInnerHtml(obj);
            tdcsecondnode.innerHTML = secondary.value;
            ControlTDC();
            if (document.all)
                tdcsecondnode.previousSibling.className = "dop";
            else
                tdcsecondnode.previousSibling.previousSibling.className = "dop";
            var contlinknode = document.getElementById(ide);
            var episodenode = contlinknode.parentNode.parentNode;
            if (document.all)
                episodenode.previousSibling.className = "dop";
            else
                episodenode.previousSibling.previousSibling.className = "dop";
            for (var i = 0; i < contlinknode.childNodes.length; i++) {
                if (contlinknode.childNodes[i].nodeName == "A")
                    contlinknode.childNodes[i].className = "selected-item";
            }
            OpenTdcNodeViewer(node.id);
        }
    }
//    else {
//        ControlTDC();
//        //node.txtContent=node.innerHTML;
//        //node.firstChild.nextSibling.className = "indice-seleccionado";
//        for (var i = 0; i < node.childNodes.length; i++) {
//            if (node.childNodes[i].nodeName == "A")
//                node.childNodes[i].className = "selected-item";
//        }
//    }
//    OpenTdcNodeViewer(node.id);
//    //Positioning(node.id);
}
function OpenTdcNodeViewer(nodeId) {
    if (nodeId != "") {
        var principalDiv = document.getElementById(nodeId);
        if (principalDiv != null) {
            if (principalDiv.hasChildNodes())
            // So, first we check if the object is not empty, if the object has child nodes
            {
                var children = principalDiv.childNodes;
                var i = 0;
                var stop = false;
                while ((i < children.length) && (!stop)) {
                    if (children[i].nodeName == "A") {
                        stop = true;
                        //children[i].className = "isis-b";
                        //principalDiv.style.display = 'block';
                        principalDiv.className = "op";
                    };
                    i++;
                };
            };

            while (principalDiv.parentNode != null) {
                principalDiv = principalDiv.parentNode;
                //principalDiv.textContent=principalDiv.innerHTML;
                //imageFolder = principalDiv.firstChild;
                //
                if ((principalDiv.nodeName == "DT")) {
                    //Toggle(imageFolder);
                    principalDiv.className = 'dop';
                };
                if ((principalDiv.nodeName == "DD")) {
                    //Toggle(imageFolder);
                    principalDiv.className = 'op';
                };
                if ((principalDiv.nodeName == "DL")) {
                    //Toggle(imageFolder);
                    principalDiv.className = 'op';
                };

            };
        }
    }
}

var ACTION_ENTRY = "0";
var ACTION_VIEW = "1";
var ACTION_MAIL = "2";

function TextButtons(btnAccept, btnCancel, btnOk) {
	if (document.getElementById("InfUserBtnAccept")) {
		document.getElementById("InfUserBtnAccept").title = btnAccept;
		document.getElementById("InfUserBtnAccept").value = btnAccept;
	}

	if (document.getElementById("InfUserBtnCancel")) {
		document.getElementById("InfUserBtnCancel").title = btnCancel;
		document.getElementById("InfUserBtnCancel").value = btnCancel;
	}
	
	if (document.getElementById("InfUserBtnOk")) {
		document.getElementById("InfUserBtnOk").title = btnOk;
		document.getElementById("InfUserBtnOk").value = btnOk;
	}	
}

//Visualiza u oculta la capa del mensaje final
function InfUserMessage(infUserDivVisibility, messageDivVisibility) {
    if (document.getElementById("InfUserDivPrincipal")) document.getElementById("InfUserDivPrincipal").style.display = infUserDivVisibility;
	if (document.getElementById("InfUserDivMessage")) document.getElementById("InfUserDivMessage").style.display = messageDivVisibility;
	if (document.getElementById("divInfUserButtonsOkCancel")) document.getElementById("divInfUserButtonsOkCancel").style.display = infUserDivVisibility;
}

function getRangeObject(selectionObject) {
	if (selectionObject.getRangeAt)
		return selectionObject.getRangeAt(0);
	else { // Safari!
		var range = document.createRange();
		range.setStart(selectionObject.anchorNode,selectionObject.anchorOffset);
		range.setEnd(selectionObject.focusNode,selectionObject.focusOffset);
		return range;
	}
}

function fragmentCapture() {
	var htmlCode = "";
  var range;
  
	if (window.getSelection) {
		if (window.getSelection && window.getSelection() && window.getSelection().rangeCount > 0) {
			range = getRangeObject( window.getSelection() );
			var clonedSelection = range.cloneContents();
			var div = document.createElement('div');
			div.appendChild(clonedSelection);			
			htmlCode = div.innerHTML;
		}
	} else if (document.selection && document.selection.createRange) {
		range = document.selection.createRange();
		htmlCode = range.htmlText;
	}
	else {
		htmlCode = 'Browser not supported';
	}

	return htmlCode;
}

function HideEmptyButton() {
	if ( document.getElementById("hrefDeleteItems") ) {
		document.getElementById("hrefDeleteItems").style.display = "none";
	}
}
var objSimpleTree = null;
var simpleTree = null;

function CreateSimpleTree(id, srv, onlyFolders) {
	simpleTree = new wkSimpleTree(id, srv);
	simpleTree.onlyFolders = onlyFolders;
	simpleTree.Initialize(simpleTree.SHOW_EXPANDED_NODES);
	simpleTree = null;
}

///
///	HideChildsImages
///
function HideChildsImages() {
	if (objSimpleTree) {
		var arrNodes = document.getElementById(objSimpleTree.id).getElementsByTagName('LI');
		for (var idx = 0; idx < arrNodes.length; idx++) {
			var imgNodeChilds = arrNodes[idx].getElementsByTagName('IMG')[0];
			if ((imgNodeChilds) && (imgNodeChilds.style.visibility == "visible")) imgNodeChilds.style.visibility = "hidden";
		}	
	}
}

///
///	ShowValues
///
function ShowValues(title, id) {
    if (document.getElementById(objSimpleTree.currentFolderID) != null)
        document.getElementById(objSimpleTree.currentFolderID).className = 'wkTreeNode';
        
     if(document.getElementById(id)==null)
        objSimpleTree.currentFolderID='sp_'+id;
     else
         objSimpleTree.currentFolderID = id;

     //comprobamos si tiene un span
     if (document.getElementById('sp_' + id) != null) {
         objSimpleTree.currentFolderID = 'sp_' + id;
     }
        
    document.getElementById(objSimpleTree.currentFolderID).className = 'wkTreeSelectedNode';
    if (document.getElementById("spFolderSelected")) document.getElementById("spFolderSelected").innerHTML = title;
	if (document.getElementById("folderSelectedID")) document.getElementById("folderSelectedID").value = id;
}


function ShowValuesAux(title, id) {
    if (document.getElementById(objSimpleTree.currentFolderID)!=null)
     document.getElementById(objSimpleTree.currentFolderID).className = 'wkTreeNode';
    
        objSimpleTree.currentFolderID = 'sp_' + id;

        document.getElementById(objSimpleTree.currentFolderID).className = 'wkTreeSelectedNode';
        if (document.getElementById("spFolderSelected")) document.getElementById("spFolderSelected").innerHTML = '';
        if (document.getElementById("folderSelectedID")) document.getElementById("folderSelectedID").value = '';
    
}

///
/// GetSubFolders
///
function GetSimpleTreeSubFolders(idFolder) {
  var obj = new Object();
  obj.Service = objSimpleTree.service;
  obj.IdFolder = idFolder;  

  AjaxControl_Default(targetSimpleTree, methodSimpleTreeGetSubFolders, obj, GetSimpleTreeSubFolders_Callback);
}

/// <summary>
///		Muestra las nuevas carpetas
/// </summary>
/// <param name="folderId">Identificador de la carpeta</param>	
function GetSimpleTreeSubFolders_Callback(response) {		
	var idFolder = response.value.IdFolder;
	var arrSubFolders = response.value.arrSubFolders;
	
	var currNode = document.getElementById(idFolder);

	var subFolders;
	if (arrSubFolders.length > 0) {
		subFolders = document.createElement('UL');
				
		for (var idx = 0; idx < arrSubFolders.length; idx++) {
			var liFolder = objSimpleTree.GetSimpleTreeFolderStructure(arrSubFolders[idx].Id, arrSubFolders[idx].Title, arrSubFolders[idx].HasChildren);
			subFolders.appendChild(liFolder);
		}
		
		subFolders.style.display = 'block';
		currNode.appendChild(subFolders);
	
		var idNode = idFolder.replace(/[^0-9]/gi,'');		
	}
}

/* Constructor */
function wkSimpleTree(treeId, currService) {
	var id;
	var service;	
				
	var imagesFolder;
	var onlyFolders;
	
	// Carpeta con la selección (a nivel de CSS)
	var selectedFolder;	
	
	// Carpeta de la cual se está mostrando el contenido
	var currentFolderId;

	//acciones de menu
	var menuActions;
	var contextMenu;
	var folders;
	var completeCtxMnu; 	// Menú contextual con todas las opciones
	var renActionCtxMnu; // Menú contextual con, sólo, la opción de renombrado
	var delActionCtxMnu; // Menú contextual con, sólo, la opción de borrado
	var createFolderActionCtxMnu; // Menú contextual con, sólo, la opción de creación de carpetas
	var events;
		
	// Datos para los popups
	var currentFolderText;
	var currentFolderID;


	var imgPlus;
	var imgMinus;
	var imgFolder;
	var imgClosedFolder;
	var imgDocument;
	
	// Identificador del árbol	
	this.id = treeId;	
	this.service = currService;
	objSimpleTree = this;

	this.menuActions = null;
	this.contextMenu = null;
	this.folders = null;
	// Referencia al menú contextual
	this.completeCtxMnu = null;
	this.renActionCtxMnu = null;
	this.delActionCtxMnu = null;
	this.createFolderActionCtxMnu = null;
	this.events = null;
	
	// Carpeta contenedora de las imágenes
	this.imagesFolder = "../img/tree/";

	// Imagenes para los nodos
	this.onlyFolders = false;
	this.imgPlus = 'plus.gif';
	this.imgMinus = 'minus.gif';
	this.imgFolder = 'folder.gif';
	this.imgClosedFolder = 'folder_closed.gif';
	this.imgDocument = 'document.gif';
		
	if (document.all) {
		this.xAxisOffset = 2;
		this.xAxisOffsetSub = 4;
		this.yAxisOffset = 2;
	}
	else {
		this.xAxisOffset = 1;
		this.xAxisOffsetSub = 3;
		this.yAxisOffset = 2;			
	}
	if ( navigator.userAgent.indexOf('Opera') >= 0) {
		this.xAxisOffset = 2;
		this.xAxisOffsetSub = 3;
		this.yAxisOffset = -7;				
	}
		
	// Constantes de estado de las carpetas del árbol
	this.SHOW_EXPANDED_NODES = 1;
	this.SHOW_COLLAPSED_NODES = 2;
	
	// Constantes de carpetas
	this.UNCLASSIFIED_ITEMS_FOLDER = this.service + "Node0";
	this.ROOT_FOLDER = "SimpleTree_SimpleTree_"+this.service + "Root";
}

/* Clase wkSimpleTree */
wkSimpleTree.prototype = {
    /// <summary>
    ///		Gestiona la inicialización del árbol
    /// </summary>
    /// <param name="initStatus">Indica si se muestra desplegado o, plegado desde el primer nivel</param>	
    Initialize: function(initStatus) {
        idNode = 0;
        var wksimpletree = document.getElementById(this.id);
        this.menuActions = new wkTreeMenuActions(this);
        this.folders = new wkTreeFolders(this);
        this.folders.CreateDropTag(this.service);
        this.events = new wkTreeEvents(this);

        //document.documentElement.onselectstart = this.events.OnSelectCancel;
        document.documentElement.ondragstart = this.events.OnCancel;
        document.documentElement.onmousedown = this.events.OnHighlightRemove;

        // Un menú contextual con todas las opciones
        completeCtxMnu = new wkContextMenuModel();
        completeCtxMnu.CreateAction(treeDeleteFolder, '', '', false, 'objSimpleTree.menuActions.DeleteFolder');
        completeCtxMnu.CreateAction(treeRenameFolder, '', '', false, 'objSimpleTree.menuActions.RenameFolder');
        completeCtxMnu.CreateAction(treeCreateFolder, '', '', false, 'objSimpleTree.menuActions.CreateNewFolder');
        completeCtxMnu.InitMenuModel();

        // Un menú contextual, solo con la opción de renombrado
        renActionCtxMnu = new wkContextMenuModel();
        renActionCtxMnu.CreateAction(treeRenameFolder, '', '', false, 'objSimpleTree.menuActions.RenameFolder');
        renActionCtxMnu.InitMenuModel();

        // Un menú contextual, solo con la opción de borrado
        delActionCtxMnu = new wkContextMenuModel();
        delActionCtxMnu.CreateAction(treeDeleteFolder, '', '', false, 'objSimpleTree.menuActions.DeleteFolder');
        delActionCtxMnu.InitMenuModel();

        // Un menú contextual, solo con la opción de crear carpeta
        createFolderActionCtxMnu = new wkContextMenuModel();
        createFolderActionCtxMnu.CreateAction(treeCreateFolder, '', '', false, 'objSimpleTree.menuActions.CreateNewFolder');
        createFolderActionCtxMnu.InitMenuModel();

        this.contextMenu = new wkContextMenu(125);

        if (wksimpletree) {
    
            var arrNodes = wksimpletree.getElementsByTagName('LI');
            for (var idx = 0; idx < arrNodes.length; idx++) {
                idNode++;

                var idCurrentNode = arrNodes[idx].id;
                var subNodes = arrNodes[idx].getElementsByTagName('UL');

                var imgNodeChilds = arrNodes[idx].getElementsByTagName('IMG')[0];
                imgNodeChilds.onclick = this.View;

                // Tratamiento desde el enlace del nodo
                var spanNode = arrNodes[idx].getElementsByTagName('SPAN')[0];
                spanNode.id = 'sp_' + arrNodes[idx].id;

                /*---------------*/
                // Asignación del menú contextual, según la naturaleza de la carpeta
                if (idCurrentNode != this.UNCLASSIFIED_ITEMS_FOLDER) {
                    if (this.contextMenu) {
                        if (idCurrentNode == this.ROOT_FOLDER) {
                            // En la raíz, únicamente, se permite la creación de una nueva carpeta, mediante el menú contextual
                            this.contextMenu.AttachMenuAction(spanNode, false, createFolderActionCtxMnu);
                            //this.events.AddNewEvent(spanNode, 'click', this.HighlightFolder);
                            //alert(spanNode.id);
                            
                            //spanNode.onclick=function(){alert('kk');objTree[activeTree].events.OnHighlightRemove();alert('koko');objTree[activeTree].HighlightFolder(spanNode);alert('kaka');};

                        }
                        else {
                         
                            // El resto de carpetas, disponen del menú contextual, completo.
                            this.contextMenu.AttachMenuAction(spanNode, false, completeCtxMnu);
                        }
                    }
                    this.events.AddNewEvent(spanNode, 'contextmenu', this.HighlightFolder);
                }
                /*---------------*/

                // En el momento de la inicialización, el último nodo estará seleccionado y se establecerá como actual
                this.currentFolderId = spanNode.id;

                this.currentFolderText = spanNode.innerHTML;
                this.currentFolderID = spanNode.id;
                if (spanNode.id == this.UNCLASSIFIED_ITEMS_FOLDER) this.currentFolderID = "";
            }

            if (initStatus == this.SHOW_EXPANDED_NODES) this.Expand();
            else this.Collapse();
        }
    }
	,
    Expand: function() {
        var folders = document.getElementById(objSimpleTree.id).getElementsByTagName('LI');

        for (var idx = 0; idx < folders.length; idx++) {
            var subFolders = folders[idx].getElementsByTagName('UL');
            if (subFolders.length > 0 && subFolders[0].style.display != 'block') {
                objSimpleTree.View(false, folders[idx].id);
            }
        }
    }
	,
    /// <summary>
    ///		Determina si la carpeta actual está vacía.
    /// </summary>
    ItemIsParent: function(obj) {
        var subs = obj.getElementsByTagName('LI');
        if (subs.length > 0) return true;
        return false;
    }
	,
    Collapse: function() {
        var folders = document.getElementById(objSimpleTree.id).getElementsByTagName('LI');

        for (var idx = 0; idx < folders.length; idx++) {
            var subFolders = folders[idx].getElementsByTagName('UL');
            if (subFolders.length > 0 && subFolders[0].style.display == 'block') {
                objSimpleTree.View(false, folders[idx].id);
            }
        }
    }
	,
    /// <summary>
    ///		Cambia el estilo de la carpeta actual para que aparezca como activa
    /// </summary>
    HighlightFolder: function(obj, e) {
        if (objSimpleTree.selectedFolder) objSimpleTree.selectedFolder.className = '';
        this.className = 'wkTreeSelectedNode';
        objSimpleTree.selectedFolder = this;
        objSimpleTree.currentFolderText = obj.innerHTML;
        objSimpleTree.currentFolderID = obj.id;
    }
	,
    /// <summary>
    ///		Realiza la visualización de las carpetas
    /// </summary>
    /// <param name="folderId">Identificador de la carpeta</param>	
    View: function(e, folderId) {
        var currNode;
        var currNodeFolder;

        if (folderId) {
            if (!document.getElementById(folderId)) return;
            currNode = document.getElementById(folderId).getElementsByTagName('IMG')[0];
            currNodeFolder = document.getElementById(folderId).getElementsByTagName('IMG')[1];
        }
        else {
            currNode = this;
            currNodeFolder = this.nextSibling;
            if (this.tagName == 'SPAN') {
                currNode = this.parentNode.getElementsByTagName('IMG')[0];
                currNodeFolder = this.parentNode.getElementsByTagName('IMG')[1];
            }
        }

        if (currNode.style.visibility == 'hidden') return;

        var parentNode = currNode.parentNode;
        folderId = parentNode.id.replace(/[^0-9]/g, '');

        // Cambio de la visualización del nodo
        if (currNode.src.indexOf(objSimpleTree.imgPlus) >= 0) {
            currNode.src = currNode.src.replace(objSimpleTree.imgPlus, objSimpleTree.imgMinus);
            currNodeFolder.src = currNodeFolder.src.replace(objSimpleTree.imgClosedFolder, objSimpleTree.imgFolder);
            var ul = parentNode.getElementsByTagName('UL')[0];
            if (ul) {
                ul.style.display = 'block';
            }
            else {
                GetSimpleTreeSubFolders(parentNode.id);
            }
        }
        else {
            currNode.src = currNode.src.replace(objSimpleTree.imgMinus, objSimpleTree.imgPlus);
            currNodeFolder.src = currNodeFolder.src.replace(objSimpleTree.imgFolder, objSimpleTree.imgClosedFolder);
            var ulParent = parentNode.getElementsByTagName('UL')[0];
            if (ulParent) ulParent.style.display = 'none';
        }

        return false;
    }
	,
    ChangeImageFolder: function(folderId) {
        var objFolder = document.getElementById(folderId);

        // Todas las carpetas cerradas
        var rootFolder = document.getElementById(objSimpleTree.ROOT_FOLDER);

        if (rootFolder) {
            var arrFolders = rootFolder.getElementsByTagName("LI");
            for (var idx = 0; idx < arrFolders.length; idx++) {
                var img = arrFolders[idx].getElementsByTagName('IMG')[1];
                if (img.src.indexOf(objSimpleTree.imgFolder) >= 0) {
                    img.src = img.src.replace(objSimpleTree.imgFolder, objSimpleTree.imgClosedFolder);
                    arrFolders[idx].getElementsByTagName('SPAN')[0].className = 'wkTreeNode';
                }
            }
        }

        // Desde la seleccionada, hasta root, abrirlas.
        var imgFolder = objFolder.getElementsByTagName('IMG')[1];
        imgFolder.src = imgFolder.src.replace(objSimpleTree.imgClosedFolder, objSimpleTree.imgFolder);
        objFolder.getElementsByTagName('SPAN')[0].className = 'wkTreeSelectedNode';

        objSimpleTree.HighlightFolder(objFolder.getElementsByTagName('SPAN')[0]);

        var obj = objFolder.parentNode;
        while (obj.id != objSimpleTree.ROOT_FOLDER) {
            if (obj.tagName == "LI") {
                var img = obj.getElementsByTagName('IMG')[1];
                img.src = img.src.replace(objSimpleTree.imgClosedFolder, objSimpleTree.imgFolder);
            }
            obj = obj.parentNode;
        }
    }
	,
    /// <summary>
    ///		Crea toda la jerarquía de objetos que forman una carpeta del árbol
    /// </summary>
    /// <param name="folderId">Identificador de la carpeta en el árbol</param>	
    /// <param name="folderTitle">Literal que proporcionará el título a la carpeta</param>	
    /// <param name="hasChildren">Indica si la carpeta actual tendrá, o no, subcarpetas</param>
    GetSimpleTreeFolderStructure: function(folderId, folderTitle, hasChildren) {

        var liFolder = document.createElement('LI');
        liFolder.id = 'SimpleTree_' + folderId;

        // Imagen [+]
        var imgHasChilds = document.createElement('IMG');
        imgHasChilds.id = "ChildsImg_" + folderId;
        imgHasChilds.src = objSimpleTree.imagesFolder + objSimpleTree.imgPlus;
        imgHasChilds.onclick = objSimpleTree.View;
        imgHasChilds.style.visibility = 'hidden';
        if (hasChildren) imgHasChilds.style.visibility = 'visible';

        // Imagen de la carpeta
        var imgFolder = document.createElement('IMG');
        imgFolder.id = "FolderImg_" + folderId;
        imgFolder.src = objSimpleTree.imagesFolder + objSimpleTree.imgClosedFolder;

        // Tratamiento de la carpeta
        var spanFolder = document.createElement('SPAN');
        spanFolder.id = 'sp_' + folderId;
        spanFolder.className = "wkTreeNode";
        spanFolder.innerHTML = folderTitle;
        if (folderId == objSimpleTree.UNCLASSIFIED_ITEMS_FOLDER) folderId = "";
        spanFolder.onclick = function() { ShowValues(folderTitle, folderId); };

        liFolder.appendChild(imgHasChilds);
        liFolder.appendChild(imgFolder);
        liFolder.appendChild(spanFolder);

        return liFolder;
    }
}

//fin

/* Constructor */
function wkTreeMenuActions() {
}

/* Clase wkTreeMenuActions */
wkTreeMenuActions.prototype = {

    /// <summary>
    ///		Renombrar una carpeta
    /// </summary>
    /// <param name="objCtxMenuOptionTrigger">Opción seleccionada</param>	
    /// <param name="objSelected">Carpeta que lanza la acción</param>	
    RenameFolder: function(objCtxMenuOptionTrigger, objSelected) {

        //comprobamos que no sea el raiz
        if (objSelected == null) {
            popup.OpenGenericPopup('GenericPopup.aspx?labelCodeText=CarpetaInvalidaRename&idType=23', 'no', 300, 200, 'px', 'yes', '', '', '', 23);
            return false;
        }

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else {
            arbol = objSimpleTree;
            if (document.getElementById("sp_" + objSelected.id) != null) {
                //cogemos el hijo
                objSelected = document.getElementById("sp_" + objSelected.id);
            }
        }

        if (objSelected.id == arbol.UNCLASSIFIED_ITEMS_FOLDER || objSelected.id == "sp_" + arbol.UNCLASSIFIED_ITEMS_FOLDER || objSelected.id == "sp_" + arbol.ROOT_FOLDER || objSelected.id == arbol.ROOT_FOLDER) {
            popup.OpenGenericPopup('GenericPopup.aspx?labelCodeText=CarpetaInvalidaRename&idType=23', 'no', 300, 200, 'px', 'yes', '', '', '', 23);
            return false;
        }

        // Se oculta el menú contextual de la carpeta seleccionada
        arbol.contextMenu.HideContextMenu();


        // Petición del nuevo nombre para la carpeta
        var folderName = prompt(treeUpdateFolderName + " \"" + objSelected.innerHTML + "\"", objSelected.innerHTML);

        // Creación de la nueva subcarpeta con un título válido		
        if ((folderName) && (folderName.length > 0)) {
            // Renombrar la carpeta seleccionada
            RenameFolderNode(objSelected.parentNode.id, folderName);
        }
    }
	,
    /// <summary>
    ///		Después del callback de AJAX se repinta el nuevo título
    /// </summary>
    /// <param name="objId">Identificador de la carpeta</param>	
    /// <param name="title">Nuevo título</param>
    RenameDOMElement_Folder: function(objId, title) {
        var idObjText = 'sp_' + objId;
        if (document.getElementById("sp_" + idObjText) != null) {
            //cogemos el hijo
            idObjText = "sp_" + idObjText;
        }
        //si es nulo, probamos con un raiz
        if (document.getElementById(idObjText) == null)
            idObjText = 'sp_SimpleTree_' + objId;
        var obj = document.getElementById(idObjText);
        obj.innerHTML = title;
    }
	,
    /// <summary>
    ///		Borrar una carpeta
    /// </summary>
    /// <param name="objCtxMenuOptionTrigger">Opción seleccionada</param>	
    /// <param name="objSelected">Carpeta que lanza la acción</param>	
    DeleteFolder: function(objCtxMenuOptionTrigger, objSelected) {

        //comprobamos que no sea el raiz
        if (objSelected == null) {
            popup.OpenGenericPopup('GenericPopup.aspx?labelCodeText=CarpetaInvalidaDelete&idType=23', 'no', 300, 200, 'px', 'yes', '', '', '', 23);
            return false;
        }

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else {
            arbol = objSimpleTree;
            if (document.getElementById("sp_" + objSelected.id) != null) {
                //cogemos el hijo
                objSelected = document.getElementById("sp_" + objSelected.id);
            }
        }




        if (objSelected.id == arbol.UNCLASSIFIED_ITEMS_FOLDER || objSelected.id == "sp_" + arbol.UNCLASSIFIED_ITEMS_FOLDER || objSelected.id == "sp_" + arbol.ROOT_FOLDER || objSelected.id == arbol.ROOT_FOLDER) {
            popup.OpenGenericPopup('GenericPopup.aspx?labelCodeText=CarpetaInvalidaDelete&idType=23', 'no', 300, 200, 'px', 'yes', '', '', '', 23);
            return false;
        }

        // Se oculta el menú contextual de la carpeta seleccionada
        arbol.contextMenu.HideContextMenu();




        var message = treeConfirmDeleteFolder + " \"" + objSelected.innerHTML + "\"";

        var imgFolder = objSelected.parentNode.getElementsByTagName('IMG')[0];
        if (imgFolder) {
            if (imgFolder.style.visibility == 'hidden') {
                if (confirm(message)) {
                    // Eliminar la carpeta seleccionada		
                    DeleteFolderNode(objSelected.parentNode.id);
                }
            }
            else {
                alert(treeNotEmptyFolder);
            }
        }

    }
	,
    /// <summary>
    ///		Después del callback de AJAX se elimina la carpeta del árbol javascript
    /// </summary>
    /// <param name="idFolderToDelete">Identificador de la carpeta</param>	
    DeleteDOMElement_Folder: function(idFolderToDelete) {

        // Recuperar la carpeta a eliminar
        var obj = document.getElementById(idFolderToDelete);

        // Eliminarlo de la jerarquía del padre (UL contenedor)
        var objParent = obj.parentNode;
        objParent.removeChild(obj);

        // Si al padre no le quedan hijos, poner la imagen [+], oculta y eliminar el UL vacío
        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        if (!arbol.ItemIsParent(objParent.parentNode)) {
            var liObj = objParent.parentNode;
            var ulObj = liObj.getElementsByTagName('UL')[0];
            liObj.removeChild(ulObj);

            var imgChilds = liObj.getElementsByTagName('IMG')[0];
            imgChilds.src = imgChilds.src.replace(arbol.imgMinus, arbol.imgPlus);
            imgChilds.style.visibility = 'hidden';
        }

    }
	,
    /// <summary>
    ///		Crear una carpeta
    /// </summary>
    /// <param name="objCtxMenuOptionTrigger">Opción seleccionada</param>	
    /// <param name="objSelected">Carpeta que lanza la acción</param>	
    CreateNewFolder: function(objCtxMenuOptionTrigger, objSelected) {

        //comprobamos que no sea el raiz ni nulo
        if (objSelected == null) {
            popup.OpenGenericPopup('GenericPopup.aspx?labelCodeText=CarpetaInvalidaCreate&idType=23', 'no', 300, 200, 'px', 'yes', '', '', '', 23);
            return false;
        }
        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        if (objSelected.id == arbol.UNCLASSIFIED_ITEMS_FOLDER || objSelected.id == "sp_" + arbol.UNCLASSIFIED_ITEMS_FOLDER) {
            popup.OpenGenericPopup('GenericPopup.aspx?labelCodeText=CarpetaInvalidaCreate&idType=23', 'no', 300, 200, 'px', 'yes', '', '', '', 23);
            return false;
        }

        // Se oculta el menú contextual de la carpeta seleccionada
        arbol.contextMenu.HideContextMenu();

        // Petición del nombre para la nueva carpeta
        var folderName = prompt(treePromptNewFolder, treeDefaultFolderName);

        // Creación de la nueva subcarpeta con un título válido		
        if ((folderName) && (folderName.length > 0)) {

            var idParent = "";



            if (objSelected.parentNode.id != arbol.ROOT_FOLDER && objSelected.parentNode.id != "sp_" + arbol.ROOT_FOLDER) idParent = objSelected.parentNode.id;


            //esto no me convence mucho, pero vamos a probar .......
            if (objSimpleTree != null) {
                if (objSelected.parentNode.id == '')
                    idParent = objSelected.id;
            }

            CreateFolderNode(folderName, objSelected.id, idParent);
        }
        else {
            if(folderName!=null)
                alert(treeNameNewFolderEmpty);
        }
    }
	,
    /// <summary>
    ///		Después del callback de AJAX se crea la nueva carpeta en el lugar correspondiente
    /// </summary>
    /// <param name="idFolderToDelete">Identificador de la carpeta</param>
    CreateDOMElement_Folder: function(idNewItem, folderName, idSelectedObj) {


        // Recuperar la carpeta seleccionado. Identificador del SPAN
        var obj = document.getElementById(idSelectedObj);

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        var liFolder;
         if (objSimpleTree == null)
             liFolder = arbol.folders.GetFolderStructure(idNewItem, folderName, false);
        else
            liFolder = objSimpleTree.GetSimpleTreeFolderStructure(idNewItem, folderName, false);
          
        if (obj.parentNode.id == arbol.ROOT_FOLDER || obj.parentNode.id == "sp_" + arbol.ROOT_FOLDER) {
            // Añadir subcarpeta, manteniéndo la de elementos sin clasificar al final
            var notClassifiedItemsFolder = document.getElementById(arbol.UNCLASSIFIED_ITEMS_FOLDER);
            // Se inserta la carpeta en el UL que pende de la raíz.
            obj.nextSibling.insertBefore(liFolder, notClassifiedItemsFolder);
        }
        else {
            if (obj.previousSibling.previousSibling.style.visibility == 'visible') {
                // Si la carpeta se está creando dentro de una que está expandida, se muestra la nueva
                var ULFolder = obj.parentNode.getElementsByTagName("UL")[0];
                if (ULFolder) ULFolder.appendChild(liFolder);
            }
            else {
                // En este caso, la carpeta estará cerrada y se deberá mostrar la imagen [+].	
                obj.previousSibling.previousSibling.style.visibility = 'visible';
            }
        }
    }
	,
    /** VISUALIZACION DE SUBCARPETAS **/
    ViewDOMElement_Folders: function(idFolder, arrSubFolders) {


        var currNode = document.getElementById(idFolder);

        var subFolders;

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        if (arrSubFolders.length > 0) {
            subFolders = document.createElement('UL');

            for (var idx = 0; idx < arrSubFolders.length; idx++) {
                //var liFolder = arbol.folders.GetFolderStructure(arrSubFolders[idx].Id, arrSubFolders[idx].Title, arrSubFolders[idx].HasChildren);
                var liFolder;
                if (objSimpleTree == null)
                    liFolder = arbol.folders.GetFolderStructure(arrSubFolders[idx].Id, arrSubFolders[idx].Title, arrSubFolders[idx].HasChildren);
                else
                    liFolder = objSimpleTree.GetSimpleTreeFolderStructure(arrSubFolders[idx].Id, arrSubFolders[idx].Title, arrSubFolders[idx].HasChildren);
                subFolders.appendChild(liFolder);
            }

            subFolders.style.display = 'block';
            currNode.appendChild(subFolders);

            var idNode = idFolder.replace(/[^0-9]/gi, '');

            // Almacena el identificador de la carpeta como expandida
            /*if (!expandedList) expandedList = ',';
            if (expandedList.indexOf(',' + idNode + ',') < 0) expandedList = expandedList + idNode + ',';	*/

            //objTree[activeTree].SetCookie('wkTreeNodesInitStatus', expandedList, 500);			
        }
    }
}

//fin


/* Constructor */
function wkTreeFolders() {
}

/* Clase wkTreeFolders */
wkTreeFolders.prototype = {
    /// <summary>
    ///		Creación del tag de drag and drop
    /// </summary>
    CreateDropTag: function(treeService) {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[treeService];
        else
            arbol = objSimpleTree;

        // Crear la imagen para el destino del 'drop'
        var img = document.createElement('IMG');
        img.src = arbol.imagesFolder + 'dropTag.gif';
        img.id = 'dropTagImg';

        // Crear la capa que contendrá la imagen que se mostrará en el drop
        arbol.dropTargetTag = document.createElement('DIV');
        arbol.dropTargetTag.style.position = 'absolute';
        arbol.dropTargetTag.style.display = 'none';
        arbol.dropTargetTag.appendChild(img);

        document.body.appendChild(arbol.dropTargetTag);
    }
	,
    /// <summary>
    ///		Crea toda la jerarquía de objetos que forman una carpeta del árbol
    /// </summary>
    /// <param name="folderId">Identificador de la carpeta en el árbol</param>	
    /// <param name="folderTitle">Literal que proporcionará el título a la carpeta</param>	
    /// <param name="hasChildren">Indica si la carpeta actual tendrá, o no, subcarpetas</param>
    GetFolderStructure: function(folderId, folderTitle, hasChildren) {


       
        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;


        var liFolder = document.createElement('LI');
        liFolder.id = folderId;

        // Imagen [+]
        var imgHasChilds = document.createElement('IMG');
        imgHasChilds.src = arbol.imagesFolder + arbol.imgPlus;
        imgHasChilds.onclick = arbol.folders.View;
        imgHasChilds.style.visibility = 'hidden';
        if (hasChildren) imgHasChilds.style.visibility = 'visible';

        // Imagen de la carpeta
        var imgFolder = document.createElement('IMG');
        //imgFolder.onmousedown = objTree[activeTree].folders.InitializeDragAndDrop;
        //imgFolder.onmousemove = objTree[activeTree].folders.Move;
        imgFolder.src = arbol.imagesFolder + arbol.imgClosedFolder;

        // Tratamiento de la carpeta
        //var ordinalCurrentFolder = folderId.replace(/[^0-9]/gi,'');
        var spanFolder = document.createElement('SPAN');
        spanFolder.id = 'sp_' + folderId;
        spanFolder.className = "wkTreeNode";
        spanFolder.innerHTML = folderTitle;
        if (folderId == arbol.UNCLASSIFIED_ITEMS_FOLDER) folderId = "";
        spanFolder.onclick = function() { GetFolderItems(folderId); };
        //spanFolder.onmousedown = objTree[activeTree].folders.InitializeDragAndDrop;
        //spanFolder.onmousemove = objTree[activeTree].folders.Move;			

        // Asignación del menú contextual, según la naturaleza de la carpeta
        if (folderId != arbol.UNCLASSIFIED_ITEMS_FOLDER) {
            if (arbol.contextMenu) {
                if (folderId == arbol.ROOT_FOLDER) {
                    // En la raíz, únicamente, se permite la creación de una nueva carpeta, mediante el menú contextual
                    arbol.contextMenu.AttachMenuAction(spanFolder, false, createFolderActionCtxMnu);
                }
                else {
                    // El resto de carpetas, disponen del menú contextual, completo.
                    arbol.contextMenu.AttachMenuAction(spanFolder, false, completeCtxMnu);
                }
            }
            arbol.events.AddNewEvent(spanFolder, 'contextmenu', arbol.HighlightFolder);
        }

        liFolder.appendChild(imgHasChilds);
        liFolder.appendChild(imgFolder);
        liFolder.appendChild(spanFolder);

        return liFolder;
    }
	,
    /// <summary>
    ///		Realiza la visualización de las carpetas
    /// </summary>
    /// <param name="folderId">Identificador de la carpeta</param>
    View: function(e, folderId) {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;


        var currNode;
        var currNodeFolder;

        if (folderId) {
            if (!document.getElementById(folderId)) return;
            currNode = document.getElementById(folderId).getElementsByTagName('IMG')[0];
            currNodeFolder = document.getElementById(folderId).getElementsByTagName('IMG')[1];
        }
        else {
            currNode = this;
            currNodeFolder = this.nextSibling;
            if (this.tagName == 'SPAN') {
                currNode = this.parentNode.getElementsByTagName('IMG')[0];
                currNodeFolder = this.parentNode.getElementsByTagName('IMG')[1];
            }
        }

        if (currNode.style.visibility == 'hidden') return;

        var parentNode = currNode.parentNode;
        folderId = parentNode.id.replace(/[^0-9]/g, '');

        // Cambio de la visualización del nodo
        if (currNode.src.indexOf(arbol.imgPlus) >= 0) {
            currNode.src = currNode.src.replace(arbol.imgPlus, arbol.imgMinus);
            currNodeFolder.src = currNodeFolder.src.replace(arbol.imgClosedFolder, arbol.imgFolder);
            var ul = parentNode.getElementsByTagName('UL')[0];
            if (ul) {
                ul.style.display = 'block';

                /*if (folderId.length != 0) {
                // Almacena el identificador del nodo como expandido
                if (!expandedList) expandedList = ',';
                if (expandedList.indexOf(',' + folderId + ',') < 0) expandedList = expandedList + folderId + ',';
                }*/
            }
            else {
                GetSubFolders(parentNode.id);
            }
        }
        else {
            currNode.src = currNode.src.replace(arbol.imgMinus, arbol.imgPlus);
            currNodeFolder.src = currNodeFolder.src.replace(arbol.imgFolder, arbol.imgClosedFolder);
            var ulParent = parentNode.getElementsByTagName('UL')[0];
            if (ulParent) ulParent.style.display = 'none';

            // Quita el identificador de la lista de nodos expandidos
            //expandedList = expandedList.replace(',' + folderId, '');
        }

        //if (folderId.length != 0) objTree[activeTree].SetCookie('wkTreeNodesInitStatus', expandedList, 500);			

        return false;
    }
	,
    /// <summary>
    ///		Inicialización del drag and drop
    /// </summary>
    /// <param name="e">Evento</param>
    InitializeDragAndDrop: function(e) {


        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;


        if (document.all) e = event;

        // Vaciar el contenedor temporal del drag and drop
        arbol.ddContainer.innerHTML = "";

        var subs = arbol.ddContainer.getElementsByTagName('LI');
        if (subs.length > 0) {
            if (arbol.ddSourceNodeNextSibling) {
                arbol.ddParentNode.insertBefore(arbol.ddSourceNode, arbol.ddSourceNodeNextSibling);
            }
            else {
                arbol.ddParentNode.appendChild(arbol.ddSourceNode);
            }
        }

        arbol.ddSourceNode = this.parentNode;
        arbol.ddParentNode = this.parentNode.parentNode;
        arbol.ddSourceNodeNextSibling = false;

        if (arbol.ddSourceNode.nextSibling) arbol.ddSourceNodeNextSibling = arbol.ddSourceNode.nextSibling;
        arbol.ddTargetNode = false;
        arbol.ddTimer = 0;
        arbol.folders.TimerDragAndDrop();

        return false;
    }
	,
    /// <summary>
    ///		Gestiona el movimiento de las carpetas mediante drag and drop
    /// </summary>
    /// <param name="e">Evento</param>
    Move: function(e) {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        if (arbol) {

            if (arbol.ddTimer < 10) return;

            if (document.all) e = event;
            ddCoordX = e.clientX / 1 + 5 + document.body.scrollLeft;
            ddCoordY = e.clientY / 1 + 5 + document.documentElement.scrollTop;

            arbol.ddContainer.style.left = ddCoordX + 'px';
            arbol.ddContainer.style.top = ddCoordY + 'px';

            var currNode = this;
            if (currNode.tagName == 'SPAN' || currNode.tagName == 'IMG') currNode = currNode.parentNode;

            if (currNode && currNode.id) {
                var objSource = this;
                arbol.ddTargetNode = currNode;

                var objTemp = arbol.dropTargetTag;
                objTemp.style.display = 'block';

                var imgTemp = objTemp.getElementsByTagName('IMG')[0];

                if (this.tagName == 'SPAN') {
                    // Insertar el nodo como un hijo				
                    imgTemp.src = imgTemp.src.replace('Tag', 'Arrow');
                    arbol.isSubNode = true;

                    objTemp.style.left = (arbol.folders.LeftPosition(objSource) + arbol.xAxisOffsetSub) + 'px';
                }
                else {
                    // Insertar el nodo como un hermano				
                    imgTemp.src = imgTemp.src.replace('Arrow', 'Tag');
                    arbol.isSubNode = false;

                    objTemp.style.left = (arbol.folders.LeftPosition(objSource) + arbol.xAxisOffset) + 'px';
                }

                objTemp.style.top = (arbol.folders.TopPosition(currNode) + arbol.yAxisOffset) + 'px';
            }

            return false;
        }
    }
	,
    Drop: function() {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;


        if (arbol) {

            if (arbol.ddTimer < 10) {
                arbol.ddTimer = -1;
                return;
            }

            var showMessage = false;

            if (arbol.ddTargetNode) {
                // Comprobar los niveles de profundidad del árbol
                var countUp = arbol.folders.CountUpLevels(arbol.ddTargetNode);
                var countDown = arbol.folders.CountDownLevels(arbol.ddSourceNode);
                var countLevels = countUp / 1 + countDown / 1 + (arbol.isSubNode ? 1 : 0);

                if (countLevels > arbol.maximumDepth) {
                    arbol.ddTargetNode = false;
                    showMessage = true;
                }
            }

            if (arbol.ddTargetNode) {
                if (arbol.isSubNode) {
                    var idTarget = arbol.ddTargetNode.id;
                    if (idTarget == arbol.ROOT_FOLDER) idTarget = "";
                    var txtTarget = arbol.ddTargetNode.getElementsByTagName('SPAN')[0].innerHTML;

                    MoveDroppedFolderNode(arbol.ddSourceNode.id, idTarget, txtTarget);
                }
                else {
                    if (arbol.ddTargetNode.nextSibling) {
                        var nextSiblingNode = arbol.ddTargetNode.nextSibling;
                        nextSiblingNode.parentNode.insertBefore(arbol.ddSourceNode, nextSiblingNode);

                        var idTarget = nextSiblingNode.parentNode.parentNode.id;
                        if (idTarget == arbol.ROOT_FOLDER) idTarget = "";
                        var txtTarget = nextSiblingNode.parentNode.parentNode.getElementsByTagName('SPAN')[0].innerHTML;

                        MoveDroppedFolderNode(arbol.ddSourceNode.id, idTarget, txtTarget);
                    }
                }
            }
            else {
                // Devolver el elemento a su posición inicial
                if (arbol.ddSourceNodeNextSibling) {
                    arbol.ddParentNode.insertBefore(arbol.ddSourceNode, arbol.ddSourceNodeNextSibling);
                }
                else {
                    arbol.ddParentNode.appendChild(arbol.ddSourceNode);
                }
            }

            arbol.dropTargetTag.style.display = 'none';
            arbol.ddTimer = -1;

            if ((showMessage) && (arbol.maximumDepthAlert)) alert(arbol.maximumDepthAlert);
        }
    }
	,
    /// <summary>
    ///		Actualiza el signo "+" de la carpeta
    /// </summary>
    MovedDOMElement_Folders: function() {


        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;


        var targetFolder = null;

        if (arbol.isSubNode) {
            targetFolder = arbol.ddTargetNode;
        }
        else {
            targetFolder = arbol.ddTargetNode.parentNode.parentNode;
        }

        // Asegura el signo "+" y lo muestra, ya que se añade como hijo
        var imgObj = targetFolder.getElementsByTagName('IMG')[0];

        // En el caso del root no debe cambiar la imagen				
        if (targetFolder.getElementsByTagName('SPAN')[0].id != "sp_" + arbol.ROOT_FOLDER) {
            imgObj.src = imgObj.src.replace(arbol.imgMinus, arbol.imgPlus);
        }

        imgObj.style.visibility = 'visible';

        // Limpiar el nodo padre
        var objTemp = arbol.ddParentNode;
        var liList = objTemp.getElementsByTagName('LI');
        if (liList.length == 0) {
            var imgObj = objTemp.parentNode.getElementsByTagName('IMG')[0];

            if (imgObj) {
                imgObj.style.visibility = 'hidden'; // Ocultar el icono "+","-"

                // Cambia el icono al quedarse sin hijos
                var imgObj2 = objTemp.parentNode.getElementsByTagName('IMG')[1];
                imgObj2.src = imgObj2.src.replace(arbol.imgFolder, arbol.imgClosedFolder);

                imgObj.parentNode.removeChild(objTemp);
            }
        }

        if (arbol.isSubNode) arbol.ddContainer.style.display = 'none';
    }
	,
    ChangeImageFolder: function(folderId) {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        var objFolder = document.getElementById(folderId);

        // Todas las carpetas cerradas
        var rootFolder = document.getElementById(arbol.ROOT_FOLDER);

        if (rootFolder) {
            var arrFolders = rootFolder.getElementsByTagName("LI");
            for (var idx = 0; idx < arrFolders.length; idx++) {
                var img = arrFolders[idx].getElementsByTagName('IMG')[1];
                if (img.src.indexOf(arbol.imgFolder) >= 0) {
                    img.src = img.src.replace(arbol.imgFolder, arbol.imgClosedFolder);
                    arrFolders[idx].getElementsByTagName('SPAN')[0].className = 'wkTreeNode';
                }
            }
        }

        // Desde la seleccionada, hasta root, abrirlas.
        var imgFolder = objFolder.getElementsByTagName('IMG')[1];
        imgFolder.src = imgFolder.src.replace(arbol.imgClosedFolder, arbol.imgFolder);
        objFolder.getElementsByTagName('SPAN')[0].className = 'wkTreeSelectedNode';

        arbol.HighlightFolder(objFolder.getElementsByTagName('SPAN')[0]);

        var obj = objFolder.parentNode;
        //while ( (obj.id != "") && (obj.id != objTree[activeTree].ROOT_FOLDER) ) {
        while ((obj.id != arbol.ROOT_FOLDER)) {
            if (obj.tagName == "LI") {
                var img = obj.getElementsByTagName('IMG')[1];
                img.src = img.src.replace(arbol.imgClosedFolder, arbol.imgFolder);
            }
            obj = obj.parentNode;
        }
    }
	,
    /// <summary>
    ///		Desplega todos las carpetas del árbol
    /// </summary>
    Expand: function(service) {
        var folders = document.getElementById(objTree[service].id).getElementsByTagName('LI');

        for (var idx = 0; idx < folders.length; idx++) {
            var subFolders = folders[idx].getElementsByTagName('UL');
            if (subFolders.length > 0 && subFolders[0].style.display != 'block') {
                objTree[service].folders.View(false, folders[idx].id);
            }
        }
    }
	,
    /// <summary>
    ///		Oculta todos las carpetas del árbol
    /// </summary>
    Collapse: function(service) {
        var folders = document.getElementById(objTree[service].id).getElementsByTagName('LI');

        for (var idx = 0; idx < folders.length; idx++) {
            var subFolders = folders[idx].getElementsByTagName('UL');
            if (subFolders.length > 0 && subFolders[0].style.display == 'block') {
                objTree[service].folders.View(false, folders[idx].id);
            }
        }
    }
	,
    /// <summary>
    ///		Temporizador para el drag and drop
    /// </summary>
    /// <param name="e">Evento</param>
    TimerDragAndDrop: function() {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;


        if (arbol) {
            if (arbol.ddTimer >= 0 && arbol.ddTimer < 10) {
                arbol.ddTimer = arbol.ddTimer + 1;
                setTimeout('arbol.folders.TimerDragAndDrop()', 20);
                return;
            }
            if (arbol.ddTimer == 10) {
                arbol.ddContainer.style.display = 'block';
                arbol.ddContainer.appendChild(arbol.ddSourceNode);
            }
        }
    }
	,
    /** POSICION DEL ARBOL **/
    TopPosition: function(obj) {
        var top = obj.offsetTop / 1;

        while ((obj = obj.offsetParent) != null) {
            if (obj.tagName != 'HTML') top += obj.offsetTop;
        }

        if (document.all) top = top / 1 + 13;
        else top = top / 1 + 4;

        return top;
    }
	,
    LeftPosition: function(obj) {
        var left = obj.offsetLeft / 1 + 1;

        while ((obj = obj.offsetParent) != null) {
            if (obj.tagName != 'HTML') left += obj.offsetLeft;
        }

        if (document.all) left = left / 1 - 2;

        return left;
    }
	,
    CountUpLevels: function(objNode, stopObj) {
        var numLevels = 0;

        while (objNode.parentNode && objNode.parentNode != stopObj) {
            objNode = objNode.parentNode;
            if (objNode.tagName == 'UL') numLevels = numLevels / 1 + 1;
        }

        return numLevels;
    }
	,
    CountDownLevels: function(objNode, stopObj) {
        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        var numLevels = 0;

        var subElems = objNode.getElementsByTagName('LI');
        for (var idx = 0; idx < subElems.length; idx++) {
            numLevels = Math.max(numLevels, arbol.folders.CountUpLevels(subElems[idx], objNode));
        }

        return numLevels;
    }
	,
    CountLevelsDragAndDrop: function(objNode, direction, stopObj) {
        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        var numLevels = 0;
        if (direction == 'up') {
            while (objNode.parentNode && objNode.parentNode != stopObj) {
                objNode = objNode.parentNode;
                if (objNode.tagName == 'UL') numLevels = numLevels / 1 + 1;
            }
            return numLevels;
        }

        if (direction == 'down') {
            var subElems = objNode.getElementsByTagName('LI');
            for (var idx = 0; idx < subElems.length; idx++) {
                numLevels = Math.max(numLevels, arbol.folders.CountLevelsDragAndDrop(subElems[idx], "up", objNode));
            }
            return numLevels;
        }
    }
}

//fin
// Constructor
wkContextMenuModel = function() {
	var mnuActions;
	this.mnuActions = new Array();
}

// Clase wkContextMenuModel
wkContextMenuModel.prototype = {
	// {{{ CreateAction()
    /**
     *	Add separator (special type of menu item)
     *
     *  @param int id of menu item
     *  @param string literal = text of menu item
     *  @param string icon = file name of menu icon(in front of menu text. Path will be imagePath for the DHTMLSuite + file name)
     *  @param string url = Url of menu item
     *  @param int parent id of menu item     
     *  @param String scriptJS Name of javascript function to execute. It will replace the url param. The function with this name will be called and the element triggering the action will be 
     *					sent as argument. Name of the element which triggered the menu action may also be sent as a second argument. That depends on the widget. The context menu is an example where
     *					the element triggering the context menu is sent as second argument to this function.    
     *
     * @public	
     */			
	CreateAction : function(literal, icon, url, ancestor, scriptJS) {
		var idx = this.mnuActions.length;
		this.mnuActions[idx] = new Array();
		this.mnuActions[idx]['id'] = idx;
		this.mnuActions[idx]['literal'] = literal;
		this.mnuActions[idx]['icon'] = icon;
		this.mnuActions[idx]['url'] = url;
		this.mnuActions[idx]['ancestor'] = ancestor;
		this.mnuActions[idx]['separator'] = false;
		this.mnuActions[idx]['scriptJS'] = scriptJS;		
	}	
	,
	// {{{ addSeparator()
    /**
     *	Add separator (special type of menu item)
     *
     *  @param int id of menu item
     *  @param int parent id of menu item
     * @public	
     */		
	CreateSeparator : function(idx, ancestor) {
		this.mnuActions[idx] = new Array();
		this.mnuActions[idx]['ancestor'] = ancestor;		
		this.mnuActions[idx]['separator'] = true;
	}	
	, 
	InitMenuModel : function() {
		this._GetDepths();	
	}
	,
	_GetDepths : function() {    	
		for (var idx=0; idx<this.mnuActions.length; idx++) {
  		this.mnuActions[idx]['depth'] = 1;
  		if (this.mnuActions[idx]['ancestor']) {
  			this.mnuActions[idx]['depth'] = this.mnuActions[this.mnuActions[idx]['ancestor']]['depth'] + 1;
  		}    		
		}
	}
	,
	_GetItems : function() {
		return this.mnuActions;
	}	
}


// Constructor
wkContextMenu = function(initialWidth) {
	var mnuModels;
	var mnuLists; 	// Array de elementos <UL>
	var idxDisplayedMenuModel;
	var objMenu;
	
	var imagesFolder;
	
	this.width = initialWidth;
	this.imagesFolder = "../img/tree/";
	
	this.mnuModels = new Array();
	this.mnuLists = new Array();
	
	// Referencia al DIV del menú actual	
	this.objMenu = false;
}

// Clase wkContextMenu
wkContextMenu.prototype = {
    /// <summary>
    ///		Añade elementos al menú
    /// </summary>
    /// <param name="elem">Objeto</param>	
    /// <param name="idElem">Texto identificativo del objeto</param>	
    /// <param name="mnuModel"></param>	
    AttachMenuAction: function(elem, idElem, mnuModel) {
        if (!elem && idElem) elem = document.getElementById(idElem);
        if (!elem.id) {
            elem.id = 'context_menu' + Math.random();
            elem.id = elem.id.replace('.', '');
        }
        this.mnuModels[elem.id] = mnuModel;
        elem.oncontextmenu = this._DisplayContextMenu;
        document.documentElement.onclick = this.HideContextMenu;
    }
	,
    /// <summary>
    ///		Devuelve una referencia al elemento que lanzó el evento
    /// </summary>
    /// <param name="e"></param>	
    GetSrcElement: function(e) {
        var el;
        if (e.target) el = e.target;
        else if (e.srcElement) el = e.srcElement;

        // Elimina un bug en Safari
        if (el.nodeType == 3) el = el.parentNode;

        return el;
    }
	,
    HideContextMenu: function() {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        if (arbol) {
            var ref = arbol.contextMenu;
            if (ref.objMenu) ref.objMenu.style.display = 'none';
        }
    }
	,
    _DisplayContextMenu: function(e) {
        if (document.all) e = event;
        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;

        var ref = arbol.contextMenu;
        ref.srcElement = ref.GetSrcElement(e);
        if (!ref.idxDisplayedMenuModel || ref.idxDisplayedMenuModel != this.id) {

            if (ref.idxDisplayedMenuModel) {
                ref.objMenu.innerHTML = '';
            }
            else {
                ref._CreateDivs();
            }
            ref.mnuActions = ref.mnuModels[this.id]._GetItems();
            ref._CreateMenuItems();
        }
        ref.idxDisplayedMenuModel = this.id;

        ref.objMenu.style.left = (e.clientX + Math.max(document.body.scrollLeft, document.documentElement.scrollLeft)) + 'px';
        ref.objMenu.style.top = (e.clientY + Math.max(document.body.scrollTop, document.documentElement.scrollTop)) + 'px';
        ref.objMenu.style.display = 'block';
        return false;
    }
	,
    _CreateDivs: function() {
        this.objMenu = document.createElement('DIV');
        this.objMenu.className = 'wkCtxMenu';
        this.objMenu.style.backgroundImage = 'url(\'' + this.imagesFolder + 'ctxMenu.gif' + '\')';
        this.objMenu.style.backgroundRepeat = 'repeat-y';
        if (this.width) this.objMenu.style.width = this.width + 'px';
        document.body.appendChild(this.objMenu);
    }
	,
    _CreateMenuItems: function() {
        this.mnuLists = new Array();
 
        for (var idx = 0; idx < this.mnuActions.length; idx++) {
            // Crear el inicial
            if (!this.mnuLists[0]) {
                this.mnuLists[0] = document.createElement('UL');
                this.objMenu.appendChild(this.mnuLists[0]);
            }

            if (this.mnuActions[idx]['depth'] == 1) {

                if (this.mnuActions[idx]['separator']) {
                    var listItem = document.createElement('DIV');
                    listItem.className = 'wkCtxMenu_separator';
                }
                else {
                    var listItem = document.createElement('LI');
                    if (this.mnuActions[idx]['scriptJS']) {
                        if (objSimpleTree == null)
                            this.mnuActions[idx]['url'] = this.mnuActions[idx]['scriptJS'] + '(this, objTree[activeTree].contextMenu.srcElement)';
                        else
                            this.mnuActions[idx]['url'] = this.mnuActions[idx]['scriptJS'] + '(this, objSimpleTree.contextMenu.srcElement)';
                    }
                    if (this.mnuActions[idx]['icon']) {
                        listItem.style.backgroundImage = 'url(\'' + this.mnuActions[idx]['icon'] + '\')';
                        if (!document.all) listItem.style.backgroundPosition = '1px center';
                    }
                    if (this.mnuActions[idx]['url']) {
                        var url = this.mnuActions[idx]['url'] + '';
                        var tmpUrl = url + '';
                        listItem.setAttribute('scriptJS', url);
                        listItem.scriptJS = url;
                        listItem.onclick = this._EvalUrl;
                    }

                    listItem.innerHTML = '<a href="#" onclick="return false">' + this.mnuActions[idx]['literal'] + '</a>';
                    listItem.onmouseover = this._MouseOver;
                    listItem.onmouseout = this._MouseOut;
                }

                this.mnuLists[0].appendChild(listItem);
            }
        }
    }
	,
    _MouseOver: function() {
        this.className = 'wkCtxMenu_ItemOver';
        if (!document.all) this.style.backgroundPosition = 'left center';
    }
	,
    _MouseOut: function() {
        this.className = '';
        if (!document.all) this.style.backgroundPosition = '1px center';
    }
	,
    _EvalUrl: function() {
        var scriptjs = this.getAttribute('scriptJS');
        if (!scriptjs) scriptjs = this.scriptJS;
        if (scriptjs) eval(scriptjs);
    }
}

//fin

///
/// GetSubFolders
///
function GetSubFolders(idFolder) {
  var obj = new Object();

  var arbol = null;
  if (objSimpleTree == null)
      arbol = objTree[activeTree];
  else
      arbol = objSimpleTree;
	    
  
  obj.Service = arbol.service;
  obj.IdFolder = idFolder;  

  AjaxControl_Default(targetTree, methodGetSubFolders, obj, GetSubFolders_Callback);
}


///
/// GetFolderItems
///
function GetFolderItems(idFolder) {
    var obj = new Object();

    var arbol = null;
    if (objSimpleTree == null)
        arbol = objTree[activeTree];
    else
        arbol = objSimpleTree;
	    
  
  //if (objTree[activeTree].currentFolderId != idFolder) {
  
		arbol.currentFolderId = idFolder;
		
		obj.Service = arbol.service;
		obj.IdFolder = idFolder;  
		
		obj.enablerole=document.getElementById('TreeRoles').value;
		obj.visiblerole=document.getElementById('TreeRolesv').value;
	    try
	    {
		arbol.folders.ChangeImageFolder(idFolder);
		}
		catch (error){}
	  
		AjaxControl_Default(targetView, methodGetFolderItems, obj, GetFolderItems_Callback);
  //}
}

///
/// CreateFolderNode
///
function CreateFolderNode(folderName, idNodeSelected, idParent) {
    var obj = new Object();

    var arbol = null;
    if (objSimpleTree == null)
        arbol = objTree[activeTree];
    else
        arbol = objSimpleTree;
	    
	
  obj.Service = arbol.service;
	obj.Title = folderName;
	obj.IdCurrentNode = idNodeSelected;
	obj.IdParent = idParent;
	
	AjaxControl_Default(targetTree, methodNewFolderTree, obj, CreateFolderNode_Callback);
}

///
/// DeleteFolderNode
///
function DeleteFolderNode(idFolder) {
    var obj = new Object();

    var arbol = null;
    if (objSimpleTree == null)
        arbol = objTree[activeTree];
    else
        arbol = objSimpleTree;


		
  obj.Service = arbol.service;
	obj.IdFolder = idFolder;
	
	AjaxControl_Default(targetTree, methodDeleteFolderTree, obj, DeleteFolderNode_Callback);
}

///
/// RenameFolderNode
///
function RenameFolderNode(idFolder, nameFolder) {
    var obj = new Object();

    var arbol = null;
    if (objSimpleTree == null)
        arbol = objTree[activeTree];
    else
        arbol = objSimpleTree;
	    
		
  obj.Service = arbol.service;
	obj.IdFolder = idFolder;
	obj.Title = nameFolder;
	
	AjaxControl_Default(targetTree, methodRenameFolderTree, obj, RenameFolderNode_Callback);
}

///
/// MoveDroppedFolderNode
///
function MoveDroppedFolderNode(idSourceFolder, idTargetFolder, targetText) {
    var obj = new Object();

    var arbol = null;
    if (objSimpleTree == null)
        arbol = objTree[activeTree];
    else
        arbol = objSimpleTree;
	    
		
  obj.Service = arbol.service;
	obj.IdTargetFolder = idTargetFolder;
	obj.TargetText = targetText;
	obj.IdSourceFolder = idSourceFolder;
	
	AjaxControl_Default(targetTree, methodMoveFolderTree, obj, MoveDroppedFolderNode_Callback);
}

///
/// GetFolderItems_Callback
///
function GetFolderItems_Callback(response) {
	try {
		if (response.value) {
			var currService = response.value.Service;
			var codeXHTML = response.value.xhtmlCode;
			
			document.getElementById("content" + currService).innerHTML = codeXHTML;
		}
	}
	catch(err) {
		ShowError('GetFolderItems_Callback', err);
  }	
}

///
/// GetSubFolders_Callback
///
function GetSubFolders_Callback(response) {
    try {
        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;
	    
	
		arbol.menuActions.ViewDOMElement_Folders(response.value.IdFolder, response.value.arrSubFolders);
	}
	catch(err) {
		ShowError('GetSubFolders_Callback', err);
  }	
}

///
/// CreateFolderNode_Callback
///
function CreateFolderNode_Callback(response) {
    try {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;
	    
	    
		arbol.menuActions.CreateDOMElement_Folder(response.value.NewItemId, response.value.Title, response.value.IdCurrentNode);
	}
	catch(err) {
		ShowError('CreateFolderNode_Callback', err);
  }	
}

///
/// DeleteFolderNode_Callback
///
function DeleteFolderNode_Callback(response) {
    try {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;
	    
	    
		arbol.menuActions.DeleteDOMElement_Folder(response.value.IdFolder);
		if (document.getElementById('content' + response.value.Service) != null) {
		            document.getElementById('content' + response.value.Service).innerHTML = '';
        }
        
	}
	catch(err) {
		ShowError('DeleteFolderNode_Callback', err);
  }
}
         
///
/// RenameFolderNode_Callback
///
function RenameFolderNode_Callback(response) {
    try {

        var arbol = null;
        if (objSimpleTree == null)
            arbol = objTree[activeTree];
        else
            arbol = objSimpleTree;
	    
	    
		arbol.menuActions.RenameDOMElement_Folder(response.value.IdFolder, response.value.Title);
	}
	catch(err) {
		ShowError('RenameFolderNode_Callback', err);
  }
}

///
/// MoveDroppedFolderNode_Callback
///
function MoveDroppedFolderNode_Callback(response) {
	try {
	    if (response.value) {

	        var arbol = null;
	        if (objSimpleTree == null)
	            arbol = objTree[activeTree];
	        else
	            arbol = objSimpleTree;
	    
	    
			arbol.folders.MovedDOMElement_Folders();
			alert('La carpeta se ha movido a: ' + response.value.TargetText);
		}
	}
	catch(err) {
		ShowError('MoveDroppedFolderNode_Callback', err);
  }
}

function ShowError(nameFunction, objErr) {
	var txt = nameFunction + "\n";
	txt += "Error description: " + objErr.message;
	alert(txt);
}
/* Constructor */
function wkTreeEvents() {
}

/* Clase wkTreeEvents */
wkTreeEvents.prototype = {
	/// <summary>
	///		Añade un evento a un elemento de la página
	/// </summary>
	/// <param name="obj">Objeto al que se le asigna el evento</param>	
	/// <param name="evType">Tipo de evento</param>	
	/// <param name="jsFunc">Función a ejecutar</param>
AddNewEvent: function(obj, evType, jsFunc) { 
	
	  if (obj.attachEvent) { 
	    obj['e' + evType + jsFunc] = jsFunc; 
	    obj[evType + jsFunc] = function(){obj['e' + evType + jsFunc]( window.event );} 
	    obj.attachEvent( 'on'+evType, obj[evType + jsFunc] ); 
	  } else {
	    obj.addEventListener(evType, jsFunc, false); 	    
	  }
	} 
	,
	OnSelectCancel: function() {

	var arbol = null;
	if (objSimpleTree == null)
	    arbol = objTree[activeTree];
	else
	    arbol = objSimpleTree;
	    
	if (arbol)
	{
		if (arbol.ddTimer < 10) return true;
	}
		return false;	
	}
	, 
	OnCancel : function () {
		return false;
	}
	,
	OnHighlightRemove : function() {
	
	var arbol = null;
	if (objSimpleTree == null)
	    arbol = objTree[activeTree];
	else
	    arbol = objSimpleTree;
	    
	    
		if (arbol) {
			if ( arbol.selectedFolder ) {
				arbol.selectedFolder.className = 'wkTreeNode';
				if ( arbol.selectedFolder.id == ('sp_' + arbol.ROOT_FOLDER) ) arbol.selectedFolder.className = 'wkTreeRoot';
			}
			arbol.selectedFolder = null;
		}
	}
}

//fin


var myDocOldContent; 

//Funcion que se ejecuta cuando se recarga la pagina o se da al boton atras o adelante
function InfUserMyDocCacheLoad(target, method, typeInfUser) {    
  myDocOldContent = document.getElementById("DivMainInfUserView").innerHTML;
  document.getElementById("DivMainInfUserView").innerHTML = "";
  
  var obj=new Object(); 
  obj.TypeInfUser = typeInfUser;  

  AjaxCachePageControl_load(target, method, obj, InfUserMyDocCacheLoadCallback);
}

function InfUserMyDocCacheLoadCallback(res) {   
  var newContent;
    
  //Si se ha recuperado correctamente el nuevo contenido a mostrar
  if (res != null) {        
		newContent = res.value.ChildControls;
  }
  else {
		//Si no se ha recuperado, mostramos el que teniamos antiguamente, que era el de cache    
		newContent = myDocOldContent;
  }
  
  document.getElementById("DivMainInfUserView").innerHTML = newContent;
}
         
function MisDocPopupLoad() {
  var infUserText = "";
  var infUserFldEntryLegend = "";

  InfUserMessage("block", "none"); 
    
  if (infUserMyDocumentsFldEntry) infUserFldEntryLegend = infUserMyDocumentsFldEntry;
             
  switch (infUserAction) {
    case ACTION_ENTRY:
      if (titleDocumentInfUser) infUserText = titleDocumentInfUser;
      if (objSimpleTree) ShowValues(objSimpleTree.currentFolderText, objSimpleTree.currentFolderID);
      break;            	
    case ACTION_VIEW:
      infUserText = document.getElementById("_" + infUserHrefTitle).innerHTML;
      if (objTree[activeTree]) ShowValues(objTree[activeTree].currentFolderText, objTree[activeTree].currentFolderID);
      break;
  }   	  
  
  document.getElementById("InfUserTxtEntry").value = infUserText;
  document.getElementById("InfUserMyDocumentsLblEntry").innerHTML = infUserFldEntryLegend;
  document.getElementById(popup.main.id + '_divTitle').innerHTML = infUserMyDocumentsLblTitle;
}

function MisDocPopupSaveText() {		   
  var txtEntry = document.getElementById("InfUserTxtEntry");  
  var targetFolder = document.getElementById("folderSelectedID");
  
	if (txtEntry.value != '') {	
		if (infUserAction == ACTION_ENTRY) {                         
      target = "Wke.Presentation.WebControls.InfUserMisDocPopupControl";
      method = "MisDocPopupSaveText";
      
      var obj = new Object();
      obj.Title = txtEntry.value;      
			obj.Folder = targetFolder.value;
      
      AjaxControl_Default(target, method, obj, InfUserMyDocSaveNewText_Callback);            
    }
    else {
      target = "Wke.Presentation.WebControls.InfUserViewMyDocumentsControl";                   
      method = "InfUserViewEntrySaveText";   

      var obj = new Object();
      obj.Title = txtEntry.value;      
    	obj.service = activeTab;
      obj.Id = infUserId;
      //obj.Source = objSimpleTree.currentFolderID;
      obj.Folder = targetFolder.value;
      obj.folderRoot='MyDocumentsNode0';
      AjaxControl_Default(target, method, obj, InfUserMyDocModifyText_Callback);
    } 	       	  
	}
	else {	 
		alert(infUserMyDocumentsMessageErr);
		txtEntry.focus;
	}
}

function InfUserMyDocSaveNewText_Callback(res) {
  InfUserMyDocUpdateMessage(res);    
}

function InfUserMyDocUpdateMessage(res) {
	document.getElementById("InfUserDivTextMessage").innerHTML = res.value.message;
  InfUserMessage("none", "block");
}

function InfUserMyDocModifyText_Callback(res) {          
  InfUserMyDocUpdateMessage(res);
  
//  var anchorText = infUserHrefTitle + "a";
//  var hiddenText = "_" + infUserHrefTitle;
//  
//  var anchorContent = document.getElementById(anchorText).getElementsByTagName('SPAN')[0];
//  if (anchorContent) {
//		anchorContent.innerHTML = res.value.Title;
//		document.getElementById(hiddenText).innerHTML = res.value.Title;
//  }

GetFolderItems(res.value.FolderShow);

  //ShowEllipsis();
}

function InfUserMyDocViewAjaxImgDelete_OnClick(target, method, id, ulRow) {   
	if (confirm(infUserMyDocumentsMessageConfirm)) {
		var obj = new Object();      
    obj.Id = id;    
    obj.ulRow = ulRow;        
    
    AjaxControl_Default(target, method, obj, InfUserMyDocViewAjaxImgDelete_Callback);
	}
}

function InfUserMyDocViewAjaxImgDelete_Callback(res) {   
  document.getElementById(res.value.ulRow).style.display ='none';    
}

function InfUserChangeFolder_OnClick(target, method, id, ulRow) {   
	var obj = new Object();      
  obj.Id = id;    
  obj.ulRow = ulRow;
  obj.Target = "S0009";
    
  alert('InfUserChangeFolder_OnClick');
    
  //AjaxControl_Default(target, method, obj, InfUserChangeFolder_Callback);
}

function InfUserChangeFolder_Callback(res) {   
  document.getElementById(res.value.ulRow).style.display ='none';    
  alert('Documento movido a la carpeta: ' + res.value.Target);
}
var myBoxOldContent;
var infoFieldForUpdate;
// Variable que, en su momento, se inicializará para contener el editor WYSIWYG
//var IDwebEditor_EditorWeb;

function OpenEditBoxEntryWindow(pag, id) {
	var XCenterScreen = screen.width / 2;
	var YCenterScreen = screen.height / 2;

	var leftVal = XCenterScreen - (550 / 2);
	var topVal = YCenterScreen - (350 / 2);

	window.open(pag + "?id=" + id, "wndEditBoxEntry", "scrollbars=no, resizable=no, toolbar=no, directories=no, location=no, menubar=no, status=no, width=640, height=480, left=" + leftVal + ", top=" + topVal);
}

var editorcargado=false;

function CreateTextEditor_Callback(response) {
//	var saveBtn = false;
//	var saveFun = "";

//	IDwebEditor_EditorWeb = new InnovaEditor('IDwebEditor_EditorWeb');

//  IDwebEditor_EditorWeb.EditorWidth = "50%";
//  IDwebEditor_EditorWeb.EditorHeight = "50%";
//  
//	IDwebEditor_EditorWeb.mode = 'XHTMLBody';	// NO CAMBIAR!!!!! SE NECESITA PARA COMPLETAR LOS TAGS INSERTADOS EN EL EDITOR.
//	IDwebEditor_EditorWeb.btnSave = saveBtn;

//	if (saveBtn) IDwebEditor_EditorWeb.onSave = new Function(saveFun);
//  IDwebEditor_EditorWeb.RENDER(response.value.completeFragment);

if(response.value.erroreval!=null) {

    eval(response.value.erroreval);
}
else
{


//open wysiwig
//WYSIWYG.attach('textEditor'); // default setup
    WYSIWYG.attach('textEditor', wke);
   
//WYSIWYG.attach('textEditor', full); // full featured setup
//WYSIWYG.attach('textEditor', small); // small setup
    document.getElementById("wysiwygtextEditor").contentWindow.document.body.innerHTML = response.value.completeFragment;
   
}
}

// Funcion que se ejecuta cuando se recarga la pagina o se da al boton atras o adelante
function InfUserMyBoxCacheLoad(target, method, typeInfUser) {
  myBoxOldContent = document.getElementById("DivMainInfUserView").innerHTML;
  document.getElementById("DivMainInfUserView").innerHTML = "";

  var obj=new Object();
  obj.TypeInfUser = typeInfUser;

  AjaxCachePageControl_load(target, method, obj, InfUserMyBoxCacheLoadCallback);
}

function InfUserMyBoxCacheLoadCallback(res) {
  var newContent;

  //Si se ha recuperado correctamente el nuevo contenido a mostrar
  if (res != null) {
		newContent = res.value.ChildControls;
  }
  else {
		//Si no se ha recuperado, mostramos el que teniamos antiguamente, que era el de cache
		newContent = myBoxOldContent;
  }

  document.getElementById("DivMainInfUserView").innerHTML = newContent;
}

function MiBuzPopupLoad() {
  var infUserText = "";
  var infUserFldEntryLegend = "";
	var obj = new Object();

  InfUserMessage("block", "none");

  if (infUserMyBoxFldEntry) infUserFldEntryLegend = infUserMyBoxFldEntry;

  switch (infUserAction) {
    case ACTION_ENTRY:
      if (titleDocumentInfUser) infUserText = titleDocumentInfUser;
      obj.selText = selectedTextForMyBox;
      if (objSimpleTree) ShowValues(objSimpleTree.currentFolderText, objSimpleTree.currentFolderID);
      break;
    case ACTION_VIEW:
			infUserText = document.getElementById("_" + infUserHrefTitle).innerHTML;    
			if (objTree[activeTree]) ShowValues(objTree[activeTree].currentFolderText, objTree[activeTree].currentFolderID);  
			obj.itemID = infUserId;
	    break;
  }

  document.getElementById("InfUserTxtEntry").value = infUserText;
  document.getElementById("InfUserMyBoxLblEntry").innerHTML = infUserFldEntryLegend;
  document.getElementById(popup.main.id + '_divTitle').innerHTML = infUserMyBoxLblTitle;

	target = "Wke.Presentation.WebControls.InfUserMiBuzPopupControl";
  method = "InfUserEntryParseStrictXHTML";


 
    if(editorcargado!=true)
    {
        editorcargado=true;
        setTimeout("editorcargado=false;",2000);
	    AjaxControl_Default(target, method, obj, CreateTextEditor_Callback);	
	}

}

function MiBuzPopupSaveText() {
  var txtEntry = document.getElementById("InfUserTxtEntry");
  var targetFolder = document.getElementById("folderSelectedID");

	if (txtEntry.value != '') {
		if (infUserAction == ACTION_ENTRY) {
			target = "Wke.Presentation.WebControls.InfUserMiBuzPopupControl";
      method = "MiBuzPopupSaveText";

      var obj = new Object();
      obj.Title = txtEntry.value;
      //obj.EditorText = document.getElementById("wysiwygtextEditor").contentWindow.document.body.innerHTML;
      obj.EditorText=WYSIWYG.RecoverviewSource("textEditor");
      obj.Folder = targetFolder.value;

      var str = "(onclick=\".*?\"|href=\".*?\"|onclick='.*?'|href='.*?'|onclick = \".*?\"|href = \".*?\"|onclick = '.*?'|href = '.*?')";
      var exp = new RegExp(str, 'gi');
      obj.EditorText = obj.EditorText.replace(exp, '');
      
	    		
      AjaxControl_Default(target, method, obj, InfUserMyBoxSaveNewText_Callback);
    }
    else {
      target = "Wke.Presentation.WebControls.InfUserViewMyBoxControl";
      method = "InfUserViewEntrySaveText";

      var obj = new Object();
      obj.Title = txtEntry.value;
      //obj.EditorText = document.getElementById("wysiwygtextEditor").contentWindow.document.body.innerHTML;
      obj.EditorText=WYSIWYG.RecoverviewSource("textEditor");
			obj.service = activeTab;
      obj.Id = infUserId;
      obj.Folder = targetFolder.value;
      obj.folderRoot = 'MyBoxNode0';

      var str = "(onclick=\".*?\"|href=\".*?\"|onclick='.*?'|href='.*?'|onclick = \".*?\"|href = \".*?\"|onclick = '.*?'|href = '.*?')";
      var exp = new RegExp(str, 'gi');
      obj.EditorText = obj.EditorText.replace(exp, '');
      
        
      AjaxControl_Default(target, method, obj, InfUserMyBoxModifyText_Callback);
    }
	}
	else {
		alert(infUserMyBoxMessageErr);
		txtEntry.focus;
	}
}


function InfUserMyBoxModifyText_Callback(res) {          
  InfUserMyBoxUpdateMessage(res);
  
//  var anchorText = infUserHrefTitle + "a";
//  var hiddenText = "_" + infUserHrefTitle;
//  
//  var anchorContent = document.getElementById(anchorText).getElementsByTagName('SPAN')[0];
//  if (anchorContent) {
//              anchorContent.innerHTML = res.value.Title;
//              document.getElementById(hiddenText).innerHTML = res.value.Title;
//  }

//	document.getElementById(infoFieldForUpdate).innerHTML = res.value.EditorText;

GetFolderItems(res.value.FolderShow);

  //ShowEllipsis();
}

function InfUserMyBoxSaveNewText_Callback(res) {
	if ( res.value.keepEditor != "1" ) {
		InfUserMyBoxUpdateMessage(res);
	}
	else {
		alert(res.value.msgException);
	}
}

function InfUserMyBoxUpdateMessage(res) {
	document.getElementById("InfUserDivTextMessage").innerHTML = res.value.message;
  InfUserMessage("none", "block");
}

function InfUserMyBoxViewAjaxImgDelete_OnClick(target, method, id, ulRow) {
	if (confirm(infUserMyBoxMessageConfirm)) {
		var obj = new Object();
    obj.Id = id;
    obj.ulRow = ulRow;

    AjaxControl_Default(target, method, obj, InfUserMyBoxViewAjaxImgDelete_Callback);
	}
}

function InfUserMyBoxViewAjaxImgDelete_Callback(res) {
	document.getElementById(res.value.ulRow).style.display = 'none';
}

function CaptureSelection() {
	selectedTextForMyBox = fragmentCapture();
    if (selectedTextForMyBox == "") {
		eval(infUserMyBoxMessageSelectText);
		
		return false;
	}	
	
	return true;	
}

function CheckSelection(PopupPage, WidthPopup, HeigthPopup, scriptLoad, scriptUnLoad) {
	if (CaptureSelection()) {
		popup.OpenGenericPopup(PopupPage, 'no', WidthPopup, HeigthPopup, 'px', 'yes', scriptLoad, scriptUnLoad, 'TITULO POPUP', 9);
	}
	return false;
}

function RecoverXHTML(TextElement) {
	selectedTextForMyBox = TextElement;
} 

function RedirectionTDC(node, filename, verifyDocType, redirectPage, repositoryPath, bdeFormat)
{
    if (document.getElementById("ebook_BtnRedirect")!=null)
    {
        RedirectionEBOOK(node, filename, verifyDocType, redirectPage, repositoryPath, bdeFormat);
    }
    else
    {
        if (document.getElementById("htmlViewer_BtnRedirect")!=null)
        {
            RedirectionViewer(node, filename, verifyDocType, redirectPage, repositoryPath, bdeFormat);
        }
        else
        {
            Redirection(filename, repositoryPath, bdeFormat);
        }
    }
}
function RedirectionEBOOK(node, filename, verifyDocType, redirectPage, repositoryPath, bdeFormat)
{
    document.getElementById("ebook_Node").value = node != null ? node : "";
    document.getElementById("ebook_Filename").value = filename != null ? filename : "";
    document.getElementById("ebook_VerifyDocType").value = verifyDocType != null ? verifyDocType : "";
    document.getElementById("ebook_RedirectPage").value = redirectPage != null ? redirectPage : "";
    document.getElementById("ebook_RepositoryPath").value = repositoryPath != null ? repositoryPath : "";
    document.getElementById("ebook_bdeformat").value = bdeFormat != null ? bdeFormat : "";
   
    document.getElementById("ebook_BtnRedirect").click();
}
function RedirectionViewer(node, filename, verifyDocType, redirectPage, repositoryPath, bdeFormat)
{
    if (filename!= null){
        var pos=filename.indexOf('.');
        if (pos==-1)
        {
            document.getElementById("htmlViewer_Filename").value = filename;
            document.getElementById("htmlViewer_Ebook").value = filename;
        }
        else
        {
            document.getElementById("htmlViewer_Filename").value = filename.substring(0,pos);
            document.getElementById("htmlViewer_Ebook").value = filename.substring(0,pos);
        }
    }
    else{
        document.getElementById("htmlViewer_Filename").value = "";
    }
    
    document.getElementById("htmlViewer_Node").value = node != null ? node : "";
    document.getElementById("htmlViewer_VerifyDocType").value = verifyDocType != null ? verifyDocType : "";
    document.getElementById("htmlViewer_RedirectPage").value = redirectPage != null ? redirectPage : "";
    document.getElementById("htmlViewer_RepositoryPath").value = repositoryPath != null ? repositoryPath : "";
    document.getElementById("htmlViewer_bdeformat").value = bdeFormat != null ? bdeFormat : "";
   
    document.getElementById("htmlViewer_BtnRedirect").click();
}
function OpenFolders(nodeId) {
    var selected;
    if (nodeId != "")
    {
        var principalDiv = document.getElementById(nodeId);
        if (principalDiv != null)
        {
            if (principalDiv.hasChildNodes())
            // So, first we check if the object is not empty, if the object has child nodes
            {
                var children = principalDiv.childNodes;
                var i = 0;
                var stop = false;
                while ((i < children.length) && (!stop))
                {
                    if (children[i].nodeName == "A")
                    {
                        stop = true;
                        children[i].className = "selected-index";
                        selected = children[i];
                    };
                    i++;
                };
            };
            
            while (principalDiv.parentNode != null)
            {
                principalDiv = principalDiv.parentNode;
                //principalDiv.textContent=principalDiv.innerHTML;
                //imageFolder = principalDiv.firstChild;
                //
                if ((principalDiv.nodeName == "DT"))
                {
                    //Toggle(imageFolder);
                    principalDiv.className='dop';
                };     
                if ((principalDiv.nodeName == "DD"))
                {
                    //Toggle(imageFolder);
                    principalDiv.className='op';
                };    
                if ((principalDiv.nodeName == "DL"))
                {
                    //Toggle(imageFolder);
                    principalDiv.className='op';
                };    
                
                if (principalDiv.hasChildNodes())
            // So, first we check if the object is not empty, if the object has child nodes
            {
                var children = principalDiv.childNodes;
                
                var i = 0;
               
                while ((i < children.length) )
                {
                    if (children[i].nodeName == "DD")
                    {
                       
                        children[i].className = "op";
                        //principalDiv.style.display = 'block';
                    };
                    i++;
                };
            };
            for (i = 0; i < principalDiv.childNodes.length; i++) {
                if (principalDiv.childNodes[i].nodeName == "DT") {
                    principalDiv.childNodes[i].className = "dop";
                    //                            principalDiv.childNodes[i].click();
                    break;
                }
            }  
            };
        }
    }
    if (selected != null) 
    {
        setTimeout("positioningScroll('" + selected.parentNode.id + "')", 300);
    }
    
}
function positioningScroll(id) {
    var node = document.getElementById(id);
    var nodeParent = node.parentNode;
    nodeParent.scrollIntoView();
}
//Funcion que se ejecuta nada mas terminar de cargar el documento
function FinishLoading()
{
    document.getElementById("loadDiv").style.display = "none";
}
function AjaxCachePageControl_load(target,method,obj,callback)
{
    Wke.Presentation.WebControls.AjaxCachePageControl.AjaxCahePageControl_OnLoad(target,method,obj,callback);
}

function AjaxCachePageControl_Callback(res)
{
//    if(res.value==null)
//        //alert('Error in AjaxCachePageControl_Callback, see the log file.');
//    else
//    {
        //alert('AjaxCachePageControl_Callback por defecto,implementar por cada control si propio callback si fuera necesario, aunque sea uno vacio');
        //ejemplo de recoger los valores
        //alert(response.value.name+'--'+response.value.number);
//    }
}

if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.AuthenticationControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.AuthenticationControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	ForzeSession: function(authusername, authpassword, arguments) {
		return this.invoke("ForzeSession", {"authusername":authusername, "authpassword":authpassword, "arguments":arguments}, this.ForzeSession.getArguments().slice(3));
	},
	ValidateSessionLogout: function() {
		return this.invoke("ValidateSessionLogout", {}, this.ValidateSessionLogout.getArguments().slice(0));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.AuthenticationControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.AuthenticationControl = new Wke.Presentation.WebControls.AuthenticationControl_class();


//window.onclick = function(){
//    var idSession = window.idSessionUser != null ? window.idSessionUser : window.opener.idSessionUser;
//    Wke.Presentation.WebControls.AuthenticationControl.VerifyIdSession(idSession, WhatToDoCallback);
//}

//function WhatToDoCallback(result)
//{
//    if (result.value != null)
//    {
//        if (result.value.urlError != null)
//        {
//            //Hay un popup abierto
//            if (window.opener != null)
//            {
//                window.opener.ExecuteClosePopup();
//                window.opener.location.href = result.value.urlError;
//            }
//            //Estamos en la pagina principal
//            else
//            {
//                window.location.href = result.value.urlError;
//            }            
//        }
//    }
//}


var swlogin=false;




function validate_swlogin()
{
   if(swlogin)
    {
        swlogin=false;
        return true;
    }
    else
    {
        return false;
    }
}

function ChangePermissions(div,divlogin)
{
    if (defaultUser)
    {
        //document.getElementById(div).innerHTML = document.getElementById(divlogin).innerHTML;
         //document.getElementById(divlogin).className='kaka';
        document.getElementById(div).appendChild(document.getElementById(divlogin));
    }
}


function ValidateuserBack(target,method)
{
    var obj=new Object();  
    obj.Target = target;
    obj.Method = method;
    AjaxCachePageControl_load(target, method,obj,ValidateuserBackCallback); 
}

function ValidateuserBackCallback(res)
{

    if(res.value.logado=='false' && document.getElementById('username')==null)
        document.location.href=res.value.page;
}


function logout()
{
    var resuse=Wke.Presentation.WebControls.AuthenticationControl.ValidateSessionLogout();
    if(resuse.value!=''){
        var aux='document.location.href=';
        aux=aux+'\"'+resuse.value+'\"';
         var form  = document.forms[0];
        form.onsubmit = function(){return false;};
        setTimeout(aux,500);
        return false;}
    else{  swlogin=true;return true;}
}


function enable_logout()
{
    var arr=document.getElementById('logindiv').getElementsByTagName('input');
            if(arr.length>0)
                arr[0].disabled=false;
    var form  = document.forms[0];
	    form.onsubmit = function(){return true;};
}

function disable_logout()
{
    var arr=document.getElementById('logindiv').getElementsByTagName('input');
            if(arr.length>0)
                arr[0].disabled=true;
}
function aniadirEventos(nodeArg) // tienen que llegar nodos ul
{
    try{
    var nodes=nodeArg.getElementsByTagName("li"); 
     
    for (var i=0;i<nodes.length; i++) // Me recorro todos los hijos del nodo
    {
        var node=nodes[i];
        if (node.nodeName=="LI")  // si son li le añadimos los eventos
	    {
	        node.onmouseover=function() 
	        {
		        this.className+=" over";
	        }
	        node.onmouseout=function() 
	        {
		        this.className=this.className.replace(" over", "");
	        }
	        
	        var nodes2=node.getElementsByTagName("ul"); 
	        for (var j=0;j<nodes2.length;j++) // nos recorremos todos los hijos del li
		    {
				var node2 = nodes[j];
				if (node2.nodeName=="UL") // Si encuentra un submenu a sus hijos li habra que ponerle las funciones
				{
				    aniadirEventos(node2);
				}
	        }
        }       
    }  
    }
    catch(e){ 
 		//alert('error in menu'); 
 	} 
}

function InitializeMenu(id) 
{
    if (document.all&&document.getElementById) 
    {
		navRoot = document.getElementById(id);
		aniadirEventos(navRoot)
    }
}

function expandSubmenu(idUl)
{
    var ul = document.getElementById("ul" + idUl);
    var brother = ul.previousSibling;
  if (ul.style.display == 'block' || ul.style.display == '')
  {
      ul.style.display = 'none';
      while (brother.previousSibling != null) {
          brother = brother.previousSibling;
          if (brother.className != '')
              brother.className = 'SubmenuCollapsed';
      }      
  }
  else
  {
      ul.style.display = 'block';
      while (brother.previousSibling != null) {
          brother = brother.previousSibling;
          if (brother.className != '')
              brother.className = 'SubmenuExpanded';
      }
  }
}

if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.DocumentaryTypeControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.DocumentaryTypeControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	url: '/ajaxpro/Wke.Presentation.WebControls.DocumentaryTypeControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.DocumentaryTypeControl = new Wke.Presentation.WebControls.DocumentaryTypeControl_class();


function DocumentaryTypeLoad(target, method, idFile)
{    
    var obj=new Object();
    obj.FileId = idFile;
    AjaxCachePageControl_load(target, method,obj,DocumentaryTypeLoadCallback);      
}

function DocumentaryTypeLoadCallback(res)
{
}

if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.AjaxControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.AjaxControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	AjaxControl_Click: function(target, method, jobject) {
		return this.invoke("AjaxControl_Click", {"target":target, "method":method, "jobject":jobject}, this.AjaxControl_Click.getArguments().slice(3));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.AjaxControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.AjaxControl = new Wke.Presentation.WebControls.AjaxControl_class();


if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.SearchControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.SearchControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	AjaxChkSearch_OnClickDirecto: function(hash) {
		return this.invoke("AjaxChkSearch_OnClickDirecto", {"hash":hash}, this.AjaxChkSearch_OnClickDirecto.getArguments().slice(1));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.SearchControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.SearchControl = new Wke.Presentation.WebControls.SearchControl_class();


function SearchLoad(target, method,id,tipo,visible,chekado, methodCallback)
{   
    var obj=new Object();  
    obj.TargetCallback = target;
    obj.MethodCallback = methodCallback;
    obj.id=id;
    obj.tipo = tipo;
    obj.visible = visible;
    obj.chekado = chekado;
    AjaxCachePageControl_load(target, method,obj,SearchLoadCallback);                                                                  
}    


function initSearchControl(idcontrol,path,assistant,activetab)
{
    if(document.getElementById('SearchControlBox')==null)
	{

		var h=document.createElement('input');
		h.type='hidden';
		h.id='SearchControlBox';
		document.getElementById(idcontrol+'DivTxtSearch').appendChild(h);
		document.getElementById('SearchControlBox').value=idcontrol;
		
		var hh=document.createElement('input');
		hh.type='hidden';
		hh.id='searchPageResultList';
		document.getElementById(idcontrol+'DivTxtSearch').appendChild(hh);
		document.getElementById('searchPageResultList').value=path;
		
		var hhh=document.createElement('input');
		hhh.type='hidden';
		hhh.id='WithAssistants';
		document.getElementById(idcontrol+'DivTxtSearch').appendChild(hhh);
		document.getElementById('WithAssistants').value=assistant;

		var InputActiveTab=document.createElement('input');
		InputActiveTab.type='hidden';
		InputActiveTab.id='ActiveTab';
		document.getElementById(idcontrol+'DivTxtSearch').appendChild(InputActiveTab);
		document.getElementById('ActiveTab').value=activetab;
		//aunque haya varios en asistentes solo habra uno, por lo que el primero definira los asistentes

	}
	else
	{
		document.getElementById('SearchControlBox').value=document.getElementById('SearchControlBox').value + '|' + idcontrol;
	}
}   

function SearchLoadCallback(res)
{
    if(res != null)  
    {       
        document.getElementById(res.value.id+'TxtSearch').value = res.value.LastTextSearch;
        if (document.getElementById(res.value.id + 'ChkSynonym') != null) {
            document.getElementById(res.value.id + 'ChkSynonym').checked = res.value.LastSynonymSearch;
        }
        if (res.value.LastTextSearch + '' != '') {
            SearchAjaxChkSearch_OnClick(res.value.TargetCallback, res.value.MethodCallback, res.value.id);
        } 
    }        
} 

// idControl-> identificador del SearhButtonControl. Esto solo viajará en el caso de que en el SearchButtonControl se haya puesto el parametro
// pathResultList.
function SearchAjaxBtnSearch_OnClick(target, method, idControl, pageNoData, idControlStatistic)
{       
    //abujalance, comprobamos si existen asistentes genericos
    if(typeof load_generic_values == 'function') 
    {
        // Mandamos a servidor el valor de los asistentes genericos.
        if(!load_generic_values(idControl))
            return ""; //quito la ejecucion
    }

    //abujalance, comprobamos los asistentes de seleccion
    if(typeof loadSelectionAssistantValues=='function')
    {
        loadSelectionAssistantValues();       
    }
    
     var obj = new Object();
    
     //abujalance
    //obj.QueryText = document.getElementById(searchIdTxtSearch).value;
    var arr=document.getElementById('SearchControlBox').value.split('|');
    obj.QueryText='';
    var sinonym=false;
    
    for(i=0;i<arr.length;i++)
    {
        //el tipohiddenpasara a ser el tipo de cada caja, que pondremos por configuracion
        if(document.getElementById(arr[i]+'TxtSearch').value!='')
        {
            if(obj.QueryText!='')
                obj.QueryText = obj.QueryText + '~' + document.getElementById(arr[i]+'TxtSearch').value + '@' +  document.getElementById(arr[i]+'hidtype').value + '@' + arr[i];
            else
            {
                obj.QueryText = document.getElementById(arr[i]+'TxtSearch').value + '@' + document.getElementById(arr[i]+'hidtype').value + '@' + arr[i];
            }
        }
        if(document.getElementById(arr[i]+'ChkSynonym')!=null)
        {
            if (document.getElementById(arr[i] + 'ChkSynonym').checked) {
                sinonym = true;
            }
        }
    }
    obj.Synonym=sinonym;
    obj.WithAssistants = document.getElementById('WithAssistants').value; 
    obj.ResultListPage = document.getElementById('searchPageResultList').value;
    //fin abujalance

    // sebas: Necesitamos para estdisticas que siempre se envia el idcontrol, para no rehacer el resto del
    // codigo pasamos otro parametro con dicho identificador a la espera de poder rehacer el control una vez
    // tengamos tiempo de desarrollo disponible.
    if (idControlStatistic != null)
    {
        // Si estamos en un SearchControl pueden venir mas de un identificador de control
        // que será la lista de SearchButtonControl a los que se puede redirigir
        // Buscamos el primero que exista, asignamos valores y salimos.
        var arrSCB = idControlStatistic.split('|');
        for (i = 0; i < arrSCB.length; i++) 
        {
            try {
                var cpi = "cpi_" + arrSCB[i];
                var cpd = "cpd_" + arrSCB[i];
                var cmi = "cmi_" + arrSCB[i];
                var ubs = "ubs_" + arrSCB[i];
                obj.idControlStatistic = arrSCB[i];
                obj.cpi = eval(cpi);
                obj.cpd = eval(cpd);
                obj.cmi = eval(cmi);
                obj.ubs = eval(ubs);
                break;
            }
            catch (err)
            { }
        }
    }// sebas
   
    // jc: Si el SearchButtonControl pasa idControl, la pagina  a la que redirecciona el control debe ser la que
    // establece el SearchButtonControl y no la de SearchControl.
    if (idControl != undefined) 
    {
        var paginaSaltoSearchButton = "searchbtnPageResultList_" + idControl;
        obj.ResultListPage = eval(paginaSaltoSearchButton);
        obj.idControl = idControl;
        obj.idSearchButtonControl = idControl;
        obj.ActiveTab = eval("activeTab_" + idControl); // Marcamos como active tab el del searchButtonControl no el del SearchControl
        obj.IdDocumentaryType = eval("idDocumentaryType_" + idControl); // Marcamos como documentayType el del searchButtonControl no el del control web documentaryTypeControl
    }
    else
    {
       obj.idSearchButtonControl =""
       obj.ActiveTab = document.getElementById("ActiveTab").value; // Marcamos como active tab el del SearchControl no el de SearchButtonControl
    }
    obj.pageNoData=pageNoData;
    
    
    //fin abujalance
    var res=Wke.Presentation.WebControls.AjaxControl.AjaxControl_Click(target, method, obj);
    SearchAjaxBtnSearch_Callback(res,pageNoData);       
}

function SearchAjaxBtnSearch_Callback(res,pageNoData)
{   
    if(res != null)  
    {           
        if(res.value.ResultListFullPath=='')
        {
            
            //en caso de que no tenga valores, pondremos el foco en la primera caja
            var idtxt=document.getElementById('SearchControlBox').value.split('|')[0]+'TxtSearch';
            //alert(searchMessageEmpty);
            eval(searchMessageEmpty);
            document.getElementById(idtxt).select();
            document.getElementById(idtxt).focus();
        }
        else
        {       
            window.location.href = res.value.ResultListFullPath;              
        }
    }        
}


function ClearAllSearch()
{
     var arr=document.getElementById('SearchControlBox').value.split('|');
    for(i=0;i<arr.length;i++)
    {
    document.getElementById(arr[i]+'TxtSearch').value = '';   
    document.getElementById(arr[i]+'DivSynonymTitle').innerHTML = '';
    document.getElementById(arr[i]+'DivSynonymText').innerHTML = '';
    document.getElementById(arr[i]+'DivSynonym').style.display ='none';
    }
}

//function SearchAjaxTxtSearch_OnClick(target,method,id)
//{      
//        //sin intervalo
//       //SearchAjaxChkSearch_OnClick(target,method,id);
//      
//        if(eval('intervaltime'+id+'>0'))
//        {
//        //formula vieja
////            //con intervalo
////            if(eval('interval'+id+'!=null'))
////            {
////                clearTimeout(eval('interval'+id));
////                eval('interval'+id+'=null;');
////            }
////            eval('interval'+id+'=setTimeout("SearchAjaxChkSearch_OnClick(\''+target+'\',\''+method+'\',\''+id+'\')",intervaltime'+id+')');

//        //formula nueva
//        if(eval('interval'+id+'==null'))
//        {
//            eval('interval'+id+'=setTimeout("SearchAjaxChkSearch_OnClick(\''+target+'\',\''+method+'\',\''+id+'\')",intervaltime'+id+')');
//         }
//      }
//      else
//      {
//        SearchAjaxChkSearch_OnClick(target,method,id);
//      }
//      
//}


function LaunchSinonimTime(target,method,id,time)
{
    eval('interval'+id+'=""');
    setInterval("SearchAjaxChkSearch_OnClick('"+target+"','"+method+"','"+id+"');",time);
}

var oneEnter=false;

function SearchSubmitEnter(myfield,e, target, method, idControl, idControlStatistic)
{
	var keycode;
	if (window.event)
	{
		keycode = window.event.keyCode;
	}
	else if (e)
	{
		keycode = e.which;
	}
	else
	{
		return true;
	}
	if (keycode == 13)
	{
	    if(!oneEnter)
	    {
	    oneEnter=true;
	    setTimeout("oneEnter=false;",1000);
	     var res=Wke.Presentation.WebControls.PageControl.VerifySession(document.location.href);
        if (res.value!="true")
        {
            //alert(res.value);
            window.location.href=res.value;
            return false;
        }
   
	    var form  = document.forms[0];
	    form.onsubmit = function(){return false;};
	    if(typeof(disable_logout)=='function')
	        disable_logout();
	    SearchAjaxBtnSearch_OnClick(target, method, idControl, null, idControlStatistic);		
		return false;
		
		}
	}
	else
	{
	    if (keycode == 64)
	    {
	        return false;
	    }
	     if (keycode == 35)
	    {
	        return false;
	    }
	    else
	    {
	        return true;
	    }
		
	}
}

function SearchAjaxTxtSearch_Callback(res)
{
}

function SearchAjaxChkSearch_OnClick(target,method,id) {
    try {
        if (document.getElementById(id + 'ChkSynonym') != null) {
            if (document.getElementById(id + 'ChkSynonym').checked) {
                if (eval('interval' + id + '!=document.getElementById(\'' + id + 'TxtSearch\').value')) {
                    eval('interval' + id + '=document.getElementById(\'' + id + 'TxtSearch\').value;')
                    var obj = new Object();
                    obj.QueryText = document.getElementById(id + 'TxtSearch').value;
                    obj.id = id;
                    //AjaxControl_Default(target, method, obj, SearchAjaxChkSearch_Callback);
                    Wke.Presentation.WebControls.SearchControl.AjaxChkSearch_OnClickDirecto(obj, SearchAjaxChkSearch_Callback);
                }
            }
            else {
                eval('interval' + id + '=\'\';');
                document.getElementById(id + 'DivSynonymTitle').innerHTML = '';
                document.getElementById(id + 'DivSynonymText').innerHTML = '';
                document.getElementById(id + 'DivSynonym').style.display = 'none';
            }
        }
    } catch (e) { }  	
}

function SearchAjaxChkSearch_Callback(res)
{   
    document.getElementById(res.value.id+'DivSynonym').style.display ='block';
	document.getElementById(res.value.id+'DivSynonymText').innerHTML = res.value.SynonymousText;
	document.getElementById(res.value.id+'DivSynonymTitle').innerHTML = res.value.SynonymTitle;	 
	//Se añade la siguiente línea para que al aparecer el scroll en la búsqueda no cambie de posición la página
	document.getElementById(res.value.id+'DivSynonymText').style.position='relative';
	setTimeout("document.getElementById('"+res.value.id+"DivSynonymText').style.position='static'",100);
	//eval('interval'+res.value.id+'=null;')
}

function SearchClean(target,method,id)
{
    document.getElementById(id+'TxtSearch').value = '';
    document.getElementById(id+'DivSynonymText').innerHTML = '';
    SearchAjaxBtnSearch_OnClick(target,method, null, null, id);
}
	

if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.SelectionAssistantControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.SelectionAssistantControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	CleanSelectionValues: function(uniqueId, id, boolinvisible) {
		return this.invoke("CleanSelectionValues", {"uniqueId":uniqueId, "id":id, "boolinvisible":boolinvisible}, this.CleanSelectionValues.getArguments().slice(3));
	},
	LoadValues: function(tipo, valor, idcontrol) {
		return this.invoke("LoadValues", {"tipo":tipo, "valor":valor, "idcontrol":idcontrol}, this.LoadValues.getArguments().slice(3));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.SelectionAssistantControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.SelectionAssistantControl = new Wke.Presentation.WebControls.SelectionAssistantControl_class();


function loadSelection(idcontrol)
{
    if(document.getElementById('SelectionAssistantBox')==null)
	{
		var h=document.createElement('input');
		h.type='hidden';
		h.id='SelectionAssistantBox';
		document.getElementById(idcontrol+'divselection').appendChild(h);
		document.getElementById('SelectionAssistantBox').value=idcontrol;
	}
	else
	{
		document.getElementById('SelectionAssistantBox').value=document.getElementById('SelectionAssistantBox').value + '|' + idcontrol;
	}
}



function clean_selection_values(all)
{
   if (document.getElementById('SelectionAssistantBox')!=null)
   {
        var arr=document.getElementById('SelectionAssistantBox').value.split('|');
        try
        {
            for(i=0;i<arr.length;i++)
            {
                var res=Wke.Presentation.WebControls.SelectionAssistantControl.CleanSelectionValues(document.getElementById(arr[i]+'hiddenUniqueId').value,arr[i],document.getElementById(arr[i]+'hiddenInvisibleId').value);
                if(all)
                    eval(res.value);
            }
        }catch (e)
            {
                for(i=0;i<arr.length;i++)
                {
                    var res=Wke.Presentation.WebControls.AssistantMatterControl.CleanSelectionValues(document.getElementById(arr[i]+'hiddenUniqueId').value,arr[i],document.getElementById(arr[i]+'hiddenInvisibleId').value);
                    if(all)
                        eval(res.value);
                }
            }
          
       }
}

function loadSelectionAssistantValues()
{
    clean_selection_values(false);
    var arr=document.getElementById('SelectionAssistantBox').value.split('|');
    try{
        for(iii=0;iii<arr.length;iii++)
        {
            var valor=getSelectionValue(arr[iii]);
            if(valor!='')
            {
                var res=Wke.Presentation.WebControls.SelectionAssistantControl.LoadValues(document.getElementById(arr[iii]+'hiddenMeta').value,valor,arr[iii]);
                eval(res.value);
             }
        }
     }catch(e)
        {
            for(iii=0;iii<arr.length;iii++)
            {
                var valor=getSelectionValue(arr[iii]);
                if(valor!='')
                {
                    var res=Wke.Presentation.WebControls.AssistantMatterControl.LoadValues(document.getElementById(arr[iii]+'hiddenMeta').value,valor,arr[iii]);
                    eval(res.value);
                 }
            }
        }
}

function getSelectionValue(id)
{  
    var valor='';
    //select
    if(document.getElementById(id+'select')!=null)
    {
       valor= document.getElementById(id+'select').options[document.getElementById(id+'select').selectedIndex].value;
    }
    else //radio
    {
        var arr=document.getElementById(id+'divselection').getElementsByTagName('input');
        for (i=0;i<arr.length;i++)
       {
            if(arr[i].type=='radio')
            {
                if (arr[i].checked)
                {
                    valor=arr[i].value;
                    break;
                }
            }
            if(arr[i].type=='checkbox')
            {
                if (arr[i].checked)
                {
                    valor+=arr[i].value+'|';
                
                }
            }
//            if (arr[i].type=='hidden' && arr[i].id=='SelectedOption')
//            {
//                valor=document.getElementById('SelectedOption').value;
//                break;
//            }
       }
    }
    return valor;
}


function SelectionAssistantCache(target,method,uniqueid,id)
{
    var obj=new Object();
    obj.id=id;
    obj.uniqueid=uniqueid;
    AjaxCachePageControl_load(target, method,obj,SelectionLoadCallback);
}

function SelectionLoadCallback(res)
{
    if(res!=null)
    {
        eval(res.value.result);
    }
}


// Funcion que se ejecuta cuando se hace onClick sobre un SearchButtonControl. El idControl solo viajara en el caso de que en en 
// searchButtonControl se haya puesto el parametro PathResultList.
function SearchAjaxButtonSearch_OnClick(target,method,idControl,pageNoData, idControlStatistic)
{ 
    if(typeof(SearchAjaxBtnSearch_OnClick)=="function")
        {
            var res=Wke.Presentation.WebControls.PageControl.VerifySession(document.location.href);
            if (res.value=="true")
            {
                   SearchAjaxBtnSearch_OnClick('Wke.Presentation.WebControls.SearchControl', 'AjaxBtnSearch_OnClick', idControl, pageNoData, idControlStatistic);  
            }
            else
            {
                window.location.href=res.value;
            }
            
        }
    else
    {
    //abujalance, comprobamos si existen asistentes genericos
    if(typeof load_generic_values == 'function') {
        if(!load_generic_values())
            return ""; //quito la ejecucion
    }
    
     //abujalance, comprobamos los asistentes de seleccion
    if(typeof loadSelectionAssistantValues=='function')
    {
        loadSelectionAssistantValues();
    }
    
    var obj = new Object();
   
    obj.ResultListPage = searchbtnPageResultList;  
    obj.ActiveTab = activeTab;  
    obj.pageNoData=pageNoData;    
    var res=Wke.Presentation.WebControls.AjaxControl.AjaxControl_Click(target, method, obj);
    SearchAjaxButtonSearch_Callback(res);  
    }
}

function SearchAjaxButtonSearch_Callback(res)
{   
    if(res != null)  
    {           
        if(res.value.ResultListFullPath=='')
        {
                alert(searchbtnMessageEmpty);            
        }
        else
        {       
            window.location.href = res.value.ResultListFullPath;              
        }
    }        
}

function AjaxControl_Default(target, method, obj, callback)
{
    //ejemplo de objeto 
    /*
    obj=new Object();
    obj.name='paco';
    obj.number=7;
    */
    var res=Wke.Presentation.WebControls.PageControl.VerifySession(document.location.href);
    if (res.value=="true")
    {
        if(callback==null)
        {
             var res= Wke.Presentation.WebControls.AjaxControl.AjaxControl_Click(target, method, obj);
            return res;
        }
        else
        {
            Wke.Presentation.WebControls.AjaxControl.AjaxControl_Click(target, method, obj, callback);
         }
    }
    else
    {
        window.location.href=res.value;
    }
    
}

function AjaxControl_Callback(response)
{
    if(response.value == null)
    {
        alert('Error in AjaxControl_Callback, see the log file.');
    }
    else
    {
        alert('AjaxControl_Callback por defecto');
    }
}

/************ FUNCIONES PROPIAS DEL AJAX TEXT CONTROL ************/
/*  Las propiedades que recibe en el JavaScriptObject son:
    txtvalue (valor de la caja de texto)
    txtid (id de la caja de texto)
    divid (id de la capa donde se insertara el innerhtml y que mostraremos)
    Debe devolver:
    innerHTML con el html que queramos mostrar en la capa
    
    Como se use depende de cada uno, la forma logica es como esta el ejemplo
    poniendo el valor pulsado y ocultando la capa
    luego los valores que vayan dentro que cada uno lo busque o haga lo que quiera</example>
*/
function AjaxTextControl_KeyPress(target,method,obj,callback)
{
    if(obj.txtvalue.length>0)
    {
        Wke.Presentation.WebControls.AjaxTextControl.AjaxTextControl_KeyPress(target,method,obj,callback);
    }
    else
    {
        if (document.getElementById(obj.divid) != null)
        {
            document.getElementById(obj.divid).style.display='none';
        }
    }
}

function AjaxTextControl_Callback(res)
{
    if(res.value==null)
    {
        alert('Error in AjaxTextControl_Callback, see the log file.');
    }
    else
    {
        //ejemplo de recoger los valores
        document.getElementById(res.value.divid).innerHTML=res.value.innerHTML;
        document.getElementById(res.value.divid).style.display='block';
    }
}

function PathLoad(target, method, idHdHistoricalPath, idDivPath)
{    
    var obj=new Object();
    obj.IdHdHistoricalPath = idHdHistoricalPath;
    obj.IdDivPath = idDivPath;
    if (document.getElementById(idHdHistoricalPath) != null) {
        if (document.getElementById(idHdHistoricalPath).value + '' != '') {
            obj.Method = 'Synchronize';
            obj.HistoricalId = document.getElementById(idHdHistoricalPath).value;
        }
        else {
            obj.Method = 'UpdateHistoricalId';
        }
    }   
    AjaxControl_Default(target, method,obj,PathLoadCallback);
}

function PathLoadCallback(res)
{   
    if(res != null)  
    {
        if(res.value!=null)
        {
        if(res.value.Method=='Synchronize')
        {
            if(res.value.SynchronizeCallback[0] == '')
		    {		        
			    document.getElementById(res.value.IdDivPath).value = res.value.SynchronizeCallback[1];
		    }
		    else
		    {		   
			    window.location = res.value.SynchronizeCallback[0];
		    }
        }
        else
        {        
            document.getElementById(res.value.IdHdHistoricalPath).value = res.value.RecoverHistoricalIdCallback;
        }   
        
        }
     }
}



if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.NavigationControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.NavigationControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	GenerateNavigationLink: function(hash) {
		return this.invoke("GenerateNavigationLink", {"hash":hash}, this.GenerateNavigationLink.getArguments().slice(1));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.NavigationControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.NavigationControl = new Wke.Presentation.WebControls.NavigationControl_class();





// mtalavera 2009-05-29
/// <summary>
/// Funcion javascript que ejecuta la funcionalidad ajax para obtener un Link completo a un documento 
/// especifico contenido en en la lista de resultados
/// </summary>
/// <param name="hash">Javascript object que contiene el numero de documento al que queremos navegar,
/// y el tipo de navegación en la que nos encontramos, y la imagen a la que corresponde la llamada (ir al inicio o ir al ultimo)</param>
/// <returns>Dirección http que refencia la pagina y parametros necesarios para navegar a un documento</returns>
function GenerateNavigationLink(NumDoc, NavigationType, NavigationImageType) {
try
{
    var hash = new Object();
    hash.NumDoc = NumDoc;
    hash.NavigationType = NavigationType;
    hash.NavigationImageType = NavigationImageType;
    var res = Wke.Presentation.WebControls.NavigationControl.GenerateNavigationLink(hash);
    window.location = res.value;
    }
    catch(e)
    {
    }
}
if(typeof Wke == "undefined") Wke={};
if(typeof Wke.Presentation == "undefined") Wke.Presentation={};
if(typeof Wke.Presentation.WebControls == "undefined") Wke.Presentation.WebControls={};
Wke.Presentation.WebControls.SearchDocumentControl_class = function() {};
Object.extend(Wke.Presentation.WebControls.SearchDocumentControl_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
	CreateReplaces: function(str) {
		return this.invoke("CreateReplaces", {"str":str}, this.CreateReplaces.getArguments().slice(1));
	},
	url: '/ajaxpro/Wke.Presentation.WebControls.SearchDocumentControl,Wke.Presentation.ashx'
}));
Wke.Presentation.WebControls.SearchDocumentControl = new Wke.Presentation.WebControls.SearchDocumentControl_class();


function SearchDocument(idtx,txt,direccion,nb_capa,blank,controlid)
{
    // si se ha configurado el uso de texto por defecto.
    if(document.getElementById(controlid + 'searchdochidenflag').value=='true')
    {
        // searchdocuhidentext-> hidden con el texto por defecto. SearchDocumenttx-> input caja de texto.
        if(document.getElementById(controlid + 'searchdocuhidentext').value!=document.getElementById(controlid + 'SearchDocumenttx').value)
        {
            findInPage(document.getElementById(controlid + idtx).value,txt,direccion,nb_capa,blank,controlid);
        }
        else
            alert(blank);
    }
    else
    {
        findInPage(document.getElementById(controlid + idtx).value,txt,direccion,nb_capa,blank,controlid);
    }
}

function searchdocumentfocus(controlid)
{
      
    if(document.getElementById(controlid + 'searchdochidenflag').value=='true')
    {
    if(document.getElementById(controlid + 'searchdocuhidentext').value==document.getElementById(controlid + 'SearchDocumenttx').value)
    {
        document.getElementById(controlid + 'SearchDocumenttx').value='';
        
    }
    
    }
    document.getElementById(controlid + 'SearchDocumenttx').style.fontWeight = 'normal';
}


function searchdocumentblur(controlid)
{
    if(document.getElementById(controlid + 'searchdochidenflag').value=='true')
    {
    if(document.getElementById(controlid + 'SearchDocumenttx').value=='')
    {
        document.getElementById(controlid + 'SearchDocumenttx').value=document.getElementById(controlid + 'searchdocuhidentext').value;
        document.getElementById(controlid + 'SearchDocumenttx').style.fontWeight = 'bold';
    }
    else
        document.getElementById(controlid + 'SearchDocumenttx').style.fontWeight = 'normal';
    }
    else
        document.getElementById(controlid + 'SearchDocumenttx').style.fontWeight = 'normal';
}



var oldautosearch='';
function SearchDocumentAuto(idtx,txt,direccion,nb_capa,blank,controlid)
{

if(document.getElementById(controlid + 'searchdochidenflag').value=='true')
    {
        if(document.getElementById(controlid + 'searchdocuhidentext').value!=document.getElementById(controlid + 'SearchDocumenttx').value)
        {
            if(oldautosearch!=document.getElementById(controlid + idtx).value)
    {
        oldautosearch=document.getElementById(controlid + idtx).value;
        //findInPageAuto(document.getElementById(idtx).value,txt,direccion,nb_capa,blank);
        findInPage(document.getElementById(controlid + idtx).value,txt,direccion,nb_capa,blank,controlid);
    }
        }
        else
            alert(blank);
    }
    else
    {
        if(oldautosearch!=document.getElementById(controlid + idtx).value)
    {
        oldautosearch=document.getElementById(controlid + idtx).value;
        //findInPageAuto(document.getElementById(idtx).value,txt,direccion,nb_capa,blank);
        findInPage(document.getElementById(controlid + idtx).value,txt,direccion,nb_capa,blank);
    }
    }
    
}



//var contsearch=0;
//var oldhtml='';
//var oldsearchstr='';
//var arrsearch;
//var objhtml;


function cleanLastSearch(controlid)
{
    eval(controlid + "_oldhtml=''");
    eval(controlid + "_oldsearchstr=''");
}


function swithHiglight(on,nb_capa,controlid)
{
//  ********** VOLVEMOS A LO VIEJO ****************
/*
   // Si es el explorer ejecutamos un codigo especifico
   if (document.all)
   {    
      if (on)
      {
         HighlightIE(oldsearchstr,nb_capa);

      }
      else  // si on es false tenemos que desresaltar.
      {
        // si aun no hemos desresaltado la palabra inicial la desrresaltamos.
        if (wordHighlightInitial!="")
        {
            UnHighlightIE(wordHighlightInitial,nb_capa);
            oldsearchstr= wordHighlightInitial;
            wordHighlightInitial="";
        }
        else
        {
            UnHighlightIE(oldsearchstr,nb_capa);          
        }
        
      }
      return false;
   }
   ************ FIN DE VOLVER A LO VIEJO ********************
   */
//    var objhtml = eval(controlid + "_objhtml");
//    var arrsearch = eval(controlid + "_arrsearch");
    if(nb_capa!='none')
        eval(controlid + "_objhtml=document.getElementById('" + nb_capa + "')");
    if (eval(controlid + "_objhtml") == null)
        eval(controlid + "_objhtml=document.body");
    //arrsearch = objhtml.getElementsByTagName('span');
    eval("var " + controlid + "_arrsearch=" + controlid + "_objhtml.getElementsByTagName('span')");
    //arrsearch.length
    for(i=0;i<eval(controlid + "_arrsearch.length");i++)
    {
        if (on) {
            if (eval(controlid + "_arrsearch[" + i + "].className=='HighlightSearchAux'")) {
                eval(controlid + "_arrsearch[" + i + "].className='HighlightSearch'");
             }
        }
        else {
            if (eval(controlid + "_arrsearch[" + i + "].className=='HighlightSearch'")) {
                eval(controlid + "_arrsearch[" + i + "].className='HighlightSearchAux'");
            }
            if (eval(controlid + "_arrsearch[" + i + "].className=='Highlight'")) {
                //arrsearch[i].className='HighlightSearchAux'
                eval(controlid + "_arrsearch[" + i + "].className='HighlightSearchAux'");
             }
        }
    }
}


function cleanSearchHtml(control)
{
    var rx;
    if(!document.all)//firefox
        rx=new RegExp("<span class=\"HighlightSearchAux\" [^>]*>(.*?)</span>","gi");
    else //ie
        rx=new RegExp("<span class=HighlightSearchAux [^>]*>(.*?)</span>","gi");
    control.innerHTML=control.innerHTML.replace(rx,'$1');
    
  }


// str2-> cadena a buscar, valor ->"texto no encontrado" ,direccion->arriba o abajo,nb_capa-> nombre capa, blank-> introduzca un texto
function findInPage(str2,valor,direccion,nb_capa,blank,controlid)
{
  
    try
    {
    
    if(str2.trim()=='')
    {
        alert(blank);
        return true;
    }
    // SI EL NAVEGADOR ES EXPLORER, ejecutamos otro codigo especifico para Explorer
    //************* INICIO VOLVER A LO VIEJO *************
    /*
    if (document.all) 
    {

        // si ha cambiado la palabra de busqueda.
        if(oldsearchstr!=str2)
        {
            // si aun no hemos desresaltado la palabra inicial la desrresaltamos.
            if (wordHighlightInitial!="")
            {
                UnHighlightIE(wordHighlightInitial,nb_capa);
                wordHighlightInitial="";
            }
            else
            {
                UnHighlightIE(oldsearchstr,nb_capa);
            }
            
            // actualizamos la ultima palabra.
            oldsearchstr=str2; 
            
            // si esta marcado resaltamos TODAS las palabras.
            if (document.getElementById('SearchDocumentchk').checked)
            {
              HighlightIE(str2,nb_capa);
            } 
        }
        
        // si hay que buscar la siguiente palabra
        if(direccion>0)
        {
            // Seleccionamos la siguiente palabra.
            findInPageNextWordIE(str2,nb_capa,valor);
        }
        else
        {
            // Seleccionamos la anterior palabra.
            findInPagePreviousWordIE(str2,nb_capa,valor);
        }
       
       return true;
    }
    *************** FIN DE VOLVER A LO VIEJO ******************
    */

    if(eval(controlid + "_oldsearchstr")!=str2)
    {
        //pongo a off lo anterior

        swithHiglight(false,nb_capa,controlid);
        // jcangel: desactivamos el resaltar todo para que en los documentos pesados vaya mas rapido.
        if(document.getElementById(controlid + 'SearchDocumentchk')!=null)
        {
            document.getElementById(controlid + 'SearchDocumentchk').checked= false;
        }



        eval(controlid + "_oldsearchstr=str2");
        //  eval(controlid + "_arrsearch")=null
        eval(controlid + "_arrsearch=null");
        var str=str2;
        var res=Wke.Presentation.WebControls.SearchDocumentControl.CreateReplaces(str);
        str = res.value;
        if (!document.all) {
            str = '(?!<*[^<]*>.*?)(' + str + ')(?=.*?<\/*[^>]*>)';
            //str='(?=<*.*>)[^>\'\"]('+str+')[^>\'\"](?=<*.*>)';
            var exp = new RegExp(str, 'gi');
        }
        else {
            // machea las cadenas str que justo a la derecha (?= tengan cualquier caracter menos el menor que [^>]* seguido de un mayor que >
            str ='(' + str + ')(?=[^>]*<)';
          //  str = '(^[^<]*' + str + '*$[^>])';
            var exp = new RegExp(str, 'gi');
        }
        //si nos dan el documento en una capa,seria con 
        //document.getElementById('nb_capa')
        //sino, tiraremos del todo el body
        if (nb_capa != 'none')
        //eval(controlid + "_objhtml") = document.getElementById(nb_capa);
            eval(controlid + "_objhtml=document.getElementById('" + nb_capa + "')");
        else
        //eval(controlid + "_objhtml") = document.body;
            eval(controlid + "_objhtml=document.body");
        //var objhtml=document.body;
        if (eval(controlid + "_oldhtml") == '') {
            cleanSearchHtml(eval(controlid + "_objhtml"));
            eval(controlid + "_oldhtml=" + controlid + "_objhtml.innerHTML");
        }
        else {
            if (eval(controlid + "_objhtml.innerHTML") == eval(controlid + "_oldhtml")) {
                eval(controlid + "_objhtml.innerHTML=" + controlid + "_oldhtml");
            }
        }
        
        var test=false;
        test = exp.test(eval(controlid + "_objhtml.innerHTML"));

  
        if(test)
        {
            //eval(controlid + "_objhtml").innerHTML=
            //eval(controlid + "_objhtml").innerHTML.replace(exp,
            //'<span class="HighlightSearch">$&<abbr><samp></samp></abbr></span>');
            eval(controlid + "_objhtml.innerHTML=" + controlid + "_objhtml.innerHTML.replace(exp,'<span class=\"HighlightSearch\">$&<abbr><samp></samp></abbr></span>')");
            //'<abbr>$&<samp></samp></abbr>');
            //arrsearch=objhtml.getElementsByTagName('abbr');
            eval(controlid + "_arrsearch="+ controlid + "_objhtml.getElementsByTagName('abbr')");
            eval(controlid + "_contsearch=0");
            var SearchDocumentchkbool=false;
            if(document.getElementById(controlid  + 'SearchDocumentchk')!=null)
                SearchDocumentchkbool=document.getElementById(controlid + 'SearchDocumentchk').checked;
            swithHiglight(SearchDocumentchkbool,nb_capa,controlid);
        }
        else
        {
            eval(controlid + "_arrsearch=new Array()");
        }
    }
    else
    {
        if (eval(controlid + "_arrsearch.length") > 0)
        {
            if(direccion>0)
            {
                if(eval(controlid + "_contsearch")<eval(controlid + "_arrsearch.length"))
                {
                    if (eval(controlid + "_contsearch+1") == eval(controlid + "_arrsearch.length") && eval(controlid + "_arrsearch.length> 0" ))
                    {
                        var conf = eval(controlid + "_searchbegin");
                        if(confirm(conf))
                        {
                            var SearchDocumentchkbool=false;
                            if(document.getElementById(controlid + 'SearchDocumentchk')!=null)
                                SearchDocumentchkbool=document.getElementById(controlid + 'SearchDocumentchk').checked;
                            if (!SearchDocumentchkbool) {
                                var containercontsearch = eval(controlid + "_contsearch");
                                if (eval(controlid + "_arrsearch[" + containercontsearch + "].nodeName") != 'SPAN')
                                    eval(controlid + "_arrsearch[" + containercontsearch + "].parentNode.className='HighlightSearchAux'");
                                else
                                    eval(controlid + "_arrsearch[" + containercontsearch + "].className='HighlightSearchAux'");

                                //eval(controlid + "_arrsearch[" + containercontsearch + "].parentNode.className = 'HighlightSearchAux'");
                            }
                            eval(controlid + "_contsearch++");
                        }
                        else
                        {
                            return "";
                        }
                    }
                    else
                    {
                        var SearchDocumentchkbool=false;
                            if(document.getElementById(controlid + 'SearchDocumentchk')!=null)
                                SearchDocumentchkbool=document.getElementById(controlid + 'SearchDocumentchk').checked;
                            if (!SearchDocumentchkbool) {
                                var containercontsearch = eval(controlid + "_contsearch");
                                if (eval(controlid + "_arrsearch[" + containercontsearch + "].nodeName") != 'SPAN')
                                    eval(controlid + "_arrsearch[" + containercontsearch + "].parentNode.className='HighlightSearchAux'");
                                else
                                    eval(controlid + "_arrsearch[" + containercontsearch + "].className='HighlightSearchAux'");
                                //eval(controlid + "_arrsearch[" + containercontsearch + "].parentNode.className = 'HighlightSearchAux'");
                            }
                            eval(controlid + "_contsearch++");
                    }


                    if (eval(controlid + "_contsearch") == eval(controlid + "_arrsearch.length"))
                {
                    eval(controlid + "_contsearch=0");
                }
                }
                else
                {
                var SearchDocumentchkbool=false;
                if(document.getElementById(controlid + 'SearchDocumentchk')!=null)
                    SearchDocumentchkbool=document.getElementById(controlid + 'SearchDocumentchk').checked;
                if (!SearchDocumentchkbool) {
                    var index = eval(controlid + "_arrsearch.length - 1");
                    if (eval(controlid + "_arrsearch[" + index + "].nodeName") != 'SPAN')
                        eval(controlid + "_arrsearch[" + index + "].parentNode.className='HighlightSearchAux'");
                    else
                        eval(controlid + "_arrsearch[" + index + "].className='HighlightSearchAux'");

                    //eval(controlid + "_arrsearch[" + index + "].parentNode.className = 'HighlightSearchAux'");
                }
                eval(controlid + "_contsearch=0");
                }
            }
            else
            {
                if(eval(controlid + "_contsearch")>0)
                 {
                 var SearchDocumentchkbool=false;
                    if(document.getElementById(controlid + 'SearchDocumentchk')!=null)
                        SearchDocumentchkbool=document.getElementById(controlid + 'SearchDocumentchk').checked;
                    if (!SearchDocumentchkbool) {
                        var index = eval(controlid + "_contsearch");
                        if (eval(controlid + "_arrsearch[" + index + "].nodeName") != 'SPAN')
                            eval(controlid + "_arrsearch[" + index + "].parentNode.className='HighlightSearchAux'");
                        else
                            eval(controlid + "_arrsearch[" + index + "].className='HighlightSearchAux'");
                        
                        //eval(controlid + "_arrsearch[" + index + "].parentNode.className = 'HighlightSearchAux'");
                    }
                    eval(controlid + "_contsearch--");
                }
                else {
                    var conf = eval(controlid + "_searchend");
                    if(confirm(conf))
                    {
                     var SearchDocumentchkbool=false;
                            if(document.getElementById(controlid + 'SearchDocumentchk')!=null)
                                SearchDocumentchkbool=document.getElementById(controlid + 'SearchDocumentchk').checked;
                            if (!SearchDocumentchkbool) {
                                if (eval(controlid + "_arrsearch[0].nodeName") != 'SPAN')
                                    eval(controlid + "_arrsearch[0].parentNode.className='HighlightSearchAux'");
                                else
                                    eval(controlid + "_arrsearch[0].className='HighlightSearchAux'");
                            }
                    eval(controlid + "_contsearch="+ controlid + "_arrsearch.length-1");
                    }
                    else
                    {
                        return "";
                    }
                }
            }
        }
    
    }

    if (eval(controlid + "_arrsearch.length") > 0)
    {
    
    
    //new pos
    if(typeof(OpenFolders)=='function')
        {
            //si existe algo con nodos y buscamos en ellos los desplegamos
            var index = eval(controlid + "_contsearch");
            if (eval(controlid + "_arrsearch[" + index + "].parentNode") != null)
                if(eval(controlid + "_arrsearch[" + index + "].parentNode.parentNode")!=null)
                if(eval(controlid + "_arrsearch[" + index + "].parentNode.parentNode.parentNode")!=null)
                {
                    OpenFolders(eval(controlid + "_arrsearch[" + index + "].parentNode.parentNode.parentNode.id"));
                    
                }
        }
        
        //como de nuevo se han cambiado las tdcs, se pone nueva funcionalidad
        //y se mantiene la anterior porque en algun momento lo volveran a cambiar
        if(typeof(OpDLc)=='function')
        {
            try
            {
            var swslibing = false;
            var swslibingdt = false;
            var index = eval(controlid + "_contsearch");
            var slibing = eval(controlid + "_arrsearch[" + index + "]");
            if (!document.all) {
                if (slibing.parentNode.parentNode.parentNode.nodeName == 'DD')
                    swslibing = true;
            }
            else {
                if (slibing.parentNode.parentNode.parentNode.nodeName == 'DL')
                    swslibing = true;
            }
            if(slibing.parentNode.parentNode.nodeName=='DT')
                    swslibingdt=true;
            while(slibing.nodeName!='DL' && slibing!=null)
            {
                slibing=slibing.parentNode;
            }
            if(swslibing)
            {
            arrDt=slibing.getElementsByTagName("DT");
            for(ardt=0;ardt<arrDt.length;ardt++)
            {
                arrDt[ardt].className='dop';
                var arrDd=slibing.getElementsByTagName("DD");
                for(ardd=0;ardd<arrDd.length;ardd++)
                {
                    arrDd[ardd].className='op';
                }
            }
            }
            while(slibing!=null && slibing.nodeName!='DT')
            {
                //si hubiese mas niveles ver como ponerlo, tendria que ser recursivo?
                 slibing=slibing.parentNode;
                while(slibing.nodeName!='DL' && slibing!=null)
            {
                slibing=slibing.parentNode;
            }
                slibing.className='dop';
                arrDt=slibing.getElementsByTagName("DT");
            for(ardt=0;ardt<arrDt.length;ardt++)
            {
                arrDt[ardt].parentNode.parentNode.className='op';
            }
            }
        }
         catch(e)
        {
            //alert('error in SearchDocument: ' + e.message);
        }  
        }
    
        //arrsearch[contsearch].className='SearchDoc';
        var index = eval(controlid + "_contsearch");
        if (eval(controlid + "_arrsearch[" + index + "].nodeName") != 'SPAN')
            eval(controlid + "_arrsearch[" + index + "].parentNode.className='HighlightSearch'");
        else
            eval(controlid + "_arrsearch[" + index + "].className='HighlightSearch'");
        if (eval(controlid + "_arrsearch[" + index + "].getElementsByTagName('samp').length") > 0) {
            var pos = eval(controlid + "_arrsearch[" + index + "].getElementsByTagName('samp')[0]");
            //eval(controlid + "_arrsearch[" + index + "].getElementsByTagName('samp')[0].scrollIntoView()");
            pos.scrollIntoView();
        }
        else {
            //alert(arrsearch[contsearch].innerHTML);
            var pos = eval(controlid + "_arrsearch[" + index + "]");
            //eval(controlid + "_arrsearch[" + index + "].scrollIntoView()");
            pos.scrollIntoView();
        }
            
         
        //antpos
        
    }
    else
    {
        alert(str2+' '+valor);
    }
    }
    catch(e)
    {
        alert('error in SearchDocument: ' +e.message);
    }
    
    //si estamos dentro de la tdc, iniciamos el control de nuevo
    //ya que se han vuelto a cambiar las tdcs.
    if(typeof(ControlTDC)=="function")
        ControlTDC();
        
    if(typeof(Control)=="function")
        Control();
}


   



// ************ INICIO CODIGO BUSQUEDA PARA EXPLORER ************
/*
var numWordsFinds=0;

// funcion que selecciona la siguiente palabra a seleccionar.
function findInPageNextWordIE(cadenaABuscar, capaContenedora, literalTextoNoEncontrado) 
{  
    var rangoTexto, i, found;

    if (cadenaABuscar == "")
     return false;

    // Nos creamos un rango de texto y seleccionamos la capa sobre la que actuaremos.
    rangoTexto = window.document.body.createTextRange();
    rangoTexto.moveToElementText(eval(capaContenedora));
     
    // Buscamos la siguiente palabra a resaltar (será la numWordsFinds)
    for (i = 0; i <= numWordsFinds && (found = rangoTexto.findText(cadenaABuscar)) != false; i++) 
    {
        rangoTexto.moveStart("character", 1); // Macarcamos el inicio del rango
        rangoTexto.moveEnd("textedit"); // Llevamos la marca de fin al final del rango.
    }

    // si hemos encontrado la palabra, la seleccionamos, y la posicionamos.
    if (found) 
    {
        rangoTexto.moveStart("character", -1);
        rangoTexto.findText(cadenaABuscar);
        try
        {
          rangoTexto.select(); // si no podemos seleccionar el texto pq esta oculto por estilos pasamos a la siguiente palabra.
          rangoTexto.scrollIntoView();
          numWordsFinds++; // marcamos la siguiente palabra a buscar.
        }
        catch(e)
        {
          numWordsFinds++;
          findInPageNextWordIE(cadenaABuscar,capaContenedora, literalTextoNoEncontrado);
        }
            
       
    }
    else 
    {
        if (numWordsFinds > 0) 
        {
            // preguntamos si desa volver al principio del documento.
            if (confirm (searchbegin))
            {
                // si no hemos encontrado la palabra y n es mayor que 0 quiere decir que si hay 
                // palabras pero hemos llegado al final del documento. Luego tendremos que ponerlo a 0 y volver al inicio.
                numWordsFinds= 0;
                findInPageNextWordIE(cadenaABuscar,capaContenedora, literalTextoNoEncontrado);
            }
        }
        else
        {
            alert(literalTextoNoEncontrado);
        }
    }

    return false;
}

// Selecciona la palabra previa a la que esta actualmente seleccionada.
function findInPagePreviousWordIE(cadenaABuscar, capaContenedora, literalTextoNoEncontrado)
{ 
    var rangoTexto, i, found;

    if (cadenaABuscar == "")
      return false;

    // si se ha encontrado alguna palabra
    if (numWordsFinds>1)
    {
        // Creamos un rango de Texto.
        rangoTexto = window.document.body.createTextRange();
        rangoTexto.moveToElementText(eval(capaContenedora));
            
        // Buscamos la palabra numWordsFinds-2. 
        // n es la actual
        // n-1 la palabra anterior
             
        for (i = 0; i <= (numWordsFinds-2) && (found = rangoTexto.findText(cadenaABuscar)) != false; i++) 
        {
            rangoTexto.moveStart("character", 1); // Macarcamos el inicio del rango
            rangoTexto.moveEnd("textedit"); // Llevamos la marca de fin al final del rango.
        }
            
    
        // si hemos encontrado la palabra, la seleccionamos, y la posicionamos.
        if (found) 
        {
            rangoTexto.moveStart("character", -1);
            rangoTexto.findText(cadenaABuscar);
            try
            {
              rangoTexto.select(); // si no podemos seleccionar el texto pq esta oculto por estilos pasamos a la siguiente palabra.
            }
            catch(e)
            {
              numWordsFinds--;
              findInPagePreviousWordIE(cadenaABuscar, capaContenedora, literalTextoNoEncontrado);
            }
            
            rangoTexto.scrollIntoView();
            numWordsFinds--;
        }
        
    } // if mayor a 1
    
    return false;
}

// funcion para resaltar todas las palabras.
function HighlightIE(cadenaABuscar, capaContenedora)
{

   var rangoTexto, i, found;

    if (cadenaABuscar == "")
      return false;
       
    var arrayPalabras= new Array();
    if (cadenaABuscar.indexOf("#split#")>-1)
    {
        // Esto solo lo tendrá la primera vez ya que tendra QueryText QueryOr QueryLit.
        // es decir cuando el ususario lo primero que haga sea desresaltar y resalatar.
        arrayPalabras= cadenaABuscar.split("#split#");
    }
    else
    {
       arrayPalabras[0]= cadenaABuscar;
       arrayPalabras[1]= "";
   
       
    }    
    
    for(var numPalabras=0;numPalabras<arrayPalabras.length-1;numPalabras++)
    {
       
        // Nos creamos un rango de texto y seleccionamos la capa sobre la que actuaremos.
        rangoTexto = window.document.body.createTextRange();
        rangoTexto.moveToElementText(eval(capaContenedora));

        //for (var i = 0; rangoTexto.findText(cadenaABuscar); i++) 
        for (var i = 0; rangoTexto.findText(arrayPalabras[numPalabras]); i++) 
        {
            rangoTexto.pasteHTML('<span class="Highlight">' + rangoTexto.text + '<\/span>');
            rangoTexto.collapse(false);
        }
    
    }
    
    
    return false;
}

// funcion para desresaltar palabras.
function UnHighlightIE(cadenaBusqueda, capaContenedora)
{
   if (cadenaBusqueda == "")
      return false;
     
    var arrayPalabras = new Array();
     
    var rangoTexto, i;
    
    if (cadenaBusqueda.indexOf("#split#")>-1)
    {
        // Esto solo lo tendrá la primera vez ya que tendra QueryText QueryOr QueryLit
        arrayPalabras= cadenaBusqueda.split("#split#");
    }
    else
    {
       arrayPalabras[0]= cadenaBusqueda;
       arrayPalabras[1]= "";
       
    }        
    
    for (var numPalabras=0;numPalabras<(arrayPalabras.length-1);numPalabras++)
    {
        // Nos creamos un rango de texto y seleccionamos la capa sobre la que actuaremos.
        rangoTexto = window.document.body.createTextRange();
        rangoTexto.moveToElementText(eval(capaContenedora));
        
        
        //for (var i = 0; rangoTexto.findText(cadenaBusqueda); i++) 
        for (var i = 0; rangoTexto.findText(arrayPalabras[numPalabras]); i++) 
        {
            var elemento =rangoTexto.parentElement();
            
            // solo borro si el classname es el que resalta.
            if (elemento.className=="Highlight")
            {
                elemento.removeNode(false);       
            }
            rangoTexto.collapse(false);
        }
    }
    
    return false;
}

//   desresaltar todo
//   var capaContenedora= document.getElementById(capaContenedora);
//   var arrayElementos2 = capaContenedora.getElementsByTagName("span");
//   
//   for (var i=0; i<arrayElementos2.length-1;i++)
//   {
//        if (arrayElementos2[i].className=="Highlight")
//        {
//                arrayElementos2[i].removeNode(false);       
//        }
//    }
//    
// ****************** FIN DE CODIGO BUSQUEDA PARA EXPLORER ******************

//         En MOZILLA tambien se pueden utilizar rangos pero no te permiten buscar un literal (string). Tienes que
//         buscar un nodo (probar con createNodeText())
//        //https://developer.mozilla.org/En/DOM/Range        
//        // Nos creamos un rango de texto y seleccionamos la capa sobre la que actuaremos.
//        var range = document.createRange();
//        referenceNode = document.getElementById("cCn");
//        range.selectNodeContents(referenceNode);
//        range.setStart(str,3);
//        alert(range.toString());

*/


function ChangeSize(divid,code,maxvalue,minvalue,hid)
{
    try {
        if (document.getElementById(divid) != null) {
            if (code == -1) //resta
            {
                if (eval(eval(document.getElementById(hid).value.replace(',', '.')) - 0.1) > eval(minvalue.replace(',', '.')))
                    document.getElementById(hid).value = eval(document.getElementById(hid).value.replace(',', '.')) - 0.1;
                else
                    eval(minmsg);
            }
            else //suma
            {
                if (eval(eval(document.getElementById(hid).value.replace(',', '.')) + 0.1) < eval(maxvalue.replace(',', '.')))
                    document.getElementById(hid).value = eval(document.getElementById(hid).value.replace(',', '.')) + 0.1;
                else
                    eval(maxmsg);
            }
            var es = document.getElementById(divid).style;
            es.cssText = es.cssText.replace(/font-size:[^;}"']+;?/gi, '');
            es.cssText = es.cssText + 'font-size:' + document.getElementById(hid).value.replace(',', '.') + 'em';
            //es.removeProperty('font-size'); //este metodo no lo acepto el explorer
        }
        
        
    }
    catch(e)
    {
        alert('error in ChangeSize: ' +e.message);
    }
}
//Se ejecuta en el onload del popup para cargar el nombre y el mail del usuario validado
function SendToFriendInsertName()
{
        document.getElementById("SendToFriendTxtName").value = sendToFriendUserName;  
        document.getElementById("SendToFriendTxtMail").value = sendToFriendUserMail;               
}

//Verifica que se halla introducido el nombre del remitente
function VerifyName()
{
    if(document.getElementById("SendToFriendTxtName").value.replace(" ", "") == '')
	{	
	    alert(sendToFriendNameValidateEmpty);
		document.getElementById("SendToFriendTxtName").focus();
		return false;
		
	}
	return true;
}

//Verifica que se halla introducido el correo electrónico del remitente y que sea correcto
function VerifySenderEmail()
{
    if(document.getElementById("SendToFriendTxtMail").value != '')
	{	
	    if(!ValidateMail(document.getElementById("SendToFriendTxtMail").value))			
		{
			alert(sendToFriendYourMailValidateError);
			document.getElementById("SendToFriendTxtMail").select();
			document.getElementById("SendToFriendTxtMail").focus();
			return false;
		}
	}
	else
	{
		alert(sendToFriendYourMailValidateEmpty);
		document.getElementById("SendToFriendTxtMail").select();
		document.getElementById("SendToFriendTxtMail").focus();
		return false;
	}
	return true;
}

//Verifica que los correos electrónicos de los destinatarios sean correctos
function VerifyAllMails()
{
    if(document.getElementById("SendToFriendTxtAllMails").value != '')
	{	var mailsText = document.getElementById("SendToFriendTxtAllMails").value.replace(" ","");
	    var mails = mailsText.split(";");
	    for (var i = 0; i < mails.length; i++)
	    {
	        if(!ValidateMail(mails[i]))			
		    {
			    alert(sendToFriendMailValidateError);
			    document.getElementById("SendToFriendTxtAllMails").select();
			    document.getElementById("SendToFriendTxtAllMails").focus();
			    return false;
		    }
		}
	}
	else
	{
		alert(sendToFriendMailValidateEmpty);
		document.getElementById("SendToFriendTxtAllMails").select();
		document.getElementById("SendToFriendTxtAllMails").focus();
		return false;
	}
	return true;
}

//Añade el mail del usuario
function SendToMe(yourAddress, addressTo)
{
    if (document.getElementById("SendToFriendCheckToMe").checked)
    {
        return addressTo + ";" + yourAddress;
    }
    else
    {
        return addressTo;
    }
}

//Envia el mail a través de Ajax
function SendToFriendSendMail(name,addressTo,comment,divMsgResult,divHidden,divShow)
{
    if (!VerifyName())
    {
        return false;
    }
    if (!VerifySenderEmail())
    {
        return false;
    }
    if (!VerifyAllMails())
    {
        return false;
    }
    
    var addressTo = document.getElementById("SendToFriendTxtAllMails").value;
    var yourAddress = document.getElementById("SendToFriendTxtMail").value;
    addressTo = SendToMe(yourAddress, addressTo);
	SendToFriendLoading("none", "block", "none");
	
	
	var extension = ""	
	if(document.getElementById("SendToFriendOptFormatRTF").checked)
	{
	    extension = document.getElementById("SendToFriendOptFormatRTF").value;
	}	
	if(document.getElementById("SendToFriendOptFormatPDF").checked)
	{
	    extension = document.getElementById("SendToFriendOptFormatPDF").value;
	}
    if ( extension=="" && document.getElementById("SendToFriendOptFormatDOC").checked)
    {
        extension = document.getElementById("SendToFriendOptFormatDOC").value;
    }
	      
	               
    target = "Wke.Presentation.WebControls.SendToFriendControl";
    method = "SendToFriendSendMail";   
    var hash=new Object();
    hash.Name = document.getElementById("SendToFriendTxtName").value;
    hash.YourAddress = yourAddress;
    hash.AddressTo = addressTo;
    hash.Comment = document.getElementById("SendToFriendTxtComment").value;
    hash.extension = extension;        
    //Esta variable la crea el DocumentControl cuando recupera tanto el titulo del documento 
	//como el que se debe mostrar en el asunto del email a un amigo
    hash.TitleSendToFriend = titleSendToFriend;
    hash.documentFragmentCode = documentFragmentCode != null ? documentFragmentCode : "";
    AjaxControl_Default(target, method, hash, SendToFriendRedirectionCallback);
}

//Cuando vuelve del ajax muestra un mensaje si el correo se ha enviado bien o ha habido un problema	
function SendToFriendRedirectionCallback(res)
{	  
    document.getElementById("SendToFriendDivTextMessage").innerHTML = res.value.Message;   
    SendToFriendLoading("none", "none", "block");								   
}

//Visualiza u oculta la capa "Cargando"			
function SendToFriendLoading(sendToFriendDivVisibility, loadingDivVisibility, messageDivVisibility)
{
	document.getElementById("SendToFriendDiv").style.display = sendToFriendDivVisibility;
	document.getElementById("SendToFriendDivDownloading").style.display = loadingDivVisibility;
	
	if (document.getElementById("SendToFriendDivMessage") != null)
	{
		document.getElementById("SendToFriendDivMessage").style.display = messageDivVisibility;
	}
}

//En caso de que cerremos el popup mientras esta en el servidor por ajax enviando el mensaje
function SendToFriendCancel()
{
	AjaxPro.queue.abort();
}

var wcPrint_checkedOption = null;
var wcPrint_txt = null;
var wcPrint_listaDocumentos = null;
var wcPrint_docsInsert = "-";	 
var idIframe = "tmpIframe";
var identifier = "";
var contIframe = 0;

function wcPrintVerifySelectedItems()
{
    if (a.length > 0)
    {
        wcPrint_visibilityObjects('block','none',false);
        document.getElementById("wcPrint_Textbox_Interval").value = a.toString();   
        document.getElementById("wcPrint_Text_rdb3").checked = true;            
    }       
}

//Funcion que determina que operacion realizar cuando se pulsa al ENTER en el popup de impresion
function clickEnterButton(tipo)
{
    if (tipo == "ResultList")
    {
        if (document.getElementById("wcPrintResultList").innerHTML == "")
        {
            wcPrint_print_ResultList('nopreview');
        }
        else
        {
            PrintDocument(0);
        }
    }
    else
    {
        if (document.getElementById("wcPrintResultList").innerHTML == "")
        {
            wcPrint_print_Document('nopreview');
        }
        else
        {
            printDocument(0);
        }
    }
}

//Para imprimir el documento que se esta visualizando
function wcPrint_print_Document(tipo)
{
	wcPrint_loading("none", "block");
	
	//Se recupera la parte del documento que se quiere imprimir
	var parts = null;
	for (var j = 1; j <= 4; j++) 
    {
        checkbox_txt = eval("document.getElementById('wcPrint_Text_rdb" + j + "')");
        if (checkbox_txt!= null && checkbox_txt.checked)
        {
            parts = checkbox_txt.value;
            break;
        }
    }		

    /*****AJAX CONTROL *****/
    var hash = new Object();
    hash.tipo = tipo;
	hash.documentPart = parts;
	hash.selectedText = wcPrint_txt; 
	//Esta variable la crea el DocumentControl cuando recupera tanto el titulo del documento 
	//como el que se debe mostrar en la exportacion e impresion de texto seleccionado
	//hash.titleDocExportPrint = titleExportPrint;
	hash.titleDocExportPrint = titleDocumentInfUser;
	hash.documentFragmentCode = documentFragmentCode != null ? documentFragmentCode : "";
          
    target = "Wke.Presentation.WebControls.PrintControl";
    method = "PrintFile";
    
    if(parts!="selectedtext")
    {
        hash.selectedText="";
    }
    
	if(tipo == "preview")
	{
	    AjaxControl_Default(target, method, hash, wcPrint_redirection_callbackPreview);        					
	}
	else
	{
	    AjaxControl_Default(target, method, hash, wcPrint_redirection_callbackDocument);   
	}
}

//Imprimir listas de resultados
function wcPrint_print_ResultList(tipo)
{
    //Esta variable solo tendra valor si se imprimen documentos (todos o varios)
    var parts = null;
    
    //Recuperamos lo que queremos imprimir (toda la lista de resultados, resultados seleccionados, documentos o todos los documentos)
    for (var j = 1; j <= 4; j++) 
    {
        checkbox_txt = eval("document.getElementById('wcPrint_Text_rdb" + j + "')");
        if (checkbox_txt!= null && checkbox_txt.checked)
        {
            wcPrint_checkedOption = checkbox_txt.value;
            break;
        }
    }

    var longitud = 0;
	wcPrint_listaDocumentos = new Array();
	if (wcPrint_checkedOption == "SELECTEDRESULTS" || wcPrint_checkedOption == "SELECTEDDOCUMENTS")
	{
		longitud = wcPrint_longitudIntervalo();
	}
	if (wcPrint_checkedOption == "ALLRESULT" || wcPrint_checkedOption == "ALLDOCUMENTS")
	{
		wcPrint_listaDocumentos = new Array(wcPrint_lengthResultList);
		for (i = 0; i < wcPrint_lengthResultList; i++)
		{
			wcPrint_listaDocumentos[i] = i + 1;
		}
	}
	
	//Intervalo incorrecto
	if ((wcPrint_checkedOption == "SELECTEDRESULTS" || wcPrint_checkedOption == "SELECTEDDOCUMENTS") && longitud <= 0) {
		alert(wcPrint_message_IncorrectInterval);			
		return false;
	}
	//Se quieren imprimir mas documentos de los permitidos
	else if ((wcPrint_checkedOption == "ALLDOCUMENTS" || wcPrint_checkedOption == "SELECTEDDOCUMENTS" ) && wcPrint_listaDocumentos.length > wcPrint_maxDocuments) 		         
	{
		alert(wcPrint_message_NotMoreXDocuments);			
		return false;
	}
	else if ((wcPrint_checkedOption == "ALLRESULT" || wcPrint_checkedOption == "SELECTEDRESULTS") && wcPrint_listaDocumentos.length > wcPrint_maxLines)
	{
		alert(wcPrint_message_NotMoreXLines);
		return false;
	}
	//Todo esta correcto
	else
	{
		var respuesta = true;
		var messagePrint;
		if (wcPrint_checkedOption == "SELECTEDDOCUMENTS" || wcPrint_checkedOption == "ALLDOCUMENTS") 
		{//Se coge el numero de documentos que se han seleccionado
			messagePrint = wcPrint_message_ConfirmPrint.replace("X", wcPrint_listaDocumentos.length.toString());
		    respuesta = confirm(messagePrint);	
		}			
		
		//Se pregunta si se desea imprimir el numero de documentos que se han seleccionado
		if (respuesta == true) {
			wcPrint_loading("none", "block");
			if (wcPrint_checkedOption == "SELECTEDDOCUMENTS" || wcPrint_checkedOption == "ALLDOCUMENTS")
			{
			    //Recuperamos la parte del documento que se quiere imprimir
                for (var j = 5; j <= 7; j++) 
                {
                    checkbox_txt = eval("document.getElementById('wcPrint_Text_rdb" + j + "')");             
                    if (checkbox_txt.checked)
                    {
                        parts = checkbox_txt.value;
                        break;
                    }
                }
			}
			
			/*****AJAX CONTROL *****/
			var hash = new Object();
			hash.tipo = tipo;
			hash.checkedOption = wcPrint_checkedOption;
	        hash.documentsList = wcPrint_listaDocumentos;
			target = "Wke.Presentation.WebControls.PrintControl";
			
			if (parts != null)
			{//Se imprimen documentos. Conjuntos de documentos no tienen vista previa
			    hash.documentPart = parts;
			    method = "PrintDocumentList";
			    AjaxControl_Default(target, method, hash, wcPrint_redirection_callbackDocumentList);				    
			}
			else
			{//Se imprimen listas de resultados
			    hash.position = 0;
			    method = "PrintResultList";				    
			    if(tipo == "preview")
			    {
			        AjaxControl_Default(target, method, hash, wcPrint_redirection_callbackPreview);
			    }
			    else
			    {
			        AjaxControl_Default(target, method, hash, wcPrint_redirection_callback);
			    }
			}
		}
	}
}

function  wcPrint_print_Text(tipo)
{
    wcPrint_loading("none", "block");		

    /*****AJAX CONTROL *****/
    var hash = new Object();
    hash.tipo = tipo;
	hash.extension = wcExport_extension;
	hash.text = document.getElementById(wcPrint_idContainer).innerHTML;   
          
    target = "Wke.Presentation.WebControls.PrintControl";
    method = "PrintText";    
    
	if(tipo == "preview")
	{
	    AjaxControl_Default(target, method, hash, wcPrint_redirection_callbackPreview);        					
	}
	else
	{
	    AjaxControl_Default(target, method, hash, wcPrint_redirection_callbackDocument);   
	}      		
}

//Funcion para imprimir del area personal
function  wcPrint_print_InfUser(type) 
{
	wcPrint_loading("none", "block");		
    
	/*****AJAX CONTROL *****/
	var hash = new Object();
	hash.tipo = type;
	hash.extension = wcExport_extension;		
	hash.infUserCurrentService = activeTab;
  target = "Wke.Presentation.WebControls.PrintControl";
  method = "PrintInfUser";

  if (objTree) {
      if (objTree[activeTree]) {
          hash.IdParent = objTree[activeTree].currentFolderID;
          if (hash.IdParent == objTree[activeTree].UNCLASSIFIED_ITEMS_FOLDER || hash.IdParent == "sp_" + objTree[activeTree].UNCLASSIFIED_ITEMS_FOLDER || hash.IdParent == "sp_" + objTree[activeTree].ROOT_FOLDER || hash.IdParent == objTree[activeTree].ROOT_FOLDER) {
              hash.IdParent = '';
          }
      }
  }
  
  if(type == "preview")
  {
      AjaxControl_Default(target, method, hash, wcPrint_redirection_callbackPreview);
  }
  else
  {
      AjaxControl_Default(target, method, hash, wcPrint_redirection_callback);
  } 		
}

//Callback de la impresion lista de resultados sin vista previa
function wcPrint_redirection_callback(result)
{
    if (result.value == null)
    {
        PrintDocument(-1);
    }
    else
    {  		        	   
	    CreateIframe(document.getElementById("wcPrintResultList"), result.value.htmlResult);
	    wcPrint_NoPreview();		
    }
}

//Callback de la impresion de un documento sin vista previa
function wcPrint_redirection_callbackDocument(result)
{
    if (result.value == null)
    {
        PrintDocument(-1);
    }
    else
    {
	    CreateIframe(document.getElementById("wcPrintResultList"), result.value.htmlResult);	
	    wcPrint_NoPreview();    	        
	    
	}
}

var onfocusBtnPrint2 = false;
function wcPrint_NoPreview()
{          	       	
	document.getElementById("wcPrint_GlobalDiv").style.display = "none";
    document.getElementById("wcPrint_previewDiv").style.display = "block";	   		
	document.getElementById("disableIframe").className = "disableIframeWhite";
	onfocusBtnPrint2 = true;
	document.getElementById("wcPrint_btnPrint2").focus();
}

function OnfocusBtnPrint2()
{
    if (onfocusBtnPrint2)
    {
        onfocusBtnPrint2 = false;
        PrintDocument(0);
    }
}

//Callback de la impresion de varios documentos sin vista previa
function wcPrint_redirection_callbackDocumentList(result)
{
    if (result.value == null)
    {
        PrintDocument(-1);
    }
    else if (result.value.hasNotPermissionToPrint != null)
    {
        alert(htmlNoPermissionsToPrint);
        popup.ClosePopup();	 
    }
    else
    {   
        CreateIframe(document.getElementById("wcPrintResultList"), result.value.framesStruct);
	    
        //En cada frame ponemos un documento y asi se pueden imprimir el contenido de
        //todos los frames
        var documentArray = result.value.documentList;
	    var frame;
	    var containerFrame;
	    var content;
	    var pos;
	    var iframe = window.parent.frames[identifier].window;
	    
	    if (navigator.appName == "Microsoft Internet Explorer")
        {
            var pop = window.open("","print","width=5,height=5");
            pop.document.open();
            pop.document.write(result.value.framesStruct);
            pop.document.close();
            for (i=0; i < documentArray.length; i++)
	        {	
	            pop.frames[i].window.document.open();
		        pop.frames[i].window.document.write(documentArray[i].replace("</head>", "<style type='text/css'>@media print { BODY { font-size: 10pt } } @media screen { body{display:none}}</style></head>"));
		        pop.frames[i].window.document.close();		        			        
	        }	
	        
	        pop.print();
	        pop.close();
	        popup.ClosePopup();
        }
	    else
	    {
	        for (i=0; i < documentArray.length; i++)
	        {
		        frame = iframe.frames[i];
		        containerFrame = frame.contentDocument;
		        if (containerFrame == undefined || containerFrame == null)
		        {
			        containerFrame = frame.document;
		        }	
    		    
		        containerFrame.open();			   
		        containerFrame.write(documentArray[i]);			    			    
		        containerFrame.close();
	        }	
	    wcPrint_NoPreview();  
	    }	      
	}
}

//Callback de la impresion de un documento o lista de resultados con vista previa
function wcPrint_redirection_callbackPreview(result)
{
    if (result.value == null)
    {
        PrintDocument(-1)
    }
    else if (result.value.hasNotPermission != null)
    {   
        alert(htmlNoPermissionsJavascript);
        popup.ClosePopup();
    }
    else
    {
        /*guardar los datos de estadisticas */
        wcPrint_statistic_target            = result.value.target;
        wcPrint_statistic_method            = result.value.method;
        wcPrint_statistic_tipo              = result.value.tipo;
        wcPrint_statistic_listDocumentInfo  = result.value.listDocumentInfo;
        wcPrint_statistic_checkedOption     = result.value.checkedOption;
	    
	    popup.ResizeTo(700, popup.height);
        popup.MoveTo(popup.GetPopupXCenter(), popup.GetPopupYCenter());  
        var header = document.getElementById("cHeadPopup");
        if (header != null)
        {
            header.style.display = "none";
        }      	       	
	    document.getElementById("wcPrint_GlobalDiv").style.display = "none";
	    CreateIframe(document.getElementById("wcPrintResultList"), result.value.htmlResult);		    
	    document.getElementById("wcPrint_previewDiv").style.display = "block";
	    /*fin reestructuracion*/
	    setTimeout("PaintPageNumber();",1000);
    }
}

//Funcion que se ejecuta en el onload del popup de impresion
function wcPrint_onLoad()
{    
    if (wcPrint_txt != "")
    {
        document.getElementById("wcPrint_Text_rdb3").disabled = false;
        document.getElementById("wcPrint_Text_rdb3").checked = true;
    }
    if (document.getElementById("wcPrint_Textbox_Interval") == null)
    {
        //Estamos en la exportacion de documentos
        if (!wcPrint_HasSpecification)
        {
            document.getElementById("wcPrint_Text_rdb4").disabled = true;
        }
    }
    if (wcPrint_isSpecification)
    {
        //Si es una ficha tenemos que deshabilitar el radiobutton de texto y texto con notacion
        document.getElementById("wcPrint_Text_rdb1").disabled = true;
        document.getElementById("wcPrint_Text_rdb2").disabled = true;
        document.getElementById("wcPrint_Text_rdb4").checked = true;
    }
}

//Para mostrar u ocultar la capa de cargando
function wcPrint_loading(text, loadingDiv)
{
	document.getElementById("wcPrint_div").style.display = text;
	document.getElementById("wcPrint_downloading_div").style.display = loadingDiv;
}	    

function PrintDocument(ok)
{	      
	if(ok == 0)
	{
	    // Si la estadistica guardo informacin a registrar en caso de impresin
	    // por el cliente se la enviamos de vuelta
	    if (wcPrint_statistic_target != null && wcPrint_statistic_method != null && 
	        wcPrint_statistic_tipo !=null && wcPrint_statistic_listDocumentInfo != null)
	    {
	        /*****AJAX CONTROL *****/
            target = wcPrint_statistic_target;
            method = wcPrint_statistic_method;
	        
	        var hash = new Object();
	        hash.command = "NoExecuteMethod";
	        hash.tipo = wcPrint_statistic_tipo;
	        hash.listDocumentInfo = wcPrint_statistic_listDocumentInfo;
	        hash.checkedOption = wcPrint_statistic_checkedOption;
            AjaxControl_Default(target, method, hash);
	    }
	    
	    if (navigator.appName == "Microsoft Internet Explorer")
	    {	        
	        window.frames[identifier].focus();
	        window.frames[identifier].print();
	    }
	    else
	    {		   
	        window.parent.frames[identifier].window.print();		
	    }
		popup.ClosePopup();
	}
	else
	{
	    alert(wcPrint_message_PrintError);
	    popup.ClosePopup();	    		    
	}		
}


function wcPrint_Cancel()
{
    AjaxPro.queue.abort();
}	

/**********************************************/
/* Funciones propias del popup de impresion   */
/**********************************************/    
function wcPrint_visibilityObjects(visibilityText, visibilityRadiosDocs, disabledButton)
{
    document.getElementById("wcPrint_btnPreview").disabled = disabledButton;
    document.getElementById("wcPrint_divTextBox").style.display = visibilityText;		
    document.getElementById("wcPrint_FieldSet_document").style.display = visibilityRadiosDocs;	
}

/* Esta funcion trata de validar un intervalo definido en la ventana de impresion*/
function wcPrint_longitudIntervalo() 
{
    wcPrint_docsInsert = "-";
    var intervalo = document.getElementById("wcPrint_Textbox_Interval").value;
    if(intervalo == '')
    {
        return -1;
    }
    if(intervalo.indexOf('.') >= 0) 
    {
        return -1;
    }
    
    var intervalos = intervalo.split(',');
    var longitud = 0;
    //Recorrer el conjunto de intervalos
    var error = (intervalos.length <= 0);
    var i = 0;
    
    while(i < intervalos.length && !error) 
    {
        var res = wcPrint_parsearIntervalo(intervalos[i]);
        if (res <= 0) 
        {
            error = true;
        }
        else 
        {
            longitud += res;
            i++;
        }
    }
    if (error) 
    {
        return -1;
    }
    else 
    {
        return wcPrint_listaDocumentos.length;
    }
}

/*Esta funcion indica la longitud de un intervalo dadode la forma x o bien x-y*/
function wcPrint_parsearIntervalo(intervalo) 
{           
    var partes = intervalo.split('-');
    if (partes.length == 1) 
    {
        //Es un solo numero
        if (isNaN(partes[0]) || isNaN(parseInt(partes[0]))) 
        {
            return -1;
        }
        else 
        {
            if (new Number(partes[0]) <= wcPrint_lengthResultList && new Number(partes[0]) > 0) 
            {
                if (!wcPrint_estaDocumento( partes[0])) 
                {
                    wcPrint_docsInsert += partes[0] + "-";
                    wcPrint_listaDocumentos[wcPrint_listaDocumentos.length] = parseInt(partes[0]);
                }
                return 1;
            }
            else 
            {
                return -1;
            }
        }
    }
    else if (partes.length == 2) 
    {
        if (isNaN(partes[0]) || isNaN(partes[1]) || isNaN(parseInt(partes[0])) || isNaN(parseInt(partes[1]))) 
        {
            return -1;
        }
        else 
        {
            // Iterar sobre el conjunto de numeros
            var i = new Number(partes[0]);
            var limite = new Number(partes[1]);
            var error = (i <= 0) || (limite <= i) || i > wcPrint_lengthResultList || limite > wcPrint_lengthResultList || i <= 0 || limite <= 0;
            // Ver si no esta ya el numero
            while (!error && i <= limite) 
            {
                if (!wcPrint_estaDocumento(i)) 
                {
                    wcPrint_docsInsert += i + "-";
                    wcPrint_listaDocumentos[wcPrint_listaDocumentos.length] = parseInt(i);
                }
                i++;
            }
            if (!error)
            {
                return Number(partes[1]) - Number(partes[0]) + 1;
            }
            else 
            {
                return -1;
            }
        }
    }
    else 
    {
        return -1;
    }
}

/*Esta funcion indica si el numero esta ya en el array listaDocumentos*/
function wcPrint_estaDocumento(doc) 
{
    return wcPrint_docsInsert.indexOf("-" + doc + "-") != -1;
}

/***************************************************/
/* Funciones propias del popup de previsualizacion */
/***************************************************/

/*Contabiliza el numero de paginas que se van a imprimir*/
function PageCounter() 
{
    var approximation;
    try
    {   
        approximation = document.getElementById(identifier).contentWindow.document.body.scrollHeight / 840;
        
        if (approximation < 1)
        {
            approximation = 1;
        }
        else 
        {
            approximation = Math.floor(approximation);
        }
    }
    catch (e)
    {
        approximation = 0;
    }       
    return approximation;
}

function PaintPageNumber()
{
    document.getElementById("wcPrint_numberPage_div").innerHTML = wcPrint_message_NumberPage + PageCounter();
}

function CreateIframe(obj, content)
{
    //Se crea el iframe
    identifier = idIframe + contIframe;
    contIframe++;
    var iframe = document.createElement('iframe'); 
    iframe.id = identifier;
    iframe.name = identifier;
    iframe.className = "iframeClass";  
    obj.appendChild(iframe);
    
    //Se crea una capa por encima del iframe que deshabilita el contenido del iframe para 
    //que podamos mover el popup correctamente.
    var disableIframe = document.createElement("div");
    disableIframe.id = "disableIframe";
    disableIframe.className = "disableIframe";
    obj.appendChild(disableIframe);
    
    //Se pinta el contenido  
    containerFrame = iframe.contentDocument;        
    
    if (containerFrame == undefined || containerFrame == null)
    {
	   containerFrame = iframe.contentWindow.document;
    }
   
    
    containerFrame.open();	
    containerFrame.write(content);
    containerFrame.close();   
} 
var wcExport_checkedOption="";
var wcExport_extension="";
var c = 0;
//texto seleccionado del documento
var wcExport_txt = "";
//Array que guarda los resultados de la lista de resultados que queremos exportar
var wcExport_listaDocumentos = null;
//para controlar los resultados que hemos ido insertando en el array
var wcExport_docsInsert;	
	
/***********************************************/
/* Funciones para la exportacion de resultados */
/***********************************************/	
    function wcExportVerifySelectedItems()
    {
        if (a.length > 0)
        {
            wcExport_visibilityObjects('block','none',false);
            document.getElementById("wcExport_Textbox_Interval").value = a.toString();   
            document.getElementById("wcExport_Text_rdb3").checked = true;            
        }       
    }
    
	function wcExport_convert_ResultList()
	{   
	    var checkbox_txt = null;
	    for (var j = 1; j <= 4; j++) 
        {
            checkbox_txt = eval("document.getElementById('wcExport_Text_rdb" + j + "')");
            if (checkbox_txt != null && checkbox_txt.checked)
            {
                wcExport_checkedOption = checkbox_txt.value;
                break;
            }
        }
        
        for (var j = 1; j <= 4; j++) 
        {
            checkbox_txt = eval("document.getElementById('wcExport_Format_rdb" + j + "')");
            if (checkbox_txt != null && checkbox_txt.checked)
            {
                wcExport_extension = checkbox_txt.value;
                break;
            }
        }       
		
		var longitud = 0;
		wcExport_listaDocumentos = new Array();
		if (wcExport_checkedOption == "SELECTEDRESULTS" || wcExport_checkedOption == "SELECTEDDOCUMENTS")
		{
			longitud = wcExport_longitudIntervalo();
		}
		if (wcExport_checkedOption == "ALLRESULT" || wcExport_checkedOption == "ALLDOCUMENTS")
		{
			wcExport_listaDocumentos = new Array( wcExport_lengthResultList );
			for (i = 0; i < wcExport_lengthResultList; i++)
			{
				wcExport_listaDocumentos[i] = i + 1;
			}
		}
		if ((wcExport_checkedOption == "SELECTEDRESULTS" || wcExport_checkedOption == "SELECTEDDOCUMENTS") && longitud <= 0)
		{
			alert(wcExport_message_IncorrectInterval);
			return false;
		}
		else if ((wcExport_checkedOption == "ALLDOCUMENTS" || wcExport_checkedOption == "SELECTEDDOCUMENTS") && wcExport_listaDocumentos.length > wcExport_maxDocuments)
		{
			alert(wcExport_message_NotMoreXDocuments);
			return false;
		}	
		else if ((wcExport_checkedOption == "ALLRESULT" || wcExport_checkedOption == "SELECTEDRESULTS") && wcExport_listaDocumentos.length > wcExport_maxLines)
		{
			alert(wcExport_message_NotMoreXLines);
			return false;
		}		
		else
		{
			var respuesta = true;
			if (wcExport_checkedOption == "SELECTEDDOCUMENTS" || wcExport_checkedOption == "ALLDOCUMENTS")
			{
				var wcExport_message_ConfirmExport2 = wcExport_message_ConfirmExport.replace("X" , wcExport_listaDocumentos.length.toString());
				respuesta = confirm(wcExport_message_ConfirmExport2);
			}			
			
			if (respuesta == true)
			{
				wcExport_loading("none", "block", "none");
				/*****AJAX CONTROL *****/
				var hash = new Object();
				hash.extension = wcExport_extension;
				hash.checkedOption = wcExport_checkedOption;
		        hash.documentsList = wcExport_listaDocumentos;
		        
				var checkedParts=""
				if (wcExport_checkedOption == "SELECTEDDOCUMENTS" || wcExport_checkedOption == "ALLDOCUMENTS"){
					if(document.getElementById("wcExport_Text_rdb5").checked){
					    checkedParts = document.getElementById("wcExport_Text_rdb5").value;
					}
					if(document.getElementById("wcExport_Text_rdb6").checked){
					    checkedParts = document.getElementById("wcExport_Text_rdb6").value;
					}
					if(document.getElementById("wcExport_Text_rdb7").checked){
					    checkedParts = document.getElementById("wcExport_Text_rdb7").value;
					}

					hash.tipo = "preview";
		            hash.checkedParts = checkedParts;		             
                          
                    target = "Wke.Presentation.WebControls.ExportControl";
                    method = "ConvertDocumentList";
                    
                    AjaxControl_Default(target, method, hash, wcExport_redirectionPrintDocuments_callback);
                }
                else 
				{
				    hash.tipo = "nopreview";
				   
				    target = "Wke.Presentation.WebControls.ExportControl";
                    method = "ConvertResultList";
                    
                    AjaxControl_Default(target, method, hash, wcExport_redirection_callback);
                }
			}
		}
	}
	
	function wcExport_convertFileFromResult(idd, version, parts, wcExport_extension, repositoryPath)
	{  
		wcExport_loading("none", "block", "none");
		document.getElementById("wcExport_Div_ResultList").style.display = "none";

		/*****AJAX CONTROL *****/
		var hash = new Object();
		hash.extension = wcExport_extension;
		hash.documentPart = parts;
		hash.selectedText = "";
		hash.idd = idd;
		hash.version = version;
		hash.repositoryPath = repositoryPath; //jcangel le pasamos el repositoryPath
		hash.tipo = wcExport_statistic_tipo == null ? "nopreview" : wcExport_statistic_tipo

		if (wcExport_statistic_target != null &&
		    wcExport_statistic_method != null &&
            wcExport_statistic_target == "Wke.Presentation.WebControls.ExportControl" &&
            wcExport_statistic_method == "ConvertDocumentList") {
		    hash.tipo = "preview";
		    hash.target = "Wke.Presentation.WebControls.ExportControl";
		    hash.method = "ConvertDocumentList";
		    hash.extension = wcExport_extension;
		    if (wcExport_statistic_listDocumentInfo != null)
		        hash.listDocumentInfo = wcExport_statistic_listDocumentInfo;
		}
		else
		    hash.tipo = "nopreview";
              
        target = "Wke.Presentation.WebControls.ExportControl";
        method = "ConvertFile";
        
        AjaxControl_Default(target, method, hash, wcExport_redirection_callbackNotClose);        		
    }
	
	function  wcExport_convertText()
	{
		wcExport_loading("none", "block", "none");
		var checkbox_txt = null;	    
        
        for (var j = 1; j <= 3; j++) 
        {
            checkbox_txt = eval("document.getElementById('wcExport_Format_rdb" + j + "')");             
            if (checkbox_txt.checked)
            {
                wcExport_extension = checkbox_txt.value;
                break;
            }
        }
		
		/*****AJAX CONTROL *****/
		var hash = new Object();
		hash.extension = wcExport_extension;
		hash.text = document.getElementById(wcExport_idContainer).innerHTML;
		hash.tipo = "nopreview"
        target = "Wke.Presentation.WebControls.ExportControl";
        method = "ConvertText";
        
        AjaxControl_Default(target, method, hash, wcExport_redirection_callback);       		
	}
	
	function wcExport_redirectionPrintDocuments_callback(result)
	{
	    if (result.value == null)
	    {
	        ExportDocument(-1);//Se muestra el mensaje de error
	    }
	    else
	    {
	        /*guardar los datos de estadisticas */
	        wcExport_statistic_target           = result.value.target;
	        wcExport_statistic_method           = result.value.method;
	        wcExport_statistic_tipo             = result.value.tipo;
	        wcExport_statistic_listDocumentInfo = result.value.listDocumentInfo;
	        wcExport_statistic_checkedOption    = result.value.checkedOption;
	        
	        document.getElementById("wcExport_divResult").innerHTML = result.value.resultList;
	        wcExport_loading("none", "none", "none");
	        document.getElementById("wcExport_Div_ResultList").style.display = "block";		
	    }
	}
	
	function  wcExport_redirection_callbackNotClose(result)
	{	
	    if (result.value == null)
	    {
	        ExportDocument(-1);//Se muestra el mensaje de error
	    }
	    else
	    {
	        if (result.value.tipo != null && result.value.tipo == "preview")
	            wcExport_statistic_listDocumentInfo = result.value.listDocumentInfo;
		    
		    wcExport_loading("none", "none", "none");
		    document.getElementById("wcExport_Div_ResultList").style.display = "block";	
		    if (result.value.HasNotSpecification != null)
		    {
		        alert(wcExport_message_NoSpecification);
		    }
		    else if (result.value.hasNotPermission != null)
		    {
		        alert(htmlNoPermissionsJavascript);
		    }
		    else if (result.value.hasNotAllowed != null)
		    {
		        // el usuario no puede ver el documento contra la virtualCollection.
		        alert(htmlNoPermissionsJavascript);
		    }
		    else
		    {
		        document.getElementById("btnExport").click();		    
		    }
		}
	}
	
/**********************************************/
/* Funciones para la exportacion de documento */
/**********************************************/
    function wcExport_onLoad()
    {
        if (wcExport_txt != "")
        {
            document.getElementById("wcExport_Text_rdb3").disabled = false;
            document.getElementById("wcExport_Text_rdb3").checked = true;
        }
        if (document.getElementById("wcExport_Textbox_Interval") == null)
        {
            //Estamos en la exportacion de documentos
            if (!wcExport_HasSpecification)
            {
                document.getElementById("wcExport_Text_rdb4").disabled = true;
            }
        }
        if (wcExport_isSpecification)
        {
            //Si es una ficha tenemos que deshabilitar el radiobutton de texto y texto con notacion
            document.getElementById("wcExport_Text_rdb1").disabled = true;
            document.getElementById("wcExport_Text_rdb2").disabled = true;
            document.getElementById("wcExport_Text_rdb4").checked = true;
        }
    }	
	
	function  wcExport_convertFile()
	{
		wcExport_loading("none", "block", "none");
		var parts="";
		var checkbox_txt = null;
	    for (var j = 1; j <= 4; j++) 
        {
            checkbox_txt = eval("document.getElementById('wcExport_Text_rdb" + j + "')");
            if (checkbox_txt!= null && checkbox_txt.checked)
            {
                parts = checkbox_txt.value;
                break;
            }
        }
        
        for (var j = 1; j <= 4; j++) 
        {
            checkbox_txt = eval("document.getElementById('wcExport_Format_rdb" + j + "')");
            if (checkbox_txt != null && checkbox_txt.checked)
            {
                wcExport_extension = checkbox_txt.value;
                break;
            }
        }
		
		/*****AJAX CONTROL *****/
		var hash = new Object();
		hash.extension = wcExport_extension;
		hash.documentPart = parts;
		hash.selectedText = wcExport_txt;
		//Esta variable la crea el DocumentControl cuando recupera tanto el titulo del documento 
		//como el que se debe mostrar en la exportacion e impresion de texto seleccionado
		hash.titleDocExportPrint = titleExportPrint;
		hash.idd = "";
		hash.version = "";
		hash.documentFragmentCode = documentFragmentCode != null ? documentFragmentCode : "";

		if (wcExport_statistic_target != null &&
		    wcExport_statistic_method != null &&
            wcExport_statistic_target == "Wke.Presentation.WebControls.ExportControl" &&
            wcExport_statistic_method == "ConvertDocumentList")
        {
		    hash.tipo = "preview";
		    hash.target = "Wke.Presentation.WebControls.ExportControl";
		    hash.method = "ConvertDocumentList";
		}
		else
		    hash.tipo = "nopreview";
		
		hash.checkedIsAllowed= checkedIsAllowed;
              
        target = "Wke.Presentation.WebControls.ExportControl";
        method = "ConvertFile";
        
        AjaxControl_Default(target, method, hash, wcExport_redirection_callback);       		
	}
	
	
	
	//Funcion para exportar del area personal
	function  wcExport_ConvertInfUser()
	{
		wcExport_loading("none", "block", "none");
		
		for (var j = 1; j <= 3; j++) 
        {
            checkbox_txt = eval("document.getElementById('wcExport_Format_rdb" + j + "')");             
            if (checkbox_txt.checked)
            {
                wcExport_extension = checkbox_txt.value;
                break;
            }
        }
        
		/*****AJAX CONTROL *****/
		var hash = new Object();
		hash.extension = wcExport_extension;
		hash.tipo = "nopreview";
			
		//hash.infUserCurrentService = activeTab;
		hash.infUserCurrentService = activeTab;

		if (objTree) {
		    if (objTree[activeTree]) {
		        hash.IdParent = objTree[activeTree].currentFolderID;
		        if (hash.IdParent == objTree[activeTree].UNCLASSIFIED_ITEMS_FOLDER || hash.IdParent == "sp_" + objTree[activeTree].UNCLASSIFIED_ITEMS_FOLDER || hash.IdParent == "sp_" + objTree[activeTree].ROOT_FOLDER || hash.IdParent == objTree[activeTree].ROOT_FOLDER) {
		            hash.IdParent = '';
		        }
		    }
		}
		
    target = "Wke.Presentation.WebControls.ExportControl";
    method = "ConvertInfUser";
        
    AjaxControl_Default(target, method, hash, wcExport_redirection_callback);       		
	}
/**********************************************/
/* Funciones comunes a ambas exportaciones    */
/**********************************************/
	function wcExport_loading(text, loadingDiv, messageDiv)
	{
		document.getElementById("wcExport_div").style.display = text;
		document.getElementById("wcExport_downloading_div").style.display = loadingDiv;
		if (document.getElementById("wcExport_divMessage") != null)
		{
			document.getElementById("wcExport_divMessage").style.display = messageDiv;
		}
	}
	function  wcExport_redirection_callback(result)
	{	
	    if (result.value == null)
	    {
	        ExportDocument(-1);//Se muestra el mensaje de error
	    }
	    else
	    {  		    
		    if (result.value.hasNotPermission != null)
		    {
		        alert(htmlNoPermissionsJavascript);
		        popup.ClosePopup();
		    }
		    else
		    {
		        ExportDocument(0);
		    }
		}
	}
	
	function ExportDocument(ok)
	{					
		
		if(ok == 0)
		{
		    popup.ClosePopup();
			document.getElementById("btnExport").click();
		}
		else
		{
		    alert(wcExport_message_ExportError);
		    popup.ClosePopup();
		}		
	}
	
	function wcExport_Cancel()
	{
	    AjaxPro.queue.abort();

	    // Al salir mandamos la información que haya pendiente de registrar en estadisticas
	    if (wcExport_statistic_target!=null && wcExport_statistic_method != null &&
	    	wcExport_statistic_tipo != null && wcExport_statistic_listDocumentInfo != null)
	    {
	        /*****AJAX CONTROL *****/
	        target = wcExport_statistic_target;
	        method = wcExport_statistic_method;

	        var hash = new Object();
	        hash.command = "NoExecuteMethod";
	        hash.tipo = "nopreview";
	        hash.extension = wcExport_extension;
	        hash.listDocumentInfo = wcExport_statistic_listDocumentInfo;
	        hash.checkedOption = wcExport_statistic_checkedOption;
	        AjaxControl_Default(target, method, hash);

	        wcExport_statistic_target = null;
	        wcExport_statistic_method = null;
	        wcExport_statistic_tipo = null;
	        wcExport_statistic_listDocumentInfo = null;
	        wcExport_statistic_checkedOption = null;
	    }
	}
	
/**********************************************/
/* Funciones propias del popup de exportacion */
/**********************************************/	
	function wcExport_visibilityObjects( visibilityText , visibilityRadiosDocs )
	{
		document.getElementById("wcExport_divTextBox").style.display = visibilityText;		
		document.getElementById("wcExport_FieldSet_document").style.display = visibilityRadiosDocs;	
	}

	/*Esta funcion trata de validar un intervalo definido en la ventana de impresion*/
	function wcExport_longitudIntervalo() 
	{   
	    wcExport_docsInsert = "-";
        var intervalo = document.getElementById("wcExport_Textbox_Interval").value;
        if(intervalo == ''){
            return -1;
        }
        if(intervalo.indexOf('.') >= 0) {
            return -1;
        }
        
        var intervalos = intervalo.split(',');
        var longitud = 0;
        // Recorrer el conjunto de intervalos
        var error = (intervalos.length <= 0);
        var i = 0;
        while(i < intervalos.length && !error) {
            var res = wcExport_parsearIntervalo(intervalos[i]);
            if (res <= 0) {
                error = true;
            }
            else {
                longitud += res;
                i++;
            }
        }
        if (error) {
            return -1;
        }
        else {
            return wcExport_listaDocumentos.length;
        }
    } 
		
    /*Esta funcion indica la longitud de un intervalo dado de la forma x o bien x-y*/
    function wcExport_parsearIntervalo(intervalo) 
    {		 
        var partes = intervalo.split('-');
        if (partes.length == 1) {
            // Es un solo numero
            if (isNaN(partes[0]) || isNaN(parseInt(partes[0]))) {
                return -1;
            }
            else {
                if (new Number(partes[0]) <= wcExport_lengthResultList && new Number(partes[0]) > 0) {
                    if (!wcExport_estaDocumento( partes[0])) {
                        wcExport_docsInsert += partes[0] + "-";
                        wcExport_listaDocumentos[wcExport_listaDocumentos.length] = parseInt(partes[0]);
                    }
                    return 1;
                }
                else {
                    return -1;
                }
            }
        }
        else if (partes.length == 2) {
            if (isNaN(partes[0]) || isNaN(partes[1]) || isNaN(parseInt(partes[0])) || isNaN(parseInt(partes[1]))) {
                return -1;
            }
            else {
            
                // Iterar sobre el conjunto de numeros
                var i = new Number(partes[0]);
                var limite = new Number(partes[1]);
                var error = (i <= 0) || (limite <= i) || i > wcExport_lengthResultList || limite > wcExport_lengthResultList || i <= 0 || limite <= 0;
                
                // Ver si no esta ya el numero
                while (!error && i <= limite) {
                    if (!wcExport_estaDocumento(i)) {
                        wcExport_docsInsert += i + "-";
                        wcExport_listaDocumentos[wcExport_listaDocumentos.length] = parseInt(i);
                    }
                    i++;
                }
                if (!error) {
                    return Number(partes[1]) - Number(partes[0]) + 1;
                }
                else return -1;
            }
        }
        else {
            return -1;
        }
    }

	 /*Esta funcion indica si el numero esta ya en el array listaDocumentos*/
	function wcExport_estaDocumento(doc) 
	{
		return wcExport_docsInsert.indexOf("-" + doc + "-") != -1;
	}    
