//f421ccf91c09ef6a7b8ea3a5b15b701e
//-----------
//---------------------------------+
//  CARPE  S l i d e r        1.5  |
//  2006 - 01 - 03                 |
//  By Tom Hermansson Snickars     |
//  Copyright CARPE Design         |
//  http://carpe.ambiprospect.com/ |
//  Contact for custom scripts     |
//  or implementation help.        |
//---------------------------------+

// Global vars. You don't need to make changes here to change your sliders.
// Changing the attributes in your (X)HTML file is enough.
var carpeDefaultSliderLength      = 150
var carpeSliderDefaultOrientation = 'horizontal'
var carpeSliderClassName          = 'carpe_slider'
var carpeSliderDisplayClassName   = 'carpe_slider_display'

// carpeGetElementsByClass: Cross-browser function that returns
// an array with all elements that have a class attribute that
// contains className
function carpeGetElementsByClass(className)
{
	var classElements = new Array()
	var els = document.getElementsByTagName("*")
	var elsLen = els.length
	var pattern = new RegExp("\\b" + className + "\\b")
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i]
			j++
		}
	}
	return classElements;
}
// carpeLeft: Cross-browser version of "element.style.left"
// Returns or sets the horizontal position of an element.
function carpeLeft(elmnt, pos)
{
	if (!(elmnt = document.getElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.left) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.left = pos + 'px';
		else {
			pos = parseInt(elmnt.style.left);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelLeft) {
		if (typeof(pos) == 'number') elmnt.style.pixelLeft = pos;
		else pos = elmnt.style.pixelLeft;
	}
	return pos;
}

// moveSlider: Handles slider and display while dragging
function moveSlider(evnt)
{
	var evnt = (!evnt) ? window.event : evnt; // The mousemove event
	if (mouseover) { // Only if slider is dragged
		x = slider.startOffsetX + evnt.screenX // Horizontal mouse position relative to allowed slider positions
		//y = slider.startOffsetY + evnt.screenY // Horizontal mouse position relative to allowed slider positions
		y = parseInt(slider.style.top);
		if (x > slider.xMax) x = slider.xMax // Limit horizontal movement
		tipo_slider = slider.getAttribute('tipo');
		end_slider = slider.getAttribute('endslice');
		if (end_slider != '')
		{
			if ((tipo_slider == 'izq') && ((x + 10) > parseInt(document.getElementById(end_slider).style.left)))  x = (parseInt(document.getElementById(end_slider).style.left) - 10);
			if ((tipo_slider == 'der') && ((x - 10) < parseInt(document.getElementById(end_slider).style.left)))  x = (parseInt(document.getElementById(end_slider).style.left) + 10);
            //Hack para sliders de opiniones de usuarios
            if ((tipo_slider == 'izq2') && ((x + 18) > parseInt(document.getElementById(end_slider).style.left)))  x = (parseInt(document.getElementById(end_slider).style.left) - 18);
            if ((tipo_slider == 'der2') && ((x - 18) < parseInt(document.getElementById(end_slider).style.left)))  x = (parseInt(document.getElementById(end_slider).style.left) + 18);
		}
		if (x < 0) x = 0 // Limit horizontal movement
		if (y > slider.yMax) y = slider.yMax // Limit vertical movement
		if (y < 0) y = 0 // Limit vertical movement
		carpeLeft(slider.id, x)  // move slider to new horizontal position
		//carpeTop(slider.id, y) // move slider to new vertical position
		
		sliderVal = x + y // pixel value of slider regardless of orientation
		sliderPos = (slider.distance / display.valuecount) * 
			Math.round(display.valuecount * sliderVal / slider.distance)
        if ((tipo_slider == 'izq2') ||(tipo_slider == 'der2')){
		v = Math.round((sliderPos * slider.scale + slider.from) * // calculate display value
			Math.pow(18, display.decimals)) / Math.pow(18, display.decimals)
        }else{
        v = Math.round((sliderPos * slider.scale + slider.from) * // calculate display value
            Math.pow(10, display.decimals)) / Math.pow(10, display.decimals)
        }
		display.value = v; // put the new value in the slider display element
	
		if ((tipo_slider == 'der') ||(tipo_slider == 'der2')) 
		{
			slider.setAttribute('max',v);
			if (end_slider != '') $(end_slider).setAttribute('max',v);
			
		}
		
		if ((tipo_slider == 'izq2') ||(tipo_slider == 'izq'))
		{
			slider.setAttribute('min',v);
			if (end_slider != '') $(end_slider).setAttribute('min',v);
		}
		
		return false
	}
	return
}
// slide: Handles the start of a slider move.
function slide(evnt)
{
	if (!evnt) evnt = window.event; // Get the mouse event causing the slider activation.
	slider = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated slider element.
	dist = parseInt(slider.getAttribute('distance')) // The allowed slider movement in pixels.
	slider.distance = dist ? dist : carpeDefaultSliderLength // Deafault distance from global var.
	ori = slider.getAttribute('orientation') // Slider orientation: 'horizontal' or 'vertical'.
	orientation = ((ori == 'horizontal') || (ori == 'vertical')) ? ori : carpeSliderDefaultOrientation
		// Default orientation from global variable.
	displayId = slider.getAttribute('display') // ID of associated display element.
	display = document.getElementById(displayId) // Get the associated display element.
	display.sliderId = slider.id // Associate the display with the correct slider.
	dec = parseInt(display.getAttribute('decimals')) // Number of decimals to be displayed.
	display.decimals = dec ? dec : 0 // Default number of decimals: 0.
	val = parseInt(display.getAttribute('valuecount'))  // Allowed number of values in the interval.
	display.valuecount = val ? val : slider.distance + 1 // Default number of values: the sliding distance.
	from = parseFloat(display.getAttribute('from')) // Min/start value for the display.
	from = from ? from : 0 // Default min/start value: 0.
	to = parseFloat(display.getAttribute('to')) // Max value for the display.
	to = to ? to : slider.distance // Default number of values: the sliding distance.
	slider.scale = (to - from) / slider.distance // Slider-display scale [value-change per pixel of movement].
	if (orientation == 'vertical') { // Set limits and scale for vertical sliders.
		slider.from = to // Invert for vertical sliders. "Higher is more."
		slider.xMax = 0
		slider.yMax = slider.distance
		slider.scale = -slider.scale // Invert scale for vertical sliders. "Higher is more."
	}
	else { // Set limits for horizontal sliders.
		slider.from = from
		slider.xMax = slider.distance
		slider.yMax = 0
	}
	slider.startOffsetX = carpeLeft(slider.id) - evnt.screenX // Slider-mouse horizontal offset at start of slide.
	mouseover = true
	document.onmousemove = moveSlider // Start the action if the mouse is dragged.
	document.onmouseup = sliderMouseUp // Stop sliding.
	return false
}
// sliderMouseUp: Handles the mouseup event after moving a slider.
// Snaps the slider position to allowed/displayed value. 
function sliderMouseUp()
{
	if (mouseover) {
		v = (display.value) ? display.value : 0 // Find last display value.
		pos = (v - slider.from)/(slider.scale) // Calculate slider position (regardless of orientation).
		if (slider.yMax == 0) {
			pos = (pos > slider.xMax) ? slider.xMax : pos
			pos = (pos < 0) ? 0 : pos
			carpeLeft(slider.id, pos) // Snap horizontal slider to corresponding display position.
		}
		/*
		if (slider.xMax == 0) {
			pos = (pos > slider.yMax) ? slider.yMax : pos
			pos = (pos < 0) ? 0 : pos
			carpeTop(slider.id, pos) // Snap vertical slider to corresponding display position.
		}
		*/
		if (document.removeEventListener) { // Remove event listeners from 'document' (W3C).
			document.removeEventListener('mousemove', moveSlider, false)
			document.removeEventListener('mouseup', sliderMouseUp, false)
		}
		else if (document.detachEvent) { // Remove event listeners from 'document' (IE).
			document.detachEvent('onmousemove', moveSlider)
			document.detachEvent('onmouseup', sliderMouseUp)
		}
		
		// Llamamamos a la funcion callback;
		callback = eval(slider.getAttribute('callback'));
		callback(slider.getAttribute('min'), slider.getAttribute('max'));

	}
	mouseover = false // Stop the sliding.
}
function focusDisplay(evnt)
{
	if (!evnt) evnt = window.event; // Get the mouse event causing the display activation.
	display = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated display element.
	lock = display.getAttribute('typelock') // Is the user allowed to type into the display?
	if (lock == 'on') {
		display.blur()
	}
	return
}//-----------
/* Copyright (c) 2007, Yahoo! Inc. All rights reserved.  Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt version: 2.3.1 */
YAHOO.util.DataSource=function(B,D){if(D&&(D.constructor==Object)){for(var C in D){if(C){this[C]=D[C];}}}if(!B){return ;}if(B.nodeType&&B.nodeType==9){this.dataType=YAHOO.util.DataSource.TYPE_XML;}else{if(YAHOO.lang.isArray(B)){this.dataType=YAHOO.util.DataSource.TYPE_JSARRAY;}else{if(YAHOO.lang.isString(B)){this.dataType=YAHOO.util.DataSource.TYPE_XHR;}else{if(YAHOO.lang.isFunction(B)){this.dataType=YAHOO.util.DataSource.TYPE_JSFUNCTION;}else{if(B.nodeName&&(B.nodeName.toLowerCase()=="table")){this.dataType=YAHOO.util.DataSource.TYPE_HTMLTABLE;}else{if(YAHOO.lang.isObject(B)){this.dataType=YAHOO.util.DataSource.TYPE_JSON;}else{this.dataType=YAHOO.util.DataSource.TYPE_UNKNOWN;}}}}}}this.liveData=B;this._oQueue={interval:null,conn:null,requests:[]};var A=this.maxCacheEntries;if(!YAHOO.lang.isNumber(A)||(A<0)){A=0;}if(A>0&&!this._aCache){this._aCache=[];}this._sName="DataSource instance"+YAHOO.util.DataSource._nIndex;YAHOO.util.DataSource._nIndex++;this.createEvent("cacheRequestEvent");this.createEvent("cacheResponseEvent");this.createEvent("requestEvent");this.createEvent("responseEvent");this.createEvent("responseParseEvent");this.createEvent("responseCacheEvent");this.createEvent("dataErrorEvent");this.createEvent("cacheFlushEvent");};YAHOO.augment(YAHOO.util.DataSource,YAHOO.util.EventProvider);YAHOO.util.DataSource.TYPE_UNKNOWN=-1;YAHOO.util.DataSource.TYPE_JSARRAY=0;YAHOO.util.DataSource.TYPE_JSFUNCTION=1;YAHOO.util.DataSource.TYPE_XHR=2;YAHOO.util.DataSource.TYPE_JSON=3;YAHOO.util.DataSource.TYPE_XML=4;YAHOO.util.DataSource.TYPE_TEXT=5;YAHOO.util.DataSource.TYPE_HTMLTABLE=6;YAHOO.util.DataSource.ERROR_DATAINVALID="Invalid data";YAHOO.util.DataSource.ERROR_DATANULL="Null data";YAHOO.util.DataSource._nIndex=0;YAHOO.util.DataSource._nTransactionId=0;YAHOO.util.DataSource.prototype._sName=null;YAHOO.util.DataSource.prototype._aCache=null;YAHOO.util.DataSource.prototype._oQueue=null;YAHOO.util.DataSource.prototype.maxCacheEntries=0;YAHOO.util.DataSource.prototype.liveData=null;YAHOO.util.DataSource.prototype.dataType=YAHOO.util.DataSource.TYPE_UNKNOWN;YAHOO.util.DataSource.prototype.responseType=YAHOO.util.DataSource.TYPE_UNKNOWN;YAHOO.util.DataSource.prototype.responseSchema=null;YAHOO.util.DataSource.prototype.connMgr=null;YAHOO.util.DataSource.prototype.connXhrMode="allowAll";YAHOO.util.DataSource.prototype.connMethodPost=false;YAHOO.util.DataSource.prototype.connTimeout=0;YAHOO.util.DataSource.parseString=function(B){if(!YAHOO.lang.isValue(B)){return null;}var A=B+"";if(YAHOO.lang.isString(A)){return A;}else{return null;}};YAHOO.util.DataSource.parseNumber=function(B){var A=B*1;if(YAHOO.lang.isNumber(A)){return A;}else{return null;}};YAHOO.util.DataSource.convertNumber=function(A){return YAHOO.util.DataSource.parseNumber(A);};YAHOO.util.DataSource.parseDate=function(B){var A=null;if(!(B instanceof Date)){A=new Date(B);}else{return B;}if(A instanceof Date){return A;}else{return null;}};YAHOO.util.DataSource.convertDate=function(A){return YAHOO.util.DataSource.parseDate(A);};YAHOO.util.DataSource.prototype.toString=function(){return this._sName;};YAHOO.util.DataSource.prototype.getCachedResponse=function(H,B,G){var A=this._aCache;var D=(A)?A.length:0;var F=null;if((this.maxCacheEntries>0)&&A&&(D>0)){this.fireEvent("cacheRequestEvent",{request:H,callback:B,caller:G});for(var E=D-1;E>=0;E--){var C=A[E];if(this.isCacheHit(H,C.request)){F=C.response;A.splice(E,1);this.addToCache(H,F);this.fireEvent("cacheResponseEvent",{request:H,response:F,callback:B,caller:G});break;}}}return F;};YAHOO.util.DataSource.prototype.isCacheHit=function(A,B){return(A===B);};YAHOO.util.DataSource.prototype.addToCache=function(D,C){var A=this._aCache;if(!A){return ;}while(A.length>=this.maxCacheEntries){A.shift();}var B={request:D,response:C};A.push(B);this.fireEvent("responseCacheEvent",{request:D,response:C});};YAHOO.util.DataSource.prototype.flushCache=function(){if(this._aCache){this._aCache=[];this.fireEvent("cacheFlushEvent");}};YAHOO.util.DataSource.prototype.sendRequest=function(D,A,C){var B=this.getCachedResponse(D,A,C);if(B){A.call(C,D,B);return null;}return this.makeConnection(D,A,C);};YAHOO.util.DataSource.prototype.makeConnection=function(A,P,K){this.fireEvent("requestEvent",{request:A,callback:P,caller:K});var D=null;var L=YAHOO.util.DataSource._nTransactionId++;switch(this.dataType){case YAHOO.util.DataSource.TYPE_JSFUNCTION:D=this.liveData(A);this.handleResponse(A,D,P,K,L);break;case YAHOO.util.DataSource.TYPE_XHR:var N=this;var C=this.connMgr||YAHOO.util.Connect;var G=this._oQueue;var J=function(Q){if(Q&&(this.connXhrMode=="ignoreStaleResponses")&&(Q.tId!=G.conn.tId)){return null;}else{if(!Q){this.fireEvent("dataErrorEvent",{request:A,callback:P,caller:K,message:YAHOO.util.DataSource.ERROR_DATANULL});P.call(K,A,Q,true);return null;}else{this.handleResponse(A,Q,P,K,L);}}};var O=function(Q){this.fireEvent("dataErrorEvent",{request:A,callback:P,caller:K,message:YAHOO.util.DataSource.ERROR_DATAINVALID});if((this.liveData.lastIndexOf("?")!==this.liveData.length-1)&&(A.indexOf("?")!==0)){}P.call(K,A,Q,true);return null;};var I={success:J,failure:O,scope:this};if(YAHOO.lang.isNumber(this.connTimeout)){I.timeout=this.connTimeout;}if(this.connXhrMode=="cancelStaleRequests"){if(G.conn){if(C.abort){C.abort(G.conn);G.conn=null;}else{}}}if(C&&C.asyncRequest){var B=this.liveData;var H=this.connMethodPost;var M=(H)?"POST":"GET";var E=(H)?B:B+A;var F=(H)?A:null;if(this.connXhrMode!="queueRequests"){G.conn=C.asyncRequest(M,E,I,F);}else{if(G.conn){G.requests.push({request:A,callback:I});if(!G.interval){G.interval=setInterval(function(){if(C.isCallInProgress(G.conn)){return ;}else{if(G.requests.length>0){E=(H)?B:B+G.requests[0].request;F=(H)?G.requests[0].request:null;G.conn=C.asyncRequest(M,E,G.requests[0].callback,F);G.requests.shift();}else{clearInterval(G.interval);G.interval=null;}}},50);}}else{G.conn=C.asyncRequest(M,E,I,F);}}}else{P.call(K,A,null,true);}break;default:D=this.liveData;this.handleResponse(A,D,P,K,L);
break;}return L;};YAHOO.util.DataSource.prototype.handleResponse=function(E,C,B,D,H){this.fireEvent("responseEvent",{request:E,response:C,callback:B,caller:D,tId:H});var G=(this.dataType==YAHOO.util.DataSource.TYPE_XHR)?true:false;var F=null;var A=false;C=this.doBeforeParseData(E,C);switch(this.responseType){case YAHOO.util.DataSource.TYPE_JSARRAY:if(G&&C.responseText){C=C.responseText;}F=this.parseArrayData(E,C);break;case YAHOO.util.DataSource.TYPE_JSON:if(G&&C.responseText){C=C.responseText;}F=this.parseJSONData(E,C);break;case YAHOO.util.DataSource.TYPE_HTMLTABLE:if(G&&C.responseText){C=C.responseText;}F=this.parseHTMLTableData(E,C);break;case YAHOO.util.DataSource.TYPE_XML:if(G&&C.responseXML){C=C.responseXML;}F=this.parseXMLData(E,C);break;case YAHOO.util.DataSource.TYPE_TEXT:if(G&&C.responseText){C=C.responseText;}F=this.parseTextData(E,C);break;default:break;}if(F){F.tId=H;F=this.doBeforeCallback(E,C,F);this.fireEvent("responseParseEvent",{request:E,response:F,callback:B,caller:D});this.addToCache(E,F);}else{this.fireEvent("dataErrorEvent",{request:E,callback:B,caller:D,message:YAHOO.util.DataSource.ERROR_DATANULL});F={error:true};}B.call(D,E,F);};YAHOO.util.DataSource.prototype.doBeforeParseData=function(B,A){return A;};YAHOO.util.DataSource.prototype.doBeforeCallback=function(B,A,C){return C;};YAHOO.util.DataSource.prototype.parseArrayData=function(A,B){if(YAHOO.lang.isArray(B)&&YAHOO.lang.isArray(this.responseSchema.fields)){var J={results:[]};var G=this.responseSchema.fields;for(var E=B.length-1;E>-1;E--){var F={};for(var C=G.length-1;C>-1;C--){var H=G[C];var I=(YAHOO.lang.isValue(H.key))?H.key:H;var D=(YAHOO.lang.isValue(B[E][C]))?B[E][C]:B[E][I];if(!H.parser&&H.converter){H.parser=H.converter;}if(H.parser){D=H.parser.call(this,D);}if(D===undefined){D=null;}F[I]=D;}J.results.unshift(F);}return J;}else{return null;}};YAHOO.util.DataSource.prototype.parseTextData=function(A,B){var N={};if(YAHOO.lang.isString(B)&&YAHOO.lang.isArray(this.responseSchema.fields)&&YAHOO.lang.isString(this.responseSchema.recordDelim)&&YAHOO.lang.isString(this.responseSchema.fieldDelim)){N.results=[];var K=this.responseSchema.recordDelim;var G=this.responseSchema.fieldDelim;var J=this.responseSchema.fields;if(B.length>0){var C=B.length-K.length;if(B.substr(C)==K){B=B.substr(0,C);}var O=B.split(K);for(var F=O.length-1;F>-1;F--){var I={};for(var D=J.length-1;D>-1;D--){var H=O[F].split(G);var E=H[D];if(E.charAt(0)=="\""){E=E.substr(1);}if(E.charAt(E.length-1)=="\""){E=E.substr(0,E.length-1);}var L=J[D];var M=(YAHOO.lang.isValue(L.key))?L.key:L;if(!L.parser&&L.converter){L.parser=L.converter;}if(L.parser){E=L.parser.call(this,E);}if(E===undefined){E=null;}I[M]=E;}N.results.unshift(I);}}}else{N.error=true;}return N;};YAHOO.util.DataSource.prototype.parseXMLData=function(A,C){var I=false;var M={};var D=(this.responseSchema.resultNode)?C.getElementsByTagName(this.responseSchema.resultNode):null;if(!D||!YAHOO.lang.isArray(this.responseSchema.fields)){I=true;}else{M.results=[];for(var F=D.length-1;F>=0;F--){var N=D.item(F);var H={};for(var E=this.responseSchema.fields.length-1;E>=0;E--){var J=this.responseSchema.fields[E];var L=(YAHOO.lang.isValue(J.key))?J.key:J;var G=null;var B=N.attributes.getNamedItem(L);if(B){G=B.value;}else{var K=N.getElementsByTagName(L);if(K&&K.item(0)&&K.item(0).firstChild){G=K.item(0).firstChild.nodeValue;}else{G="";}}if(!J.parser&&J.converter){J.parser=J.converter;}if(J.parser){G=J.parser.call(this,G);}if(G===undefined){G=null;}H[L]=G;}M.results.unshift(H);}}if(I){M.error=true;}else{}return M;};YAHOO.util.DataSource.prototype.parseJSONData=function(oRequest,oRawResponse){var oParsedResponse={};if(oRawResponse&&YAHOO.lang.isArray(this.responseSchema.fields)){var fields=this.responseSchema.fields;var bError=false;oParsedResponse.results=[];var jsonObj,jsonList;if(YAHOO.lang.isString(oRawResponse)){var isNotMac=(navigator.userAgent.toLowerCase().indexOf("khtml")==-1);if(oRawResponse.parseJSON&&isNotMac){jsonObj=oRawResponse.parseJSON();if(!jsonObj){bError=true;}}else{if(window.JSON&&JSON.parse&&isNotMac){jsonObj=JSON.parse(oRawResponse);if(!jsonObj){bError=true;}}else{try{while(oRawResponse.length>0&&(oRawResponse.charAt(0)!="{")&&(oRawResponse.charAt(0)!="[")){oRawResponse=oRawResponse.substring(1,oRawResponse.length);}if(oRawResponse.length>0){var objEnd=Math.max(oRawResponse.lastIndexOf("]"),oRawResponse.lastIndexOf("}"));oRawResponse=oRawResponse.substring(0,objEnd+1);jsonObj=eval("("+oRawResponse+")");if(!jsonObj){bError=true;}}else{jsonObj=null;bError=true;}}catch(e){bError=true;}}}}else{if(oRawResponse.constructor==Object){jsonObj=oRawResponse;}else{bError=true;}}if(jsonObj&&jsonObj.constructor==Object){try{jsonList=eval("jsonObj."+this.responseSchema.resultsList);}catch(e){bError=true;}}if(bError||!jsonList){oParsedResponse.error=true;}if(jsonList&&!YAHOO.lang.isArray(jsonList)){jsonList=[jsonList];}else{if(!jsonList){jsonList=[];}}for(var i=jsonList.length-1;i>=0;i--){var oResult={};var jsonResult=jsonList[i];for(var j=fields.length-1;j>=0;j--){var field=fields[j];var key=(YAHOO.lang.isValue(field.key))?field.key:field;var data=eval("jsonResult."+key);if(!field.parser&&field.converter){field.parser=field.converter;}if(field.parser){data=field.parser.call(this,data);}if(data===undefined){data=null;}oResult[key]=data;}oParsedResponse.results.unshift(oResult);}}else{oParsedResponse.error=true;}return oParsedResponse;};YAHOO.util.DataSource.prototype.parseHTMLTableData=function(B,C){var K=false;var L=C;var J=this.responseSchema.fields;var O={};O.results=[];for(var H=0;H<L.tBodies.length;H++){var D=L.tBodies[H];for(var F=D.rows.length-1;F>-1;F--){var A=D.rows[F];var I={};for(var E=J.length-1;E>-1;E--){var M=J[E];var N=(YAHOO.lang.isValue(M.key))?M.key:M;var G=A.cells[E].innerHTML;if(!M.parser&&M.converter){M.parser=M.converter;}if(M.parser){G=M.parser.call(this,G);}if(G===undefined){G=null;}I[N]=G;}O.results.unshift(I);}}if(K){O.error=true;}else{}return O;};YAHOO.register("datasource",YAHOO.util.DataSource,{version:"2.3.1",build:"541"});
/* Copyright (c) 2007, Yahoo! Inc. All rights reserved.  Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt version: 2.3.1 */
YAHOO.widget.DataTable=function(D,C,A,B){this._nIndex=YAHOO.widget.DataTable._nCount;this._sName="instance"+this._nIndex;this.id="yui-dt"+this._nIndex;this._initContainerEl(D);if(!this._elContainer){return ;}this._initConfigs(B);this._initColumnSet(C);if(!this._oColumnSet){return ;}this._initRecordSet();if(!this._oRecordSet){return ;}this._initDataSource(A);if(!this._oDataSource){return ;}if(this._oDataSource.dataType==YAHOO.util.DataSource.TYPE_HTMLTABLE){this._oDataSource.sendRequest(this.get("initialRequest"),this._onDataReturnEnhanceTable,this);}else{this._initTableEl();if(!this._elTable||!this._elThead||!this._elTbody){return ;}YAHOO.widget.DataTable.superclass.constructor.call(this,this._elContainer,this._oConfigs);if(this._oConfigs&&this._oConfigs.paginator){this.updatePaginator(this._oConfigs.paginator);}this._oDataSource.sendRequest(this.get("initialRequest"),this.onDataReturnInitializeTable,this);}this._initCellEditorEl();this._initColumnSort();this._initDomEvents();YAHOO.widget.DataTable._nCount++;};if(YAHOO.util.Element){YAHOO.lang.extend(YAHOO.widget.DataTable,YAHOO.util.Element);}else{}YAHOO.widget.DataTable.prototype.initAttributes=function(A){A=A||{};YAHOO.widget.DataTable.superclass.initAttributes.call(this,A);this.setAttributeConfig("summary",{value:null,validator:YAHOO.lang.isString,method:function(B){this._elTable.summary=B;}});this.setAttributeConfig("selectionMode",{value:"standard",validator:YAHOO.lang.isString});this.setAttributeConfig("initialRequest",{value:"",validator:YAHOO.lang.isString});this.setAttributeConfig("sortedBy",{value:null,validator:function(B){return(B&&(B.constructor==Object)&&B.key);},method:function(B){var C=this.get("sortedBy");if(C&&(C.constructor==Object)&&C.key){var E=this._oColumnSet.getColumn(C.key);var D=this.getThEl(E);YAHOO.util.Dom.removeClass(D,YAHOO.widget.DataTable.CLASS_ASC);YAHOO.util.Dom.removeClass(D,YAHOO.widget.DataTable.CLASS_DESC);}var F=(B.column)?B.column:this._oColumnSet.getColumn(B.key);if(F){var G=(B.dir&&(B.dir!="asc"))?YAHOO.widget.DataTable.CLASS_DESC:YAHOO.widget.DataTable.CLASS_ASC;YAHOO.util.Dom.addClass(this.id+"-col"+F.getId(),G);}}});this.setAttributeConfig("paginator",{value:{rowsPerPage:500,currentPage:1,startRecordIndex:0,totalRecords:0,totalPages:0,rowsThisPage:0,pageLinks:0,pageLinksStart:1,dropdownOptions:null,containers:[],dropdowns:[],links:[]},validator:function(B){if(B&&(B.constructor==Object)){if((B.rowsPerPage!==undefined)&&(B.currentPage!==undefined)&&(B.startRecordIndex!==undefined)&&(B.totalRecords!==undefined)&&(B.totalPages!==undefined)&&(B.rowsThisPage!==undefined)&&(B.pageLinks!==undefined)&&(B.pageLinksStart!==undefined)&&(B.dropdownOptions!==undefined)&&(B.containers!==undefined)&&(B.dropdowns!==undefined)&&(B.links!==undefined)){if(YAHOO.lang.isNumber(B.rowsPerPage)&&YAHOO.lang.isNumber(B.currentPage)&&YAHOO.lang.isNumber(B.startRecordIndex)&&YAHOO.lang.isNumber(B.totalRecords)&&YAHOO.lang.isNumber(B.totalPages)&&YAHOO.lang.isNumber(B.rowsThisPage)&&YAHOO.lang.isNumber(B.pageLinks)&&YAHOO.lang.isNumber(B.pageLinksStart)&&YAHOO.lang.isArray(B.dropdownOptions)&&YAHOO.lang.isArray(B.containers)&&YAHOO.lang.isArray(B.dropdowns)&&YAHOO.lang.isArray(B.links)){return true;}}}return false;}});this.setAttributeConfig("paginated",{value:false,validator:YAHOO.lang.isBoolean,method:function(B){var F=this.get("paginator");var E=F.containers;var D;if(B){if(E.length===0){var J=document.createElement("span");J.id=this.id+"-paginator0";YAHOO.util.Dom.addClass(J,YAHOO.widget.DataTable.CLASS_PAGINATOR);J=this._elContainer.insertBefore(J,this._elTable);E.push(J);var H=document.createElement("span");H.id=this.id+"-paginator1";YAHOO.util.Dom.addClass(H,YAHOO.widget.DataTable.CLASS_PAGINATOR);H=this._elContainer.insertBefore(H,this._elTable.nextSibling);E.push(H);this._configs.paginator.value.containers=[J,H];}else{for(D=0;D<E.length;D++){E[D].style.display="";}}if(F.pageLinks>-1){var I=F.links;if(I.length===0){for(D=0;D<E.length;D++){var G=document.createElement("span");G.id="yui-dt-pagselect"+D;G=E[D].appendChild(G);YAHOO.util.Event.addListener(G,"click",this._onPaginatorLinkClick,this);this._configs.paginator.value.links.push(G);}}}var K=F.dropdownOptions||[];for(D=0;D<E.length;D++){var C=document.createElement("select");YAHOO.util.Dom.addClass(C,YAHOO.widget.DataTable.CLASS_DROPDOWN);C=E[D].appendChild(C);C.id="yui-dt-pagselect"+D;YAHOO.util.Event.addListener(C,"change",this._onPaginatorDropdownChange,this);this._configs.paginator.value.dropdowns.push(C);if(!F.dropdownOptions){C.style.display="none";}}}else{if(E.length>0){for(D=0;D<E.length;D++){E[D].style.display="none";}}}}});this.setAttributeConfig("caption",{value:null,validator:YAHOO.lang.isString,method:function(B){if(!this._elCaption){if(!this._elTable.firstChild){this._elCaption=this._elTable.appendChild(document.createElement("caption"));}else{this._elCaption=this._elTable.insertBefore(document.createElement("caption"),this._elTable.firstChild);}}this._elCaption.innerHTML=B;}});this.setAttributeConfig("scrollable",{value:false,validator:function(B){return(YAHOO.lang.isBoolean(B)&&!YAHOO.lang.isString(this.get("caption")));},method:function(B){if(B){YAHOO.util.Dom.addClass(this._elContainer,YAHOO.widget.DataTable.CLASS_SCROLLABLE);YAHOO.util.Dom.addClass(this._elTbody,YAHOO.widget.DataTable.CLASS_SCROLLBODY);}else{YAHOO.util.Dom.removeClass(this._elContainer,YAHOO.widget.DataTable.CLASS_SCROLLABLE);YAHOO.util.Dom.removeClass(this._elTbody,YAHOO.widget.DataTable.CLASS_SCROLLBODY);}}});};YAHOO.widget.DataTable.CLASS_TABLE="yui-dt-table";YAHOO.widget.DataTable.CLASS_HEADER="yui-dt-header";YAHOO.widget.DataTable.CLASS_BODY="yui-dt-body";YAHOO.widget.DataTable.CLASS_SCROLLBODY="yui-dt-scrollbody";YAHOO.widget.DataTable.CLASS_LABEL="yui-dt-label";YAHOO.widget.DataTable.CLASS_RESIZER="yui-dt-resizer";YAHOO.widget.DataTable.CLASS_EDITOR="yui-dt-editor";YAHOO.widget.DataTable.CLASS_PAGINATOR="yui-dt-paginator";YAHOO.widget.DataTable.CLASS_PAGE="yui-dt-page";
YAHOO.widget.DataTable.CLASS_DEFAULT="yui-dt-default";YAHOO.widget.DataTable.CLASS_PREVIOUS="yui-dt-previous";YAHOO.widget.DataTable.CLASS_NEXT="yui-dt-next";YAHOO.widget.DataTable.CLASS_FIRST="yui-dt-first";YAHOO.widget.DataTable.CLASS_LAST="yui-dt-last";YAHOO.widget.DataTable.CLASS_EVEN="yui-dt-even";YAHOO.widget.DataTable.CLASS_ODD="yui-dt-odd";YAHOO.widget.DataTable.CLASS_SELECTED="yui-dt-selected";YAHOO.widget.DataTable.CLASS_HIGHLIGHTED="yui-dt-highlighted";YAHOO.widget.DataTable.CLASS_DISABLED="yui-dt-disabled";YAHOO.widget.DataTable.CLASS_EMPTY="yui-dt-empty";YAHOO.widget.DataTable.CLASS_LOADING="yui-dt-loading";YAHOO.widget.DataTable.CLASS_ERROR="yui-dt-error";YAHOO.widget.DataTable.CLASS_EDITABLE="yui-dt-editable";YAHOO.widget.DataTable.CLASS_SCROLLABLE="yui-dt-scrollable";YAHOO.widget.DataTable.CLASS_SORTABLE="yui-dt-sortable";YAHOO.widget.DataTable.CLASS_ASC="yui-dt-asc";YAHOO.widget.DataTable.CLASS_DESC="yui-dt-desc";YAHOO.widget.DataTable.CLASS_BUTTON="yui-dt-button";YAHOO.widget.DataTable.CLASS_CHECKBOX="yui-dt-checkbox";YAHOO.widget.DataTable.CLASS_DROPDOWN="yui-dt-dropdown";YAHOO.widget.DataTable.CLASS_RADIO="yui-dt-radio";YAHOO.widget.DataTable.MSG_EMPTY="No records found.";YAHOO.widget.DataTable.MSG_LOADING="Loading data...";YAHOO.widget.DataTable.MSG_ERROR="Data error.";YAHOO.widget.DataTable._nCount=0;YAHOO.widget.DataTable.prototype._nIndex=null;YAHOO.widget.DataTable.prototype._nTrCount=0;YAHOO.widget.DataTable.prototype._sName=null;YAHOO.widget.DataTable.prototype._elContainer=null;YAHOO.widget.DataTable.prototype._elCaption=null;YAHOO.widget.DataTable.prototype._elTable=null;YAHOO.widget.DataTable.prototype._elThead=null;YAHOO.widget.DataTable.prototype._elTbody=null;YAHOO.widget.DataTable.prototype._elMsgTbody=null;YAHOO.widget.DataTable.prototype._elMsgTbodyRow=null;YAHOO.widget.DataTable.prototype._elMsgTbodyCell=null;YAHOO.widget.DataTable.prototype._oDataSource=null;YAHOO.widget.DataTable.prototype._oColumnSet=null;YAHOO.widget.DataTable.prototype._oRecordSet=null;YAHOO.widget.DataTable.prototype._sFirstLabelLinkId=null;YAHOO.widget.DataTable.prototype._sFirstTrId=null;YAHOO.widget.DataTable.prototype._sLastTrId=null;YAHOO.widget.DataTable.prototype._focusEl=function(A){A=A||this._elTable;setTimeout(function(){A.focus();},0);};YAHOO.widget.DataTable.prototype._initContainerEl=function(A){this._elContainer=null;A=YAHOO.util.Dom.get(A);if(A&&A.tagName&&(A.tagName.toLowerCase()=="div")){this._elContainer=A;}};YAHOO.widget.DataTable.prototype._initConfigs=function(A){if(A){if(A.constructor!=Object){A=null;}else{if(YAHOO.lang.isBoolean(A.paginator)){}}this._oConfigs=A;}};YAHOO.widget.DataTable.prototype._initColumnSet=function(A){this._oColumnSet=null;if(YAHOO.lang.isArray(A)){this._oColumnSet=new YAHOO.widget.ColumnSet(A);}else{if(A instanceof YAHOO.widget.ColumnSet){this._oColumnSet=A;}}};YAHOO.widget.DataTable.prototype._initDataSource=function(A){this._oDataSource=null;if(A&&(A instanceof YAHOO.util.DataSource)){this._oDataSource=A;}else{var B=null;var F=this._elContainer;var C;if(F.hasChildNodes()){var E=F.childNodes;for(C=0;C<E.length;C++){if(E[C].tagName&&E[C].tagName.toLowerCase()=="table"){B=E[C];break;}}if(B){var D=[];for(C=0;C<this._oColumnSet.keys.length;C++){D.push({key:this._oColumnSet.keys[C].key});}this._oDataSource=new YAHOO.util.DataSource(B);this._oDataSource.responseType=YAHOO.util.DataSource.TYPE_HTMLTABLE;this._oDataSource.responseSchema={fields:D};}}}};YAHOO.widget.DataTable.prototype._initRecordSet=function(){if(this._oRecordSet){this._oRecordSet.reset();}else{this._oRecordSet=new YAHOO.widget.RecordSet();}};YAHOO.widget.DataTable.prototype._initTableEl=function(){YAHOO.util.Event.purgeElement(this._elContainer,true);this._elContainer.innerHTML="";this._elTable=this._elContainer.appendChild(document.createElement("table"));var C=this._elTable;C.tabIndex=0;C.id=this.id+"-table";YAHOO.util.Dom.addClass(C,YAHOO.widget.DataTable.CLASS_TABLE);this._initTheadEl(C,this._oColumnSet);var A=document.createElement("tbody");var B=A.appendChild(document.createElement("tr"));YAHOO.util.Dom.addClass(B,YAHOO.widget.DataTable.CLASS_FIRST);YAHOO.util.Dom.addClass(B,YAHOO.widget.DataTable.CLASS_LAST);this._elMsgRow=B;var D=B.appendChild(document.createElement("td"));D.colSpan=this._oColumnSet.keys.length;YAHOO.util.Dom.addClass(D,YAHOO.widget.DataTable.CLASS_FIRST);YAHOO.util.Dom.addClass(D,YAHOO.widget.DataTable.CLASS_LAST);this._elMsgTd=D;this._elMsgTbody=C.appendChild(A);this.showTableMessage(YAHOO.widget.DataTable.MSG_LOADING,YAHOO.widget.DataTable.CLASS_LOADING);this._elTbody=C.appendChild(document.createElement("tbody"));YAHOO.util.Dom.addClass(this._elTbody,YAHOO.widget.DataTable.CLASS_BODY);};YAHOO.widget.DataTable.prototype._initTheadEl=function(){var M,F,A;var Q=this._oColumnSet;this._sFirstLabelLinkId=null;var N=document.createElement("thead");var C=Q.tree;for(M=0;M<C.length;M++){var J=N.appendChild(document.createElement("tr"));J.id=this.id+"-hdrow"+M;var E;for(var K=0;K<C[M].length;K++){F=C[M][K];E=J.appendChild(document.createElement("th"));E.id=this.id+"-col"+F.getId();this._initThEl(E,F,M,K);}if(M===0){YAHOO.util.Dom.addClass(J,YAHOO.widget.DataTable.CLASS_FIRST);}if(M===(C.length-1)){YAHOO.util.Dom.addClass(J,YAHOO.widget.DataTable.CLASS_LAST);}}this._elThead=this._elTable.appendChild(N);var I=Q.headers[0];var D=Q.headers[Q.headers.length-1];for(M=0;M<I.length;M++){YAHOO.util.Dom.addClass(YAHOO.util.Dom.get(this.id+"-col"+I[M]),YAHOO.widget.DataTable.CLASS_FIRST);}for(M=0;M<D.length;M++){YAHOO.util.Dom.addClass(YAHOO.util.Dom.get(this.id+"-col"+D[M]),YAHOO.widget.DataTable.CLASS_LAST);}var H=(YAHOO.util.DD)?true:false;var P=false;for(M=0;M<this._oColumnSet.keys.length;M++){F=this._oColumnSet.keys[M];var R=F.getKey();var O=YAHOO.util.Dom.get(this.id+"-col"+F.getId());if(F.resizeable){if(H){if(!this.fixedWidth||(this.fixedWidth&&(F.getKeyIndex()!=this._oColumnSet.keys.length-1))){var S=YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_HEADER,"div",O)[0];
var B=S.appendChild(document.createElement("span"));B.id=this.id+"-resizer-"+R;YAHOO.util.Dom.addClass(B,YAHOO.widget.DataTable.CLASS_RESIZER);F.ddResizer=new YAHOO.util.ColumnResizer(this,F,O,B.id,B.id);var L=function(T){YAHOO.util.Event.stopPropagation(T);};YAHOO.util.Event.addListener(B,"click",L);}if(this.fixedWidth){var G=(YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_LABEL,"span",O))[0];G.style.overflow="hidden";}}else{P=true;}}}if(P){}};YAHOO.widget.DataTable.prototype._initThEl=function(L,J,N,C){var K=this._nIndex;var G=J.getKey();var B=J.getId();L.yuiColumnKey=G;L.yuiColumnId=B;if(J.abbr){L.abbr=J.abbr;}if(J.width){L.style.width=J.width;}var A;if(YAHOO.lang.isString(J.className)){A=[J.className];}else{if(YAHOO.lang.isArray(J.className)){A=J.className;}}if(A){for(var E=0;E<A.length;E++){YAHOO.util.Dom.addClass(L,A[E]);}}YAHOO.util.Dom.addClass(L,"yui-dt-col-"+G);L.innerHTML="";L.rowSpan=J.getRowspan();L.colSpan=J.getColspan();var I=L.appendChild(document.createElement("div"));I.id=this.id+"-container"+B;YAHOO.util.Dom.addClass(I,YAHOO.widget.DataTable.CLASS_HEADER);var D=I.appendChild(document.createElement("span"));D.id=this.id+"-label"+B;YAHOO.util.Dom.addClass(D,YAHOO.widget.DataTable.CLASS_LABEL);var M=YAHOO.lang.isValue(J.label)?J.label:G;if(J.sortable){YAHOO.util.Dom.addClass(L,YAHOO.widget.DataTable.CLASS_SORTABLE);var H=this.id+"-labellink"+B;var F="?key="+G;D.innerHTML="<a id=\""+H+"\" href=\""+F+"\" title=\"Click to sort\" class=\""+YAHOO.widget.DataTable.CLASS_SORTABLE+"\">"+M+"</a>";if(!this._sFirstLabelLinkId){this._sFirstLabelLinkId=H;}}else{D.innerHTML=M;}};YAHOO.widget.DataTable.prototype._initCellEditorEl=function(){var A=document.createElement("div");A.id=this.id+"-celleditor";A.style.display="none";YAHOO.util.Dom.addClass(A,YAHOO.widget.DataTable.CLASS_EDITOR);A=document.body.appendChild(A);var B={};B.container=A;B.value=null;B.isActive=false;this._oCellEditor=B;this.subscribe("editorKeydownEvent",function(C){var D=C.event;var E=YAHOO.util.Event.getTarget(D);if((D.keyCode==27)){this.cancelCellEditor();}});};YAHOO.widget.DataTable.prototype._initColumnSort=function(){this.subscribe("headerCellClickEvent",this.onEventSortColumn);};YAHOO.widget.DataTable.prototype._initDomEvents=function(){var B=this._elTable;var C=this._elThead;var A=this._elTbody;var D=this._elContainer;YAHOO.util.Event.addListener(document,"click",this._onDocumentClick,this);YAHOO.util.Event.addListener(document,"keydown",this._onDocumentKeydown,this);YAHOO.util.Event.addListener(B,"focus",this._onTableFocus,this);YAHOO.util.Event.addListener(B,"mouseover",this._onTableMouseover,this);YAHOO.util.Event.addListener(B,"mouseout",this._onTableMouseout,this);YAHOO.util.Event.addListener(B,"mousedown",this._onTableMousedown,this);YAHOO.util.Event.addListener(B,"keydown",this._onTableKeydown,this);YAHOO.util.Event.addListener(B,"keypress",this._onTableKeypress,this);YAHOO.util.Event.addListener(B,"dblclick",this._onTableDblclick,this);YAHOO.util.Event.addListener(C,"click",this._onTheadClick,this);YAHOO.util.Event.addListener(A,"click",this._onTbodyClick,this);YAHOO.util.Event.addListener(D,"scroll",this._onScroll,this);YAHOO.util.Event.addListener(A,"scroll",this._onScroll,this);};YAHOO.widget.DataTable.prototype._addTrEl=function(N,H){this.hideTableMessage();var B=(!YAHOO.lang.isNumber(H)||(H<0)||(H>=(this._elTbody.rows.length)))?true:false;var K=this._oColumnSet;var J=this._oRecordSet;var C=this.get("sortedBy");var L=null;var G,I;if(C){L=(C.column)?C.column.getKeyIndex():this._oColumnSet.getColumn(C.key).getKeyIndex();G=C.dir;I=(G==="desc")?YAHOO.widget.DataTable.CLASS_DESC:YAHOO.widget.DataTable.CLASS_ASC;}var A=(B)?this._elTbody.appendChild(document.createElement("tr")):this._elTbody.insertBefore(document.createElement("tr"),this._elTbody.rows[H]);A.id=this.id+"-bdrow"+this._nTrCount;this._nTrCount++;A.yuiRecordId=N.getId();for(var E=0;E<K.keys.length;E++){var F=K.keys[E];var M=A.appendChild(document.createElement("td"));M.id=A.id+"-cell"+E;M.yuiColumnKey=F.getKey();M.yuiColumnId=F.getId();for(var D=0;D<K.headers[E].length;D++){M.headers+=this.id+"-col"+K.headers[E][D]+" ";}M.yuiCellIndex=E;this.formatCell(M,N,F);if(E===0){YAHOO.util.Dom.addClass(M,YAHOO.widget.DataTable.CLASS_FIRST);}else{if(E===this._oColumnSet.keys.length-1){YAHOO.util.Dom.addClass(M,YAHOO.widget.DataTable.CLASS_LAST);}}YAHOO.util.Dom.removeClass(M,YAHOO.widget.DataTable.CLASS_ASC);YAHOO.util.Dom.removeClass(M,YAHOO.widget.DataTable.CLASS_DESC);if(E===L){I=(G==="desc")?YAHOO.widget.DataTable.CLASS_DESC:YAHOO.widget.DataTable.CLASS_ASC;YAHOO.util.Dom.addClass(M,I);}if(this.fixedWidth){M.style.overflow="hidden";}}return A.id;};YAHOO.widget.DataTable.prototype._updateTrEl=function(A,I){this.hideTableMessage();var B=this.get("sortedBy");var G=null;var E,F;if(B){G=(B.column)?B.column.getKeyIndex():this._oColumnSet.getColumn(B.key).getKeyIndex();E=B.dir;F=(E==="desc")?YAHOO.widget.DataTable.CLASS_DESC:YAHOO.widget.DataTable.CLASS_ASC;}for(var C=0;C<A.cells.length;C++){var D=this._oColumnSet.keys[C];var H=A.cells[C];this.formatCell(H,I,D);YAHOO.util.Dom.removeClass(H,YAHOO.widget.DataTable.CLASS_ASC);YAHOO.util.Dom.removeClass(H,YAHOO.widget.DataTable.CLASS_DESC);if(C===G){YAHOO.util.Dom.addClass(H,F);}}A.yuiRecordId=I.getId();return A.id;};YAHOO.widget.DataTable.prototype._deleteTrEl=function(A){var B;if(!YAHOO.lang.isNumber(A)){B=YAHOO.util.Dom.get(A).sectionRowIndex;}else{B=A;}if(YAHOO.lang.isNumber(B)&&(B>-2)&&(B<this._elTbody.rows.length)){this._elTbody.deleteRow(B);return true;}else{return false;}};YAHOO.widget.DataTable.prototype._setFirstRow=function(){var A=this.getFirstTrEl();if(A){if(this._sFirstTrId){YAHOO.util.Dom.removeClass(this._sFirstTrId,YAHOO.widget.DataTable.CLASS_FIRST);}YAHOO.util.Dom.addClass(A,YAHOO.widget.DataTable.CLASS_FIRST);this._sFirstTrId=A.id;}else{this._sFirstTrId=null;}};YAHOO.widget.DataTable.prototype._setLastRow=function(){var A=this.getLastTrEl();if(A){if(this._sLastTrId){YAHOO.util.Dom.removeClass(this._sLastTrId,YAHOO.widget.DataTable.CLASS_LAST);
}YAHOO.util.Dom.addClass(A,YAHOO.widget.DataTable.CLASS_LAST);this._sLastTrId=A.id;}else{this._sLastTrId=null;}};YAHOO.widget.DataTable.prototype._setRowStripes=function(G,C){var E=this._elTbody.rows;var F=0;var A=E.length;if((G!==null)&&(G!==undefined)){var B=this.getTrEl(G);if(B){F=B.sectionRowIndex;if(YAHOO.lang.isNumber(C)&&(C>1)){A=F+C;}}}for(var D=F;D<A;D++){if(D%2){YAHOO.util.Dom.removeClass(E[D],YAHOO.widget.DataTable.CLASS_EVEN);YAHOO.util.Dom.addClass(E[D],YAHOO.widget.DataTable.CLASS_ODD);}else{YAHOO.util.Dom.removeClass(E[D],YAHOO.widget.DataTable.CLASS_ODD);YAHOO.util.Dom.addClass(E[D],YAHOO.widget.DataTable.CLASS_EVEN);}}};YAHOO.widget.DataTable.prototype._onScroll=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();if(B._oCellEditor.isActive){B.fireEvent("editorBlurEvent",{editor:B._oCellEditor});B.cancelCellEditor();}B.fireEvent("tableScrollEvent",{event:C,target:D});};YAHOO.widget.DataTable.prototype._onDocumentClick=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();if(!YAHOO.util.Dom.isAncestor(B._elTable,D)){B.fireEvent("tableBlurEvent");if(B._oCellEditor&&B._oCellEditor.isActive){if(!YAHOO.util.Dom.isAncestor(B._oCellEditor.container,D)&&(B._oCellEditor.container.id!==D.id)){B.fireEvent("editorBlurEvent",{editor:B._oCellEditor});}}}};YAHOO.widget.DataTable.prototype._onDocumentKeydown=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();if(B._oCellEditor&&B._oCellEditor.isActive&&YAHOO.util.Dom.isAncestor(B._oCellEditor.container,D)){B.fireEvent("editorKeydownEvent",{editor:B._oCellEditor,event:C});}};YAHOO.widget.DataTable.prototype._onTableMouseover=function(B,A){A.fireEvent("tableFocusEvent");};YAHOO.widget.DataTable.prototype._onTableMouseover=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();while(D&&(A!="table")){switch(A){case"body":break;case"a":break;case"td":B.fireEvent("cellMouseoverEvent",{target:D,event:C});break;case"span":if(YAHOO.util.Dom.hasClass(D,YAHOO.widget.DataTable.CLASS_LABEL)){B.fireEvent("headerLabelMouseoverEvent",{target:D,event:C});}break;case"th":B.fireEvent("headerCellMouseoverEvent",{target:D,event:C});break;case"tr":if(D.parentNode.tagName.toLowerCase()=="thead"){B.fireEvent("headerRowMouseoverEvent",{target:D,event:C});}else{B.fireEvent("rowMouseoverEvent",{target:D,event:C});}break;default:break;}D=D.parentNode;if(D){A=D.tagName.toLowerCase();}}B.fireEvent("tableMouseoverEvent",{target:(D||B._elTable),event:C});};YAHOO.widget.DataTable.prototype._onTableMouseout=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();while(D&&(A!="table")){switch(A){case"body":break;case"a":break;case"td":B.fireEvent("cellMouseoutEvent",{target:D,event:C});break;case"span":if(YAHOO.util.Dom.hasClass(D,YAHOO.widget.DataTable.CLASS_LABEL)){B.fireEvent("headerLabelMouseoutEvent",{target:D,event:C});}break;case"th":B.fireEvent("headerCellMouseoutEvent",{target:D,event:C});break;case"tr":if(D.parentNode.tagName.toLowerCase()=="thead"){B.fireEvent("headerRowMouseoutEvent",{target:D,event:C});}else{B.fireEvent("rowMouseoutEvent",{target:D,event:C});}break;default:break;}D=D.parentNode;if(D){A=D.tagName.toLowerCase();}}B.fireEvent("tableMouseoutEvent",{target:(D||B._elTable),event:C});};YAHOO.widget.DataTable.prototype._onTableMousedown=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();while(D&&(A!="table")){switch(A){case"body":break;case"a":break;case"td":B.fireEvent("cellMousedownEvent",{target:D,event:C});break;case"span":if(YAHOO.util.Dom.hasClass(D,YAHOO.widget.DataTable.CLASS_LABEL)){B.fireEvent("headerLabelMousedownEvent",{target:D,event:C});}break;case"th":B.fireEvent("headerCellMousedownEvent",{target:D,event:C});break;case"tr":if(D.parentNode.tagName.toLowerCase()=="thead"){B.fireEvent("headerRowMousedownEvent",{target:D,event:C});}else{B.fireEvent("rowMousedownEvent",{target:D,event:C});}break;default:break;}D=D.parentNode;if(D){A=D.tagName.toLowerCase();}}B.fireEvent("tableMousedownEvent",{target:(D||B._elTable),event:C});};YAHOO.widget.DataTable.prototype._onTableDblclick=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();while(D&&(A!="table")){switch(A){case"body":break;case"td":B.fireEvent("cellDblclickEvent",{target:D,event:C});break;case"span":if(YAHOO.util.Dom.hasClass(D,YAHOO.widget.DataTable.CLASS_LABEL)){B.fireEvent("headerLabelDblclickEvent",{target:D,event:C});}break;case"th":B.fireEvent("headerCellDblclickEvent",{target:D,event:C});break;case"tr":if(D.parentNode.tagName.toLowerCase()=="thead"){B.fireEvent("headerRowDblclickEvent",{target:D,event:C});}else{B.fireEvent("rowDblclickEvent",{target:D,event:C});}break;default:break;}D=D.parentNode;if(D){A=D.tagName.toLowerCase();}}B.fireEvent("tableDblclickEvent",{target:(D||B._elTable),event:C});};YAHOO.widget.DataTable.prototype._onTableKeydown=function(W,H){var G=W.shiftKey;var X=YAHOO.util.Event.getTarget(W);if(YAHOO.util.Dom.isAncestor(H._elThead,X)){return ;}var O=YAHOO.util.Event.getCharCode(W);if(O===9){if(!G&&(X.id===H._elTable.id)&&H._sFirstLabelLinkId){YAHOO.util.Event.stopEvent(W);H._focusEl(YAHOO.util.Dom.get(H._sFirstLabelLinkId));}return ;}if((O>36)&&(O<41)){YAHOO.util.Event.stopEvent(W);var F=H._elTbody.rows;var P=H.get("selectionMode");var S,T,K,Q,R,I,Y,U,D,J,L,C,A,N,E,B,M,V;if((P=="standard")||(P=="single")){D=H.getLastSelectedRecord();if(!D){return ;}else{D=H.getRecord(D);J=H.getRecordIndex(D);N=H.getTrEl(D);L=H.getTrIndex(N);if(L===null){return ;}}K=H._oAnchorRecord;if(!K){K=H._oAnchorRecord=D;}Q=H.getRecordIndex(K);R=H.getTrIndex(K);if(R===null){if(Q<H.getRecordIndex(H.getFirstTrEl())){R=0;}else{R=H.getRecordIndex(H.getLastTrEl());}}if(G&&(P!="single")){if(Q>L){M=1;}else{if(Q<L){M=-1;}else{M=0;}}if(O==40){if(M<=0){if(L<F.length-1){H.selectRow(F[L+1]);}}else{H.unselectRow(F[L]);}}else{if(O==38){if(M>=0){if(L>0){H.selectRow(F[L-1]);}}else{H.unselectRow(F[L]);}}else{if(O==39){}else{if(O==37){}}}}}else{if(O==40){H.unselectAllRows();
if(L<F.length-1){V=F[L+1];H.selectRow(V);}else{V=F[L];H.selectRow(V);}H._oAnchorRecord=H.getRecord(V);}else{if(O==38){H.unselectAllRows();if(L>0){V=F[L-1];H.selectRow(V);}else{V=F[L];H.selectRow(V);}H._oAnchorRecord=H.getRecord(V);}else{if(O==39){}else{if(O==37){}}}}}}else{U=H.getLastSelectedCell();if(!U){return ;}else{D=H.getRecord(U.recordId);J=H.getRecordIndex(D);N=H.getTrEl(D);L=H.getTrIndex(N);if(L===null){return ;}else{C=H.getColumnById(U.columnId);A=C.getKeyIndex();}}T=H._oAnchorCell;if(!T){T=H._oAnchorCell=U;}K=H._oAnchorCell.record;Q=H._oRecordSet.getRecordIndex(K);R=H.getTrIndex(K);if(R===null){if(Q<H.getRecordIndex(H.getFirstTrEl())){R=0;}else{R=H.getRecordIndex(H.getLastTrEl());}}I=H._oAnchorCell.column;Y=I.getKeyIndex();if(G&&(P=="cellblock")){if(O==40){if(Q>J){M=1;}else{if(Q<J){M=-1;}else{M=0;}}if(M<=0){if(L<F.length-1){E=Y;B=A;if(E>B){for(S=E;S>=B;S--){V=F[L+1].cells[S];H.selectCell(V);}}else{for(S=E;S<=B;S++){V=F[L+1].cells[S];H.selectCell(V);}}}}else{E=Math.min(Y,A);B=Math.max(Y,A);for(S=E;S<=B;S++){H.unselectCell(F[L].cells[S]);}}}else{if(O==38){if(Q>J){M=1;}else{if(Q<J){M=-1;}else{M=0;}}if(M>=0){if(L>0){E=Y;B=A;if(E>B){for(S=E;S>=B;S--){V=F[L-1].cells[S];H.selectCell(V);}}else{for(S=E;S<=B;S++){V=F[L-1].cells[S];H.selectCell(V);}}}}else{E=Math.min(Y,A);B=Math.max(Y,A);for(S=E;S<=B;S++){H.unselectCell(F[L].cells[S]);}}}else{if(O==39){if(Y>A){M=1;}else{if(Y<A){M=-1;}else{M=0;}}if(M<=0){if(A<F[L].cells.length-1){E=R;B=L;if(E>B){for(S=E;S>=B;S--){V=F[S].cells[A+1];H.selectCell(V);}}else{for(S=E;S<=B;S++){V=F[S].cells[A+1];H.selectCell(V);}}}}else{E=Math.min(R,L);B=Math.max(R,L);for(S=E;S<=B;S++){H.unselectCell(F[S].cells[A]);}}}else{if(O==37){if(Y>A){M=1;}else{if(Y<A){M=-1;}else{M=0;}}if(M>=0){if(A>0){E=R;B=L;if(E>B){for(S=E;S>=B;S--){V=F[S].cells[A-1];H.selectCell(V);}}else{for(S=E;S<=B;S++){V=F[S].cells[A-1];H.selectCell(V);}}}}else{E=Math.min(R,L);B=Math.max(R,L);for(S=E;S<=B;S++){H.unselectCell(F[S].cells[A]);}}}}}}}else{if(G&&(P=="cellrange")){if(Q>J){M=1;}else{if(Q<J){M=-1;}else{M=0;}}if(O==40){if(M<=0){for(S=A+1;S<F[L].cells.length;S++){V=F[L].cells[S];H.selectCell(V);}if(L<F.length-1){for(S=0;S<=A;S++){V=F[L+1].cells[S];H.selectCell(V);}}}else{for(S=A;S<F[L].cells.length;S++){H.unselectCell(F[L].cells[S]);}for(S=0;S<A;S++){H.unselectCell(F[L+1].cells[S]);}}}else{if(O==38){if(M>=0){for(S=A-1;S>-1;S--){V=F[L].cells[S];H.selectCell(V);}if(L>0){for(S=F[L].cells.length-1;S>=A;S--){V=F[L-1].cells[S];H.selectCell(V);}}}else{for(S=A;S>-1;S--){H.unselectCell(F[L].cells[S]);}for(S=F[L].cells.length-1;S>A;S--){H.unselectCell(F[L-1].cells[S]);}}}else{if(O==39){if(M<0){if(A<F[L].cells.length-1){V=F[L].cells[A+1];H.selectCell(V);}else{if(L<F.length-1){V=F[L+1].cells[0];H.selectCell(V);}}}else{if(M>0){H.unselectCell(F[L].cells[A]);if(A<F[L].cells.length-1){}else{}}else{if(Y<=A){if(A<F[L].cells.length-1){V=F[L].cells[A+1];H.selectCell(V);}else{if(L<F.length-1){V=F[L+1].cells[0];H.selectCell(V);}}}else{H.unselectCell(F[L].cells[A]);}}}}else{if(O==37){if(M<0){H.unselectCell(F[L].cells[A]);if(A>0){}else{}}else{if(M>0){if(A>0){V=F[L].cells[A-1];H.selectCell(V);}else{if(L>0){V=F[L-1].cells[F[L-1].cells.length-1];H.selectCell(V);}}}else{if(Y>=A){if(A>0){V=F[L].cells[A-1];H.selectCell(V);}else{if(L>0){V=F[L-1].cells[F[L-1].cells.length-1];H.selectCell(V);}}}else{H.unselectCell(F[L].cells[A]);if(A>0){}else{}}}}}}}}}else{if((P=="cellblock")||(P=="cellrange")||(P=="singlecell")){if(O==40){H.unselectAllCells();if(L<F.length-1){V=F[L+1].cells[A];H.selectCell(V);}else{V=F[L].cells[A];H.selectCell(V);}H._oAnchorCell={record:H.getRecord(V),column:H.getColumn(V)};}else{if(O==38){H.unselectAllCells();if(L>0){V=F[L-1].cells[A];H.selectCell(V);}else{V=F[L].cells[A];H.selectCell(V);}H._oAnchorCell={record:H.getRecord(V),column:H.getColumn(V)};}else{if(O==39){H.unselectAllCells();if(A<F[L].cells.length-1){V=F[L].cells[A+1];H.selectCell(V);}else{V=F[L].cells[A];H.selectCell(V);}H._oAnchorCell={record:H.getRecord(V),column:H.getColumn(V)};}else{if(O==37){H.unselectAllCells();if(A>0){V=F[L].cells[A-1];H.selectCell(V);}else{V=F[L].cells[A];H.selectCell(V);}H._oAnchorCell={record:H.getRecord(V),column:H.getColumn(V)};}}}}}}}}}else{return ;}};YAHOO.widget.DataTable.prototype._onTableKeypress=function(D,C){var B=(navigator.userAgent.toLowerCase().indexOf("mac")!=-1);if(B){var A=YAHOO.util.Event.getCharCode(D);if(A==40){YAHOO.util.Event.stopEvent(D);}else{if(A==38){YAHOO.util.Event.stopEvent(D);}}}};YAHOO.widget.DataTable.prototype._onTheadClick=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();if(B._oCellEditor&&B._oCellEditor.isActive){B.fireEvent("editorBlurEvent",{editor:B._oCellEditor});}while(D&&(A!="thead")){switch(A){case"body":break;case"span":if(YAHOO.util.Dom.hasClass(D,YAHOO.widget.DataTable.CLASS_LABEL)){B.fireEvent("headerLabelClickEvent",{target:D,event:C});}break;case"th":B.fireEvent("headerCellClickEvent",{target:D,event:C});break;case"tr":B.fireEvent("headerRowClickEvent",{target:D,event:C});break;default:break;}D=D.parentNode;if(D){A=D.tagName.toLowerCase();}}B.fireEvent("tableClickEvent",{target:(D||B._elTable),event:C});};YAHOO.widget.DataTable.prototype._onTbodyClick=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();if(B._oCellEditor&&B._oCellEditor.isActive){B.fireEvent("editorBlurEvent",{editor:B._oCellEditor});}while(D&&(A!="table")){switch(A){case"body":break;case"input":if(D.type.toLowerCase()=="checkbox"){B.fireEvent("checkboxClickEvent",{target:D,event:C});}else{if(D.type.toLowerCase()=="radio"){B.fireEvent("radioClickEvent",{target:D,event:C});}}B.fireEvent("tableClickEvent",{target:(D||B._elTable),event:C});return ;case"a":B.fireEvent("linkClickEvent",{target:D,event:C});B.fireEvent("tableClickEvent",{target:(D||B._elTable),event:C});return ;case"button":B.fireEvent("buttonClickEvent",{target:D,event:C});B.fireEvent("tableClickEvent",{target:(D||B._elTable),event:C});return ;case"td":B.fireEvent("cellClickEvent",{target:D,event:C});
break;case"tr":B.fireEvent("rowClickEvent",{target:D,event:C});break;default:break;}D=D.parentNode;if(D){A=D.tagName.toLowerCase();}}B.fireEvent("tableClickEvent",{target:(D||B._elTable),event:C});};YAHOO.widget.DataTable.prototype._onPaginatorLinkClick=function(C,B){var D=YAHOO.util.Event.getTarget(C);var A=D.tagName.toLowerCase();if(B._oCellEditor&&B._oCellEditor.isActive){B.fireEvent("editorBlurEvent",{editor:B._oCellEditor});}while(D&&(A!="table")){switch(A){case"body":return ;case"a":YAHOO.util.Event.stopEvent(C);switch(D.className){case YAHOO.widget.DataTable.CLASS_PAGE:B.showPage(parseInt(D.innerHTML,10));return ;case YAHOO.widget.DataTable.CLASS_FIRST:B.showPage(1);return ;case YAHOO.widget.DataTable.CLASS_LAST:B.showPage(B.get("paginator").totalPages);return ;case YAHOO.widget.DataTable.CLASS_PREVIOUS:B.showPage(B.get("paginator").currentPage-1);return ;case YAHOO.widget.DataTable.CLASS_NEXT:B.showPage(B.get("paginator").currentPage+1);return ;}break;default:return ;}D=D.parentNode;if(D){A=D.tagName.toLowerCase();}else{return ;}}};YAHOO.widget.DataTable.prototype._onPaginatorDropdownChange=function(E,B){var F=YAHOO.util.Event.getTarget(E);var D=F[F.selectedIndex].value;var A=YAHOO.lang.isValue(parseInt(D,10))?parseInt(D,10):null;if(A!==null){var C=(B.get("paginator").currentPage-1)*A;B.updatePaginator({rowsPerPage:A,startRecordIndex:C});B.refreshView();}else{}};YAHOO.widget.DataTable.prototype._onDropdownChange=function(B,A){var C=YAHOO.util.Event.getTarget(B);A.fireEvent("dropdownChangeEvent",{event:B,target:C});};YAHOO.widget.DataTable.prototype.toString=function(){return"DataTable "+this._sName;};YAHOO.widget.DataTable.prototype.getDataSource=function(){return this._oDataSource;};YAHOO.widget.DataTable.prototype.getColumnSet=function(){return this._oColumnSet;};YAHOO.widget.DataTable.prototype.getRecordSet=function(){return this._oRecordSet;};YAHOO.widget.DataTable.prototype.getCellEditor=function(){return this._oCellEditor;};YAHOO.widget.DataTable.prototype.getTableEl=function(){return this._elTable;};YAHOO.widget.DataTable.prototype.getTheadEl=function(){return this._elThead;};YAHOO.widget.DataTable.prototype.getTbodyEl=function(){return this._elTbody;};YAHOO.widget.DataTable.prototype.getBody=function(){return this.getTbodyEl();};YAHOO.widget.DataTable.prototype.getMsgTbodyEl=function(){return this._elMsgTbody;};YAHOO.widget.DataTable.prototype.getMsgTdEl=function(){return this._elMsgTd;};YAHOO.widget.DataTable.prototype.getTrEl=function(E){var D=this._elTbody.rows;if(E instanceof YAHOO.widget.Record){var C=this.getTrIndex(E);if(C!==null){return D[C];}else{return null;}}else{if(YAHOO.lang.isNumber(E)&&(E>-1)&&(E<D.length)){return D[E];}else{var A;var B=YAHOO.util.Dom.get(E);if(B&&(B.ownerDocument==document)){if(B.tagName.toLowerCase()!="tr"){A=YAHOO.util.Dom.getAncestorByTagName(B,"tr");}else{A=B;}if(A&&(A.parentNode==this._elTbody)){return A;}}}}return null;};YAHOO.widget.DataTable.prototype.getRow=function(A){return this.getTrEl(A);};YAHOO.widget.DataTable.prototype.getFirstTrEl=function(){return this._elTbody.rows[0]||null;};YAHOO.widget.DataTable.prototype.getLastTrEl=function(){var A=this._elTbody.rows;if(A.length>0){return A[A.length-1]||null;}};YAHOO.widget.DataTable.prototype.getTdEl=function(A){var E;var C=YAHOO.util.Dom.get(A);if(C&&(C.ownerDocument==document)){if(C.tagName.toLowerCase()!="td"){E=YAHOO.util.Dom.getAncestorByTagName(C,"td");}else{E=C;}if(E&&(E.parentNode.parentNode==this._elTbody)){return E;}}else{if(A.record&&A.column&&A.column.getKeyIndex){var D=A.record;var B=this.getTrEl(D);if(B&&B.cells&&B.cells.length>0){return B.cells[A.column.getKeyIndex()]||null;}}}return null;};YAHOO.widget.DataTable.prototype.getThEl=function(D){var A;if(D instanceof YAHOO.widget.Column){var C=D;A=YAHOO.util.Dom.get(this.id+"-col"+C.getId());if(A){return A;}}else{var B=YAHOO.util.Dom.get(D);if(B&&(B.ownerDocument==document)){if(B.tagName.toLowerCase()!="th"){A=YAHOO.util.Dom.getAncestorByTagName(B,"th");}else{A=B;}if(A&&(A.parentNode.parentNode==this._elThead)){return A;}}}return null;};YAHOO.widget.DataTable.prototype.getTrIndex=function(D){var C;if(D instanceof YAHOO.widget.Record){C=this._oRecordSet.getRecordIndex(D);if(C===null){return null;}}else{if(YAHOO.lang.isNumber(D)){C=D;}}if(YAHOO.lang.isNumber(C)){if((C>-1)&&(C<this._oRecordSet.getLength())){if(this.get("paginated")){var B=this.get("paginator").startRecordIndex;var E=B+this.get("paginator").rowsPerPage-1;if((C>=B)&&(C<=E)){return C-B;}else{return null;}}else{return C;}}else{return null;}}else{var A=this.getTrEl(D);if(A&&(A.ownerDocument==document)&&(A.parentNode==this._elTbody)){return A.sectionRowIndex;}}return null;};YAHOO.widget.DataTable.prototype.initializeTable=function(B){this._oRecordSet.reset();var A=this._oRecordSet.addRecords(B);this._unselectAllTrEls();this._unselectAllTdEls();this._aSelections=null;this._oAnchorRecord=null;this._oAnchorCell=null;this.refreshView();this.fireEvent("initEvent");};YAHOO.widget.DataTable.prototype.refreshView=function(){var H,G,F,E,J;var K=this.updatePaginator();if(this.get("paginated")){var A=K.rowsPerPage;var D=(K.currentPage-1)*A;J=this._oRecordSet.getRecords(D,A);this.formatPaginators();}else{J=this._oRecordSet.getRecords();}var B=this._elTbody;var O=B.rows;if(YAHOO.lang.isArray(J)&&(J.length>0)){this.hideTableMessage();var N=this.getSelectedRows();var I=this.getSelectedCells();var C=(N.length>0)||(I.length>0);while(B.hasChildNodes()&&(O.length>J.length)){B.deleteRow(-1);}if(C){this._unselectAllTrEls();this._unselectAllTdEls();}for(H=0;H<O.length;H++){this._updateTrEl(O[H],J[H]);}for(H=O.length;H<J.length;H++){this._addTrEl(J[H]);}if(C){for(G=0;G<O.length;G++){var L=O[G];var M=this.get("selectionMode");if((M=="standard")||(M=="single")){for(F=0;F<N.length;F++){if(N[F]===L.yuiRecordId){YAHOO.util.Dom.addClass(L,YAHOO.widget.DataTable.CLASS_SELECTED);if(G===O.length-1){this._oAnchorRecord=this.getRecord(L.yuiRecordId);}}}}else{for(F=0;F<L.cells.length;F++){var P=L.cells[F];
for(E=0;E<I.length;E++){if((I[E].recordId===L.yuiRecordId)&&(I[E].columnId===P.yuiColumnId)){YAHOO.util.Dom.addClass(P,YAHOO.widget.DataTable.CLASS_SELECTED);if(F===L.cells.length-1){this._oAnchorCell={record:this.getRecord(L.yuiRecordId),column:this.getColumnById(P.yuiColumnId)};}}}}}}}this._setFirstRow();this._setLastRow();this._setRowStripes();this.fireEvent("refreshEvent");}else{while(B.hasChildNodes()){B.deleteRow(-1);}this.showTableMessage(YAHOO.widget.DataTable.MSG_EMPTY,YAHOO.widget.DataTable.CLASS_EMPTY);}};YAHOO.widget.DataTable.prototype.destroy=function(){YAHOO.util.Event.purgeElement(this._oCellEditor.container,true);document.body.removeChild(this._oCellEditor.container);var A=this.toString();var B=this._elContainer;this._oRecordSet.unsubscribeAll();this.unsubscribeAll();YAHOO.util.Event.purgeElement(B,true);B.innerHTML="";for(var C in this){if(YAHOO.lang.hasOwnProperty(this,C)){this[C]=null;}}};YAHOO.widget.DataTable.prototype.showTableMessage=function(B,A){var C=this._elMsgTd;if(YAHOO.lang.isString(B)){C.innerHTML=B;}if(YAHOO.lang.isString(A)){YAHOO.util.Dom.addClass(C,A);}this._elMsgTbody.style.display="";this.fireEvent("tableMsgShowEvent",{html:B,className:A});};YAHOO.widget.DataTable.prototype.hideTableMessage=function(){if(this._elMsgTbody.style.display!="none"){this._elMsgTbody.style.display="none";this.fireEvent("tableMsgHideEvent");}};YAHOO.widget.DataTable.prototype.focus=function(){this._focusEl(this._elTable);};YAHOO.widget.DataTable.prototype.getRecordIndex=function(C){var B;if(!YAHOO.lang.isNumber(C)){if(C instanceof YAHOO.widget.Record){return this._oRecordSet.getRecordIndex(C);}else{var A=this.getTrEl(C);if(A){B=A.sectionRowIndex;}}}else{B=C;}if(YAHOO.lang.isNumber(B)){if(this.get("paginated")){return this.get("paginator").startRecordIndex+B;}else{return B;}}return null;};YAHOO.widget.DataTable.prototype.getRecord=function(C){var B=this._oRecordSet.getRecord(C);if(!B){var A=this.getTrEl(C);if(A){B=this._oRecordSet.getRecord(A.yuiRecordId);}}if(B instanceof YAHOO.widget.Record){return this._oRecordSet.getRecord(B);}else{return null;}};YAHOO.widget.DataTable.prototype.getColumn=function(A){var C=this._oColumnSet.getColumn(A);if(!C){var B=this.getTdEl(A);if(B){C=this._oColumnSet.getColumnById(B.yuiColumnId);}else{B=this.getThEl(A);if(B){C=this._oColumnSet.getColumnById(B.yuiColumnId);}}}if(!C){}return C;};YAHOO.widget.DataTable.prototype.getColumnById=function(A){return this._oColumnSet.getColumnById(A);};YAHOO.widget.DataTable.prototype.sortColumn=function(C){if(C&&(C instanceof YAHOO.widget.Column)){if(!C.sortable){YAHOO.util.Dom.addClass(this.getThEl(C),YAHOO.widget.DataTable.CLASS_SORTABLE);}var A=(C.sortOptions&&C.sortOptions.defaultOrder)?C.sortOptions.defaultOrder:"asc";var E=this.get("sortedBy");if(E&&(E.key===C.key)){if(E.dir){A=(E.dir=="asc")?"desc":"asc";}else{A=(A=="asc")?"desc":"asc";}}var B=(C.sortOptions&&YAHOO.lang.isFunction(C.sortOptions.sortFunction))?C.sortOptions.sortFunction:function(G,F,I){var H=YAHOO.util.Sort.compare(G.getData(C.key),F.getData(C.key),I);if(H===0){return YAHOO.util.Sort.compare(G.getId(),F.getId(),I);}else{return H;}};var D=(A=="desc")?true:false;this._oRecordSet.sortRecords(B,D);this.set("sortedBy",{key:C.key,dir:A,column:C});this.updatePaginator({currentPage:1});this.refreshView();this.fireEvent("columnSortEvent",{column:C,dir:A});}else{}};YAHOO.widget.DataTable.prototype.addRow=function(F,B){if(F&&(F.constructor==Object)){var D=this._oRecordSet.addRecord(F,B);if(D){var C=this.getTrIndex(D);if(YAHOO.lang.isNumber(C)){if(this.get("paginated")){this.refreshView();}else{var E=this._addTrEl(D,C);if(E){var A=(YAHOO.lang.isNumber(C)&&(C==this._elTbody.rows.length-1))?true:false;if(A){if((this._elTbody.rows.length-1)%2){YAHOO.util.Dom.addClass(E,YAHOO.widget.DataTable.CLASS_ODD);}else{YAHOO.util.Dom.addClass(E,YAHOO.widget.DataTable.CLASS_EVEN);}}else{this._setRowStripes(C);}if(A){this._setLastRow();}else{if(YAHOO.lang.isNumber(B)&&(C===0)){this._setFirstRow();}}}}}else{this.updatePaginator();}this.fireEvent("rowAddEvent",{record:D});C=(YAHOO.lang.isValue(C))?C:"n/a";return ;}}};YAHOO.widget.DataTable.prototype.addRows=function(B,A){if(YAHOO.lang.isArray(B)){var C;if(YAHOO.lang.isNumber(A)){for(C=B.length-1;C>-1;C--){this.addRow(B[C],A);}}else{for(C=0;C<B.length;C++){this.addRow(B[C]);}}}else{}};YAHOO.widget.DataTable.prototype.updateRow=function(G,H){var A,F,E,B;if((G instanceof YAHOO.widget.Record)||(YAHOO.lang.isNumber(G))){A=this._oRecordSet.getRecord(G);B=this.getTrEl(A);}else{B=this.getTrEl(G);if(B){A=this.getRecord(B);}}if(A){var C=A.getData();F={};for(var D in C){F[D]=C[D];}E=this._oRecordSet.updateRecord(A,H);}else{return ;}if(B){this._updateTrEl(B,E);}this.fireEvent("rowUpdateEvent",{record:E,oldData:F});};YAHOO.widget.DataTable.prototype.deleteRow=function(K){var L=null;if(YAHOO.lang.isNumber(K)){L=this._oRecordSet.getRecord(K);}else{var B=YAHOO.util.Dom.get(K);B=this.getTrEl(B);if(B){L=this.getRecord(B);}}if(L){var H=L.getId();var I=this._aSelections||[];for(var F=I.length-1;F>-1;F--){if((YAHOO.lang.isNumber(I[F])&&(I[F]===H))||((I[F].constructor==Object)&&(I[F].recordId===H))){I.splice(F,1);}}var A=this.getRecordIndex(L);var J=L.getData();var D={};for(var E in J){D[E]=J[E];}var C=this.getTrIndex(L);this._oRecordSet.deleteRecord(A);if(YAHOO.lang.isNumber(C)){var G=(C==this.getLastTrEl().sectionRowIndex)?true:false;this._deleteTrEl(C);if(this._elTbody.rows.length===0){this.showTableMessage(YAHOO.widget.DataTable.MSG_EMPTY,YAHOO.widget.DataTable.CLASS_EMPTY);}else{if(C===0){this._setFirstRow();}if(G){this._setLastRow();}if(C!=this._elTbody.rows.length){this._setRowStripes(C);}}}this.fireEvent("rowDeleteEvent",{recordIndex:A,oldData:D,trElIndex:C});}else{}};YAHOO.widget.DataTable.prototype.deleteRows=function(G,C){var E=null;if(YAHOO.lang.isNumber(G)){E=G;}else{var A=YAHOO.util.Dom.get(G);A=this.getTrEl(A);if(A){E=this.getRecordIndex(A);}}if(E!==null){if(C&&YAHOO.lang.isNumber(C)){var F=(C>0)?E+C-1:E;var D=(C>0)?E:E+C+1;
for(var B=F;B>D-1;B--){this.deleteRow(B);}}else{this.deleteRow(E);}}else{}};YAHOO.widget.DataTable.prototype.formatCell=function(F,D,G){if(!(D instanceof YAHOO.widget.Record)){D=this.getRecord(F);}if(!(G instanceof YAHOO.widget.Column)){G=this._oColumnSet.getColumn(F.yuiColumnKey);}if(D&&G){var E=G.key;var H=D.getData(E);var B;if(YAHOO.lang.isString(G.formatter)){switch(G.formatter){case"button":B=YAHOO.widget.DataTable.formatButton;break;case"checkbox":B=YAHOO.widget.DataTable.formatCheckbox;break;case"currency":B=YAHOO.widget.DataTable.formatCurrency;break;case"date":B=YAHOO.widget.DataTable.formatDate;break;case"dropdown":B=YAHOO.widget.DataTable.formatDropdown;break;case"email":B=YAHOO.widget.DataTable.formatEmail;break;case"link":B=YAHOO.widget.DataTable.formatLink;break;case"number":B=YAHOO.widget.DataTable.formatNumber;break;case"radio":B=YAHOO.widget.DataTable.formatRadio;break;case"text":B=YAHOO.widget.DataTable.formatText;break;case"textarea":B=YAHOO.widget.DataTable.formatTextarea;break;case"textbox":B=YAHOO.widget.DataTable.formatTextbox;break;case"html":break;default:B=null;}}else{if(YAHOO.lang.isFunction(G.formatter)){B=G.formatter;}}if(B){B.call(this,F,D,G,H);}else{F.innerHTML=(YAHOO.lang.isValue(H))?H.toString():"";}var C=null;if(YAHOO.lang.isString(G.className)){C=[G.className];}else{if(YAHOO.lang.isArray(G.className)){C=G.className;}}if(C){for(var A=0;A<C.length;A++){YAHOO.util.Dom.addClass(F,C[A]);}}YAHOO.util.Dom.addClass(F,"yui-dt-col-"+E);if(G.editor){YAHOO.util.Dom.addClass(F,YAHOO.widget.DataTable.CLASS_EDITABLE);}this.fireEvent("cellFormatEvent",{record:D,column:G,key:E,el:F});}else{}};YAHOO.widget.DataTable.formatButton=function(A,B,C,E){var D=YAHOO.lang.isValue(E)?E:"Click";A.innerHTML="<button type=\"button\" class=\""+YAHOO.widget.DataTable.CLASS_BUTTON+"\">"+D+"</button>";};YAHOO.widget.DataTable.formatCheckbox=function(A,B,C,E){var D=E;D=(D)?" checked":"";A.innerHTML="<input type=\"checkbox\""+D+" class=\""+YAHOO.widget.DataTable.CLASS_CHECKBOX+"\">";};YAHOO.widget.DataTable.formatCurrency=function(C,E,F,G){if(YAHOO.lang.isNumber(G)){var B=G;var A;B=Math.round(B*100)/100;A="$"+B;var D=A.indexOf(".");if(D<0){A+=".00";}else{while(D>A.length-3){A+="0";}}C.innerHTML=A;}else{C.innerHTML=YAHOO.lang.isValue(G)?G:"";}};YAHOO.widget.DataTable.formatDate=function(A,C,D,E){var B=E;if(B instanceof Date){A.innerHTML=(B.getMonth()+1)+"/"+B.getDate()+"/"+B.getFullYear();}else{A.innerHTML=YAHOO.lang.isValue(E)?E:"";}};YAHOO.widget.DataTable.formatDropdown=function(C,J,H,A){var I=(YAHOO.lang.isValue(A))?A:J.getData(H.key);var K=(YAHOO.lang.isArray(H.dropdownOptions))?H.dropdownOptions:null;var B;var G=C.getElementsByTagName("select");if(G.length===0){B=document.createElement("select");YAHOO.util.Dom.addClass(B,YAHOO.widget.DataTable.CLASS_DROPDOWN);B=C.appendChild(B);YAHOO.util.Event.addListener(B,"change",this._onDropdownChange,this);}B=G[0];if(B){B.innerHTML="";if(K){for(var E=0;E<K.length;E++){var F=K[E];var D=document.createElement("option");D.value=(YAHOO.lang.isValue(F.value))?F.value:F;D.innerHTML=(YAHOO.lang.isValue(F.text))?F.text:F;D=B.appendChild(D);}}else{B.innerHTML="<option value=\""+I+"\">"+I+"</option>";}}else{C.innerHTML=YAHOO.lang.isValue(A)?A:"";}};YAHOO.widget.DataTable.formatEmail=function(A,B,C,D){if(YAHOO.lang.isString(D)){A.innerHTML="<a href=\"mailto:"+D+"\">"+D+"</a>";}else{A.innerHTML=YAHOO.lang.isValue(D)?D:"";}};YAHOO.widget.DataTable.formatLink=function(A,B,C,D){if(YAHOO.lang.isString(D)){A.innerHTML="<a href=\""+D+"\">"+D+"</a>";}else{A.innerHTML=YAHOO.lang.isValue(D)?D:"";}};YAHOO.widget.DataTable.formatNumber=function(A,B,C,D){if(YAHOO.lang.isNumber(D)){A.innerHTML=D;}else{A.innerHTML=YAHOO.lang.isValue(D)?D:"";}};YAHOO.widget.DataTable.formatRadio=function(A,B,C,E){var D=E;D=(D)?" checked":"";A.innerHTML="<input type=\"radio\""+D+" name=\""+C.getKey()+"-radio\" class=\""+YAHOO.widget.DataTable.CLASS_RADIO+"\">";};YAHOO.widget.DataTable.formatText=function(A,B,D,E){var C=(YAHOO.lang.isValue(B.getData(D.key)))?B.getData(D.key):"";A.innerHTML=C.toString().replace(/&/g,"&#38;").replace(/</g,"&#60;").replace(/>/g,"&#62;");};YAHOO.widget.DataTable.formatTextarea=function(B,C,E,F){var D=(YAHOO.lang.isValue(C.getData(E.key)))?C.getData(E.key):"";var A="<textarea>"+D+"</textarea>";B.innerHTML=A;};YAHOO.widget.DataTable.formatTextbox=function(B,C,E,F){var D=(YAHOO.lang.isValue(C.getData(E.key)))?C.getData(E.key):"";var A="<input type=\"text\" value=\""+D+"\">";B.innerHTML=A;};YAHOO.widget.DataTable.prototype.updatePaginator=function(B){var D=this.get("paginator");var A=D.currentPage;for(var C in B){if(YAHOO.lang.hasOwnProperty(D,C)){D[C]=B[C];}}D.totalRecords=this._oRecordSet.getLength();D.rowsThisPage=Math.min(D.rowsPerPage,D.totalRecords);D.totalPages=Math.ceil(D.totalRecords/D.rowsThisPage);if(isNaN(D.totalPages)){D.totalPages=0;}if(D.currentPage>D.totalPages){if(D.totalPages<1){D.currentPage=1;}else{D.currentPage=D.totalPages;}}if(D.currentPage!==A){D.startRecordIndex=(D.currentPage-1)*D.rowsPerPage;}this.set("paginator",D);return this.get("paginator");};YAHOO.widget.DataTable.prototype.showPage=function(A){if(!YAHOO.lang.isNumber(A)||(A<1)||(A>this.get("paginator").totalPages)){A=1;}this.updatePaginator({currentPage:A});this.refreshView();};YAHOO.widget.DataTable.prototype.formatPaginators=function(){var B=this.get("paginator");var A;var C=false;if(B.pageLinks>-1){for(A=0;A<B.links.length;A++){this.formatPaginatorLinks(B.links[A],B.currentPage,B.pageLinksStart,B.pageLinks,B.totalPages);}}for(A=0;A<B.dropdowns.length;A++){if(B.dropdownOptions){C=true;this.formatPaginatorDropdown(B.dropdowns[A],B.dropdownOptions);}else{B.dropdowns[A].style.display="none";}}if(C&&navigator.userAgent.toLowerCase().indexOf("opera")!=-1){document.body.style+="";}};YAHOO.widget.DataTable.prototype.formatPaginatorDropdown=function(F,E){if(F&&(F.ownerDocument==document)){while(F.firstChild){F.removeChild(F.firstChild);}for(var C=0;C<E.length;C++){var G=E[C];var A=document.createElement("option");
A.value=(YAHOO.lang.isValue(G.value))?G.value:G;A.innerHTML=(YAHOO.lang.isValue(G.text))?G.text:G;A=F.appendChild(A);}var B=F.options;if(B.length){for(var D=B.length-1;D>-1;D--){if((this.get("paginator").rowsPerPage+"")===B[D].value){B[D].selected=true;}}}F.style.display="";return ;}};YAHOO.widget.DataTable.prototype.formatPaginatorLinks=function(E,A,N,D,K){if(E&&(E.ownerDocument==document)&&YAHOO.lang.isNumber(A)&&YAHOO.lang.isNumber(N)&&YAHOO.lang.isNumber(K)){var G=(A==1)?true:false;var B=(A==K)?true:false;var I=(G)?" <span class=\""+YAHOO.widget.DataTable.CLASS_DISABLED+" "+YAHOO.widget.DataTable.CLASS_FIRST+"\">&lt;&lt;</span> ":" <a href=\"#\" onclick=\"document.getElementById('btnBuscarHeader').focus();\" class=\""+YAHOO.widget.DataTable.CLASS_FIRST+"\">&lt;&lt;</a> ";var L=(G)?" <span class=\""+YAHOO.widget.DataTable.CLASS_DISABLED+" "+YAHOO.widget.DataTable.CLASS_PREVIOUS+"\">&lt;</span> ":" <a href=\"#\" onclick=\"document.getElementById('btnBuscarHeader').focus();\" class=\""+YAHOO.widget.DataTable.CLASS_PREVIOUS+"\">&lt;</a> ";var O=(B)?" <span class=\""+YAHOO.widget.DataTable.CLASS_DISABLED+" "+YAHOO.widget.DataTable.CLASS_NEXT+"\">&gt;</span> ":" <a href=\"#\" onclick=\"document.getElementById('btnBuscarHeader').focus();\" class=\""+YAHOO.widget.DataTable.CLASS_NEXT+"\">&gt;</a> ";var C=(B)?" <span class=\""+YAHOO.widget.DataTable.CLASS_DISABLED+" "+YAHOO.widget.DataTable.CLASS_LAST+"\">&gt;&gt;</span> ":" <a href=\"#\" onclick=\"document.getElementById('btnBuscarHeader').focus();\" class=\""+YAHOO.widget.DataTable.CLASS_LAST+"\">&gt;&gt;</a> ";var H=I+L;var P=K;var J=1;var M=K;if(D>0){P=(N+D<K)?N+D-1:K;J=(A-Math.floor(P/2)>0)?A-Math.floor(P/2):1;M=(A+Math.floor(P/2)<=K)?A+Math.floor(P/2):K;if(J===1){M=P;}else{if(M===K){J=K-P+1;}}if(M-J===P){M--;}}for(var F=J;F<=M;F++){if(F!=A){H+=" <a href=\"#\" onclick=\"document.getElementById('btnBuscarHeader').focus();\" class=\""+YAHOO.widget.DataTable.CLASS_PAGE+"\">"+F+"</a> ";}else{H+=" <span class=\""+YAHOO.widget.DataTable.CLASS_SELECTED+"\">"+F+"</span>";}}H+=O+C;E.innerHTML=H;return ;}};YAHOO.widget.DataTable.prototype._sLastHighlightedTdElId=null;YAHOO.widget.DataTable.prototype._sLastHighlightedTrElId=null;YAHOO.widget.DataTable.prototype._aSelections=null;YAHOO.widget.DataTable.prototype._oAnchorRecord=null;YAHOO.widget.DataTable.prototype._oAnchorCell=null;YAHOO.widget.DataTable.prototype._unselectAllTrEls=function(){var A=YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_SELECTED,"tr",this._elTbody);YAHOO.util.Dom.removeClass(A,YAHOO.widget.DataTable.CLASS_SELECTED);};YAHOO.widget.DataTable.prototype.getSelectedTrEls=function(){return YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_SELECTED,"tr",this._elTbody);};YAHOO.widget.DataTable.prototype.selectRow=function(F){var E,A;if(F instanceof YAHOO.widget.Record){E=this._oRecordSet.getRecord(F);A=this.getTrEl(E);}else{if(YAHOO.lang.isNumber(F)){E=this.getRecord(F);A=this.getTrEl(E);}else{A=this.getTrEl(F);E=this.getRecord(A);}}if(E){var D=this._aSelections||[];var C=E.getId();if(D.indexOf&&(D.indexOf(C)>-1)){D.splice(D.indexOf(C),1);}else{for(var B=D.length-1;B>-1;B--){if(D[B]===C){D.splice(B,1);break;}}}D.push(C);this._aSelections=D;if(!this._oAnchorRecord){this._oAnchorRecord=E;}if(A){YAHOO.util.Dom.addClass(A,YAHOO.widget.DataTable.CLASS_SELECTED);}this.fireEvent("rowSelectEvent",{record:E,el:A});}};YAHOO.widget.DataTable.prototype.select=function(B){if(!YAHOO.lang.isArray(B)){B=[B];}for(var A=0;A<B.length;A++){this.selectRow(B[A]);}};YAHOO.widget.DataTable.prototype.unselectRow=function(G){var A=this.getTrEl(G);var F;if(G instanceof YAHOO.widget.Record){F=this._oRecordSet.getRecord(G);}else{if(YAHOO.lang.isNumber(G)){F=this.getRecord(G);}else{F=this.getRecord(A);}}if(F){var E=this._aSelections||[];var C=F.getId();var D=false;if(E.indexOf&&(E.indexOf(C)>-1)){E.splice(E.indexOf(C),1);}else{for(var B=E.length-1;B>-1;B--){if(E[B]===C){E.splice(B,1);break;}}}if(D){this._aSelections=E;YAHOO.util.Dom.removeClass(A,YAHOO.widget.DataTable.CLASS_SELECTED);this.fireEvent("rowUnselectEvent",{record:F,el:A});return ;}YAHOO.util.Dom.removeClass(A,YAHOO.widget.DataTable.CLASS_SELECTED);this.fireEvent("rowUnselectEvent",{record:F,el:A});}};YAHOO.widget.DataTable.prototype.unselectAllRows=function(){var B=this._aSelections||[];for(var A=B.length-1;A>-1;A--){if(YAHOO.lang.isString(B[A])){B.splice(A,1);}}this._aSelections=B;this._unselectAllTrEls();this.fireEvent("unselectAllRowsEvent");};YAHOO.widget.DataTable.prototype._unselectAllTdEls=function(){var A=YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_SELECTED,"td",this._elTbody);YAHOO.util.Dom.removeClass(A,YAHOO.widget.DataTable.CLASS_SELECTED);};YAHOO.widget.DataTable.prototype.getSelectedTdEls=function(){return YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_SELECTED,"td",this._elTbody);};YAHOO.widget.DataTable.prototype.selectCell=function(A){var G=this.getTdEl(A);if(G){var F=this.getRecord(G);var E=G.yuiColumnId;if(F&&E){var D=this._aSelections||[];var C=F.getId();for(var B=D.length-1;B>-1;B--){if((D[B].recordId===C)&&(D[B].columnId===E)){D.splice(B,1);break;}}D.push({recordId:C,columnId:E});this._aSelections=D;if(!this._oAnchorCell){this._oAnchorCell={record:F,column:this.getColumnById(E)};}YAHOO.util.Dom.addClass(G,YAHOO.widget.DataTable.CLASS_SELECTED);this.fireEvent("cellSelectEvent",{record:F,column:this.getColumnById(E),key:G.yuiColumnKey,el:G});return ;}}};YAHOO.widget.DataTable.prototype.unselectCell=function(A){var F=this.getTdEl(A);if(F){var E=this.getRecord(F);var D=F.yuiColumnId;if(E&&D){var C=this._aSelections||[];var G=E.getId();for(var B=C.length-1;B>-1;B--){if((C[B].recordId===G)&&(C[B].columnId===D)){C.splice(B,1);this._aSelections=C;YAHOO.util.Dom.removeClass(F,YAHOO.widget.DataTable.CLASS_SELECTED);this.fireEvent("cellUnselectEvent",{record:E,column:this.getColumnById(D),key:F.yuiColumnKey,el:F});return ;}}}}};YAHOO.widget.DataTable.prototype.unselectAllCells=function(){var B=this._aSelections||[];for(var A=B.length-1;A>-1;A--){if(B[A].constructor==Object){B.splice(A,1);}}this._aSelections=B;this._unselectAllTdEls();this.fireEvent("unselectAllCellsEvent");};YAHOO.widget.DataTable.prototype.isSelected=function(G){var F,B,A;var C=this.getTrEl(G)||this.getTdEl(G);
if(C){return YAHOO.util.Dom.hasClass(C,YAHOO.widget.DataTable.CLASS_SELECTED);}else{var E=this._aSelections;if(E&&E.length>1){if(G instanceof YAHOO.widget.Record){F=G;}else{if(YAHOO.lang.isNumber(G)){F=this.getRecord(G);}}if(F){B=F.getId();if(E.indexOf&&(E.indexOf(B)>-1)){return true;}else{for(A=E.length-1;A>-1;A--){if(E[A]===B){return true;}}}}else{if(G.record&&G.column){B=G.record.getId();var D=G.column.getId();for(A=E.length-1;A>-1;A--){if((E[A].recordId===B)&&(E[A].columnId===D)){return true;}}}}}}return false;};YAHOO.widget.DataTable.prototype.getSelectedRows=function(){var A=[];var C=this._aSelections||[];for(var B=0;B<C.length;B++){if(YAHOO.lang.isString(C[B])){A.push(C[B]);}}return A;};YAHOO.widget.DataTable.prototype.getSelectedCells=function(){var B=[];var C=this._aSelections||[];for(var A=0;A<C.length;A++){if(C[A]&&(C[A].constructor==Object)){B.push(C[A]);}}return B;};YAHOO.widget.DataTable.prototype.getLastSelectedRecord=function(){var B=this._aSelections;if(B.length>0){for(var A=B.length-1;A>-1;A--){if(YAHOO.lang.isString(B[A])){return B[A];}}}};YAHOO.widget.DataTable.prototype.getLastSelectedCell=function(){var B=this._aSelections;if(B.length>0){for(var A=B.length-1;A>-1;A--){if(B[A].recordId&&B[A].columnId){return B[A];}}}};YAHOO.widget.DataTable.prototype.highlightRow=function(C){var A=this.getTrEl(C);if(A){if(this._sLastHighlightedTrElId){YAHOO.util.Dom.removeClass(this._sLastHighlightedTrElId,YAHOO.widget.DataTable.CLASS_HIGHLIGHTED);}var B=this.getRecord(A);YAHOO.util.Dom.addClass(A,YAHOO.widget.DataTable.CLASS_HIGHLIGHTED);this._sLastHighlightedTrElId=A.id;this.fireEvent("rowHighlightEvent",{record:B,el:A});return ;}};YAHOO.widget.DataTable.prototype.unhighlightRow=function(C){var A=this.getTrEl(C);if(A){var B=this.getRecord(A);YAHOO.util.Dom.removeClass(A,YAHOO.widget.DataTable.CLASS_HIGHLIGHTED);this.fireEvent("rowUnhighlightEvent",{record:B,el:A});return ;}};YAHOO.widget.DataTable.prototype.highlightCell=function(A){var D=this.getTdEl(A);if(D){if(this._sLastHighlightedTdElId){YAHOO.util.Dom.removeClass(this._sLastHighlightedTdElId,YAHOO.widget.DataTable.CLASS_HIGHLIGHTED);}var C=this.getRecord(D);var B=D.yuiColumnId;YAHOO.util.Dom.addClass(D,YAHOO.widget.DataTable.CLASS_HIGHLIGHTED);this._sLastHighlightedTdElId=D.id;this.fireEvent("cellHighlightEvent",{record:C,column:this.getColumnById(B),key:D.yuiColumnKey,el:D});return ;}};YAHOO.widget.DataTable.prototype.unhighlightCell=function(A){var C=this.getTdEl(A);if(C){var B=this.getRecord(C);YAHOO.util.Dom.removeClass(C,YAHOO.widget.DataTable.CLASS_HIGHLIGHTED);this.fireEvent("cellUnhighlightEvent",{record:B,column:this.getColumnById(C.yuiColumnId),key:C.yuiColumnKey,el:C});return ;}};YAHOO.widget.DataTable.prototype.showCellEditor=function(E,C,G){E=YAHOO.util.Dom.get(E);if(E&&(E.ownerDocument===document)){if(!C||!(C instanceof YAHOO.widget.Record)){C=this.getRecord(E);}if(!G||!(G instanceof YAHOO.widget.Column)){G=this.getColumn(E);}if(C&&G){var D=this._oCellEditor;if(D.isActive){this.cancelCellEditor();}if(!G.editor){return ;}D.cell=E;D.record=C;D.column=G;D.validator=(G.editorOptions&&YAHOO.lang.isFunction(G.editorOptions.validator))?G.editorOptions.validator:null;D.value=C.getData(G.key);var F=D.container;var A=YAHOO.util.Dom.getX(E);var H=YAHOO.util.Dom.getY(E);if(isNaN(A)||isNaN(H)){A=E.offsetLeft+YAHOO.util.Dom.getX(this._elTable)-this._elTbody.scrollLeft;H=E.offsetTop+YAHOO.util.Dom.getY(this._elTable)-this._elTbody.scrollTop+this._elThead.offsetHeight;}F.style.left=A+"px";F.style.top=H+"px";F.style.display="";var B;if(YAHOO.lang.isString(G.editor)){switch(G.editor){case"checkbox":B=YAHOO.widget.DataTable.editCheckbox;break;case"date":B=YAHOO.widget.DataTable.editDate;break;case"dropdown":B=YAHOO.widget.DataTable.editDropdown;break;case"radio":B=YAHOO.widget.DataTable.editRadio;break;case"textarea":B=YAHOO.widget.DataTable.editTextarea;break;case"textbox":B=YAHOO.widget.DataTable.editTextbox;break;default:B=null;}}else{if(YAHOO.lang.isFunction(G.editor)){B=G.editor;}}if(B){B(this._oCellEditor,this);if(!G.editorOptions||!G.editorOptions.disableBtns){this.showCellEditorBtns(F);}this.doBeforeShowCellEditor(this._oCellEditor);D.isActive=true;this.fireEvent("editorShowEvent",{editor:D});return ;}}}};YAHOO.widget.DataTable.prototype.doBeforeShowCellEditor=function(A){};YAHOO.widget.DataTable.prototype.showCellEditorBtns=function(C){var D=C.appendChild(document.createElement("div"));YAHOO.util.Dom.addClass(D,YAHOO.widget.DataTable.CLASS_BUTTON);var B=D.appendChild(document.createElement("button"));YAHOO.util.Dom.addClass(B,YAHOO.widget.DataTable.CLASS_DEFAULT);B.innerHTML="OK";YAHOO.util.Event.addListener(B,"click",this.saveCellEditor,this,true);var A=D.appendChild(document.createElement("button"));A.innerHTML="Cancel";YAHOO.util.Event.addListener(A,"click",this.cancelCellEditor,this,true);};YAHOO.widget.DataTable.prototype.resetCellEditor=function(){var A=this._oCellEditor.container;A.style.display="none";YAHOO.util.Event.purgeElement(A,true);A.innerHTML="";this._oCellEditor.value=null;this._oCellEditor.isActive=false;};YAHOO.widget.DataTable.prototype.saveCellEditor=function(){if(this._oCellEditor.isActive){var A=this._oCellEditor.value;var B=this._oCellEditor.record.getData(this._oCellEditor.column.key);if(this._oCellEditor.validator){this._oCellEditor.value=this._oCellEditor.validator.call(this,A,B,this._oCellEditor);if(this._oCellEditor.value===null){this.resetCellEditor();this.fireEvent("editorRevertEvent",{editor:this._oCellEditor,oldData:B,newData:A});return ;}}this._oRecordSet.updateKey(this._oCellEditor.record,this._oCellEditor.column.key,this._oCellEditor.value);this.formatCell(this._oCellEditor.cell);this.resetCellEditor();this.fireEvent("editorSaveEvent",{editor:this._oCellEditor,oldData:B,newData:A});}else{}};YAHOO.widget.DataTable.prototype.cancelCellEditor=function(){if(this._oCellEditor.isActive){this.resetCellEditor();this.fireEvent("editorCancelEvent",{editor:this._oCellEditor});}else{}};YAHOO.widget.DataTable.editCheckbox=function(J,I){var K=J.cell;
var O=J.record;var G=J.column;var A=J.container;var D=O.getData(G.key);if(!YAHOO.lang.isArray(D)){D=[D];}if(G.editorOptions&&YAHOO.lang.isArray(G.editorOptions.checkboxOptions)){var N=G.editorOptions.checkboxOptions;var F,L,E,C,B;for(C=0;C<N.length;C++){F=YAHOO.lang.isValue(N[C].label)?N[C].label:N[C];L=I.id+"-editor-checkbox"+C;A.innerHTML+="<input type=\"checkbox\" name=\""+I.id+"-editor-checkbox\" value=\""+F+"\" id=\""+L+"\">";E=A.appendChild(document.createElement("label"));E.htmlFor=L;E.innerHTML=F;}var H=[];var M;for(C=0;C<N.length;C++){M=YAHOO.util.Dom.get(I.id+"-editor-checkbox"+C);H.push(M);for(B=0;B<D.length;B++){if(M.value===D[B]){M.checked=true;}}if(C===0){I._focusEl(M);}}for(C=0;C<N.length;C++){M=YAHOO.util.Dom.get(I.id+"-editor-checkbox"+C);YAHOO.util.Event.addListener(M,"click",function(){var Q=[];for(var P=0;P<H.length;P++){if(H[P].checked){Q.push(H[P].value);}}I._oCellEditor.value=Q;I.fireEvent("editorUpdateEvent",{editor:I._oCellEditor});});}}};YAHOO.widget.DataTable.editDate=function(F,E){var G=F.cell;var J=F.record;var C=F.column;var A=F.container;var H=J.getData(C.key);if(YAHOO.widget.Calendar){var D=(H.getMonth()+1)+"/"+H.getDate()+"/"+H.getFullYear();var I=A.appendChild(document.createElement("div"));I.id=E.id+"-col"+C.getId()+"-dateContainer";var B=new YAHOO.widget.Calendar(E.id+"-col"+C.getId()+"-date",I.id,{selected:D,pagedate:H});B.render();I.style.cssFloat="none";B.selectEvent.subscribe(function(L,K,M){E._oCellEditor.value=new Date(K[0][0][0],K[0][0][1]-1,K[0][0][2]);E.fireEvent("editorUpdateEvent",{editor:E._oCellEditor});});}else{}};YAHOO.widget.DataTable.editDropdown=function(G,F){var H=G.cell;var L=G.record;var D=G.column;var B=G.container;var I=L.getData(D.key);var K=B.appendChild(document.createElement("select"));var J=(D.editorOptions&&YAHOO.lang.isArray(D.editorOptions.dropdownOptions))?D.editorOptions.dropdownOptions:[];for(var C=0;C<J.length;C++){var E=J[C];var A=document.createElement("option");A.value=(YAHOO.lang.isValue(E.value))?E.value:E;A.innerHTML=(YAHOO.lang.isValue(E.text))?E.text:E;A=K.appendChild(A);if(I===K.options[C].value){K.options[C].selected=true;}}YAHOO.util.Event.addListener(K,"change",function(){F._oCellEditor.value=K[K.selectedIndex].value;F.fireEvent("editorUpdateEvent",{editor:F._oCellEditor});});F._focusEl(K);};YAHOO.widget.DataTable.editRadio=function(H,F){var I=H.cell;var M=H.record;var E=H.column;var A=H.container;var J=M.getData(E.key);if(E.editorOptions&&YAHOO.lang.isArray(E.editorOptions.radioOptions)){var G=E.editorOptions.radioOptions;var B,K,D,C;for(C=0;C<G.length;C++){B=YAHOO.lang.isValue(G[C].label)?G[C].label:G[C];K=F.id+"-editor-radio"+C;A.innerHTML+="<input type=\"radio\" name=\""+F.id+"-editor-radio\" value=\""+B+"\" id=\""+K+"\">";D=A.appendChild(document.createElement("label"));D.htmlFor=K;D.innerHTML=B;}for(C=0;C<G.length;C++){var L=YAHOO.util.Dom.get(F.id+"-editor-radio"+C);if(J===L.value){L.checked=true;F._focusEl(L);}YAHOO.util.Event.addListener(L,"click",function(){F._oCellEditor.value=this.value;F.fireEvent("editorUpdateEvent",{editor:F._oCellEditor});});}}};YAHOO.widget.DataTable.editTextarea=function(H,B){var E=H.cell;var C=H.record;var G=H.column;var F=H.container;var D=C.getData(G.key);var A=F.appendChild(document.createElement("textarea"));A.style.width=E.offsetWidth+"px";A.style.height="3em";A.value=YAHOO.lang.isValue(D)?D:"";YAHOO.util.Event.addListener(A,"keyup",function(){B._oCellEditor.value=A.value;B.fireEvent("editorUpdateEvent",{editor:B._oCellEditor});});A.focus();A.select();};YAHOO.widget.DataTable.editTextbox=function(G,A){var D=G.cell;var B=G.record;var F=G.column;var E=G.container;var C=YAHOO.lang.isValue(B.getData(F.key))?B.getData(F.key):"";var H=E.appendChild(document.createElement("input"));H.type="text";H.style.width=D.offsetWidth+"px";H.value=C;YAHOO.util.Event.addListener(H,"keyup",function(){A._oCellEditor.value=H.value;A.fireEvent("editorUpdateEvent",{editor:A._oCellEditor});});H.focus();H.select();};YAHOO.widget.DataTable.validateNumber=function(B){var A=B*1;if(YAHOO.lang.isNumber(A)){return A;}else{return null;}};YAHOO.widget.DataTable.prototype.doBeforeLoadData=function(A,B){return true;};YAHOO.widget.DataTable.prototype.onEventSortColumn=function(C){var A=C.event;var E=C.target;YAHOO.util.Event.stopEvent(A);var B=this.getThEl(E)||this.getTdEl(E);if(B&&B.yuiColumnKey){var D=this.getColumn(B.yuiColumnKey);if(D.sortable){this.sortColumn(D);}else{}}else{}};YAHOO.widget.DataTable.prototype.onEventSelectRow=function(D){var M=this.get("selectionMode");if((M=="singlecell")||(M=="cellblock")||(M=="cellrange")){return ;}var N=D.event;var C=D.target;var P=N.shiftKey;var G=N.ctrlKey||((navigator.userAgent.toLowerCase().indexOf("mac")!=-1)&&N.metaKey);var H;var F=this.getTrEl(C);if(F){var L,I;var J=this._elTbody.rows;var O=this.getRecord(F);var E=this._oRecordSet.getRecordIndex(O);var K=this.getTrIndex(F);var A=this._oAnchorRecord;if(A){L=this._oRecordSet.getRecordIndex(A);I=this.getTrIndex(A);if(I===null){if(L<this.getRecordIndex(this.getFirstTrEl())){I=0;}else{I=this.getRecordIndex(this.getLastTrEl());}}}if((M!="single")&&P&&G){if(A){if(this.isSelected(A)){if(L<E){for(H=L+1;H<=E;H++){if(!this.isSelected(H)){this.selectRow(H);}}}else{for(H=L-1;H>=E;H--){if(!this.isSelected(H)){this.selectRow(H);}}}}else{if(L<E){for(H=L+1;H<=E-1;H++){if(this.isSelected(H)){this.unselectRow(H);}}}else{for(H=E+1;H<=L-1;H++){if(this.isSelected(H)){this.unselectRow(H);}}}this.selectRow(O);}}else{this._oAnchorRecord=O;if(this.isSelected(O)){this.unselectRow(O);}else{this.selectRow(O);}}}else{if((M!="single")&&P){this.unselectAllRows();if(A){if(L<E){for(H=L;H<=E;H++){this.selectRow(H);}}else{for(H=L;H>=E;H--){this.selectRow(H);}}}else{this._oAnchorRecord=O;this.selectRow(O);}}else{if((M!="single")&&G){this._oAnchorRecord=O;if(this.isSelected(O)){this.unselectRow(O);}else{this.selectRow(O);}}else{if(M=="single"){this.unselectAllRows();this.selectRow(O);}else{this._oAnchorRecord=O;this.unselectAllRows();this.selectRow(O);
}}}}var B;if(window.getSelection){B=window.getSelection();}else{if(document.getSelection){B=document.getSelection();}else{if(document.selection){B=document.selection;}}}if(B){if(B.empty){B.empty();}else{if(B.removeAllRanges){B.removeAllRanges();}else{if(B.collapse){B.collapse();}}}}}else{}};YAHOO.widget.DataTable.prototype.onEventSelectCell=function(W){var Q=this.get("selectionMode");if((Q=="standard")||(Q=="single")){return ;}var L=W.event;var X=W.target;var G=L.shiftKey;var C=L.ctrlKey||((navigator.userAgent.toLowerCase().indexOf("mac")!=-1)&&L.metaKey);var U,T,Z,D,A;var B=this.getTdEl(X);if(B){var R,S,I,Y;var K=this.getTrEl(B);var E=this._elTbody.rows;var N=this.getRecord(K);var a=this._oRecordSet.getRecordIndex(N);var M=this.getColumn(B);var P=M.getKeyIndex();var J=this.getTrIndex(K);var F={record:N,column:M};var H=(this._oAnchorCell)?this._oAnchorCell.record:null;if(H){R=this._oRecordSet.getRecordIndex(H);I=this._oAnchorCell.column;Y=I.getKeyIndex();S=this.getTrIndex(H);if(S===null){if(R<this.getRecordIndex(this.getFirstTrEl())){S=0;}else{S=this.getRecordIndex(this.getLastTrEl());}}}var V={record:H,column:I};if((Q!="singlecell")&&G&&C){if(H&&I){if(this.isSelected(this._oAnchorCell)){if(R===a){if(Y<P){for(U=Y+1;U<=P;U++){this.selectCell(E[J].cells[U]);}}else{if(P<Y){for(U=P;U<Y;U++){this.selectCell(E[J].cells[U]);}}}}else{if(R<a){if(Q=="cellrange"){for(U=Y+1;U<E[S].cells.length;U++){this.selectCell(E[S].cells[U]);}for(U=S+1;U<J;U++){for(T=0;T<E[U].cells.length;T++){this.selectCell(E[U].cells[T]);}}for(U=0;U<=P;U++){this.selectCell(E[J].cells[U]);}}else{if(Q=="cellblock"){D=Math.min(Y,P);A=Math.max(Y,P);for(U=S;U<=J;U++){for(T=D;T<=A;T++){this.selectCell(E[U].cells[T]);}}}}}else{if(Q=="cellrange"){for(U=P;U<E[J].cells.length;U++){this.selectCell(E[J].cells[U]);}for(U=J+1;U<S;U++){for(T=0;T<E[U].cells.length;T++){this.selectCell(E[U].cells[T]);}}for(U=0;U<Y;U++){this.selectCell(E[S].cells[U]);}}else{if(Q=="cellblock"){D=Math.min(S,P);A=Math.max(S,P);for(U=S;U>=J;U--){for(T=A;T>=D;T--){this.selectCell(E[U].cells[T]);}}}}}}}else{if(R===a){if(Y<P){for(U=Y+1;U<P;U++){this.unselectCell(E[J].cells[U]);}}else{if(P<Y){for(U=P+1;U<Y;U++){this.unselectCell(E[J].cells[U]);}}}}if(R<a){for(U=S;U<=J;U++){Z=E[U];for(T=0;T<Z.cells.length;T++){if(Z.sectionRowIndex===S){if(T>Y){this.unselectCell(Z.cells[T]);}}else{if(Z.sectionRowIndex===J){if(T<P){this.unselectCell(Z.cells[T]);}}else{this.unselectCell(Z.cells[T]);}}}}}else{for(U=J;U<=S;U++){Z=E[U];for(T=0;T<Z.cells.length;T++){if(Z.sectionRowIndex==J){if(T>P){this.unselectCell(Z.cells[T]);}}else{if(Z.sectionRowIndex==S){if(T<Y){this.unselectCell(Z.cells[T]);}}else{this.unselectCell(Z.cells[T]);}}}}}this.selectCell(B);}}else{this._oAnchorCell=F;if(this.isSelected(F)){this.unselectCell(F);}else{this.selectCell(F);}}}else{if((Q!="singlecell")&&G){this.unselectAllCells();if(V){if(R===a){if(Y<P){for(U=Y;U<=P;U++){this.selectCell(E[J].cells[U]);}}else{if(P<Y){for(U=P;U<=Y;U++){this.selectCell(E[J].cells[U]);}}}}else{if(R<a){if(Q=="cellrange"){for(U=S;U<=J;U++){Z=E[U];for(T=0;T<Z.cells.length;T++){if(Z.sectionRowIndex==S){if(T>=Y){this.selectCell(Z.cells[T]);}}else{if(Z.sectionRowIndex==J){if(T<=P){this.selectCell(Z.cells[T]);}}else{this.selectCell(Z.cells[T]);}}}}}else{if(Q=="cellblock"){D=Math.min(Y,P);A=Math.max(Y,P);for(U=S;U<=J;U++){for(T=D;T<=A;T++){this.selectCell(E[U].cells[T]);}}}}}else{if(Q=="cellrange"){for(U=J;U<=S;U++){Z=E[U];for(T=0;T<Z.cells.length;T++){if(Z.sectionRowIndex==J){if(T>=P){this.selectCell(Z.cells[T]);}}else{if(Z.sectionRowIndex==S){if(T<=Y){this.selectCell(Z.cells[T]);}}else{this.selectCell(Z.cells[T]);}}}}}else{if(Q=="cellblock"){D=Math.min(Y,P);A=Math.max(Y,P);for(U=J;U<=S;U++){for(T=D;T<=A;T++){this.selectCell(E[U].cells[T]);}}}}}}}else{this._oAnchorCell=F;this.selectCell(F);}}else{if((Q!="singlecell")&&C){this._oAnchorCell=F;if(this.isSelected(F)){this.unselectCell(F);}else{this.selectCell(F);}}else{this._oAnchorCell=F;this.unselectAllCells();this.selectCell(F);}}}var O;if(window.getSelection){O=window.getSelection();}else{if(document.getSelection){O=document.getSelection();}else{if(document.selection){O=document.selection;}}}if(O){if(O.empty){O.empty();}else{if(O.removeAllRanges){O.removeAllRanges();}else{if(O.collapse){O.collapse();}}}}}else{}};YAHOO.widget.DataTable.prototype.onEventHighlightRow=function(B){var A=B.event;var C=B.target;this.highlightRow(C);};YAHOO.widget.DataTable.prototype.onEventUnhighlightRow=function(B){var A=B.event;var C=B.target;this.unhighlightRow(C);};YAHOO.widget.DataTable.prototype.onEventHighlightCell=function(B){var A=B.event;var C=B.target;this.highlightCell(C);};YAHOO.widget.DataTable.prototype.onEventUnhighlightCell=function(B){var A=B.event;var C=B.target;this.unhighlightCell(C);};YAHOO.widget.DataTable.prototype.onEventFormatCell=function(C){var A=C.event;var F=C.target;var B=F.tagName.toLowerCase();var D=this.getTdEl(F);if(D&&D.yuiColumnKey){var E=this.getColumn(D.yuiColumnKey);this.formatCell(D,this.getRecord(D),E);}else{}};YAHOO.widget.DataTable.prototype.onEventShowCellEditor=function(C){var A=C.event;var E=C.target;var B=E.tagName.toLowerCase();var D=this.getTdEl(E);if(D){this.showCellEditor(D);}else{}};YAHOO.widget.DataTable.prototype.onEventEditCell=function(A){this.onEventShowCellEditor(A);};YAHOO.widget.DataTable.prototype.onEventSaveCellEditor=function(A){this.saveCellEditor();};YAHOO.widget.DataTable.prototype._onDataReturnEnhanceTable=function(B,C){var A=this.doBeforeLoadData(B,C);if(A&&C&&!C.error&&YAHOO.lang.isArray(C.results)){this._oRecordSet.addRecords(C.results);this._initTableEl();if(!this._elTable||!this._elThead||!this._elTbody){return ;}YAHOO.widget.DataTable.superclass.constructor.call(this,this._elContainer,this._oConfigs);if(this._oConfigs.paginator){this.updatePaginator(this._oConfigs.paginator);}this.refreshView();}else{if(A&&C.error){this.showTableMessage(YAHOO.widget.DataTable.MSG_ERROR,YAHOO.widget.DataTable.CLASS_ERROR);}else{if(A){this.showTableMessage(YAHOO.widget.DataTable.MSG_EMPTY,YAHOO.widget.DataTable.CLASS_EMPTY);
}}}};YAHOO.widget.DataTable.prototype.onDataReturnInitializeTable=function(B,C){this.fireEvent("dataReturnEvent",{request:B,response:C});var A=this.doBeforeLoadData(B,C);if(A&&C&&!C.error&&YAHOO.lang.isArray(C.results)){this.initializeTable(C.results);}else{if(A&&C.error){this.showTableMessage(YAHOO.widget.DataTable.MSG_ERROR,YAHOO.widget.DataTable.CLASS_ERROR);}else{if(A){this.showTableMessage(YAHOO.widget.DataTable.MSG_EMPTY,YAHOO.widget.DataTable.CLASS_EMPTY);}}}};YAHOO.widget.DataTable.prototype.onDataReturnReplaceRows=function(A,B){this.onDataReturnInitializeTable(A,B);};YAHOO.widget.DataTable.prototype.onDataReturnAppendRows=function(B,C){this.fireEvent("dataReturnEvent",{request:B,response:C});var A=this.doBeforeLoadData(B,C);if(A&&C&&!C.error&&YAHOO.lang.isArray(C.results)){this.addRows(C.results);}else{if(A&&C.error){this.showTableMessage(YAHOO.widget.DataTable.MSG_ERROR,YAHOO.widget.DataTable.CLASS_ERROR);}}};YAHOO.widget.DataTable.prototype.onDataReturnInsertRows=function(B,C){this.fireEvent("dataReturnEvent",{request:B,response:C});var A=this.doBeforeLoadData(B,C);if(A&&C&&!C.error&&YAHOO.lang.isArray(C.results)){this.addRows(C.results,0);}else{if(A&&C.error){this.showTableMessage(YAHOO.widget.DataTable.MSG_ERROR,YAHOO.widget.DataTable.CLASS_ERROR);}}};YAHOO.widget.ColumnSet=function(F){this._sName="instance"+YAHOO.widget.ColumnSet._nCount;var K=[];var A=[];var I=[];var E=[];var C=-1;var H=this;var B=function(N,T){C++;if(!K[C]){K[C]=[];}for(var P=0;P<N.length;P++){var L=N[P];var R=new YAHOO.widget.Column(L);R._sId=YAHOO.widget.Column._nCount+"";R._sName="Column instance"+YAHOO.widget.Column._nCount;if(!YAHOO.lang.isValue(R.key)){R.key="yui-dt-col"+YAHOO.widget.Column._nCount;}YAHOO.widget.Column._nCount++;A.push(R);if(T){R.parent=T;}if(YAHOO.lang.isArray(L.children)){R.children=L.children;var S=0;var Q=function(W){var X=W.children;for(var V=0;V<X.length;V++){if(YAHOO.lang.isArray(X[V].children)){Q(X[V]);}else{S++;}}};Q(L);R._colspan=S;var U=L.children;for(var O=0;O<U.length;O++){var M=U[O];if(R.className&&(M.className===undefined)){M.className=R.className;}if(R.editor&&(M.editor===undefined)){M.editor=R.editor;}if(R.editorOptions&&(M.editorOptions===undefined)){M.editorOptions=R.editorOptions;}if(R.formatter&&(M.formatter===undefined)){M.formatter=R.formatter;}if(R.resizeable&&(M.resizeable===undefined)){M.resizeable=R.resizeable;}if(R.sortable&&(M.sortable===undefined)){M.sortable=R.sortable;}if(R.width&&(M.width===undefined)){M.width=R.width;}if(R.type&&(M.type===undefined)){M.type=R.type;}if(R.type&&!R.formatter){R.formatter=R.type;}if(R.text&&!YAHOO.lang.isValue(R.label)){R.label=R.text;}if(R.parser){}if(R.sortOptions&&((R.sortOptions.ascFunction)||(R.sortOptions.descFunction))){}}if(!K[C+1]){K[C+1]=[];}B(U,R);}else{R._nKeyIndex=I.length;R._colspan=1;I.push(R);}K[C].push(R);}C--;};if(YAHOO.lang.isArray(F)){B(F);}var D=function(M){var N=1;var P;var O;var Q=function(U,T){T=T||1;for(var V=0;V<U.length;V++){var S=U[V];if(YAHOO.lang.isArray(S.children)){T++;Q(S.children,T);T--;}else{if(T>N){N=T;}}}};for(var L=0;L<M.length;L++){P=M[L];Q(P);for(var R=0;R<P.length;R++){O=P[R];if(!YAHOO.lang.isArray(O.children)){O._rowspan=N;}else{O._rowspan=1;}}N=1;}};D(K);var J=function(L,M){E[L].push(M._sId);if(M.parent){J(L,M.parent);}};for(var G=0;G<I.length;G++){E[G]=[];J(G,I[G]);E[G]=E[G].reverse();}this.tree=K;this.flat=A;this.keys=I;this.headers=E;YAHOO.widget.ColumnSet._nCount++;};YAHOO.widget.ColumnSet._nCount=0;YAHOO.widget.ColumnSet.prototype._sName=null;YAHOO.widget.ColumnSet.prototype.tree=null;YAHOO.widget.ColumnSet.prototype.flat=null;YAHOO.widget.ColumnSet.prototype.keys=null;YAHOO.widget.ColumnSet.prototype.headers=null;YAHOO.widget.ColumnSet.prototype.toString=function(){return"ColumnSet "+this._sName;};YAHOO.widget.ColumnSet.prototype.getColumnById=function(C){if(YAHOO.lang.isString(C)){var A=this.flat;for(var B=A.length-1;B>-1;B--){if(A[B]._sId===C){return A[B];}}}return null;};YAHOO.widget.ColumnSet.prototype.getColumn=function(C){if(YAHOO.lang.isNumber(C)&&this.keys[C]){return this.keys[C];}else{if(YAHOO.lang.isString(C)){var A=this.flat;var D=[];for(var B=0;B<A.length;B++){if(A[B].key===C){D.push(A[B]);}}if(D.length===1){return D[0];}else{if(D.length>1){return D;}}}}return null;};YAHOO.widget.Column=function(B){if(B&&(B.constructor==Object)){for(var A in B){if(A){this[A]=B[A];}}}};YAHOO.widget.Column._nCount=0;YAHOO.widget.Column.prototype._sName=null;YAHOO.widget.Column.prototype._sId=null;YAHOO.widget.Column.prototype._nKeyIndex=null;YAHOO.widget.Column.prototype._colspan=1;YAHOO.widget.Column.prototype._rowspan=1;YAHOO.widget.Column.prototype._parent=null;YAHOO.widget.Column.prototype._width=null;YAHOO.widget.Column.prototype._minWidth=null;YAHOO.widget.Column.prototype.key=null;YAHOO.widget.Column.prototype.label=null;YAHOO.widget.Column.prototype.abbr=null;YAHOO.widget.Column.prototype.children=null;YAHOO.widget.Column.prototype.width=null;YAHOO.widget.Column.prototype.className=null;YAHOO.widget.Column.prototype.formatter=null;YAHOO.widget.Column.prototype.editor=null;YAHOO.widget.Column.prototype.editorOptions=null;YAHOO.widget.Column.prototype.resizeable=false;YAHOO.widget.Column.prototype.sortable=false;YAHOO.widget.Column.prototype.sortOptions=null;YAHOO.widget.Column.prototype.toString=function(){return this._sName;};YAHOO.widget.Column.prototype.getId=function(){return this._sId;};YAHOO.widget.Column.prototype.getKey=function(){return this.key;};YAHOO.widget.Column.prototype.getKeyIndex=function(){return this._nKeyIndex;};YAHOO.widget.Column.prototype.getParent=function(){return this._parent;};YAHOO.widget.Column.prototype.getColspan=function(){return this._colspan;};YAHOO.widget.Column.prototype.getColSpan=function(){return this.getColspan();};YAHOO.widget.Column.prototype.getRowspan=function(){return this._rowspan;};YAHOO.widget.Column.prototype.getIndex=function(){return this.getKeyIndex();};YAHOO.widget.Column.prototype.format=function(){};YAHOO.widget.Column.formatCheckbox=function(B,A,C,D){YAHOO.widget.DataTable.formatCheckbox(B,A,C,D);
};YAHOO.widget.Column.formatCurrency=function(B,A,C,D){YAHOO.widget.DataTable.formatCurrency(B,A,C,D);};YAHOO.widget.Column.formatDate=function(B,A,C,D){YAHOO.widget.DataTable.formatDate(B,A,C,D);};YAHOO.widget.Column.formatEmail=function(B,A,C,D){YAHOO.widget.DataTable.formatEmail(B,A,C,D);};YAHOO.widget.Column.formatLink=function(B,A,C,D){YAHOO.widget.DataTable.formatLink(B,A,C,D);};YAHOO.widget.Column.formatNumber=function(B,A,C,D){YAHOO.widget.DataTable.formatNumber(B,A,C,D);};YAHOO.widget.Column.formatSelect=function(B,A,C,D){YAHOO.widget.DataTable.formatDropdown(B,A,C,D);};YAHOO.util.Sort={compare:function(B,A,C){if((B===null)||(typeof B=="undefined")){if((A===null)||(typeof A=="undefined")){return 0;}else{return 1;}}else{if((A===null)||(typeof A=="undefined")){return -1;}}if(B.constructor==String){B=B.toLowerCase();}if(A.constructor==String){A=A.toLowerCase();}if(B<A){return(C)?1:-1;}else{if(B>A){return(C)?-1:1;}else{return 0;}}}};YAHOO.util.ColumnResizer=function(F,E,D,B,A,C){if(F&&E&&D&&B){this.datatable=F;this.column=E;this.cell=D;this.init(B,A,C);this.setYConstraint(0,0);}else{}};if(YAHOO.util.DD){YAHOO.extend(YAHOO.util.ColumnResizer,YAHOO.util.DD);}YAHOO.util.ColumnResizer.prototype.onMouseDown=function(F){this.startWidth=this.cell.offsetWidth;this.startPos=YAHOO.util.Dom.getX(this.getDragEl());if(this.datatable.fixedWidth){var B=YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_LABEL,"span",this.cell)[0];this.minWidth=B.offsetWidth+6;var A=this.cell.nextSibling;var D=YAHOO.util.Dom.getElementsByClassName(YAHOO.widget.DataTable.CLASS_LABEL,"span",A)[0];this.sibMinWidth=D.offsetWidth+6;var E=((this.startWidth-this.minWidth)<0)?0:(this.startWidth-this.minWidth);var C=((A.offsetWidth-this.sibMinWidth)<0)?0:(A.offsetWidth-this.sibMinWidth);this.setXConstraint(E,C);}};YAHOO.util.ColumnResizer.prototype.onMouseUp=function(B){var A=YAHOO.util.Dom.get(this.handleElId).style;A.left="auto";A.right=0;A.marginRight="-6px";A.width="6px";this.datatable.fireEvent("columnResizeEvent",{column:this.column,target:this.cell});};YAHOO.util.ColumnResizer.prototype.onDrag=function(F){try{var G=YAHOO.util.Dom.getX(this.getDragEl());var E=G-this.startPos;var D=this.startWidth+E;if(D<this.minWidth){D=this.minWidth;}var I=this.datatable;var H=this.cell;if(I.fixedWidth){var B=H.nextSibling;var A=B.offsetWidth-E;if(A<this.sibMinWidth){A=this.sibMinWidth;}for(var C=0;C<I._oColumnSet.length;C++){}B.style.width=A;H.style.width=D+"px";}else{H.style.width=D+"px";}}catch(F){}};YAHOO.widget.RecordSet=function(A){this._sName="RecordSet instance"+YAHOO.widget.RecordSet._nCount;YAHOO.widget.RecordSet._nCount++;this._records=[];this._length=0;if(A){if(YAHOO.lang.isArray(A)){this.addRecords(A);}else{if(A.constructor==Object){this.addRecord(A);}}}this.createEvent("recordAddEvent");this.createEvent("recordsAddEvent");this.createEvent("recordUpdateEvent");this.createEvent("recordDeleteEvent");this.createEvent("recordsDeleteEvent");this.createEvent("resetEvent");this.createEvent("keyUpdateEvent");};if(YAHOO.util.EventProvider){YAHOO.augment(YAHOO.widget.RecordSet,YAHOO.util.EventProvider);}else{}YAHOO.widget.RecordSet._nCount=0;YAHOO.widget.RecordSet.prototype._sName=null;YAHOO.widget.RecordSet.prototype._length=null;YAHOO.widget.RecordSet.prototype._addRecord=function(C,A){var B=new YAHOO.widget.Record(C);if(YAHOO.lang.isNumber(A)&&(A>-1)){this._records.splice(A,0,B);}else{A=this.getLength();this._records.push(B);}this._length++;return B;};YAHOO.widget.RecordSet.prototype._deleteRecord=function(B,A){if(!YAHOO.lang.isNumber(A)||(A<0)){A=1;}this._records.splice(B,A);this._length=this._length-A;};YAHOO.widget.RecordSet.prototype.toString=function(){return this._sName;};YAHOO.widget.RecordSet.prototype.getLength=function(){return this._length;};YAHOO.widget.RecordSet.prototype.getRecord=function(A){var B;if(A instanceof YAHOO.widget.Record){for(B=0;B<this._records.length;B++){if(this._records[B]._sId===A._sId){return A;}}}else{if(YAHOO.lang.isNumber(A)){if((A>-1)&&(A<this.getLength())){return this._records[A];}}else{if(YAHOO.lang.isString(A)){for(B=0;B<this._records.length;B++){if(this._records[B]._sId===A){return this._records[B];}}}}}return null;};YAHOO.widget.RecordSet.prototype.getRecords=function(B,A){if(!YAHOO.lang.isNumber(B)){return this._records;}if(!YAHOO.lang.isNumber(A)){return this._records.slice(B);}return this._records.slice(B,B+A);};YAHOO.widget.RecordSet.prototype.getRecordIndex=function(B){if(B){for(var A=this._records.length-1;A>-1;A--){if(B.getId()===this._records[A].getId()){return A;}}}return null;};YAHOO.widget.RecordSet.prototype.addRecord=function(C,A){if(C&&(C.constructor==Object)){var B=this._addRecord(C,A);this.fireEvent("recordAddEvent",{record:B,data:C});return B;}else{return null;}};YAHOO.widget.RecordSet.prototype.addRecords=function(C,B){if(YAHOO.lang.isArray(C)){var F=[];for(var D=0;D<C.length;D++){if(C[D]&&(C[D].constructor==Object)){var A=this._addRecord(C[D],B);F.push(A);}}this.fireEvent("recordsAddEvent",{records:F,data:C});return F;}else{if(C&&(C.constructor==Object)){var E=this._addRecord(C);this.fireEvent("recordsAddEvent",{records:[E],data:C});return E;}else{}}};YAHOO.widget.RecordSet.prototype.updateRecord=function(A,E){var C=this.getRecord(A);if(C&&E&&(E.constructor==Object)){var D={};for(var B in C._oData){D[B]=C._oData[B];}C._oData=E;this.fireEvent("recordUpdateEvent",{record:C,newData:E,oldData:D});return C;}else{return null;}};YAHOO.widget.RecordSet.prototype.updateKey=function(A,D,G){var C=this.getRecord(A);if(C){var F=null;var E=C._oData[D];if(E&&E.constructor==Object){F={};for(var B in E){F[B]=E[B];}}else{F=E;}C._oData[D]=G;this.fireEvent("keyUpdateEvent",{record:C,key:D,newData:G,oldData:F});}else{}};YAHOO.widget.RecordSet.prototype.replaceRecords=function(A){this.reset();return this.addRecords(A);};YAHOO.widget.RecordSet.prototype.sortRecords=function(A,B){return this._records.sort(function(D,C){return A(D,C,B);});};YAHOO.widget.RecordSet.prototype.deleteRecord=function(B){if(YAHOO.lang.isNumber(B)&&(B>-1)&&(B<this.getLength())){var A=this.getRecord(B).getData();
var D={};for(var C in A){D[C]=A[C];}this._deleteRecord(B);this.fireEvent("recordDeleteEvent",{data:D,index:B});return D;}else{return null;}};YAHOO.widget.RecordSet.prototype.deleteRecords=function(C,A){if(!YAHOO.lang.isNumber(A)){A=1;}if(YAHOO.lang.isNumber(C)&&(C>-1)&&(C<this.getLength())){var F=this.getRecords(C,A);var B=[];for(var E=0;E<F.length;E++){var G={};for(var D in F[E]){G[D]=F[E][D];}B.push(G);}this._deleteRecord(C,A);this.fireEvent("recordsDeleteEvent",{data:B,index:C});}else{}};YAHOO.widget.RecordSet.prototype.reset=function(){this._records=[];this._length=0;this.fireEvent("resetEvent");};YAHOO.widget.Record=function(A){this._sId=YAHOO.widget.Record._nCount+"";YAHOO.widget.Record._nCount++;this._oData={};if(A&&(A.constructor==Object)){for(var B in A){this._oData[B]=A[B];}}};YAHOO.widget.Record._nCount=0;YAHOO.widget.Record.prototype._sId=null;YAHOO.widget.Record.prototype._oData=null;YAHOO.widget.Record.prototype.getId=function(){return this._sId;};YAHOO.widget.Record.prototype.getData=function(A){if(YAHOO.lang.isString(A)){return this._oData[A];}else{return this._oData;}};YAHOO.register("datatable",YAHOO.widget.DataTable,{version:"2.3.1",build:"541"});
/**
 * Filtros de una Datatable de las YUI
 * @version $Id: atrapalo_datatable.js,v 1.17 2009/03/16 09:08:28 jomartinez Exp $;
 */
var is_ie6=(navigator.appVersion.indexOf('MSIE 6')>0)?true:false;
var is_ie=(navigator.appName.indexOf('Explorer')>0)?true:false;
var arr_errores = '';
YAHOO.namespace("atrapalo.widget");
Atrapalo.util.cargarScript = function(url,callback)
{
    var head = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');

    //js.setAttribute('src', url);
    // Handle Script loadings
    var done = false;
    js.onload = js.onreadystatechange = function(){
        if ( !done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") ) {
        done = true;if (arr_errores != '') alert(arr_errores);callback(); head.removeChild(js);
        }
    };

	if (is_ie6)
	{
		YAHOO.util.Connect.asyncRequest('GET', url, {
        success:function(response)
			{
				js.text = response.responseText;
				head.appendChild(js);
		 	},
		failure:function(response)
			{
				js.text = '';
				head.appendChild(js);
			}});
    }
	else
	{
		js.setAttribute('src', url);
		head.appendChild(js);
	};

    return;
};
YAHOO.atrapalo.widget.DataTable = function(elContainer , oColumnSet , oDataSource , oConfigs) {
    if (arguments.length > 0) { YAHOO.atrapalo.widget.DataTable.superclass.constructor.call(this, elContainer , oColumnSet , oDataSource , oConfigs);}
    this.precios={min:0.00,max:0.00};
};
YAHOO.lang.extend(YAHOO.atrapalo.widget.DataTable, YAHOO.widget.DataTable);
YAHOO.atrapalo.widget.DataTable.prototype.isFiltered=false;
YAHOO.atrapalo.widget.DataTable.prototype.doBeforeLoadData= function( sRequest ,oResponse ) {
    if(oResponse) this.defaultView=oResponse.results;
    return true;
};
YAHOO.atrapalo.widget.DataTable.prototype.filterRows=function(filteredRows) {
    var oData;
    if(filteredRows == undefined) { oData=this.defaultView; this.isFiltered=false;
    }else{ oData=filteredRows; this.isFiltered=true; }
    this._oRecordSet.reset();
    
    if (oData.length > 20)
    	datos_cargar = oData.slice(0,datos.configuracion.paginator.rowsPerPage); // Primero cargamos solo los resultados de la primera pagina.
	else
		datos_cargar = oData;
		
    this._oRecordSet.addRecords(datos_cargar);
    this.refreshView();
    this.fireEvent("initEvent");
    if (oData.length > 20)
    {
    	// Ahora el resto
		datos_cargar = oData.slice(datos.configuracion.paginator.rowsPerPage, oData.length);    
		this._oRecordSet.addRecords(datos_cargar);
		this.refreshView();
	}   
};

YAHOO.atrapalo.widget.DataTable.prototype.Filter=function(aWhere,prod) {
	var aResults = [];
	if (prod != 'vue')
	{
		var rs=this.getRecordSet();
    	var len = rs.getLength();
    }
    else
    {
    	var rs=arr_resultados;
    	var len = arr_resultados.length;
    }
    
    for (var i=0; i<len; i++)
    {
        var exclusivo=false;
        if (prod != 'vue')
        {
    		var row  = rs._records[i];
    		var data = row.getData();
    	}
    	else
    	{
    		// Clonamos el objeto 
    		var data = clone(rs[i]);
    	}
    		
        var se_queda=0;
        var cont=0;
        for(y in aWhere)
        {
        	if (prod == 'vue')
        	{
	         	
        		if (y=='inArray') continue;
	            if (aWhere[y]['valores'].length==0)  continue;
	            if (aWhere[y]['mirar'] == 0) continue;
	            cont++;
	            hay_ida = false;
	            hay_vuelta = false;
	            switch(aWhere[y]['metodo'])
	            {
	            	case 'in':
	                	if ((aWhere[y]['ida'] != '') && (aWhere[y]['vuelta'] != '') && (arr_vuelos_vuelta.length > 0))
	                	{
	                		// Ida y vuelta
	                		for (j in data['vi'])
	                		{
	                			if (j == 'inArray') continue;
								if(!(aWhere[y]['valores'].inArray(arr_vuelos_ida[data['vi'][j]][aWhere[y]['ida']])))
	                			{
									delete (data['vi'][j]);
								}
								else
									hay_ida = true;

							}
							for (j in data['vv'])
	                		{
	                			if (j == 'inArray') continue;
								if(!(aWhere[y]['valores'].inArray(arr_vuelos_vuelta[data['vv'][j]][aWhere[y]['vuelta']])))
	                			{
									delete data['vv'][j];
								}
								else
									hay_vuelta = true;

							}
							if (hay_ida && hay_vuelta) se_queda++;
	                	}
	                	else
	                	{
	                		// Solo ida
		                	if ((aWhere[y]['ida'] != ''))
		                	{
		                		
		                		for (j in data['vi'])
	                			{
	                				if (j == 'inArray') continue;
		                			if (!(aWhere[y]['valores'].inArray(arr_vuelos_ida[data['vi'][j]][aWhere[y]['ida']])))
										delete data['vi'][j];
									else
										hay_ida = true;
								}
		                	}
		                	if ((aWhere[y]['vuelta'] != '') && (arr_vuelos_vuelta.length > 0))
		                	{
		                		for (j in data['vv'])
	                			{
	                				if (j == 'inArray') continue;
		                			if (!(aWhere[y]['valores'].inArray(arr_vuelos_vuelta[data['vv'][j]][aWhere[y]['vuelta']])))
										delete data['vv'][j];
									else
										hay_vuelta = true;
								}
		                	}
		                	if (hay_ida || hay_vuelta) se_queda++;
	                	}
					break;
					case 'between':
	                	var min=(aWhere[y]['valores'][0]).split(',')[0];
	                	var max=(aWhere[y]['valores'][0]).split(',')[1];
	                	
	                	if ((aWhere[y]['ida'] == '') && (aWhere[y]['vuelta'] == '')) // No miramos en los vuelos sino en el arr_resultados
	                	{
	                		if(data[y]>=min && data[y]<=max){se_queda++;break;}
	                	}
	                	
						// Miramos en vuelos
	                	if ((aWhere[y]['ida'] != '') && (aWhere[y]['vuelta'] != '') && (arr_vuelos_vuelta.length > 0))
	                	{
	                		// Ida y vuelta
	                		for (j in data['vi'])
	                		{
	                			if (j == 'inArray') continue;
                				if (!(arr_vuelos_ida[data['vi'][j]][aWhere[y]['ida']]>=min && arr_vuelos_ida[data['vi'][j]][aWhere[y]['ida']]<=max))
									delete data['vi'][j];
                				else
                					hay_ida = true;
	                		}
	                		for (j in data['vv'])
	                		{
	                			if (j == 'inArray') continue;
								if (!(arr_vuelos_vuelta[data['vv'][j]][aWhere[y]['vuelta']]>=min && arr_vuelos_vuelta[data['vv'][j]][aWhere[y]['vuelta']]<=max) )
	            					delete data['vv'][j];
	            				else
	                				hay_vuelta = true;
	                		}
	                		if (hay_ida && hay_vuelta) se_queda++;
	                	}
	                	else
	                	{
	                		// Solo ida
		                	if ((aWhere[y]['ida'] != ''))
		                	{
		                		for (j in data['vi'])
	                			{	
	                				if (j == 'inArray') continue;
		                			if (!(arr_vuelos_ida[data['vi'][j]][aWhere[y]['ida']]>=min && arr_vuelos_ida[data['vi'][j]][aWhere[y]['ida']]<=max))
										delete data['vi'][j];
									else
										hay_ida = true;
								}
		                	}
		                	if ((aWhere[y]['vuelta'] != '') && (arr_vuelos_vuelta.length > 0))
		                	{
		                		for (j in data['vv'])
	                			{
	                				if (j == 'inArray') continue;
		                			if (!(arr_vuelos_vuelta[data['vv'][j]][aWhere[y]['vuelta']]>=min && arr_vuelos_vuelta[data['vv'][j]][aWhere[y]['vuelta']]<=max))
										delete data['vv'][j];
									else
										hay_vuelta = true;
								}
		                	}
		                	if (hay_ida || hay_vuelta) se_queda++;
	                	}
	                break;
	            }
				// Si el producto es vuelos, los registros deben cumplir todos los filtros
				if (cont != se_queda) break;
				
        	}
        	else
        	{
				if (aWhere[y]['metodo']=='null') continue;
	            if(y=='inArray') continue;
				if ((prod == 'vue') && (aWhere[y]['valores'].length==0) && (aWhere[y]['tipo'] != 'slider')) {se_queda = -1;break;}
	            if(aWhere[y]['valores'].length==0) continue;
	            else cont++;
	            switch(aWhere[y]['metodo'])
	            {
	                case 'eq':
						if(aWhere[y]['valores'][0]==data[y])
							se_queda++;
					break;
	                case 'in':
						if(aWhere[y]['valores'].inArray(data[y]))
							se_queda++;
					break;
					case 'inCampo':
						if(aWhere[y]['valores'].inArray(data[aWhere[y]['cpomirar']]))
						{
							se_queda++;
						}
					break;
					case 'inorAll': // Si solo hay un valor y es cero se quedan todos, sino solo los q tengan el valor indicado
						if ((aWhere[y]['valores'][0] == 0) && (!aWhere[y]['valores'][1]))
						{
							se_queda++;
							break;
						}
						if(aWhere[y]['valores'].inArray(data[y]))
							se_queda++;
					break;
					case 'inTwo':
					if((aWhere[y]['valores'].inArray(data[y]))) // Debe estar en ambos
					{
						// Si el campo doble existe comprobamos contenga el valor
						if (data[aWhere[y]['cpoextra']] != '')
							if (aWhere[aWhere[y]['cpoextra']]['valores'].inArray(data[aWhere[y]['cpoextra']]))
								se_queda++; //Si el segundo campo existe y tiene valor correcto se queda
							else
								break; // Si el segundo campo existe pero no tiene valor correcto no se queda el resultado.
						else
							se_queda++; // Si el segundo campo es varcio es decir no existe, se queda.
					}
					break;
	                case 'someIn':
					for(yy in aWhere[y]['valores'])
					{
						if(data[y].inArray(aWhere[y]['valores'][yy]))
						{
							se_queda++;break;
						}
					};
					break;
	                case 'allIn' :
	                    var cont_allin=0;
	                    var yy;
	                    var yyy;
	                    for(yy in aWhere[y]['valores'])
	                    {
	                        if(yy=='inArray') continue;
	                        for(yyy in aWhere[y]['valores'][yy])
	                        {
	                            if(yyy=='inArray') continue;
	                            if(data[y].inArray(aWhere[y]['valores'][yy][yyy]))
	                            {
	                                cont_allin++;break;
	                            }
	                        }
	                    };
	                    if(cont_allin==aWhere[y]['valores'].length) se_queda++;
	                break;
	                case 'between':
	                var min=aWhere[y]['valores'][0];
	                var max=aWhere[y]['valores'][1];
	                if(data[y]>=min && data[y]<=max){se_queda++;break;}
	                break;
	                case 'between_price':
	                var min=parseFloat(aWhere[y]['valores'][0]);
	                var max=parseFloat(aWhere[y]['valores'][1]);
	                if(parseFloat(changeToMoneyNoSign(data[y]))>=min && parseFloat(changeToMoneyNoSign(data[y]))<=max){se_queda++;break;}
	                break;
	                case 'init':
	                try{
	                if(aWhere[y]['valores'][0]===''){se_queda++;}
	                else if(!isNaN(parseInt(aWhere[y]['valores'][0]) && /\d/.test(data[y].replace(/hotel/ig,"").substr(0,1)))){se_queda++;}
	                else if(data[y].replace(/hotel /ig,'').toLowerCase().substr(0,1)==aWhere[y]['valores'][0]){se_queda++;}
	                }catch(e){}
	                break;
	                case 'distance':
	                if(!GLatLng) se_queda++;
	                else{
	                var lon=data['lon'];
	                var lat=data['lat'];
	                var point = new GLatLng(parseFloat(lat),parseFloat(lon));
	                var point2 = new GLatLng(parseFloat(aWhere[y]['valores'][0]),parseFloat(aWhere[y]['valores'][1]));
	                var dist=point.distanceFrom(point2);
	                if(dist<aWhere[y]['valores'][2]) se_queda++;
	                }
	                break;
	                case 'binary':
	                    var cont_allin=0;
	                    var yy;
	                    for(yy in aWhere[y]['valores']) if(yy!='inArray')
	                    {
	                        if((aWhere[y]['valores'][yy] & data[y]) > 0 ) { cont_allin++; }
	                    }
	                    if(cont_allin==aWhere[y]['valores'].length) se_queda++;
	                break;
	            }
			}
        }
        if (cont==se_queda) 
        {
        	if (prod != 'vue')
        		aResults[aResults.length]=row.getData();
        	else
        		aResults[aResults.length]=data;
        }
    }
    
    if (prod=='vue' && (mostrar_fijado != ''))
    	mostrarCajaSeleccionado(aResults[0]);
    	
    	
    this.filterRows(aResults);
};
YAHOO.atrapalo.widget.DataTable.prototype.ClearFilters=function(){
    this._oRecordSet.reset();
    this._oRecordSet.addRecords(this.defaultView);
    this.isFiltered=false;
};
YAHOO.atrapalo.widget.DataTable.prototype.onDataReturnInitializeTableNew=YAHOO.atrapalo.widget.DataTable.prototype.onDataReturnInitializeTable;
YAHOO.atrapalo.widget.DataTable.prototype.onDataReturnInitializeTable=function ( sRequest , oResponse , bError )
{
    this.onDataReturnInitializeTableNew( sRequest , oResponse , bError );
    this.fireEvent('dataInsertReturnEvent');
};
YAHOO.atrapalo.widget.DataTable.prototype.sortColumn = function(oColumn,dir) {
    if(oColumn && (oColumn instanceof YAHOO.widget.Column)) {
        var sortDir = (dir) ? dir : "asc";
        // Is there a custom sort handler function defined?
        var sortFnc = (oColumn.sortOptions && YAHOO.lang.isFunction(oColumn.sortOptions.sortFunction)) ?
                oColumn.sortOptions.sortFunction : function(a, b, desc) {
                    var sorted = YAHOO.util.Sort.compare(a.getData(oColumn.key),b.getData(oColumn.key), desc);
                    if(sorted === 0) { return YAHOO.util.Sort.compare(a.getId(),b.getId(), desc);
                    }else{ return sorted;}
        };
        var desc = (sortDir == "desc") ? true : false;
        this._oRecordSet.sortRecords(sortFnc, desc);
        this.set("sortedBy", {key:oColumn.key, dir:sortDir, column:oColumn});
        this.updatePaginator({currentPage:1});
        this.refreshView();
        this.fireEvent("columnSortEvent",{column:oColumn,dir:sortDir});
    }
};
//TEMPLATES
/**
 * TrimPath Template. Release 1.0.38.  Copyright (C) 2004, 2005 Metaha.
 * TrimPath Template is licensed under the GNU General Public License
 * and the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
 */
var TrimPath;
(function() {
    if (TrimPath == null){TrimPath = new Object();}
    if (TrimPath.evalEx == null){ TrimPath.evalEx = function(src) { return eval(src); };}
    var UNDEFINED;
    if (Array.prototype.pop == null)  // IE 5.x fix from Igor Poteryaev.
        Array.prototype.pop = function() {
            if (this.length === 0) {return UNDEFINED;}
            return this[--this.length];
        };
    if (Array.prototype.push == null) // IE 5.x fix from Igor Poteryaev.
        Array.prototype.push = function() {
            for (var i = 0; i < arguments.length; ++i) {this[this.length] = arguments[i];}
            return this.length;
        };

    TrimPath.parseTemplate = function(tmplContent, optTmplName, optEtc) {
        if (optEtc == null){ optEtc = TrimPath.parseTemplate_etc;}
        var funcSrc = parse(tmplContent, optTmplName, optEtc);
        var func = TrimPath.evalEx(funcSrc, optTmplName, 1);
        if (func != null)
            return new optEtc.Template(optTmplName, tmplContent, funcSrc, func, optEtc);
        return null;
    }
    try {
        String.prototype.process = function(context, optFlags) {
            var template = TrimPath.parseTemplate(this, null);
            if (template != null)
                return template.process(context, optFlags);
            return this;
        }
    } catch (e) { // Swallow exception, such as when String.prototype is sealed.
    }
    TrimPath.parseTemplate_etc = {};            // Exposed for extensibility.
    TrimPath.parseTemplate_etc.statementTag = "forelse|for|if|elseif|else|var|macro";
    TrimPath.parseTemplate_etc.statementDef = { // Lookup table for statement tags.
        "if"     : { delta:  1, prefix: "if (", suffix: ") {", paramMin: 1 },
        "else"   : { delta:  0, prefix: "} else {" },
        "elseif" : { delta:  0, prefix: "} else if (", suffix: ") {", paramDefault: "true" },
        "/if"    : { delta: -1, prefix: "}" },
        "for"    : { delta:  1, paramMin: 3,
                     prefixFunc : function(stmtParts, state, tmplName, etc) {
                        if (stmtParts[2] != "in")
                            throw new etc.ParseError(tmplName, state.line, "bad for loop statement: " + stmtParts.join(' '));
                        var iterVar = stmtParts[1];
                        var listVar = "__LIST__" + iterVar;
                        return [ "var ", listVar, " = ", stmtParts[3], ";",
                             // Fix from Ross Shaull for hash looping, make sure that we have an array of loop lengths to treat like a stack.
                             "var __LENGTH_STACK__;",
                             "if (typeof(__LENGTH_STACK__) == 'undefined' || !__LENGTH_STACK__.length) __LENGTH_STACK__ = new Array();",
                             "__LENGTH_STACK__[__LENGTH_STACK__.length] = 0;", // Push a new for-loop onto the stack of loop lengths.
                             "if ((", listVar, ") != null) { ",
                             "var ", iterVar, "_ct = 0;",       // iterVar_ct variable, added by B. Bittman
                             "for (var ", iterVar, "_index in ", listVar, ") { ",
                             iterVar, "_ct++;",
                             "if (typeof(", listVar, "[", iterVar, "_index]) == 'function') {continue;}", // IE 5.x fix from Igor Poteryaev.
                             "__LENGTH_STACK__[__LENGTH_STACK__.length - 1]++;",
                             "var ", iterVar, " = ", listVar, "[", iterVar, "_index];" ].join("");
                     } },
        "forelse" : { delta:  0, prefix: "} } if (__LENGTH_STACK__[__LENGTH_STACK__.length - 1] == 0) { if (", suffix: ") {", paramDefault: "true" },
        "/for"    : { delta: -1, prefix: "} }; delete __LENGTH_STACK__[__LENGTH_STACK__.length - 1];" }, // Remove the just-finished for-loop from the stack of loop lengths.
        "var"     : { delta:  0, prefix: "var ", suffix: ";" },
        "macro"   : { delta:  1,
                      prefixFunc : function(stmtParts, state, tmplName, etc) {
                          var macroName = stmtParts[1].split('(')[0];
                          return [ "var ", macroName, " = function",
                                   stmtParts.slice(1).join(' ').substring(macroName.length),
                                   "{ var _OUT_arr = []; var _OUT = { write: function(m) { if (m) _OUT_arr.push(m); } }; " ].join('');
                     } },
        "/macro"  : { delta: -1, prefix: " return _OUT_arr.join(''); };" }
    }
    TrimPath.parseTemplate_etc.modifierDef = {
        "eat"        : function(v)    { return ""; },
        "escape"     : function(s)    { return String(s).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g,"&lsquo;"); },
        "capitalize" : function(s)    { return String(s).toUpperCase(); },
        "default"    : function(s, d) { return s != null ? s : d; }
    }
    TrimPath.parseTemplate_etc.modifierDef.h = TrimPath.parseTemplate_etc.modifierDef.escape;

    TrimPath.parseTemplate_etc.Template = function(tmplName, tmplContent, funcSrc, func, etc) {
        this.process = function(context, flags) {
            if (context == null)
                context = {};
            if (context._MODIFIERS == null)
                context._MODIFIERS = {};
            if (context.defined == null)
                context.defined = function(str) { return (context[str] != undefined); };
            for (var k in etc.modifierDef) {
                if (context._MODIFIERS[k] == null)
                    context._MODIFIERS[k] = etc.modifierDef[k];
            }
            if (flags == null)
                flags = {};
            var resultArr = [];
            var resultOut = { write: function(m) { resultArr.push(m); } };
            try {
                func(resultOut, context, flags);
            } catch (e) {
                if (flags.throwExceptions == true)
                    throw e;
                var result = new String(resultArr.join("") + "[ERROR: " + e.toString() + (e.message ? '; ' + e.message : '') + "]");
                result["exception"] = e;
                return result;
            }
            return resultArr.join("");
        }
        this.name       = tmplName;
        this.source     = tmplContent;
        this.sourceFunc = funcSrc;
        this.toString   = function() { return "TrimPath.Template [" + tmplName + "]"; }
    }
    TrimPath.parseTemplate_etc.ParseError = function(name, line, message) {
        this.name    = name;
        this.line    = line;
        this.message = message;
    }
    TrimPath.parseTemplate_etc.ParseError.prototype.toString = function() {
        return ("TrimPath template ParseError in " + this.name + ": line " + this.line + ", " + this.message);
    }

    var parse = function(body, tmplName, etc) {
        body = cleanWhiteSpace(body);
        var funcText = [ "var TrimPath_Template_TEMP = function(_OUT, _CONTEXT, _FLAGS) { with (_CONTEXT) {" ];
        var state    = { stack: [], line: 1 };                              // TODO: Fix line number counting.
        var endStmtPrev = -1;
        while (endStmtPrev + 1 < body.length) {
            var begStmt = endStmtPrev;
            // Scan until we find some statement markup.
            begStmt = body.indexOf("{", begStmt + 1);
            while (begStmt >= 0) {
                var endStmt = body.indexOf('}', begStmt + 1);
                var stmt = body.substring(begStmt, endStmt);
                var blockrx = stmt.match(/^\{(cdata|minify|eval)/); // From B. Bittman, minify/eval/cdata implementation.
                if (blockrx) {
                    var blockType = blockrx[1];
                    var blockMarkerBeg = begStmt + blockType.length + 1;
                    var blockMarkerEnd = body.indexOf('}', blockMarkerBeg);
                    if (blockMarkerEnd >= 0) {
                        var blockMarker;
                        if( blockMarkerEnd - blockMarkerBeg <= 0 ) {
                            blockMarker = "{/" + blockType + "}";
                        } else {
                            blockMarker = body.substring(blockMarkerBeg + 1, blockMarkerEnd);
                        }

                        var blockEnd = body.indexOf(blockMarker, blockMarkerEnd + 1);
                        if (blockEnd >= 0) {
                            emitSectionText(body.substring(endStmtPrev + 1, begStmt), funcText);

                            var blockText = body.substring(blockMarkerEnd + 1, blockEnd);
                            if (blockType == 'cdata') {
                                emitText(blockText, funcText);
                            } else if (blockType == 'minify') {
                                emitText(scrubWhiteSpace(blockText), funcText);
                            } else if (blockType == 'eval') {
                                if (blockText != null && blockText.length > 0) // From B. Bittman, eval should not execute until process().
                                    funcText.push('_OUT.write( (function() { ' + blockText + ' })() );');
                            }
                            begStmt = endStmtPrev = blockEnd + blockMarker.length - 1;
                        }
                    }
                } else if (body.charAt(begStmt - 1) != '$' &&               // Not an expression or backslashed,
                           body.charAt(begStmt - 1) != '\\') {              // so check if it is a statement tag.
                    var offset = (body.charAt(begStmt + 1) == '/' ? 2 : 1); // Close tags offset of 2 skips '/'.
                                                                            // 10 is larger than maximum statement tag length.
                    if (body.substring(begStmt + offset, begStmt + 10 + offset).search(TrimPath.parseTemplate_etc.statementTag) == 0)
                        break;                                              // Found a match.
                }
                begStmt = body.indexOf("{", begStmt + 1);
            }
            if (begStmt < 0)                              // In "a{for}c", begStmt will be 1.
                break;
            var endStmt = body.indexOf("}", begStmt + 1); // In "a{for}c", endStmt will be 5.
            if (endStmt < 0)
                break;
            emitSectionText(body.substring(endStmtPrev + 1, begStmt), funcText);
            emitStatement(body.substring(begStmt, endStmt + 1), state, funcText, tmplName, etc);
            endStmtPrev = endStmt;
        }
        emitSectionText(body.substring(endStmtPrev + 1), funcText);
        if (state.stack.length != 0)
            throw new etc.ParseError(tmplName, state.line, "unclosed, unmatched statement(s): " + state.stack.join(","));
        funcText.push("}}; TrimPath_Template_TEMP");
        return funcText.join("");
    }

    var emitStatement = function(stmtStr, state, funcText, tmplName, etc) {
        var parts = stmtStr.slice(1, -1).split(' ');
        var stmt = etc.statementDef[parts[0]]; // Here, parts[0] == for/if/else/...
        if (stmt == null) {                    // Not a real statement.
            emitSectionText(stmtStr, funcText);
            return;
        }
        if (stmt.delta < 0) {
            if (state.stack.length <= 0)
                throw new etc.ParseError(tmplName, state.line, "close tag does not match any previous statement: " + stmtStr);
            state.stack.pop();
        }
        if (stmt.delta > 0)
            state.stack.push(stmtStr);

        if (stmt.paramMin != null &&
            stmt.paramMin >= parts.length)
            throw new etc.ParseError(tmplName, state.line, "statement needs more parameters: " + stmtStr);
        if (stmt.prefixFunc != null)
            funcText.push(stmt.prefixFunc(parts, state, tmplName, etc));
        else
            funcText.push(stmt.prefix);
        if (stmt.suffix != null) {
            if (parts.length <= 1) {
                if (stmt.paramDefault != null)
                    funcText.push(stmt.paramDefault);
            } else {
                for (var i = 1; i < parts.length; i++) {
                    if (i > 1)
                        funcText.push(' ');
                    funcText.push(parts[i]);
                }
            }
            funcText.push(stmt.suffix);
        }
    }

    var emitSectionText = function(text, funcText) {
        if (text.length <= 0)
            return;
        var nlPrefix = 0;               // Index to first non-newline in prefix.
        var nlSuffix = text.length - 1; // Index to first non-space/tab in suffix.
        while (nlPrefix < text.length && (text.charAt(nlPrefix) == '\n'))
            nlPrefix++;
        while (nlSuffix >= 0 && (text.charAt(nlSuffix) == ' ' || text.charAt(nlSuffix) == '\t'))
            nlSuffix--;
        if (nlSuffix < nlPrefix)
            nlSuffix = nlPrefix;
        if (nlPrefix > 0) {
            funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');
            var s = text.substring(0, nlPrefix).replace('\n', '\\n'); // A macro IE fix from BJessen.
            if (s.charAt(s.length - 1) == '\n')
            	s = s.substring(0, s.length - 1);
            funcText.push(s);
            funcText.push('");');
        }
        var lines = text.substring(nlPrefix, nlSuffix + 1).split('\n');
        for (var i = 0; i < lines.length; i++) {
            emitSectionTextLine(lines[i], funcText);
            if (i < lines.length - 1)
                funcText.push('_OUT.write("\\n");\n');
        }
        if (nlSuffix + 1 < text.length) {
            funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');
            var s = text.substring(nlSuffix + 1).replace('\n', '\\n');
            if (s.charAt(s.length - 1) == '\n')
            	s = s.substring(0, s.length - 1);
            funcText.push(s);
            funcText.push('");');
        }
    }

    var emitSectionTextLine = function(line, funcText) {
        var endMarkPrev = '}';
        var endExprPrev = -1;
        while (endExprPrev + endMarkPrev.length < line.length) {
            var begMark = "${", endMark = "}";
            var begExpr = line.indexOf(begMark, endExprPrev + endMarkPrev.length); // In "a${b}c", begExpr == 1
            if (begExpr < 0)
                break;
            if (line.charAt(begExpr + 2) == '%') {
                begMark = "${%";
                endMark = "%}";
            }
            var endExpr = line.indexOf(endMark, begExpr + begMark.length);         // In "a${b}c", endExpr == 4;
            if (endExpr < 0)
                break;
            emitText(line.substring(endExprPrev + endMarkPrev.length, begExpr), funcText);
            var exprArr = line.substring(begExpr + begMark.length, endExpr).replace(/\|\|/g, "#@@#").split('|');
            for (var k in exprArr) {
                if (exprArr[k].replace) // IE 5.x fix from Igor Poteryaev.
                    exprArr[k] = exprArr[k].replace(/#@@#/g, '||');
            }
            funcText.push('_OUT.write(');
            emitExpression(exprArr, exprArr.length - 1, funcText);
            funcText.push(');');
            endExprPrev = endExpr;
            endMarkPrev = endMark;
        }
        emitText(line.substring(endExprPrev + endMarkPrev.length), funcText);
    }

    var emitText = function(text, funcText) {
        if (text == null ||
            text.length <= 0)
            return;
        text = text.replace(/\\/g, '\\\\');
        text = text.replace(/\n/g, '\\n');
        text = text.replace(/"/g,  '\\"');
        funcText.push('_OUT.write("');
        funcText.push(text);
        funcText.push('");');
    }

    var emitExpression = function(exprArr, index, funcText) {
        // Ex: foo|a:x|b:y1,y2|c:z1,z2 is emitted as c(b(a(foo,x),y1,y2),z1,z2)
        var expr = exprArr[index]; // Ex: exprArr == [firstName,capitalize,default:"John Doe"]
        if (index <= 0) {          // Ex: expr    == 'default:"John Doe"'
            funcText.push(expr);
            return;
        }
        var parts = expr.split(':');
        funcText.push('_MODIFIERS["');
        funcText.push(parts[0]); // The parts[0] is a modifier function name, like capitalize.
        funcText.push('"](');
        emitExpression(exprArr, index - 1, funcText);
        if (parts.length > 1) {
            funcText.push(',');
            funcText.push(parts[1]);
        }
        funcText.push(')');
    }

    var cleanWhiteSpace = function(result) {
        result = result.replace(/\t/g,   "    ");
        result = result.replace(/\r\n/g, "\n");
        result = result.replace(/\r/g,   "\n");
        result = result.replace(/^(\s*\S*(\s+\S+)*)\s*$/, '$1'); // Right trim by Igor Poteryaev.
        return result;
    };
   var scrubWhiteSpace = function(result) {
        result = result.replace(/^\s+/g,   "");
        result = result.replace(/\s+$/g,   "");
        result = result.replace(/\s+/g,   " ");
        result = result.replace(/^(\s*\S*(\s+\S+)*)\s*$/, '$1'); // Right trim by Igor Poteryaev.
        return result;
    };
    TrimPath.parseDOMTemplate = function(elementId, optDocument, optEtc) {
        if (optDocument == null)
            optDocument = document;
        var element = optDocument.getElementById(elementId);
        var content = element.value;     // Like textarea.value.
        if (content == null)
            content = element.innerHTML; // Like textarea.innerHTML.
        content = content.replace(/&lt;/g, "<").replace(/&gt;/g, ">");
        return TrimPath.parseTemplate(content, elementId, optEtc);
    };
    TrimPath.processDOMTemplate = function(elementId, context, optFlags, optDocument, optEtc) {
        return TrimPath.parseDOMTemplate(elementId, optDocument, optEtc).process(context, optFlags);
    };
}) ();

// Metodo para clonar objetos.
function clone(obj)
{
	if(obj == null || typeof(obj) != 'object')
        return obj;

    var temp = new obj.constructor(); 

    for(var key in obj)
        temp[key] = clone(obj[key]);

    return temp;

}
//TEMPLATES
//-----------
var html=[];
var marker=[];
var labels=[];
if(!arr_resultados) var arr_resultados=[];
if(!arr_resultados) var arr_precios=[];
if(!arr_resultados) var arr_filtros=[];
var inMapAndTable=[];
var c = new Date();
c.setMinutes(c.getMinutes()+10);
var expiracion=c;
var datos;
var datosAlt;
var txt_help_sel_atrapalo='En Atrapalo.com sabemos de hoteles y hemos generado un algoritmo para realizar una selección de los mejores, teniendo en cuenta la relación calidad/precio, categoría y opiniones.';
var txt_help_popularidad='La ordenación por popularidad está basada en el Ranking de Popularidad de Hoteles de Atrapalo.com. Éste se calcula con una ponderación de la valoración media de los hoteles, extraída de las opiniones de nuestros clientes, y el número de estas opiniones.';
var txt_cargando='Cargando...';
Atrapalo.hoteles.MONEDA ='&euro;';
Atrapalo.hoteles.MONEDADELANTE ='0';
Atrapalo.hoteles.MONEDARATIO ='1.000';
function buscarEnDestinoAlternativo(id_destino) { pestanaya_activa=0; $('id_home').value = randomString(); $('id_destino').value=id_destino; $('id_costa').value=""; comprobar(); return false; }
function zooMeaMap(bounds)
{
    var new_zoom=map.getBoundsZoomLevel(bounds);
    if (new_zoom>=max_zoom)
    {
        map.setZoom(new_zoom);
        map.setCenter(bounds.getCenter());
    }else{ map.setZoom(max_zoom);}
}
var showInMap = function(lat,lon,icon)
{
    var marker=new GMarker(new GLatLng(lat, lon),icon);
    map.addOverlay(marker);
    marker.showMapBlowup(); $('gg_map_focus').focus();
};
var loadMap = function()
{
    if(!is_map_loaded) {
        obj_maskara_modal.show();
        initGoogleMap(); showGoogleMap();
        is_map_loaded=true;
        if(datos){setTimeout('datos.cargarEnMapa()',100);}
    }else if(datos) {datos.cargarEnMapa();}
};
///PROGRESIVE
YAHOO.widget.DataTable.MSG_LOADING="";
YAHOO.widget.DataTable.MSG_ERROR="";
YAHOO.widget.DataTable.MSG_EMPTY="";
progressBar = function (pb,inc)
{
    if($(pb))
    {
        var act = parseInt($(pb).style.width,10);
        if(parseInt(inc,10)<=0) {inc=1;}
        act+=inc;
        if(act>200) {act=200;}
        $(pb).style.width= act+"px";
        var percent2 = parseInt((act/2),10);
        if (percent2 > 100) {precent2 = 99;}
        $('p4text').innerHTML=percent2+"%";
        if(act >= 200) {clearTimeout(pb_tm);
        }else{ pb_tm=setTimeout("progressBar('"+pb+"',6)",1000);}
    }
};
preCarga = function () {
	obj_maskara_modal.init();
    if(total!==0)
    {
        obj_maskara_modal.show();
        Atrapalo.hoteles.initResultado();
        return;
    }
    if($('id_destino')) {loadBanner($('id_destino').value,$('id_costa').value);}
    pb_tm=setTimeout("progressBar('pbarbar',4)",1000);
    this.formatResult=function(elCell, oRecord, oColumn, sData)
    {
        stars=' ';
        if(/\dE/.test(oRecord.getData("c")))
        {
            for(i=0;i<parseInt(oRecord.getData("c"),10);i++) {stars+="*";}
        }
        html_pre=[
        '<div  class="caja_blanca">', '<h1>', oRecord.getData("n"), stars,
        ' (', oRecord.getData("p"), ')</h1><p>Desde ',
        Atrapalo.hoteles.tpls.modifiers.toMoney(oRecord.getData('pr')), ' en regimen de: ', oRecord.getData('r'),
        '<'+'/'+'p>', '</div>' ];
        elCell.innerHTML = html_pre.join('');
    };
    var myColumnDefs = [ {key:"result",formatter:this.formatResult} ];
   	this.myDataSource = new YAHOO.util.DataSource(dir_hoteles+"bppng/");
    this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
    this.myDataSource.responseSchema = { resultsList: "hoteles", fields: ['i','n','p','c','r','pr','h','nr'] };
    	this.myConfigs = { paginated:true, scrollable:false,
    		initialRequest:"5/"+hci+"/"+d.getTime(),
            paginator:{ containers: [$('paginator1'),$('paginator2')], currentPage: 1, pageLinks: -1, rowsPerPage: 20 }
    };
    this.myDataTable = new YAHOO.widget.DataTable("resultados_div", myColumnDefs, this.myDataSource, this.myConfigs);
    this.myDataTable.onDataReturnAppendRowsOld=this.myDataTable.onDataReturnAppendRows;
    this.myDataTable.initializeTableOld=this.myDataTable.initializeTable;
    this.myDataTable.initializeTable = function(oData)
    {
        if(oData && YAHOO.lang.isArray(oData))
        {
            num_res_tmp=0;
            if(oData[0]){
            hcis[hcis.length]=oData[0].h;
            num_res_tmp=oData[0].nr;
            }
            total+=parseInt(num_res_tmp,10);
        }
        this.initializeTableOld(oData);
        var max_prov=(proveedores.length)?1:0;
        if(max_prov==0)
        {
            if(total==0 && nivel==4 && solo_hostales!='on')
            {
                if(!confirm('No se han encontrado hoteles en el destino solicitado. De todas maneras, te podemos sugerir hoteles situados en la misma provincia. Por favor, pulsa en el botón "Aceptar" si deseas que te los mostremos.')) return;
            }else if(total==0 && solo_hostales=='on') return;
            obj_maskara_modal.show();
            clearTimeout(pb_tm);
            $('pbar_div').innerHTML="";
            var url=dir_hoteles+"mixresultados/"+hcis.join('|')+"/"+hci;
            Atrapalo.util.cargarScript(url,Atrapalo.hoteles.initResultado);
        }
    }
    this.myDataTable.onDataReturnAppendRows=function ( sRequest , oResponse , bError )
    {
        var max_prov=(proveedores.length)?1:0;
        var percent = parseInt(100/max_prov,10);
        clearTimeout(pb_tm);
        progressBar('pbarbar',percent*2);
        this.onDataReturnAppendRowsOld( sRequest , oResponse , bError );
        if(oResponse && !oResponse.error && YAHOO.lang.isArray(oResponse.results))
        {
            num_res_tmp=0;
            if(oResponse.results[0]){
            hcis[hcis.length]=oResponse.results[0].h;
            if (oResponse.results[0].nr)
            	num_res_tmp=oResponse.results[0].nr;
            else
            	num_res_tmp=0;
            }
            total+=parseInt(num_res_tmp,10);
        }
        count_reply++;
        if(count_reply==max_prov)
        {
            if(total==0 && nivel==4 && solo_hostales!='on')
            {
                if(!confirm('No se han encontrado hoteles en el destino solicitado. De todas maneras, te podemos sugerir hoteles situados en la misma provincia. Por favor, pulsa en el botón "Aceptar" si deseas que te los mostremos.')) return;
            }else if(total==0 && solo_hostales=='on'){
                obj_maskara_modal.hide();
                return;
            }
            obj_maskara_modal.show();
            clearTimeout(pb_tm);
            $('pbar_div').innerHTML="";
            var url=dir_hoteles+"mixresultados/"+hcis.join('|')+"/"+hci;
            Atrapalo.util.cargarScript(url,Atrapalo.hoteles.initResultado);
        }
    };
    if(proveedores.length>0) this.myDataSource.sendRequest(proveedores.join(",")+"/"+hci+"/",this.myDataTable.onDataReturnAppendRows, this.myDataTable);
};
// Funciones filtro precios
var filtroPrecio  = function(a,b){datos.acumularFiltro('pre',"["+parseInt(a,10)+","+parseInt(b,10)+"]",true); Atrapalo.util.cookie.setCookie(hci+'_precios',$('slider6').style.left+':'+$('slider1').style.left,expiracion);};
// Funciones filtro Opiniones
var filtroOpinion  = function(a,b){datos.acumularFiltro('mo',"["+parseInt(Math.round(a/2),10)+","+parseInt(Math.round(b/2),10)+"]",true);};
//TPL
Atrapalo.hoteles.tpls={};
Atrapalo.hoteles.tpls.modifiers = {};
Atrapalo.hoteles.tpls.modifiers.toStars = function (c)
{
    var s=[];
    var d=0;
    if(/\d(E|G|GL|ES)/.test(c)){
        d=parseInt(c,10);
        for(var i=0;i<d;i++) {s[s.length]='*';}
    }else if(/(A)\d/.test(c)){
        d=c.substring(1);
        s[s.length]='Aparthotel '+d+'*';
    }else if(/(P)\d/.test(c)){
        d=c.substring(1);
        s[s.length]='Apart. '+d+' Llaves';
    }
    else if (/(RES)/.test(c))
    {
    	s[s.length]='(Residencia)';
    }
    else if (/(ATR)/.test(c))
    {
    	s[s.length]='(Apartamento)';
    }
    else if (/(POS)/.test(c))
    {
    	s[s.length]='(Posada)';
    }
    else if (/(AC)/.test(c))
    {
    	s[s.length]='(Campamento)';
    }
    else if (/(BB)/.test(c))
    {
    	s[s.length]='(Bed & Breakfast)';
    }
    else if (/(O)\d/.test(c))
    {
    	d=c.substring(1);
    	s[s.length]='(Hostal';
    	for(var i=0;i<d;i++) {s[s.length]='*';}
    	s[s.length]=')';
    }
    else if (/(HR)\d/.test(c))
    {
    	d=c.substring(2);
    	s[s.length]='(Hotel Rural';
    	for(var i=0;i<d;i++) {s[s.length]='*';}
    	s[s.length]=')';
    } else if (/(HR)/.test(c)) { s[s.length]='(Hotel Rural)';
    } else if (/(ALT)/.test(c)) { s[s.length]='(Alojamiento Turístico)';
    } else if (/(HO)/.test(c)) { s[s.length]='(Hostal)';
    } else if (/(AL)/.test(c)) { s[s.length]='(Albergue)';
    } else if (/(RES)/.test(c)) { s[s.length]='(Residencia)';
    } else if (/(PE)/.test(c)) { s[s.length]='(Pensión)';
    } else if (/(POS)/.test(c)) { s[s.length]='(Posada)';
    } else if (/(AT)/.test(c)) { s[s.length]='(Apartamento)';
    } else { s[s.length]=' (Otra Categoria)'; }
    return s.join('');
};
Atrapalo.hoteles.tpls.modifiers.toComments = function (mo)
{
   var mo_g='';
   mo_g+='<div class="opi padleft5"><div class="barra_valoracion2 barrag floatl">';
   mo_g+='<div class="barra_opi fondo_blanco" title="Valoracion '+mo*2+'">&nbsp;</div>';
   mo_g+='<div style="width: '+mo*20+'%;" class="medidor">&nbsp;</div>';
   mo_g+='</div></div>';
   return mo_g;
};
Atrapalo.hoteles.tpls.modifiers.toMoney = function (amount) { return changeToMoney(amount); };
Atrapalo.hoteles.tpls.modifiers.toServicios = function (serv)
{
    var iconos=[];
    var ya_in=[];
    for(var s_id in serv) if(s_id!='inArray')
    {
        switch(serv[s_id])
        {
            case 1:
            case 69:
            case 183:
            if(ya_in.inArray('des')){break;}
            iconos[iconos.length]='<img class="ico_hot_acceso" src="/images_new/inv.gif" title="Accesos adaptados" alt="Accesos adaptados"/>';
            ya_in[ya_in.length]='des';
            break;
            case 27:
            case 28:
            if(ya_in.inArray('int')){break;}
            iconos[iconos.length]='<img class="ico_hot_zonainternet" src="/images_new/inv.gif" title="Zona Internet/WiFi alt="Zona Internet/WiFi"/>';
            ya_in[ya_in.length]='int';
            break;
            case 91:
            case 92:
            case 93:
            case 95:
            if(ya_in.inArray('int')){break;}
            iconos[iconos.length]='<img class="ico_hot_zonainternet" src="/images_new/inv.gif" title="Internet/WiFi en Hab." alt="Internet/WiFi en Hab."/>';
            ya_in[ya_in.length]='int';
            break;
            case 67:
            case 68:
            if(ya_in.inArray('masc')){break;}
            iconos[iconos.length]='<img class="ico_hot_mascotas" src="/images_new/inv.gif" title="Mascotas" alt="Mascotas"/>';
            ya_in[ya_in.length]='masc';
            break;
            case 30 :
            case 31 :
            case 32 :
            case 190:
            case 191:
            case 192:
            case 280:
            if(ya_in.inArray('pis')){break;}
            iconos[iconos.length]='<img class="ico_hot_piscina" src="/images_new/inv.gif" title="Piscina" alt="Piscina"/>';
            ya_in[ya_in.length]='pis';
            break;
            case 12:
            case 13:
            case 14:
            case 15:
            case 168:
            if(ya_in.inArray('par')){break;}
            iconos[iconos.length]='<img class="ico_hot_parking" src="/images_new/inv.gif" title="Parking" title="Parking"/>';
            ya_in[ya_in.length]='par';
            break;
            case 7:
            if(ya_in.inArray('con')){break;}
            iconos[iconos.length]='<img class="ico_hot_consigna" src="/images_new/inv.gif" title="Consigna" alt="Consigna"/>';
            ya_in[ya_in.length]='con';
            break;
            case 84:
            if(ya_in.inArray('pre')){break;}
            iconos[iconos.length]='<img class="ico_hot_prensa" src="/images_new/inv.gif" title="Prensa Gratuita" alt="Prensa Gratuita"/>';
            ya_in[ya_in.length]='pre';
            break;
            case 114:
            if(ya_in.inArray('min')){break;}
            iconos[iconos.length]='<img class="ico_hot_bar" src="/images_new/inv.gif" title="Minibar" alt="Minibar"/>';
            ya_in[ya_in.length]='min';
            break;
            case 231:
            case 279:
            if(ya_in.inArray('ani')){break;}
            iconos[iconos.length]='<img class="ico_hot_zonainfantil" src="/images-new/inv.gif" title="Animación Infantil" alt="Animación Infantil"/>';
            ya_in[ya_in.length]='ani';
            break;
        }
    }
    return iconos.join('');
};
Atrapalo.hoteles.tpls.modifiers.toIconosMarcas = function (marca)
{
    var marcas= [1,2,4,8,16,32,64,128,256,512,1024,2048];
    var marca_txt = Array ();
	marca_txt[1] ="Centrico";
	marca_txt[2] ="Playa";
	marca_txt[4] ="Montaña";
	marca_txt[8] ="Niños";
	marca_txt[16] ="Encanto";
	marca_txt[32] ="Relax";
	marca_txt[64] ="Lujo";
	marca_txt[128] ="Rural";
	marca_txt[256] ="Negocios";
	marca_txt[512] ="Golf";
    var marca_icono = Array ();
	marca_icono[1] ="centrico";
	marca_icono[2] ="playa";
	marca_icono[4] ="montana";
	marca_icono[8] ="ninos";
	marca_icono[16] ="encanto";
	marca_icono[32] ="relax";
	marca_icono[64] ="lujo";
	marca_icono[128] ="rural";
	marca_icono[256] ="negocios";
	marca_icono[512] ="golf";
    var z=0;
	var iconos=[];

    for(var s_id in marcas) if(s_id!='inArray')
    {
	if((marca & marcas[s_id]) == marcas[s_id])
	 {
	 	if (marcas[s_id]!=128){
		z=marca & marcas[s_id];
		iconos[iconos.length]='<img class="ico_hot_'+marca_icono[z]+'" src="/images_new/inv.gif" title="'+marca_txt[z]+'" alt="'+marca_txt[z]+'"/>';
	 	}
	 }
    }
    return iconos.join('');
};
Atrapalo.hoteles.tpls.modifiers.toPago = function (p) { return (p=='1') ? 'Atrapalo':'Hotel'; };
Atrapalo.hoteles.tpls.CAJA_1 =
'<div id="result_${i}" class="caja_rdo">\
<div class="caja_gris padtop10">\
<div class="top"><div></div></div>\
<div class="mid">\
<div class="floatl precio3 pad0">\
<a onclick="Atrapalo.util.cookie.setCookie(\'${hci}_hotel\',${i});" href="index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}">\
<strong>${pre|toMoney}</strong>\
</a>\
</div>\
<div class="floatl padleft10 fonts10">\
<strong>precio total</strong>\
<p class="tasas">tasas incluidas</p>\
</div>\
<div class="floatr padtop5">\
<a class="ico_info" title="Información del hotel" onclick="Atrapalo.util.cookie.setCookie(\'${hci}_hotel\',${i});" href="index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}">\
<strong>Información del hotel</strong>\
</a>\
</div>\
<div class="clear"></div>\
<div class="caja_blanca padtop5" id="caja_${i}">\
<div class="top"><div></div></div>\
<div class="mid">\
<div class="divFoto floatl padleft5">\
<div class="relative foto">\
<img src="'+dir_hoteles+'photo/si/${i}/${ip}/110/75/" width="110" height="75"/>\
{if nf>0}\
<div class="fnd_ver_fotos">\
<a class="btn_camara" onclick="Atrapalo.util.cookie.setCookie(\'${hci}_hotel\',${i});" href="index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}#fotos" title="Ver fotos">Ver fotos</a>\
</div>\
{/if}\
</div>\
<div class="clear"></div>\
<div class="ranking">\
<div class="caja_gris_sin padtop10">\
<div class="top"><div></div></div>\
<div class="mid aligncenter">\
<div class="floatl width55 linea_derecha">\
<p class="gris9 padright5 font9px">Valoración</p>\
<p class="negrita fonts16 gris9">{if mo>0}${mo*2}{else}--{/if}</p>\
</div>\
<div class="floatr width40">\
<p class="gris9 font9px">Ranking</p>\
<p class="negrita fonts16 gris7">{if no>4 && po!=9999}${po}{else}--{/if}</p>\
</div>\
<div class="clear"></div>\
<div class="padleft10 padtop5">\
<div class="barra_valoracion2 barrag">\
<div class="barra_opi fondo_gris1" alt="Valoracion"><a onclick="Atrapalo.util.cookie.setCookie(\'${hci}_hotel\',${i});" href="index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}">Valoracion</a></div>\
<div class="medidor" style="width: {if mo>0}${mo*20}{else}0{/if}%;">&nbsp;</div>\
</div>\
</div>\
{if no>0}<span class="fonts10"><a onclick="Atrapalo.util.cookie.setCookie(\'${hci}_hotel\',${i});" href="index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}#opiniones" title="opiniones sobre ${n}">${no} opiniones</a></span>{/if}\
<div class="clear"></div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
</div>\
{var caja_promo=0}\
{if ofra==1}\
{var caja_promo=1}\
{else}\
{for t in tar}\
{if t.ofe!=null}\
{if (t.ofe[4]=="stayXpay" || t.ofe[4]=="early_booking_discount"|| t.ofe[4]=="last_minute" || t.ofe[4]=="discount" || t.ofe[4]=="added_value") && caja_promo==0}\
{var caja_promo=1}\
{/if}\
{/if}\
{/for}\
{/if}\
<div class="divInfo{if caja_promo!=1}2{/if} floatl padleft10 padright10">\
{if caja_promo==1}\
<div class="divPromos">\
<div class="caja_gris2_sin">\
<div class="mid">\
{if (ofr=="added_value" || ( (ofr instanceof Array) && ofr.inArray("added_value") && !ofr.inArray("early_booking_discount"))) && tar[0].ofe[2] }<div class="promo p_1" title="Incluye gratis">Incluye gratis</div>{/if}\
{if ofr=="stayXpay" || ( (ofr instanceof Array) && ofr.inArray("stayXpay"))}<div class="promo p_2" title="Noches gratis">Noches gratis</div>{/if}\
{if ofr=="nino4free" || ( (ofr instanceof Array) && ofr.inArray("nino4free"))}<div class="promo p_3" title="Niños gratis">NiÃ±os gratis</div>{/if}\
{if ofr=="early_booking_discount" || ( (ofr instanceof Array) && ofr.inArray("early_booking_discount"))}<div class="promo p_4" title="reserva anticipada">reserva anticipada</div>{/if}\
{if ofr=="last_minute" || ( (ofr instanceof Array) && ofr.inArray("last_minute"))}<div class="promo p_4" title="last minute">last minute</div>{/if}\
{if ofr=="discount" || ( (ofr instanceof Array) && ofr.inArray("discount"))}<div class="promo p_5" title="Descuento">Descuento</div>{/if}\
{if ofr=="weekend" || ( (ofr instanceof Array) && ofr.inArray("weekend"))}<div class="promo p_4" title="Oferta fin de semana">Fin de semana</div>{/if}\
{if (ofr=="last_minute" || ( (ofr instanceof Array) && ofr.inArray("last_minute"))) ||(ofr=="stayXpay" || ( (ofr instanceof Array) && ofr.inArray("stayXpay"))) || (ofr=="nino4free" || ((ofr instanceof Array) && ofr.inArray("nino4free"))) || (ofr=="early_booking_discount" || ((ofr instanceof Array) && ofr.inArray("early_booking_discount"))) || (ofr=="discount" || ((ofr instanceof Array) && ofr.inArray("discount"))) || (ofr=="weekend" || ( (ofr instanceof Array) && ofr.inArray("weekend")))}\
<div class="fonts15 aligncenter gris7 negrita padtop5 padleft5">\
${ofropt}% Dto.\
</div>\
{else}\
<div class="fonts11 gris7 negrita padtop5 padleft5">\
<p>${tar[0].ofe[2]}</p>\
</div>\
{/if}\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
{else}\
{var control=0}\
{for t in tar}\
{if t.ofe!=null}\
{if (t.ofe[4]=="stayXpay" || t.ofe[4]=="early_booking_discount"|| t.ofe[4]=="last_minute" || t.ofe[4]=="discount") && control==0}\
{var control=1}\
<div class="divPromos">\
<div class="caja_gris2_sin">\
<div class="mid">\
{if t.ofe[4]=="stayXpay"}<div class="promo p_2" title="Noches gratis">Noches gratis</div>{/if}\
{if t.ofe[4]=="early_booking_discount"}<div class="promo p_4" title="reserva anticipada">reserva anticipada</div>{/if}\
{if t.ofe[4]=="last_minute"}<div class="promo p_4" title="last minute">last minute</div>{/if}\
{if t.ofe[4]=="discount"}<div class="promo p_5" title="Descuento">Descuento</div>{/if}\
{if t.ofe[4]!="added_value" && t.ofe[4]!="packet_sale" && ofropt!=""}\
<div class="fonts15 aligncenter gris7 negrita padtop5 padleft5">\
${ofropt}% Dto.\
</div>\
{/if}\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
{/if}\
{/if}\
{/for}\
{/if}\
<h2 class="destacado"><a onclick="Atrapalo.util.cookie.setCookie(\'${hci}_hotel\',${i});" href="index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}">${n}&nbsp;${c|toStars}&nbsp;{if p!=""}{if n.length+Atrapalo.hoteles.tpls.modifiers.toStars(c).length+p.length>=50}<br/>{/if}(${p}){/if}</a></h2>\
<p class="fonts11 padbot10 overflowh">${d}</p>\
${s|toServicios}${seg|toIconosMarcas}\
<div class="clear"></div>\
<div class="floatl gris6 padtop10 width40">{if dc!="99999"}Distancia:{/if}\
{if dc!="99999"}\
<p class="gris9">A <strong>${dc} Km</strong> del centro</p>\
{/if}\
{if dst!="-1"}\
<p class="gris9">A <strong>${dst}</strong> de ${poi_txt}</p>\
{/if}\
</div>\
<div class="floatl padtop20">{if lat!=0 && lon!=0}<a class="btn_vermapa" onclick="miniMapa.load(\'${n|escape}\',${i}, \'result_${i}\', \'${lat}\', \'${lon}\', \'${ip}\'); return false;" href="#" title="Ver Mapa">Mapa</a>{/if}</div>\
<span class="block gris9">\
{if fp == 1}\
<div class="floatr padtop10 modoPago"><div class="ico_hot_pagoatrapalo" title="Pago en Atrapalo"></div><p class="negrita gris6">Pago:<span class="block gris9">en Atrapalo</span></p>\
{else}\
<div class="floatr padtop10 modoPago"><div class="ico_hot_pagohotel" title="Pago en Hotel"></div><p class="negrita gris6">Pago:<span class="block gris9">en Hotel</span></p>\
{/if}\
</div>\
</div>\
<div class="clear"></div>\
{if paquetes_regimen!=null}\
<div class="floatr divInfo2 padleft10 padright10"><img src="/images_new/inv.gif" class="ico_hot_mas floatl padtop10" alt="Sprite"/><div class="ico_hot_info" title="Servicios adicionales"><strong>Si quieres podrás añadir</strong>: ${paquetes_regimen}</div></div>\
<div class="clear"></div>\
{/if}\
{if nra>0 && nra<6}\
<!-- <div class="aligncenter fonts14">\
{if nra>=3 && nra<6}<strong>Quedan 4 habitaciones</strong>{/if}\
{if nra>0 && nra<3}<strong>Sólo quedan 2 habitaciones</strong>{/if}\
</div> //-->\
{/if}\
<div class="caja_gris2_sin padtop10">\
<div class="top"><div></div></div>\
<div class="mid">\
{var limitadjust = 0}\
{var hasnorefund = 0}\
{for t in tar}\
{if t.ofe[4]=="packet_sale"}{var limitadjust = limitadjust+1}{else}\
{if t.reg.length > 25}{var hasnorefund = 1}{/if}{/if}\
{/for}\
{var cajalimited = 0}\
{if (tar.length-limitadjust)>5}\
{var limitcaja = 4}\
{else}\
{if (tar.length-limitadjust)>4}\
{var limitcaja = 3}\
{/if}\
{/if}\
{var lindex = 0}\
{for t in tar}\
{if lindex==limitcaja}\
<div class="oculto" id="more_offers_${i}">\
{var cajalimited = 1}\
{/if}\
{if t.ofe[4]!="packet_sale"}\
{var lindex = lindex+1}\
<div id="regimen_${i}" class="linea padtop2 padbot2">\
<div class="regimen floatl gris7 fonts11">${t.hab}</div>\
<div class="alojamiento_hot floatl gris9 fonts11 negrita">${t.reg}{if t.reg.length < 25 && hasnorefund == 11}&nbsp; <A name="NRE" ALT=" Tarifa&nbsp;flexible" title=" Tarifa&nbsp;flexible" class="font9px gris9" style="color:#009900"> Tarifa&nbsp;flexible</A>{/if}</div>\
<div class="alojamiento_precio floatl">\
<span class="pad0 padright5">{if t.pre_original>0}<span class="tachado">${t.pre_original|toMoney}</span>{/if}<span class="precio negrita"> ${t.pre|toMoney}</span></span>\
</div>\
<div class="floatr">\
<div class="btn btn_rojo_gris2"><a href="'+dir_hoteles+'index.php?pg=check&id_hotel=${i}&tarifa=${t.tarifa}&hci=${hci}{if t.ofe.length>0}&special=${t.ofe[0]}{/if}">Reservar</a></div>\
</div>\
<div class="clear"></div>\
</div>\
{/if}\
{/for}\
{if cajalimited == 1}\
</div>\
<div id="more_offers_${i}_l" style="padding:3px;">&nbsp;<a href="#" onclick="YAHOO.util.Dom.removeClass($(\'more_offers_${i}\'),\'oculto\');$(\'more_offers_${i}_l\').style.display=\'none\';return false;">Ver más opciones</a></div>\
{/if}\
<div class="clear"></div>\
<div class="no_linea">&nbsp;</div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
<div class="clear"></div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
';
//CAJA MAPA
Atrapalo.hoteles.tpls.CAJA_2 =
'<div style="width:450px;height:180px;text-align:left;">\
<div class="divFoto floatl padright10">\
<div class="relative foto">\
<img src="'+dir_hoteles+'photo/si/${i}/${ip}/110/75/"  width="110" height="75"/>\
{if nf>0}\
<div class="fnd_ver_fotos">\
<a class="btn_camara" href="'+dir_hoteles+'index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}#fotos" title="Ver fotos">Ver fotos</a>\
</div>\
{/if}\
</div>\
<div class="clear"></div>\
<div class="ranking">\
<div class="caja_gris_sin padtop10">\
<div class="top"><div></div></div>\
<div class="mid aligncenter">\
<div class="floatl width55 linea_derecha">\
<p class="gris9 padright5 font9px">Valoración</p>\
<p class="negrita fonts16 gris9">{if mo>0}${mo*2}{else}--{/if}</p>\
</div>\
<div class="floatr width40">\
<p class="gris9 font9px">Ranking</p>\
<p class="negrita fonts16 gris7">{if no>4 && po!=9999}${po}{else}--{/if}</p>\
</div>\
<div class="clear"></div>\
<div class="padleft10 padtop5">\
<div class="barra_valoracion2 barrag">\
<div class="barra_opi fondo_gris1" alt="Valoracion"><a href="'+dir_hoteles+'index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}">Valoracion</a></div>\
<div class="medidor" style="width: {if mo>0}${mo*20}{else}0{/if}%;">&nbsp;</div>\
</div>\
</div>\
{if no>0}<span class="fonts10"><a href="'+dir_hoteles+'index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}#opiniones" title="opiniones sobre ${n}">${no} opiniones</a></span>{/if}\
<div class="clear"></div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
</div>\
<div class="padleft10 padright10">\
<h2 class="destacado"><a href="'+dir_hoteles+'index.php?pg=ficha_new&id_hotel=${i}&id_proveedor=${ip}&hci=${hci}">${n}&nbsp;${c|toStars}&nbsp;{if p!=""}{if n.length+Atrapalo.hoteles.tpls.modifiers.toStars(c).length+p.length>=50}<br/>{/if}(${p}){/if}\</a></h2>\
<p class="texto">${d}</p>\
${s|toServicios}${seg|toIconosMarcas}<br /><br /><br />\
<div class="floatl gris6 padtop10"><strong>Pago:</strong>\
<p class="gris9 negrita">en ${fp|toPago}</p>\
</div>\
<div class="floatr padtop10">\
<div class="btn btn_rojo_gris2"><a href="'+dir_hoteles+'index.php?pg=check&id_hotel=${i}&sist_reserva=${fp}&tarifa=0&hci=${hci}">Reservar</a></div>\
</div>\
<div class="floatr padtop15 precio padright10">\
<strong>${tar[0].pre|toMoney}</strong>\
</div>\
</div>\
</div>\
';
//CAJA HALLAZGOS
Atrapalo.hoteles.tpls.CAJA_4 =
'<div id="result_h_${i}" class="caja_rdo">\
<div class="caja_gris padtop10">\
<div class="top"><div></div></div>\
<div class="mid">\
<div class="floatl precio3 pad0">\
<a href="'+dir_hoteles+'hide/${i}/${hci}">\
<strong>${pre|toMoney}</strong>\
</a>\
</div>\
<div class="floatl padleft10 fonts10">\
<strong>precio total</strong>\
<p class="tasas">tasas incluidas</p>\
</div>\
<div class="floatr">\
<a class="ico_info" title="Información del hotel" href="'+dir_hoteles+'hide/${i}/${hci}">\
<strong>Información del hotel</strong>\
</a>\
</div>\
<div class="clear"></div>\
<div class="caja_blanca" id="caja_${i}">\
<div class="top"><div></div></div>\
<div class="mid">\
<div class="divFoto floatl padleft5">\
<div class="relative foto">\
<img src="/images_new/hoteles/v2/hallazgo_foto_'+cod_idioma+'.gif" />\
</div>\
<div class="clear"></div>\
<div class="ranking">\
<div class="caja_gris_sin padtop10">\
<div class="top"><div></div></div>\
<div class="mid aligncenter">\
<div class="floatl width95">\
<p class="gris9 padright5 font9px">Valoración</p>\
<p class="negrita fonts16 gris9">{if mo>0}${mo*2}{else}--{/if}</p>\
</div>\
<div class="clear"></div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
</div>\
{var caja_promo=1}\
<div class="divInfo{if caja_promo!=1}2{/if} floatl padleft10 padright10">\
<div class="divPromos">\
<div class="caja_gris2_sin">\
<div class="mid">\
<div class="promo p_5" title="Descuento">Descuento</div>\
<div class="fonts15 aligncenter gris7 negrita padtop5 padleft5">\
${ofropt}% Dto.\
</div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
<div class="divHallazgo">\
<img width="95" height="95" alt="Hallazgo" src="/images_new/hoteles/v2/ico_hallazgo_'+cod_idioma+'.gif"/>\
</div>\
<h2 class="destacado"><a href="'+dir_hoteles+'hide/${i}/${hci}">${n}&nbsp;${c|toStars}&nbsp;{if p!=""}(${p}){/if}</a></h2>\
<p class="fonts11 padbot10">${d}</p>\
${s|toServicios}${seg|toIconosMarcas}\
<div class="clear"></div>\
<div class="floatl gris6 padtop10 width40">{if dc!="99999"}Distancia:{/if}\
{if dc!="99999"}\
<p class="gris9">A <strong>${dc} Km</strong> del centro</p>\
{/if}\
{if dst!="-1"}\
<p class="gris9">A <strong>${dst}</strong> de ${poi_txt}</p>\
{/if}\
</div>\
{if fp == 1}\
<div class="floatr padtop10 modoPago"><div class="ico_hot_pagoatrapalo" title="{t}Pago en Atrapalo{t}"></div><p class="negrita gris6">Pago:<span class="block gris9">en Atrapalo</span></p>\
{else}\
<div class="floatr padtop10 modoPago"><div class="ico_hot_pagohotel" title="{t}Pago en Hotel{t}"></div><p class="negrita gris6">Pago:<span class="block gris9">en Hotel</span></p>\
{/if}\
</div>\
</div>\
<div class="clear"></div>\
<div class="caja_gris2_sin padtop10">\
<div class="top"><div></div></div>\
<div class="mid">\
{var lindex = 0}\
{for t in tar}\
{if lindex<4}\
{if t.reg.length < 25}{var lindex = lindex+1}\
<div id="regimen_${i}" class="linea padtop2 padbot2">\
<div class="regimen floatl gris7 fonts11">${t.hab}</div>\
<div class="alojamiento_hot floatl gris9 fonts11 negrita">${t.reg}</div>\
<div class="alojamiento_precio floatl">\
<span class="pad0 padright5">{if t.pre_original>0}<span class="tachado">${t.pre_original|toMoney}</span>{/if}<span class="precio negrita"> ${t.pre|toMoney}</span></span>\
</div>\
<div class="floatr">\
<div class="btn btn_rojo_gris2"><a href="'+dir_hoteles+'index.php?pg=check&id_hotel=0&id_oferta=${i}&sist_reserva=${fp}&tarifa=${t.tarifa}&hci=${hci}">Reservar</a></div>\
</div>\
<div class="clear"></div>\
</div>\
{/if}\
{/if}\
{/for}\
<div class="clear"></div>\
<div class="no_linea">&nbsp;</div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
<div class="clear"></div>\
</div>\
<div class="bot"><div></div></div>\
</div>\
</div>\
';
//Resultados
Atrapalo.hoteles.initResultado = function()
{
    if(!$('display5')) {setTimeout("Atrapalo.hoteles.initResultado();",100);return;}
    if(solo_hostales!='on') Atrapalo.hoteles.adHotel(hci);
    if (!datos)
    {
    	if (arr_resultados.length==0 && solo_hostales && solo_hostales=='on')
    	{
    		alert('Lo sentimos.No hemos encontrado Hostales en el destino que nos ha indicado, en su luegar le mostramos los hoteles disponibles');
    		obj_maskara_modal.show();
            $('pbar_div').innerHTML="";
            var url=dir_hoteles+"index.php?pg=resultados2&hci="+hci;
            window.location.href=url;
    	}
        datos=new Atrapalo.hoteles.resultado();
        datos.myDataTable = new YAHOO.atrapalo.widget.DataTable("resultados_div2", datos.columnas, datos.bbdd, datos.configuracion);
        datos.myDataTable.subscribe('dataInsertReturnEvent',datos.finalizarResultados,datos,true);
        datos.myDataTable.subscribe('refreshEvent',datos.actualizarTotales,datos,true);
        datos.myDataTable.precios=arr_precios;
        datos.cargarFiltros();
        datos.finalizarResultados();
        datos.actualizarTotales();
        $('slider6').value  = parseInt(changeToMoneyNoSign(arr_precios.min),10);
        $('slider1').value  = parseInt(changeToMoneyNoSign(arr_precios.max+1),10);
        $('display3').value = parseInt(changeToMoneyNoSign(arr_precios.min),10);
        $('display2').value = parseInt(changeToMoneyNoSign(arr_precios.max+1),10);
        carpeLeft('slider6', 0);
        carpeLeft('slider1', 150);
        if (datos) datos.filtros['pre']['valores'] = eval("["+changeToMoneyNoSign(parseInt(arr_precios.min,10))+","+changeToMoneyNoSign(parseInt(arr_precios.max+1,10))+"]");
        carpeLeft('slider2', 0);
        carpeLeft('slider3', 150);
        if($('slider6').value>10000)
        {
            $('display3').style.width='40px';
            $('display2').style.width='45px';
        }
        errores.cargarErroresCookie();
        errores.show();
        datos.CookieFiltros();
        datos.CookieOrdenacion();
        datos.CookiePrecios();
        datos.CookieRecordarHotel();
    }
};
Atrapalo.hoteles.resultado=function()
{
    YAHOO.widget.DataTable.MSG_EMPTY='<br/><br/><div id="aviso_filtros"><h1>No hay resultados</h1></div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>';
    this.columnas = [
        {key:"result",formatter:this.formatResult},
        {key:"n",sortable:true,sortOptions:{sortFunction:this.sortNombre}},
        {key:"po",sortable:true,sortOptions:{sortFunction:this.sortRanking}},
        {key:"pre",sortable:true,sortOptions:{sortFunction:this.sortPrecio}},
        {key:"dc",sortable:true,sortOptions:{sortFunction:this.sortDistance}},
        {key:"mo",sortable:true,sortOptions:{sortFunction:this.sortValoracion}},
        {key:"pun",sortable:true}
    ];
    this.configuracion={ paginator: { rowsPerPage:20, pageLinks:5, pageLinksStart:1, dropdownOptions: null}, paginated:true, scrollable:false };
   	tmp_arr_resultados=arr_resultados;
   	tmp_arr_precios=arr_precios;
    this.bbdd = new YAHOO.util.DataSource(tmp_arr_resultados);
    this.bbdd.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
    this.bbdd.responseSchema = {
        fields: ['i','c','n','p','ip','lat','lon','mo','no','pun','pre','d','tar','s','ofr','fp','fpt','hid','val','ofra','ofrop','nf','dc','ofrb','vmh_prexper','vmh_numper','vmh_pretotal','vmh_ids','es_vmh','vmh_tarifa','vmh_vfi','vmh_vff','vmh_id_tarifa_vuelos','vmh_id_home','vmh_ciudad_destino','vmh_ciudad_origen','pf','vmh_fee_con_descuento','vmh_fee_sin_descuento','seg','po','ofropt','paquetes_regimen','des','reg','nra']
    };
    if (tmp_arr_resultados.length > 0)
    {
        YAHOO.widget.DataTable._nCount=1;
        // Actualizamos los intervalos de los precios
        $('slider1').setAttribute('min',    changeToMoneyNoSign(parseInt(tmp_arr_precios.min,10)));
        $('slider1').setAttribute('max',    changeToMoneyNoSign(parseInt(tmp_arr_precios.max,10)));
        $('slider6').setAttribute('min',    changeToMoneyNoSign(parseInt(tmp_arr_precios.min,10)));
        $('slider6').setAttribute('max',    changeToMoneyNoSign(parseInt(tmp_arr_precios.max,10)));
        $('display3').setAttribute('from',  changeToMoneyNoSign(parseInt(tmp_arr_precios.min,10)));
        $('display3').setAttribute('to',    changeToMoneyNoSign(parseInt(tmp_arr_precios.max,10)));
        $('display3').setAttribute('value', changeToMoneyNoSign(parseInt(tmp_arr_precios.min,10)));
        $('display2').setAttribute('from',  changeToMoneyNoSign(parseInt(tmp_arr_precios.min,10)));
        $('display2').setAttribute('to',    changeToMoneyNoSign(parseInt(tmp_arr_precios.max,10)));
        $('display2').setAttribute('value', changeToMoneyNoSign(parseInt(tmp_arr_precios.max,10)));
        // Obtenemos los sliders de precios y Opiniones
        sliders = carpeGetElementsByClass(carpeSliderClassName)
        for (i = 0; i < sliders.length; i++) {
            sliders[i].onmousedown = slide
        }
        displays = carpeGetElementsByClass(carpeSliderDisplayClassName)
        for (i = 0; i < displays.length; i++) {
            displays[i].onfocus = focusDisplay
        }
    }
};
Atrapalo.hoteles.resultado.prototype = {
    lastSort : 'pun',
    filtros :
        {
            c:{valores:[],metodo:'in',exclusivo:true},
            ip:{valores:[1,2,4,5,6,7,8,9,10,11,13,14],metodo:'in',exclusivo:true},
            poi:{valores:[],metodo:'distance',exclusivo:true},
            s:{valores:[],metodo:'allIn',exclusivo:true},
            ofr:{valores:[],metodo:'in',exclusivo:true},
            pre:{valores:[],metodo:'between_price',exclusivo:true},
            mo:{valores:[],metodo:'between',exclusivo:true},
            po:{valores:[],metodo:'between',exclusivo:true},
            n:{valores:[],metodo:'init',exclusivo:true},
            fp:{valores:[1,3],metodo:'in',exclusivo:true},
            pf:{valores:[],metodo:'in',exclusivo:true},
            reg:{valores:[],metodo:'someIn',exclusivo:true},
            des:{valores:[],metodo:'eq',exclusivo:true},
            seg:{valores:[],metodo:'binary',exclusivo:true}
        },
    caja1_tpl : TrimPath.parseTemplate(Atrapalo.hoteles.tpls.CAJA_1),
    caja2_tpl : TrimPath.parseTemplate(Atrapalo.hoteles.tpls.CAJA_2),
    caja4_tpl : TrimPath.parseTemplate(Atrapalo.hoteles.tpls.CAJA_4),
    formatResult:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            data.hci=hci;
            data.index=oRecord.getId();
            var p = datos.filtros.poi.valores;
            if(p.length==3 && data.lat){
                poi = new GLatLng(parseFloat(p[0]),parseFloat(p[1]));
                var point = new GLatLng(parseFloat(data.lat),parseFloat(data.lon));
                var dst=point.distanceFrom(poi);
                dst=dst.toFixed(0)+"m";
                data.dst=dst;
                data.poi_txt=$('f_puntointeres_corto')[$('f_puntointeres_corto').selectedIndex].innerHTML;
            }else{data.dst=-1;}
            data._MODIFIERS=Atrapalo.hoteles.tpls.modifiers;
            if(data.hid==1 && data.ip==5)
            {
                elCell.innerHTML = datos.caja4_tpl.process(data);
            }else{
                elCell.innerHTML = datos.caja1_tpl.process(data);
            }
        },
    formatColumna:function(elCell, oRecord, oColumn, sData) { elCell.innerHTML = sData; },
    formatNomMap:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            if(inMapAndTable.length==10) {inMapAndTable=[];}
            inMapAndTable[inMapAndTable.length]=data.i;
            var icono='';
            if(inMapAndTable.length<10) icono='/images_new/maps/h0'+inMapAndTable.length+'.png';
            else icono='/images_new/maps/h'+inMapAndTable.length+'.png';
            var stars=Atrapalo.hoteles.tpls.modifiers.toStars(data.c);
            if(data.hid==1 && data.ip==5)
            {
                elCell.innerHTML = '<img src="'+icono+'" hspace="5"/>'+data.n+' '+stars;
            }else{
                if(data.es_vmh==1)
                {
                    elCell.innerHTML = '<img src="'+icono+'" hspace="5" style="cursor: pointer;" onclick="showHotelInGoogleMap('+data.i+');" /><a class="negrita" href="'+dir_hoteles+'index.php?pg=ficha_new&id_hotel='+data.i+'&id_proveedor='+data.ip+'&hci='+hci+'&ids='+data.vmh_ids+'">'+data.n+' '+stars+'</a>';
                }
                else{
                    elCell.innerHTML = '<img src="'+icono+'" hspace="5" style="cursor: pointer;" onclick="showHotelInGoogleMap('+data.i+');" /><a class="negrita" href="'+dir_hoteles+'index.php?pg=ficha_new&id_hotel='+data.i+'&id_proveedor='+data.ip+'&hci='+hci+'">'+data.n+' '+stars+'</a>';
                }
            }
        },
    formatIconMapBmh:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            if(inMapAndTable.length==10) {inMapAndTable=[];}
            inMapAndTable[inMapAndTable.length]=data.i;
            var icono='';
            if(inMapAndTable.length<10) icono='/images_new/bookmequick/maps/h0'+inMapAndTable.length+'.png';
            else icono='/images_new/bookmequick/maps/h'+inMapAndTable.length+'.png';
            var stars=Atrapalo.hoteles.tpls.modifiers.toStars(data.c);
            var servicios = Atrapalo.hoteles.tpls.modifiers.toServicios(data.s);
            elCell.innerHTML = '<img style="cursor: pointer;" onclick="showHotelInGoogleMap('+data.i+');location=\'#\'" src="'+icono+'" alt="'+inMapAndTable.length+'" title="Marcador '+inMapAndTable.length+'" />';
        },
    formatNomMapBmh:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            var stars=Atrapalo.hoteles.tpls.modifiers.toStars(data.c);
            var servicios = Atrapalo.hoteles.tpls.modifiers.toServicios(data.s);
            if(data.hid==1 && data.ip==5)
            {
                elCell.innerHTML = '<p class="negrita fonts13"><a href="">'+data.n+' '+stars+'</a></p><p class="padtop5"><span class="gris negrita">Servicios</span> <span class="padleft5">'+servicios+'</span>';
            }else{
                elCell.innerHTML = '<p class="negrita fonts13"><a href="'+dir_hoteles+'index.php?pg=ficha&id_hotel='+data.i+'&id_proveedor='+data.ip+'&hci='+hci+'">'+data.n+' '+stars+'</a></p><p class="padtop5"><span class="gris negrita">Servicios</span> <span class="padleft5">'+servicios+'</span>';
            }
        },
    formatPrecioBmh:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            elCell.innerHTML = 'Desde<div class="precio3">'+Atrapalo.hoteles.tpls.modifiers.toMoney(parseFloat(oRecord.getData('pre')).toFixed(2))+'</div>';
        },
    formatRanking:function(elCell, oRecord, oColumn, sData) {
		var rank;
    	if (oRecord.getData('po')!="9999" && oRecord.getData('po')!=null) rank =oRecord.getData('po'); else rank="--";
    	elCell.innerHTML = '<center><p class="fonts10 gris9">Ranking</p><p class="negrita fonts14 gris7">'+rank+'</p></center>';
    },
    formatValoracion:function(elCell, oRecord, oColumn, sData) {
		var Valora;
    	if (oRecord.getData('mo')!="0") Valora =2*oRecord.getData('mo'); else Valora="--";
    	elCell.innerHTML = '<center><p class="fonts10 gris9">Valoración</p><p class="negrita fonts14 gris9">'+Valora+'</p></center>';
    },
    formatDistancia:function(elCell, oRecord, oColumn, sData) {
    	elCell.innerHTML = '<p class="gris7">A <strong>'+oRecord.getData('dc')+'Km</strong></p>';
    },
    formatBtnBmh:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            elCell.innerHTML = '<input type="button" onclick="document.location.href=\''+dir_hoteles+'index.php?pg=check&id_hotel='+data.i+'&sist_reserva='+data.fp+'&tarifa=0&hci='+hci+'\'" value="reservar"/>';
        },
    formatServicios:function(elCell, oRecord, oColumn, sData) { elCell.innerHTML = Atrapalo.hoteles.tpls.modifiers.toServicios(sData); },
    formatBtn:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            if(data.es_vmh==1)
            {
            var d=0;
            if (data.ofrop>0)
            {
                d=5;
            }
                elCell.innerHTML = '<a href="#" onclick="generarParamsHoteles(\''+hci+'\',\''+data.i+'\',\'0\',\'\');generarParamsVuelos(\''+data.vmh_id_tarifa_vuelos+'\');multiCheck('+d+');return false;"><img src="/buttons/comprar_vuelo_hotel" border="0" alt="Comprar V+H" title="Comprar V+H"/></a>';
            }else{
                elCell.innerHTML = '<div class="btn btn_rojo_gris2"><div class="left"></div><div class="btn"><a href="'+dir_hoteles+'index.php?pg=check&id_hotel='+data.i+'&sist_reserva='+data.fp+'&tarifa=0&hci='+hci+'">Reservar</a></div><div class="clear"></div></div>';
            }
        },
    formatPrecio:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            if(data.es_vmh==1)
            {
                elCell.innerHTML = Atrapalo.hoteles.tpls.modifiers.toMoney(parseFloat(oRecord.getData('vmh_prexper')).toFixed(2));
            }else{
                elCell.innerHTML = '<span class="precio3 pad0"><a href="'+dir_hoteles+'index.php?pg=check&id_hotel='+data.i+'&sist_reserva='+data.fp+'&tarifa=0&hci='+hci+'">'+Atrapalo.hoteles.tpls.modifiers.toMoney(parseFloat(oRecord.getData('pre')).toFixed(2))+'</a></span>';
            }
        },
    formatResultF:function(elCell, oRecord, oColumn, sData)
        {
            var data=oRecord.getData();
            data.hci=hci;
            data._MODIFIERS=Atrapalo.hoteles.tpls.modifiers;
            elCell.innerHTML = datos.caja3_tpl.process(data);
        },
    sortPrecio : function(a, b, desc)
        {
            if(!YAHOO.lang.isValue(a)) return (!YAHOO.lang.isValue(b)) ? 0 : 1;
            else if(!YAHOO.lang.isValue(b)) return -1;
            return YAHOO.util.Sort.compare(parseFloat(a.getData("pre")), parseFloat(b.getData("pre")), desc);
        },
    sortDistance : function(a, b, desc)
        {
            if(!YAHOO.lang.isValue(a)) return (!YAHOO.lang.isValue(b)) ? 0 : 1;
            else if(!YAHOO.lang.isValue(b)) return -1;
            return YAHOO.util.Sort.compare(parseFloat(a.getData("dc")), parseFloat(b.getData("dc")), desc);
        },
    sortNombre : function(a, b, desc)
        {
            if(!YAHOO.lang.isValue(a)) {return (!YAHOO.lang.isValue(b)) ? 0 : 1;}
            else{ if(!YAHOO.lang.isValue(b)) {return -1;}}
			return YAHOO.util.Sort.compare(a.getData('n').replace(/hotel\s?/ig,""), b.getData('n').replace(/hotel\s?/ig,""), desc);
        },
    sortValoracion : function(a, b, desc)
        {
            if(!YAHOO.lang.isValue(a)) {return (!YAHOO.lang.isValue(b)) ? 0 : 1;}
            else{ if(!YAHOO.lang.isValue(b)) {return -1;}}
            var sorted=YAHOO.util.Sort.compare(a.getData('mo'), b.getData('mo'), true);
            if(sorted === 0) {sorted=YAHOO.util.Sort.compare(a.getData('no'), b.getData('no'), true);}
            return sorted;
        },
    sortRanking : function(a, b, asc)
        {
            if(!YAHOO.lang.isValue(a)) return (!YAHOO.lang.isValue(b)) ? 0 : 1;
            else if(!YAHOO.lang.isValue(b)) return -1;
            var sorted = YAHOO.util.Sort.compare(parseFloat(a.getData("po")), parseFloat(b.getData("po")), asc);
            if(sorted === 0) {sorted=YAHOO.util.Sort.compare(a.getData('no'), b.getData('no'), asc);}
            return sorted;
        },
    actualizarTotales: function()
        {
            var mdt = this.myDataTable;
            var oPaginator=mdt.get("paginator");
            $('paginaactual').innerHTML=oPaginator.currentPage;
            $('totalresultados_9').innerHTML=oPaginator.totalRecords;
            $('totalresultados').innerHTML=oPaginator.totalRecords;
            $('totalresultados_2').innerHTML=oPaginator.totalRecords;
            var init=oPaginator.startRecordIndex+1;
            var limit=(oPaginator.startRecordIndex+oPaginator.rowsThisPage<oPaginator.totalRecords)?oPaginator.startRecordIndex+oPaginator.rowsThisPage:oPaginator.totalRecords;
            if(limit===0) {init=0;}
            $('del_resultado').innerHTML=init;
            $('del_resultado_2').innerHTML=init;
            $('al_resultado').innerHTML=limit;
            $('al_resultado_2').innerHTML=limit;
            $('totalpaginas').innerHTML=oPaginator.totalPages;
            if(obj_tabs && obj_tabs.activo==1) {this.cargarEnMapa();}
        },
    actualizarTotalesMapa: function()
        {
            var mdt = this.myDataTableMapa;
            var oPaginator=mdt.get("paginator");
            var limit=(oPaginator.startRecordIndex+oPaginator.rowsThisPage<oPaginator.totalRecords)?oPaginator.startRecordIndex+oPaginator.rowsThisPage:oPaginator.totalRecords;
            try
            {
                $('del_resultado_3').innerHTML=oPaginator.startRecordIndex+1;
                $('del_resultado_4').innerHTML=oPaginator.startRecordIndex+1;
                $('totalresultados_3').innerHTML=oPaginator.totalRecords;
                $('totalresultados_4').innerHTML=oPaginator.totalRecords;
                $('al_resultado_3').innerHTML=limit;
                $('al_resultado_4').innerHTML=limit;
                $('paginaactual_2').innerHTML=oPaginator.currentPage;
                $('totalpaginas_2').innerHTML=oPaginator.totalPages;
                $('paginaactual_2a').innerHTML=oPaginator.currentPage;
                $('totalpaginas_2a').innerHTML=oPaginator.totalPages;
            }catch(ex){}
            this.cargarMarcasEnMapa();
        },
    actualizarTotalesFotos: function()
        {
            var mdt = this.myDataTableFotos;
            var oPaginator=mdt.get("paginator");
            var limit=(oPaginator.startRecordIndex+oPaginator.rowsThisPage<oPaginator.totalRecords)?oPaginator.startRecordIndex+oPaginator.rowsThisPage:oPaginator.totalRecords;
            $('paginaactual_3').innerHTML=oPaginator.currentPage;
            $('totalresultados_5').innerHTML=oPaginator.totalRecords;
            $('totalresultados_6').innerHTML=oPaginator.totalRecords;
            $('del_resultado_5').innerHTML=oPaginator.startRecordIndex+1;
            $('del_resultado_6').innerHTML=oPaginator.startRecordIndex+1;
            $('al_resultado_5').innerHTML=limit;
            $('al_resultado_6').innerHTML=limit;
            $('totalpaginas_3').innerHTML=oPaginator.totalPages;
        },
    actualizarTotalesFavoritos: function()
        {
            var mdt = this.myDataTableFav;
            var oPaginator=mdt.get("paginator");
            var limit=(oPaginator.startRecordIndex+oPaginator.rowsThisPage<oPaginator.totalRecords)?oPaginator.startRecordIndex+oPaginator.rowsThisPage:oPaginator.totalRecords;
            $('paginaactual_4').innerHTML=oPaginator.currentPage;
            $('totalresultados_7').innerHTML=oPaginator.totalRecords;
            $('totalresultados_8').innerHTML=oPaginator.totalRecords;
            $('del_resultado_7').innerHTML=oPaginator.startRecordIndex+1;
            $('del_resultado_8').innerHTML=oPaginator.startRecordIndex+1;
            $('al_resultado_7').innerHTML=limit;
            $('al_resultado_8').innerHTML=limit;
            $('totalpaginas_4').innerHTML=oPaginator.totalPages;
        }
};
Atrapalo.hoteles.resultado.prototype.ordenar = function(por) {
    obj_maskara_modal.show();
    Atrapalo.util.cookie.setCookie(hci+'_ordenacion',por,expiracion);
    setTimeout('datos._ordenar("'+por+'")',100);
    setTimeout('urchinTracker("/hoteles/orden/'+por+'");',100);
    return true;
};
Atrapalo.hoteles.resultado.prototype._ordenar = function(por) {
    var dir="asc";
    if(por=="po") dir="asc";
    var mdt = this.myDataTable;
    mdt.sortColumn(mdt.getColumn(por),dir);
    YAHOO.util.Dom.removeClass($('orden_'+this.lastSort),'negrita');
    if($('orden_'+por+'_2')) {YAHOO.util.Dom.removeClass($('orden_'+this.lastSort+'_2'),'negrita');}
    this.lastSort=por;
    YAHOO.util.Dom.addClass($('orden_'+por),'negrita');
    if($('orden_'+por+'_2')){YAHOO.util.Dom.addClass($('orden_'+por+'_2'),'negrita');}
    $('orden_i_'+por).checked=true;
    if($('orden_'+por+'_2')){$('orden_i_'+por+'_2').checked=true;}
    if(obj_tabs && obj_tabs.activo==1) {this.cargarEnMapa();}
    obj_maskara_modal.hide();
};

Atrapalo.hoteles.resultado.prototype._acumularFiltro = function (key,val,ins) {
    var mdt = this.myDataTable;
    var cookie = Atrapalo.util.cookie.getCookie(hci+'_filtros');
    var v,ii,iii;
    if (key=='n')
    {
        if(val!='') YAHOO.util.Dom.addClass($('filtro_letra_'+val),'negrita');
        if(this.filtros[key].valores.length==1)
        {
            YAHOO.util.Dom.removeClass($('filtro_letra_'+this.filtros[key].valores[0]),'negrita');
        }
		if (cookie!=null)
		{
			cook=YAHOO.lang.JSON.parse(cookie);
			if (cook.n.valores[0]!=val)
			{
				var id_letra ='filtro_letra_'+cook.n.valores[0];
				YAHOO.util.Dom.removeClass($(id_letra),'negrita');
			}
		}
    }
    if (key=='poi' || key=='pre' || key=='n' || key=='mo' || key=='po' || (key=="c" && val=='-1') || (key=="reg" && val=='0') || (key=="seg" && val=='0') || key=='des') {this.filtros[key].valores=[];}
    var filtros=this.filtros;
    var filt=filtros[key];
    if(ins)
    {
        if(val.indexOf('[')===0)
        {
            v=eval(val);
            if(key=="poi" && v[0]=="-1") {filt.valores=[];}
            else if(key=="des" && val=="") {filt.valores=[];}
            else{
                if(filt.metodo=="allIn") {filt.valores[filt.valores.length]=v;}
                else{for(ii in v) if(ii!='inArray') {filt.valores[filt.valores.length]=v[ii];}}
            }
        }else{
            if(key=="des" && val=="") {filt.valores=[];}
            else filt.valores[filt.valores.length]=val;
        }
    }else{
        if(val.indexOf('[')===0) {v=eval(val);}
        else {v=[val];}
        var len = filt.valores.length;
        if(filt.metodo=="allIn")
        {
            for(iii=0;iii<len;iii++)
            {
                if(filt.valores[iii].toString()==v.toString()) {filt.valores[iii]='';break;}
            }
        }else{
            for(ii in v) if(ii!='inArray')
            {
                for(iii=0;iii<len;iii++)
                {
                    if(filt.valores[iii]==v[ii]) {filt.valores[iii]='';break;}
                }
            }
        }
        var tmp=[];
        for(iii=0;iii<len;iii++)
        {
            if(filt.valores[iii]!=='') {tmp[tmp.length]=filt.valores[iii];}
        }
        filt.valores=tmp;
    }
    if(filtros.c.valores.length===0   && $('f_cat_99')) {$('f_cat_99').checked=true;}
    if(filtros.seg.valores.length===0 && $('f_seg_0' )) {$('f_seg_0').checked=true;}
    if(filtros.reg.valores.length===0 && $('f_reg_99')) {$('f_reg_99').checked=true;}
    mdt.ClearFilters();
    mdt.Filter(filtros);
    var dir="asc";
    if(this.lastSort=="mo") dir="desc";
    mdt.sortColumn(mdt.getColumn(this.lastSort),dir);
    var oPaginator=mdt.get("paginator");
    if(oPaginator.totalRecords==0)
    {
       	this.actualizarTotales();
        this.avisoFiltrosCero(key,val,ins);
    }
    obj_maskara_modal.hide();
	Atrapalo.util.cookie.setCookie(hci+'_filtros',YAHOO.lang.JSON.stringify(filtros),expiracion,dir_hoteles);
};
Atrapalo.hoteles.resultado.prototype.avisoFiltrosCero = function (key,val,ins){
    $('aviso_filtros').innerHTML='<h1>Oooops, esta ultima selección no ha dado resultados!</h1>';
}
Atrapalo.hoteles.resultado.prototype.acumularFiltro = function (key,val,ins){
    obj_maskara_modal.show();
    if(obj_tabs && obj_tabs.activo==2) {setTimeout('datosAlt._acumularFiltro("'+key+'","'+val+'",'+ins+')',1);;}
    else{setTimeout('datos._acumularFiltro("'+key+'","'+val+'",'+ins+')',1);}
    setTimeout('urchinTracker("/hoteles/filtro/'+key+'");',100);
    return true;
};
Atrapalo.hoteles.resultado.prototype.limpiarFiltro = function (){
    obj_maskara_modal.show();
    setTimeout('datos._limpiarFiltro()',1);
    return true;
};
Atrapalo.hoteles.resultado.prototype._limpiarFiltro = function (){
    var mdt = this.myDataTable;
    mdt.ClearFilters();
    var dir="asc";
    mdt.sortColumn(mdt.getColumn(this.lastSort),dir);
    $('f_fp_1').checked=true;
    $('f_fp_3').checked=true;
    limpiaCategoriasMarcadas();
    var filtros=this.filtros;
    for(var key in filtros) if(key!='inArray')
    {
        if(key=='fp')
        {
            this.filtros[key].valores=[1,3];
        }else{
            this.filtros[key].valores=[];
        }
    }
    obj_maskara_modal.hide();
    return true;
};
Atrapalo.hoteles.resultado.prototype.cargarEnMapa = function() {
    var first=false;
    if(!this.myDataTableMapa)
    {
        this.columnasM = [
            {key:"nom",formatter:this.formatNomMap,label:'Hotel',width:'50%'},
            {key:"ranking",formatter:this.formatRanking,label:'Ranking',width:'15%'},
			{key:"valoracion",formatter:this.formatValoracion,label:'Valoración',width:'15%'},
            {key:"precio",formatter:this.formatPrecio,label:'Desde',width:'20%'}
        ];
        this.configuracionM={
            paginator: {rowsPerPage:10, pageLinks:5, pageLinksStart:1, dropdownOptions: null},
            paginated:true, scrollable:false
        };
        this.bbddM = new YAHOO.util.DataSource();
        this.bbddM.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
        this.bbddM.responseSchema = {
            resultsList: "hoteles",
            fields: ['i','c','n','p','ip','lat','lon','mo','no','pun','pre','d','tar','s','ofr','fp','fpt','hid','po']
        };
        YAHOO.widget.DataTable._nCount=2;
        this.myDataTableMapa = new YAHOO.atrapalo.widget.DataTable("resultados_div4", this.columnasM, this.bbddM, this.configuracionM);
        this.myDataTableMapa.subscribe('refreshEvent',this.actualizarTotalesMapa,this,true);
        first=true;
    }
    var mdt = this.myDataTable;
    this.myDataTableMapa._oRecordSet = mdt.getRecordSet();
    inMapAndTable=[];
    this.myDataTableMapa.refreshView(false);
    if(first){this.finalizarResultadosMapa();}
    obj_maskara_modal.hide();
};
Atrapalo.hoteles.resultado.prototype.cargarMarcasEnMapa = function() {
    if(!map) {return;}
    map.clearOverlays();
    var mdt = this.myDataTableMapa;
    var p   = this.filtros.poi.valores;
    var rs  = mdt.getRecordSet();
    var len=rs.getLength();
    var bounds = new GLatLngBounds();
    var poi,point;
    var icono=baseIcon;
    icono.image='/images_new/maps/h00.png';
    icono.shadow='/images_new/maps/h-shadow-small.png'
    icono.iconSize = new GSize(15, 20);
    icono.iconAnchor = new GPoint(0, 20);
    marker=[];
    for (var i=0; i<len; i++)
    {
        var oRecord = rs.getRecord(i);
        var data=oRecord.getData();
        if(data.hid==1 && data.ip==5) {continue;}
        data.hci=hci;
        var lon = data.lon;
        var lat = data.lat;
        var ip  = data.ip;
        if ((lon!=='' && lat!=='') && (lon!==0 && lat!==0) )
        {
            data._MODIFIERS=Atrapalo.hoteles.tpls.modifiers;
            if(!data.dst) data.dst=-1;
            html[data.i] = datos.caja2_tpl.process(data);
            point = new GLatLng(parseFloat(lat),parseFloat(lon));
            bounds.extend(point);
            marker[data.i] = new createMarker(point,icono,html[data.i],data.n+'.Desde '+changeToMoneyNoSign(data.pre),false,false);
            map.addOverlay(marker[data.i]);
        }
    }
    icono.iconSize = new GSize(20, 34);
    icono.iconAnchor = new GPoint(0, 34);
    for(h in inMapAndTable) if(h!='inArray')
    {
        try
        {
            var id=inMapAndTable[h];
            var c= parseInt(h,10)+1;
            point = marker[id].getPoint();
            var tit= marker[id].getTitle();
            if(c<10) icono.image='/images_new/maps/h0'+c+'.png';
            else icono.image='/images_new/maps/h'+c+'.png';
            icono.iconSize = new GSize(20, 25);
            icono.iconAnchor = new GPoint(0, 20);
            icono.shadow='/images_new/maps/h-shadow-big.png'
            map.removeOverlay(marker[id]);
            marker[id] = new createMarker(point,icono,html[id],tit,false,false);
            map.addOverlay(marker[id]);
        }catch(ex){}
    }
    if(p.length===3)
    {
        poi = new GLatLng(parseFloat(p[0]),parseFloat(p[1]));
        var alterIcon=new GIcon();
        alterIcon.image ="/images_new/hoteles/marker_pref.png";
        alterIcon.iconSize=new GSize(20,34);
        alterIcon.iconAnchor=new GPoint(0,34);
        alterIcon.infoWindowAnchor=new GPoint(16,0);
        marker.poi = new createMarker(poi,alterIcon,'',$('f_puntointeres_corto')[$('f_puntointeres_corto').selectedIndex].innerHTML,false,true);
        map.addOverlay(marker.poi);
        map.setCenter(poi);
        bounds.extend(poi);
    }
    if($('id_costa') && $('id_costa').value!='') max_zoom=9;
    zooMeaMap(bounds);
};
Atrapalo.hoteles.resultado.prototype.finalizarResultadosMapa = function ()
{
    var len = $('resultados_div4').childNodes.length;
    var childrens = $('resultados_div4').childNodes;
    for(var child=0;child<len;child++)
    {
        try{
        var id =  $('resultados_div4').childNodes[child].id;
        if( id == 'yui-dt2-paginator0') {$('paginator3').appendChild($('resultados_div4').childNodes[child]);}
        if( id == 'yui-dt2-paginator1') {$('paginator4').appendChild($('resultados_div4').childNodes[child]);}
        }catch(ex){}
    }
};
Atrapalo.hoteles.resultado.prototype.initFavoritos = function ()
{
    if(!this.myDataTableFav)
    {
        this.columnasFav = [ {key:"result",formatter:this.formatResult} ];
        this.configuracionFav={ paginator: { rowsPerPage:20, pageLinks:5, pageLinksStart:1, dropdownOptions: null}, paginated:true, scrollable:false };
        this.bbddFav = new YAHOO.util.DataSource([]);
        this.bbddFav.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
        this.bbddFav.responseSchema = {
            fields: ['i','c','n','p','ip','lat','lon','mo','no','pun','pre','d','tar','s','ofr','fp','fpt','hid','val','ofra','ofrop','po','ofropt','paquetes_regimen']
        };
        YAHOO.widget.DataTable._nCount=4;
        this.myDataTableFav = new YAHOO.atrapalo.widget.DataTable("resultados_div5", this.columnasFav, this.bbddFav, this.configuracionFav);
        this.myDataTableFav.subscribe('refreshEvent',this.actualizarTotalesFavoritos,this,true);
        this.finalizarResultadosFavoritos();
    }
}
Atrapalo.hoteles.resultado.prototype.verFavoritos = function () { this.myDataTableFav.refreshView(); }
Atrapalo.hoteles.resultado.prototype.iLoveIt = function (id,cook)
{
    if(!this.myDataTableFav) this.initFavoritos();
    var mdt = this.myDataTable;
    var mdtdv = this.myDataTable.defaultView;
    var rs  = mdt.getRecordSet();
    var tmp=[];
    for(var i in rs._records) if(i!="inArray")
    {
        if(rs._records[i].getData('i')==id)
        {
            var oRecord = rs._records[i];
            this.myDataTableFav.addRow(oRecord.getData(),i);
            rs.deleteRecord(parseInt(i,10));
            if(cook!=0)
            {
                var cookie=(Atrapalo.util.cookie.getCookie('hot_fav')!=null)?Atrapalo.util.cookie.getCookie('hot_fav')+","+id:id;
                var exp=new Date(d.getFullYear(),d.getMonth()+1,d.getDate());
                Atrapalo.util.cookie.setCookie('hot_fav',cookie,exp);
            }
            break;
        }
    }
    mdt.refreshView();
    tmp=[];
    for(i in mdtdv) if(i!="inArray")
    {
        if(mdtdv[i].i!=id)tmp[tmp.length]=mdtdv[i];
    }
    this.myDataTable.defaultView=tmp;
};
Atrapalo.hoteles.resultado.prototype.iLoveItFromCookie = function ()
{
     var ilove = Atrapalo.util.cookie.getCookie('hot_fav');
     if(ilove!==null)
     {
        var id_hotel=ilove.split(',');
        for(var i in id_hotel) if(i!="inArray")
        {
            this.iLoveIt(id_hotel[i],0);
        }
     }
};

Atrapalo.hoteles.resultado.prototype.CookieFiltros = function ()
{
    var FiltrosCookie = Atrapalo.util.cookie.getCookie(hci+'_filtros');
	if (FiltrosCookie!=null)
	{
	    this.filtros=YAHOO.lang.JSON.parse(FiltrosCookie);
	    CookieFiltrosIniciar(this.filtros);
	    var mdt = this.myDataTable;
	    mdt.ClearFilters();
	    mdt.Filter(this.filtros);
	}
};

Atrapalo.hoteles.resultado.prototype.CookiePrecios = function ()
{
    var PreciosCookie = Atrapalo.util.cookie.getCookie(hci+'_precios');
	if (PreciosCookie!=null)
	{
			var precio = PreciosCookie.split(":");
			$('slider6').style.left = precio[0];
			$('slider1').style.left = precio[1];
	}
};

Atrapalo.hoteles.resultado.prototype.CookieRecordarHotel = function ()
{
    var CookieHotel = Atrapalo.util.cookie.getCookie(hci+'_hotel');
	if (CookieHotel!=null) window.document.location.href = window.document.location.href + '#result_' + CookieHotel;
};


Atrapalo.hoteles.resultado.prototype.CookieOrdenacion = function ()
{
    var OrdenacionCookie = Atrapalo.util.cookie.getCookie(hci+'_ordenacion');
	if (OrdenacionCookie!=null)
	{
	    if ($('orden_i_'+OrdenacionCookie)!=null) $('orden_i_'+OrdenacionCookie).checked=true;
	    datos.ordenar(OrdenacionCookie);
	}
	else datos.ordenar('pun');
};

Atrapalo.hoteles.resultado.prototype.finalizarResultadosFavoritos = function ()
{
    var len = $('resultados_div5').childNodes.length;
    var childrens = $('resultados_div5').childNodes;
    for(var child=0;child<len;child++)
    {
        try{
        var id =  $('resultados_div5').childNodes[child].id;
        if( id == 'yui-dt4-paginator0') {$('paginator7').appendChild($('resultados_div5').childNodes[child]);}
        if( id == 'yui-dt4-paginator1') {$('paginator8').appendChild($('resultados_div5').childNodes[child]);}
        }catch(ex){}
    }
};
Atrapalo.hoteles.resultado.prototype.finalizarResultados = function ()
{
    YAHOO.util.Dom.addClass($('orden_pun'),'negrita');
    if($('resultados_div')) {$('resultados_div').innerHTML="";}
    if (solo_hostales && solo_hostales=='on')
    {
    	$('orden_i_dc').checked=true;
    	YAHOO.util.Dom.addClass($('orden_dc'),'negrita');
    	if($('orden_dc_2'))
    	{
        	$('orden_dc_2').checked=true;
        	YAHOO.util.Dom.addClass($('orden_dc_2'),'negrita');
    	}
    }
    else
    {
    	$('orden_i_pun').checked=true;
    	if($('orden_i_pun_2'))
    	{
        	$('orden_i_pun_2').checked=true;
        	YAHOO.util.Dom.addClass($('orden_pun_2'),'negrita');
    	}
    }
    var len = $('resultados_div2').childNodes.length;
    var childrens = $('resultados_div2').childNodes;
    for(var child=0;child<len;child++)
    {
        try{
        if($('resultados_div2').childNodes[child])
        {
        var id =  $('resultados_div2').childNodes[child].id;
        if( id == 'yui-dt1-paginator0') {$('paginator1').appendChild($('resultados_div2').childNodes[child]);}
        if( id == 'yui-dt1-paginator1') {$('paginator2').appendChild($('resultados_div2').childNodes[child]);}
        }
        }catch(ex){}
    }
    obj_maskara_modal.hide();
    YAHOO.util.Dom.removeClass($('filtros'),'oculto');
    YAHOO.util.Dom.removeClass($('t_orden'),'oculto');
    YAHOO.util.Dom.removeClass($('destinos_alt'),'oculto');
};
var verAlternativos = function () {
if (!datos)
{
    urchinTracker('/hoteles/event/hostelsclub');
    obj_maskara_modal.init();
    obj_maskara_modal.show();
    var url="/busquedaporproveedorunico/10/"+hci;
    Atrapalo.util.cargarScript(url,Atrapalo.hoteles.initResultado);
}else{
    Atrapalo.hoteles.initResultado();
}
};
Atrapalo.hoteles.resultado.prototype.verResultados = function () {
	// -- Slider precio
    $('slider6').value = changeToMoneyNoSign(parseInt(arr_precios.min,10));
    $('slider1').value = changeToMoneyNoSign(parseInt(arr_precios.max+1,10));
    datos.filtros['pre']['valores'] = eval("["+parseInt(arr_precios.min,10)+","+parseInt(arr_precios.max+1,10)+"]");
    // Obtenemos los sliders de precios y Opiniones
    sliders = carpeGetElementsByClass(carpeSliderClassName) // Find the horizontal sliders.
    for (i = 0; i < sliders.length; i++) {
        sliders[i].onmousedown = slide;
    }
    displays = carpeGetElementsByClass(carpeSliderDisplayClassName) // Find the displays.
    for (i = 0; i < displays.length; i++) {
        displays[i].onfocus = focusDisplay;
    }
};
var mostrar_buscador_dispo = function()
{
    var oPanel_bus_dispo=null;
    oPanel_bus_dispo = new YAHOO.widget.Panel("busqueda_actual",{ width:"444px", height:"auto", constraintoviewport: true, underlay:"none",modalPartial: false,
                        close:true, draggable:false, modal:false,zIndex:1000,context:['menu','tl','tr']});
    oPanel_bus_dispo.render(document.body);
    oPanel_bus_dispo.show();
};
var obj_tabs = {
    initmini : function (){
        this.tabView = new YAHOO.widget.TabView('resultados');
        this.tabView.getTab(0).on('click',function(){datos.verResultados();},'',true);
        this.tabView.getTab(1).on('click',function(){setTimeout('loadMap()',100);return true;},'',true);
        this.tabView.addListener('beforeActiveTabChange',this.setActiveTab,this,true);
		//para seleccionar la tab que venga por url '#tabx'
		chivato=0;
        var url = location.href.split('#');
    	if (url[1])
    	{
	        var tabHash = url[1];
        	var tabs = this.tabView.get('tabs');
	        for (var i = 0; i < tabs.length; i++)
	        {
            	if (tabs[i].get('href') == '#' + tabHash)
            	{
	                this.tabView.set('activeIndex', i);
	                this.tabView.getTab(i).fireEvent('click',this);
	                chivato=1;
                	break;
            	}
        	}
    	}
    	if (chivato==0)
    	{
    		this.tabView.set('activeIndex', 0);
    		this.tabView.getTab(0).fireEvent('click',this);
    	}
    },
    showTabMap : function(idhotel){
        if (document.createEvent){
            var evt = document.createEvent("MouseEvents");
            evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0,  null);
            var cb = document.getElementById("mapa_tab");
            cb.dispatchEvent(evt);
            showHotelInGoogleMap_v2(idhotel);
        }else{
            $('mapa_tab').fireEvent('onclick');
            showHotelInGoogleMap_v2(idhotel);
        }
    },
    topFocus: function () { window.scroll(0,0); },
    activo:0,
    setActiveTab: function(e) { this.activo=this.tabView.getTabIndex(e.newValue); }
};
var obj_maskara_modal = {
    init : function (el)
    {
        if (!this.overlay2)
        {
            this.overlay2=new YAHOO.widget.Panel("overlay2", {zIndex:9999,fixedcenter:true, monitorresize:false, visible: true, constrainToViewport: true,modal:false,
            modalPartial: false,close:false, draggable:false, width:"200px"});
            this.overlay2.setBody('<div alt="Actualizando..." class="indicator floatl"></div><div class="padtop15">&nbsp;Actualizando...</div><div class="clear"></div>');
            this.overlay2.render(document.body);
        }
    },
    show : function () { if(!this.overlay2){this.init();} this.overlay2.show(); },
    hide : function () { this.overlay2.hide(); }
};
var obj_help_seleccion_atrapalo = {
    init : function ()
    {
        this.help_lr = new YAHOO.widget.Overlay("ovr_help_sa",
        {zIndex:10000, visible: true, width:"350px", underlay: 'none',
        close: true, context: ['help_sa','tl','br'], constraintoviewport:true,
        effect: {effect:YAHOO.widget.ContainerEffect.FADE,duration:0.5},zIndex: 20000});
        this.help_lr.setBody("<img style='position:absolute;top:5px;right:5px;' alt='cerrar' src='/images_new/hoteles/fa_btn_close.gif' align='right' onclick='obj_help_seleccion_atrapalo.hide();'/><p style='padding-top:15px;'>"+txt_help_sel_atrapalo+"</p>");
        this.help_lr.render('fa');
        YAHOO.util.Dom.addClass(this.help_lr.element.id,'filtros_hotel');
        this.ids_threads='';
    },
    show: function ()
    {
        if (!this.help_lr) {this.init();}
        this.help_lr.show();
        this.id_thread=setTimeout('obj_help_seleccion_atrapalo.hide()',10000);
    },
    hide: function (){clearTimeout(this.ids_threads); this.help_lr.hide();}
};
var obj_help_popularidad = {
    init : function ()
    {
        this.help_lr = new YAHOO.widget.Overlay("ovr_help_popularidad",
        {zIndex:10000, visible: true, width:"350px", underlay: 'none',
        close: true, context: ['help_popularidad','tl','br'], constraintoviewport:true,
        effect: {effect:YAHOO.widget.ContainerEffect.FADE,duration:0.5},zIndex: 20000});
        this.help_lr.setBody("<img style='position:absolute;top:5px;right:5px;' alt='cerrar' src='/images_new/hoteles/fa_btn_close.gif' align='right' onclick='obj_help_popularidad.hide();'/><p style='padding-top:15px;'>"+txt_help_popularidad+"</p>");
        this.help_lr.render('fa');
        YAHOO.util.Dom.addClass(this.help_lr.element.id,'filtros_hotel');
        this.ids_threads='';
    },
    show: function ()
    {
        if (!this.help_lr) {this.init();}
        this.help_lr.show();
        this.id_thread=setTimeout('obj_help_popularidad.hide()',10000);
    },
    hide: function ()
    {
        clearTimeout(this.ids_threads);
        this.help_lr.hide();
    }
};
var obj_valoracion_desglosada = {
    init : function (id,nom)
    {
        this.help_lr = new YAHOO.widget.Panel("caja_valoracion_"+id,
        { context: ['context_caja_valoracion_'+id,'tl','tl'],
        visible: true, dragable:false, close:true,
        constraintoviewport:true,zIndex:20000});
        this.help_lr.setHeader('Valoración Desglosada '+nom);
        this.help_lr.render($("descripcion_"+id));
        if(!this.ids_threads) {this.ids_threads=[];}
    },
    show: function (a,b,c)
    {
        if (this.ids_threads && this.ids_threads.length>0) {this.hide();}
        this.init(b,c);
        $("caja_valoracion_"+b).style.display='';
        this.help_lr.show();
        id_thread=setTimeout('obj_valoracion_desglosada.hide()',10000);
        this.ids_threads[this.ids_threads.length]=id_thread;
    },
    hide: function ()
    {
        id=this.ids_threads.shift();
        while (id){
            clearTimeout(id);
            id=this.ids_threads.shift();
        }
       this.help_lr.hide();
    }
};
var limpiaCategoriasMarcadas = function ()
{
	for (i=0;i<categorias.length;i++)
	{
		$('f_cat_'+categorias[i]).checked=false;
	}
    $('f_cat_99').checked=true;
};
var limpiaRegimenesMarcadas = function ()
{
	for (i=0;i<regimenes.length;i++)
	{
		$('f_reg_'+regimenes[i]).checked=false;
	}
    $('f_reg_99').checked=true;
};
var limpiaSegmentosMarcados = function ()
{
    var segmentos=[8,16,32,128,256,512,1024,2048]
	for (i=0;i<segmentos.length;i++)
	{
		$('f_seg_'+segmentos[i]).checked=false;
	}
    $('f_seg_0').checked=true;
};
var limpiaDestinosMarcadas = function ()
{
	for (i=0;i<destinos.length;i++)
	{
		$('f_des_'+destinos[i]).checked=false;
	}
    $('f_des_9999999').checked=true;
};
var limpiaServiciosMarcados = function ()
{
	for (i=1;i<11;i++) if($("f_serv_"+i)) $("f_serv_"+i).checked=false;
    $('f_serv_99').checked=true;
};
var miniMapa = {
    init : function(){
        this.marker=[];
        this.pMiniMapa= new YAHOO.widget.Panel('pnl_miniMapa',{ close: true, draggable: false, underlay: 'none', constraintoviewport:true, visible: false, modal: false, fixedcenter: true, effect: {effect:YAHOO.widget.ContainerEffect.FADE,duration:0.5},zIndex: 20000});
        YAHOO.util.Event.addListener('pnl_miniMapa_mask','click',function (){YAHOO.util.Event.removeListener('pnl_miniMapa_mask','click');this.pMiniMapa.hide();},this,true);
        if(GBrowserIsCompatible())
        {
             this.baseIcon = new GIcon();
             this.recomendedIcon = new GIcon();
             this.hostelsclubIcon = new GIcon();
             this.baseIcon.image ="/images_new/maps/h00.png";
             this.recomendedIcon.image ="/images_new/maps/h00.png";
             this.hostelsclubIcon.image ="/images_new/maps/hostelsclub.png";
             this.baseIcon.iconSize = new GSize(15, 20);
             this.recomendedIcon.iconSize = new GSize(15, 20);
             this.hostelsclubIcon.iconSize = new GSize(15, 20);
             this.baseIcon.iconAnchor = new GPoint(0, 20);
             this.recomendedIcon.iconAnchor = new GPoint(0, 20);
             this.hostelsclubIcon.iconAnchor = new GPoint(0, 20);
        }
    },
    show : function (action,other,obj)
    {
        var i=0;
        obj.pMiniMapa.setHeader('<p style="text-align:center">'+obj.nomHotel+'</p>');
        obj.pMiniMapa.setBody('<div id="gg_map2" style="width: 530px; height: 404px;"></div><div style="width:530px;">* La situación de los hoteles en el mapa y la búsqueda de direcciones son herramientas de ayuda en la elección de hotel, basadas en cálculos aproximados. ATRAPALO.com no se hace responsable de su precisión.</div>');
        obj.pMiniMapa.render(document.body);
        typeControl=false;
        largeMapControl=false;
        smallMapControl=false;
        scaleControl=false;
        zoom=14;
        var igm=new initGoogleMap2();
        map2.setCenter(new GLatLng( obj.latitud,  obj.longitud), zoom);
        map2.enableContinuousZoom();
        map2.addControl(new GSmallMapControl());
        map2.enableDoubleClickZoom();
        var mt = map2.getMapTypes();
        if(obj.nomHotel.indexOf('hallazgo')>=0)
        {
            for (i=0; i<mt.length; i++) {
                mt[i].getMinimumResolution = function() {return 10;};
                mt[i].getMaximumResolution = function() {return 13;};
            }
            map2.addOverlay(obj.drawCircle(obj));
            map2.setZoom(13);
        }else{
            for (i=0; i<mt.length; i++) {
                mt[i].getMinimumResolution = function() {return 1;};
                mt[i].getMaximumResolution = function() {return 21;};
            }
            map2.setZoom(16);
            if (obj.proveedor!=10)
            	obj.marker[obj.idHotel] = new GMarker(new GLatLng( obj.latitud,  obj.longitud),{icon:obj.recomendedIcon,title:obj.nomHotel});
            else
            	obj.marker[obj.idHotel] = new GMarker(new GLatLng( obj.latitud,  obj.longitud),{icon:obj.hostelsclubIcon,title:obj.nomHotel});
            map2.addOverlay(obj.marker[obj.idHotel]);
        }
        obj.posicionX-=YAHOO.util.Dom.get('pnl_miniMapa').parentNode.clientWidth;
        YAHOO.util.Dom.setX(YAHOO.util.Dom.get('pnl_miniMapa').parentNode.id,obj.posicionX);
        YAHOO.util.Dom.setY(YAHOO.util.Dom.get('pnl_miniMapa').parentNode.id,obj.posicionY);
        obj.pMiniMapa.show();
        obj.pMiniMapa.hideEvent.unsubscribe(obj.show);

    },
    load : function (nomHotel, idHotel, contenedor, latitud, longitud, proveedor) {
        if (!this.pMiniMapa) {this.init();}
        if (proveedor) this.proveedor=proveedor;
        this.nomHotel=nomHotel;
        this.idHotel=idHotel;
        this.contenedor=contenedor;
        this.latitud=latitud;
        this.longitud=longitud;
        this.posicionY=YAHOO.util.Dom.getRegion(contenedor).top;
        this.posicionX=YAHOO.util.Dom.getRegion(contenedor).left;
        if (this.pMiniMapa.body===null){this.show(null,null,this);}
        else
        {
            this.pMiniMapa.hideEvent.subscribe(this.show, this);
            if (YAHOO.util.Dom.getStyle( YAHOO.util.Dom.get('pnl_miniMapa').parentNode.id,'visibility')!='hidden')
                {this.pMiniMapa.hide();}
            else{this.show(null,null,this);}
        }
        return false;
    },
    drawCircle: function() {
        var center =  map2.getCenter();
            var latConv = center.distanceFrom(new GLatLng(center.lat()+0.1, center.lng()))/100;
            var lngConv = center.distanceFrom(new GLatLng(center.lat(), center.lng()+0.1))/100;
        var radius  = 1.2;
        var nodes   = 36;
            var points = [];
            var step = parseInt(360/nodes,10);
            for(var i=0; i<=360; i+=step)
            {
                var point = new GLatLng(center.lat() + (radius/latConv * Math.cos(i * Math.PI/180)),center.lng() + (radius/lngConv * Math.sin(i * Math.PI/180)));
                points[points.length]=point;
            }
            var poly = new GPolygon(points,'#DE0000',3,1);
        return poly;
    }
};
var obj_puntosInteres = {
    _gifTrabajando : function (event,obj,param)
    {
        if (param===true){ obj_puntosInteres.indicador.style.display='';}
        else{ obj_puntosInteres.indicador.style.display='none';}
    },
    _notificaError: function()
    {
      errores.push(new error_o('12','999','011', 'Latencia excesiva obtener lugares de referencia de BBDD'));
      this._gifTrabajando(null,null,false);
    },
    _inicio: function ()
    {
        this.indicador=$('indicator2');
        this.DataSource=new YAHOO.widget.DS_XHR(dir_hoteles+"index.php",["ResultSet.Result","name"]);
        this.DataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
        this.DataSource.scriptQueryParam = "nombre_punto_interes";
        this.DataSource.scriptQueryAppend = "pg=do_ajax&pg_action=puntos_interes_json&resultpais="+this.last_countrycode+"&destino_lat="+this.lat_lon[0]+"&destino_lon="+this.lat_lon[1]+"&niveldestino="+this.nivelDestino;
        this.DataSource.connTimeout = 15000;
        this.DataSource.ERROR_DATAXHR='Sin resultado.';
        this.DataSource.maxCacheEntries = 50;
        this.DataSource.queryMatchSubset = true;
        this.DataSource.queryMatchContains = true;
        this.DataSource.dataErrorEvent.subscribe(this._notificaError, this, true);
        this.ctrl_autocomplete = new YAHOO.widget.AutoComplete("fa_ipt_puntointeres","ContainerPDIAutocompletar", this.DataSource);
        this.ctrl_autocomplete.forceselection=true;
        this.ctrl_autocomplete.typeAhead = false;
        this.ctrl_autocomplete.allowBrowserAutocomplete=false;
        this.ctrl_autocomplete.minQueryLength=4;
        this.ctrl_autocomplete.queryDelay=0.5;
        this.ctrl_autocomplete.queryDelaymaxResultsDisplayed=10;
        this.ctrl_autocomplete.itemSelectEvent.subscribe(obj_puntosInteres.placePoi);
        this.ctrl_autocomplete.dataRequestEvent.subscribe(this._gifTrabajando, true,false);
        this.ctrl_autocomplete.dataReturnEvent.subscribe(this._gifTrabajando, false,false);
    },
    init: function (nivelDestino,lat,lon,poi_countrycode)
    {
        this.last_countrycode=poi_countrycode;
        this.lat_lon=[lat,lon];
        this.nivelDestino=nivelDestino;
        if(nivelDestino===3) {max_zoom=9;}
        this._inicio();
    },
    reinit: function () { if (obj_datosGoogleMap.mapaInactivo===false) {this._inicio();}},
    placePoi: function (e,pdi)
    {
         alterIcon=new GIcon();
         alterIcon.image ="/images_new/maps/poi.png";
         alterIcon.iconSize = new GSize(20, 25);
         alterIcon.iconAnchor = new GPoint(0, 25);
         alterIcon.infoWindowAnchor = new GPoint(37, 0);
         max_zoom=10;
         place(pdi[2][1].latitude,pdi[2][1].longitude,alterIcon,pdi[2][0],true);
         obj_puntosInteres._gifTrabajando(null,null,false);
    }
};
var obj_help_lugaresReferencia = {
    init : function ()
    {
        this.help_lr = new YAHOO.widget.Overlay("ovr_help_lr",
         {zIndex:10000, visible: true, width:"350px",
          underlay: 'none', close: true, xy: [590,530],
          constraintoviewport:true,zIndex: 20000});
            this.help_lr.setBody("<img style='position:absolute;top:5px;right:5px;' alt='cerrar' src='/images_new/hoteles/fa_btn_close.gif' align='right' onclick='obj_help_lugaresReferencia.hide();'/><p style='padding-top:15px;'>1. Introduce el nombre del lugar, a menos de 50 km. a la redonda, de la ciudad/provincia buscada.</p><p>2. Espera mientras buscamos en nuestra base de datos y te proporcionamos un listado de lugares que coinciden con lo que hayas escrito.</p><p>3. Elige uno, y a continuación, verás que aparece dicho lugar en el mapa señalado por el símbolo.</p><p>4. Ahora ya puedes reservar el hotel más cercano a ese lugar de referencia.</p>");
                this.help_lr.render('fa2');
                YAHOO.util.Dom.addClass(this.help_lr.element.id,'filtros_hotel');
                this.ids_threads=[];
    },
    show: function (a,b,c)
    {
        if (!this.help_lr) {this.init();}
        this.help_lr.show();
        id_thread=setTimeout('obj_help_lugaresReferencia.hide()',10000);
        this.ids_threads.push(id_thread);
    },
    hide: function ()
    {
        id=this.ids_threads.shift();
        while (id){
            clearTimeout(id);
            id=this.ids_threads.shift();
        }
        this.help_lr.hide();
    }
};
var obj_panel_opiniones = {
    init: function (whereRender)
    {
        if (whereRender) {tmp_whereRender=whereRender;}
        else {tmp_whereRender=document.body;}
        this.mostradorOpiniones = new YAHOO.widget.Panel("Opiniones",
                {zIndex:20000, context: [tmp_whereRender,'tl','tl'],
                visible: true, width:"650px", height:"400px",
                close:true, constraintoviewport: true});
    },
    handleSuccess:function(o){ this.processResult(o); },
    handleFailure:function(o){ alert('Error en la comunicacion con Atrapalo.com. Itentelo de nuevo'); },
    processResult:function(o){
        this.mostradorOpiniones.setBody('<div id="layer_opinion" style="height:350px;overflow:auto;">'+o.responseText+'</div>');
        this.mostradorOpiniones.render(document.body);
        this.mostradorOpiniones.show();
        obj_maskara_modal.hide();
    },
    showOpiniones : function (params,e,nom,page,whereRender)
    {
        if (page){
            if (whereRender) {this.mostradorOpiniones.whereRender=whereRender;}
            obj_maskara_modal.init('Opiniones');
            obj_maskara_modal.show();
            YAHOO.util.Connect.asyncRequest('GET', this.mostradorOpiniones.params+page, callback_obj_ficha_ajax_opiniones);
        }else{
            if (!this.mostradorOpiniones) {this.init(whereRender);}
            else{ this.mostradorOpiniones.destroy(); this.init(whereRender); }
            if (whereRender) {this.mostradorOpiniones.whereRender=whereRender;}
            else {this.mostradorOpiniones.whereRender=document.body;}
            YAHOO.util.Connect.asyncRequest('GET', params+'&squid=yes', callback_obj_ficha_ajax_opiniones);
            this.mostradorOpiniones.setHeader('Opiniones sobre  '+nom);
            this.mostradorOpiniones.params=params;
        }
  },
  hide : function () { this.mostradorOpiniones.hide(); }
};
var callback_obj_ficha_ajax_opiniones= { scope: obj_panel_opiniones, success:obj_panel_opiniones.handleSuccess, failure:obj_panel_opiniones.handleFailure };
var obj_datosGoogleMap = {
    init : function (latt,lonn,pvv,zoomm,hcii,gg_ciudadd,gg_provinciaa,gg_paiss,id_costa,niveldestino, pdic)
    {
        window.lat=parseFloat(latt);
        window.lon=parseFloat(lonn);
        window.pv=pvv;
        window.zoom=zoomm;
        window.hci=hcii;
        window.geocoder = new GClientGeocoder();
        window.normalProj = G_NORMAL_MAP.getProjection();
        window.gg_ciudad=gg_ciudadd;
        window.gg_provincia=gg_provinciaa;
        window.gg_pais=gg_paiss;
        if (id_costa!=='' || niveldestino==3) {window.gg_append_cpp=0;}
        else {window.gg_append_cpp=1;}
        if (pdic>=0) {this.pdic=pdic;}
        else {this.pdic=-1;}
        if (window.lat===0 && window.lon===0) {this.mapaInactivo=true;}
        else {this.mapaInactivo=false;}
    },
    clearMarkers : function () { map.clearOverlays(); marker=[]; },
    existenMarcas : function ()
    {
        if ($(gg_layer)){ this.mapaInactivo=false; return true;}
        else{ this.mapaInactivo=true; return false;}
    },
    loadMap :  function()
    {
        loadMap();
        if (this.pdic>0 && obj_radiosFiltros.existPuntosCorto())
        {
         alterIcon=new GIcon();
         alterIcon.image ="/images_new/maps/poi.png";
         alterIcon.iconSize = new GSize(20, 25);
         alterIcon.iconAnchor = new GPoint(0, 25);
         alterIcon.infoWindowAnchor = new GPoint(37, 0);
         max_zoom=10;
         place(coordsCorto[this.pdic-1][0],coordsCorto[this.pdic-1][1],alterIcon,$('fa_slc_puntointeres_corto').options[this.pdic].text, false);
        }
    }
};

var initSearchResultado = function ()
{
	YAHOO.util.Event.purgeElement('nombre_destino1');
    myAutoComp = new YAHOO.widget.AutoComplete("nombre_destino1","div_auto_complete", autoCompleteDataSource);
    myAutoComp.minQueryLength = 1;
    myAutoComp.maxResultsDisplayed = 5;
    myAutoComp.higlightClassName = "yui-ac-highlight";
    myAutoComp.forceSelection = false;
    myAutoComp.typeAhead = false;
    if(is_ie) {myAutoComp.useIFrame = true;}
    myAutoComp.animVert = false;
    myAutoComp.animHoriz = false;
    myAutoComp.animSpeed = 0;
    myAutoComp.queryDelay = 0;
    myAutoComp.formatResult = formatAutoComplete;
    myAutoComp.itemSelectEvent.fire=updateAutocompletId;
    myAutoComp.dataRequestEvent.fireold=myAutoComp.dataRequestEvent.fire;
    myAutoComp.dataRequestEvent.fire=function ( oSelf , sQuery )
    {
        $('indicator1').style.display='inline';
        myAutoComp.dataRequestEvent.fireold ( oSelf , sQuery );
    };
    myAutoComp.dataReturnEvent.fireold=myAutoComp.dataReturnEvent.fire;
    myAutoComp.dataReturnEvent.fire=function ( oSelf , sQuery , aResults )
    {
        $('indicator1').style.display='none';
        myAutoComp.dataReturnEvent.fireold ( oSelf , sQuery, aResults );
    };
};

var mostrar_destinos = function(app)
{
    oPanel = new YAHOO.widget.Panel("panel",{ width:"650px", height:"auto", constraintoviewport: true, underlay:"none", close:true,
    draggable:false, fixedcenter:true, zIndex:1510});
    oPanel.setHeader('DESTINOS MÁS FRECUENTES');
    oPanel.render(document.body);
    YAHOO.util.Connect.asyncRequest('GET', dir_hoteles+'destinos_hoteles/',{success:function(response){html=response.responseText;oPanel.setBody(html);
    oPanel.render(document.body); oPanel.show(); }});
};
Atrapalo.hoteles.adHotel = function(hci)
{
    if(proveedores.length==0) return;
    if(!$('adHotel')) return;
    var html_doc = $('adHotel');
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    if ($('ids').value!='')
    	js.setAttribute('src',  dir_hoteles+'adhotel/'+hci+'/1?ids='+$('ids').value+'&p_v='+p_v);
    else
        js.setAttribute('src', dir_hoteles+'adhotel/'+hci+'/1');
    html_doc.appendChild(js);
};
var foto_actual=0;
var verFotos = function(num,name,idh,idp)
{
    var html='';
    foto_actual=0;
    oPanel_f = new YAHOO.widget.Panel("panel_fotos",{ width:"550px", height:"auto", constraintoviewport: true, underlay:"none", close:true,draggable:false, fixedcenter:true, zIndex:510});
    oPanel_f.setHeader('FOTOS DEL '+name+' ('+num+')');
    num=parseInt(num,10)-1;
    html='<div style="text-align:center;">';
    html='<div style="min-height:200px;text-align:center;vertical-align:middle;">';
    html+='<img id="img_oanel_f" src="'+dir_hoteles+'photo/si/'+idh+'/'+idp+'/400/0/" onload="oPanel_f.center();"/></div>';
    if(num>0)
    {
        html+='<br/><div class="fondo_gris" style="margin-top:5px;text-align:center;"><a href="#" class="negrita oculto" onclick="nextFoto('+num+',-1,'+idh+','+idp+');return false;" id="img_oanel_f_ant">&lt;</a>&nbsp;|';
        html+='<span id="pagfotos">'+pagFotos(num,idh,idp)+'</span>';
        html+='&nbsp;<a href="#" class="negrita" onclick="nextFoto('+num+',1,'+idh+','+idp+');return false;" id="img_oanel_f_sig">&gt;</a></div>';
    }
    html+='</div>';
    oPanel_f.setBody(html);
    oPanel_f.render(document.body);
}
var pagFotos = function(num,idh,idp)
{
    var html='';
    var i=0;
    var fa=foto_actual+1;
    var max=5;
    if(fa>1)
    {
        for(i=(fa-2);i<fa;i++)
        {
            if(i>0){
                html+='&nbsp;<a href="#" class="negrita" onclick="nextFoto('+num+',-'+(fa-i)+','+idh+','+idp+');return false;">'+i+'</a>&nbsp;|';
                max--;
            }
        }
    }
    html+='&nbsp;<strong>'+(fa)+'</strong>&nbsp;|';
    max--;
    if ((fa+max)>(num+1)) max=1+num-fa;
    for(i=(fa+1);i<=(fa+max);i++)
    {
        html+='&nbsp;<a href="#" class="negrita" onclick="nextFoto('+num+','+(i-fa)+','+idh+','+idp+');return false;">'+i+'</a>&nbsp;|';
    }
    return html;
}
var nextFoto = function(num,siguiente,idh,idp)
{
    $('img_oanel_f').src="/images_new/hoteles/indicator_big.gif";
    foto_actual+=siguiente;
    $('pagfotos').innerHTML=pagFotos(num,idh,idp);
    if(foto_actual<0) foto_actual=0;
    if(foto_actual>=num) foto_actual=num;
    if(foto_actual>0) YAHOO.util.Dom.removeClass($('img_oanel_f_ant'),'oculto');
    if(foto_actual<num) YAHOO.util.Dom.removeClass($('img_oanel_f_sig'),'oculto');
    if(foto_actual==0) YAHOO.util.Dom.addClass($('img_oanel_f_ant'),'oculto');
    if(foto_actual==num) YAHOO.util.Dom.addClass($('img_oanel_f_sig'),'oculto');
    $('img_oanel_f').src=dir_hoteles+"photo/si/"+idh+"/"+idp+"/400/0/"+foto_actual;
}
function CookieFiltrosIniciar(cookie)
{
	if (cookie)
	{
		//Puntos de Interes
		if (cookie.poi.valores)
		{
			var coordenadas = cookie.poi.valores[0]+','+cookie.poi.valores[1];
			if ($('f_puntointeres_corto')!=null)
			{
				ActivaSelects($('f_puntointeres_corto'),coordenadas);
	 			ActivaSelects($('f_puntointeres_corto_dist'),cookie.poi.valores[2]);
			}
		}
		if (cookie.des.valores)
        {
            ActivaSelects($('f_destino'),cookie.des.valores);
        }
		//Forma de pago
		if (cookie.fp.valores)
		{
			if ($('f_fp_1')!=null) $('f_fp_1').checked=false;
			if ($('f_fp_3')!=null) $('f_fp_3').checked=false;
			for(z=0;z<cookie.fp.valores.length;z++)
			{
				if ($('f_fp_'+cookie.fp.valores[z])!=null) $('f_fp_'+cookie.fp.valores[z]).checked=true;
			}
		}
        //Segmentos
		if (cookie.seg.valores)
        {
            $('f_seg_0').checked=false;
    	    for(z=0;z<cookie.seg.valores.length;z++)
		    {
                if($('f_seg_'+cookie.seg.valores[z])) $('f_seg_'+cookie.seg.valores[z]).checked=true;
            }
        }
        //Regimenes
		if (cookie.reg.valores)
        {
            $('f_reg_99').checked=false;
    	    for(z=0;z<cookie.reg.valores.length;z++)
		    {
                if($('f_reg_'+cookie.reg.valores[z])) $('f_reg_'+cookie.reg.valores[z]).checked=true;
            }
        }
		//Categorias
		if (cookie.c.valores)
        {
            for(z=0;z<cookie.c.valores.length;z++)
            {
                $('f_cat_99').checked=false;
                if(cookie.c.valores[z] == '') $('f_cat_99').checked=true;
                else if(cookie.c.valores[z] == 'P1') $('f_cat_O1').checked=true;
                else if(cookie.c.valores[z] == 'VT') $('f_cat_HR').checked=true;
                else if ($('f_cat_'+cookie.c.valores[z])) $('f_cat_'+cookie.c.valores[z]).checked=true;
            }
        }
                //Servicios
		if (cookie.s.valores)
		{
			for(z=0;z<cookie.s.valores.length;z++)
            {
                switch (cookie.s.valores[z][0])
                {
                    case '1':   $('f_serv_1').checked=true; break;
                    case '7':   $('f_serv_2').checked=true; break;
                    case '12':  $('f_serv_3').checked=true; break;
                    case '27':  $('f_serv_4').checked=true; break;
                    case '91':  $('f_serv_5').checked=true; break;
                    case '30':  $('f_serv_6').checked=true; break;
                    case '67':  $('f_serv_7').checked=true; break;
                    case '84':  $('f_serv_8').checked=true; break;
                    case '114': $('f_serv_9').checked=true; break;
                    case '231': $('f_serv_10').checked=true; break;
                    default: break;
                }
            }
        }
		//Segmentos
		if (cookie.seg.valores)
		{
			for(z=0;z<cookie.seg.valores.length;z++)
			{
			  if ($('f_seg_'+cookie.seg.valores[z])!=null) $('f_seg_'+cookie.seg.valores[z]).checked=true;
			}
		}
		//Nombre
		if (cookie.n.valores[0])
		{
			YAHOO.util.Dom.addClass($('filtro_letra_'+cookie.n.valores[0]),'negrita');
		}
		//Sliders Usuarios
		if (cookie.mo.valores[0])
		{
			carpeLeft('slider2',30*cookie.mo.valores[0]);
			carpeLeft('slider3',30*cookie.mo.valores[1]);
			$('display4').value=cookie.mo.valores[0]*2;
			$('display5').value=cookie.mo.valores[1]*2;
		}
		//Sliders Precios Etiquetas Cantidades
		if (cookie.pre.valores[0])
		{
    		$('display3').value = cookie.pre.valores[0];
            $('display2').value = cookie.pre.valores[1];
        }
    }
}
Atrapalo.hoteles.resultado.prototype.cargarFiltros = function ()
{
    if(!arr_filtros) return;
    if(arr_filtros.fp)
    {
    for(y=0;y<arr_filtros.fp.length;y++)
    {
        if ($('f_fp_'+arr_filtros.fp[y])!=null) {
        YAHOO.util.Dom.removeClass($('f_fp_'+arr_filtros.fp[y]),'oculto');
        YAHOO.util.Dom.removeClass($('lab_f_fp_'+arr_filtros.fp[y]),'oculto');
        }
    }
    }
    if(arr_filtros.reg)
    {
    for(y=0;y<arr_filtros.reg.length;y++)
    {
        if ($('f_reg_'+arr_filtros.reg[y])!=null) {
        YAHOO.util.Dom.removeClass($('f_reg_'+arr_filtros.reg[y]),'oculto');
        YAHOO.util.Dom.removeClass($('lab_f_reg_'+arr_filtros.reg[y]),'oculto');
        }
    }
    }
    if(arr_filtros.serv)
    {
    for(y=0;y<arr_filtros.serv.length;y++)
    {
        for(z=1;z<11;z++)
        {
            if ($('f_serv_'+z)!=null && $('f_serv_'+z).value.indexOf(arr_filtros.serv[y])>=0 ) {
            YAHOO.util.Dom.removeClass($('f_serv_'+z),'oculto');
            YAHOO.util.Dom.removeClass($('lab_f_serv_'+z),'oculto');
            break;
            }
        }
    }
    }
    if(arr_filtros.cat)
    {
    for(y=0;y<arr_filtros.cat.length;y++)
    {
        for (z=0;z<categorias.length;z++)
        {
            if ($('f_cat_'+categorias[z])!=null && $('f_cat_'+categorias[z]).value.indexOf(arr_filtros.cat[y])>=0 ) {
            YAHOO.util.Dom.removeClass($('f_cat_'+categorias[z]),'oculto');
            YAHOO.util.Dom.removeClass($('lab_f_cat_'+categorias[z]),'oculto');
            break;
            }
        }
    }
    }
    if(arr_filtros.seg)
    {
        for(y=0;y<arr_filtros.seg.length;y++)
        {
            if ($('f_seg_'+arr_filtros.seg[y])!=null) {
            YAHOO.util.Dom.removeClass($('f_seg_'+arr_filtros.seg[y]),'oculto');
            YAHOO.util.Dom.removeClass($('lab_f_seg_'+arr_filtros.seg[y]),'oculto');
            }
        }
    }
}
YAHOO.util.Event.onAvailable('resultados_div2', function(){if (solo_hostales && solo_hostales=='on') verAlternativos(); else preCarga();});
YAHOO.util.Event.onDOMReady(function(){initSearchResultado();});
YAHOO.util.Event.onDOMReady(function() { obj_tabs.initmini(); obj_datosGoogleMap.init(lat,lon,'',zoom,hci,nom_dest,nom_padre_dest,nom_pais,$('id_costa').value,nivel,0); });//-----------
/* Variables */
var baseIcon,recomendedIcon,hostelsclubIcon;
var marker=[];
var html=[];
var map,map2;
var gg_layer="gg_map";
var gg_layer2="gg_map2";
var lat,lon,zoom;
var typeControl=true;
var largeMapControl=true;
var smallMapControl=false;
var scaleControl=true;
var is_map_loaded=false;
var centerMarker = null;
var radiusMarker = null;
var circleLine = null;
var bounds;
/* Metodos */
YAHOO.util.Event.onAvailable('gg_trigger', load_gg_map);
function initGoogleMap()
{
    if(GBrowserIsCompatible())
    {
        G_NORMAL_MAP.getErrorMessage = function() {
          var z=map.getZoom();
          if (z > 8) {
            map.setZoom(z-1);
            return "";
          }
          return "No data available at this zoom level.";
        }
        G_SATELLITE_MAP.getErrorMessage = G_NORMAL_MAP.getErrorMessage;
        G_HYBRID_MAP.getErrorMessage = G_NORMAL_MAP.getErrorMessage;
        try{
            if(cod_idioma && cod_idioma=='es')
            {
                G_HYBRID_MAP.PD="Híbrido";
                G_HYBRID_MAP.ME="Híbrido";
                G_SATELLITE_MAP.PD="Satélite";
                G_SATELLITE_MAP.ME="Satélite";
            }
        }catch(e){}
        bounds = new GLatLngBounds();;
        baseIcon = new GIcon();
        recomendedIcon = new GIcon();
        hostelsclubIcon = new GIcon();
        baseIcon.image ="/images_new/maps/hotel_grande.png";
        baseIcon.shadow="/images_new/maps/hotel_grande_sombra.png";
        recomendedIcon.image ="/images_new/hoteles/mapa_ico_hot_rojo.gif";
        hostelsclubIcon.image ="/images_new/maps/hostelsclub.png";
        hostelsclubIcon.shadow="/images_new/maps/hotel_grande_sombra.png";
		baseIcon.iconSize = new GSize(23,29);
		baseIcon.iconAnchor = new GPoint(0,29);        
		baseIcon.infoWindowAnchor = new GPoint(17, 0);
		hostelsclubIcon.iconSize = new GSize(23, 29);
		hostelsclubIcon.iconAnchor = new GPoint(0, 29);
		hostelsclubIcon.infoWindowAnchor = new GPoint(17, 0);
        recomendedIcon.iconSize = new GSize(15, 14);
        recomendedIcon.iconAnchor = new GPoint(0, 14);
        recomendedIcon.infoWindowAnchor = new GPoint(17, 0);
        hostelsclubIcon.infoWindowAnchor = new GPoint(17, 0);
        map = new GMap2($(gg_layer),{draggableCursor: 'move', draggingCursor: 'pointer'});
    }
};
function initGoogleMap2()
{
    if(GBrowserIsCompatible())
    {
        try{
            if(cod_idioma && cod_idioma=='es')
            {
                G_HYBRID_MAP.PD="Híbrido";
                G_HYBRID_MAP.ME="Híbrido";
                G_SATELLITE_MAP.PD="Satélite";
                G_SATELLITE_MAP.ME="Satélite";
            }
        }catch(e){}
        if(!bounds) bounds = new GLatLngBounds();;
        map2 = new GMap2($(gg_layer2),{draggableCursor: 'move', draggingCursor: 'pointer'});
    }
};
function showGoogleMap()
{
    if(GBrowserIsCompatible() && map)
    {
        if(largeMapControl && !smallMapControl) map.addControl(new GLargeMapControl());
        if(smallMapControl && !largeMapControl) map.addControl(new GSmallMapControl());
        if(typeControl) map.addControl(new GMapTypeControl());
        if(scaleControl) map.addControl(new GScaleControl());
        map.setCenter (new GLatLng(lat, lon), zoom);
        map.enableDoubleClickZoom();
        map.enableContinuousZoom();
        for (x in marker)
        {
            if(x=='inArray') continue;
            try{
                if(typeof(marker[x])!='function') map.addOverlay(marker[x]);
            }catch(e){}
        }
    }
};
function showGoogleMap2()
{
    if(GBrowserIsCompatible() && map2)
    {
        map2.addControl(new GLargeMapControl());
        map2.addControl(new GMapTypeControl());
        map2.addControl(new GScaleControl());
        map2.setCenter (new GLatLng(lat, lon), zoom+2);
        map2.enableDoubleClickZoom();
        map2.enableContinuousZoom();
        for (x in marker)
        {
            try{
                if(typeof(marker[x])!='function') map2.addOverlay(marker[x]);
            }catch(e){}
        }
    }
};
//version 1
function showHotelInGoogleMap(id_hotel)
{
    if(GBrowserIsCompatible() && marker[id_hotel])
    {
        if($('gg_map').style.display=='none')
        {
            $('gg_map').style.display='block';
            $('gg_show').style.display='none'
            $('gg_hide').style.display='block'
        }
        marker[id_hotel].openInfoWindowHtml(html[id_hotel]);
        if($('fecha_entrada')) $('fecha_entrada').focus();
        $(gg_layer).focus();
    }
    return false;
};
function showHotelInGoogleMiniMap(id_hotel)
{
    if(GBrowserIsCompatible() && marker[id_hotel])
    {
        if($('gg_map').style.display=='none')
        {
            $('gg_map').style.display='block';
            $('gg_show').style.display='none'
            $('gg_hide').style.display='block'
        }
        marker[id_hotel].showMapBlowup();
        if($('fecha_entrada')) $('fecha_entrada').focus();
        $(gg_layer).focus();
    }
    return false;
};
function showInMap(lat,lon,icon)
{
    map.clearOverlays();
    marker[lat+'_'+lon]=new GMarker(new GLatLng(lat, lon),icon);
    map.addOverlay(marker[lat+'_'+lon]);
    marker[lat+'_'+lon].showMapBlowup();
    GEvent.addListener(marker[lat+'_'+lon], "click", function(){marker[lat+'_'+lon].showMapBlowup();});
    if($('fecha_entrada')) $('fecha_entrada').focus();
    $(gg_layer).focus();
};
// Creates a marker at the given point with the given number label
function createMarker(point,icono,html,titulo,onmover,noclick)
{
    var marker = new GMarker(point,{icon:icono,title:titulo});
    if(!noclick) GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
    if(onmover!='')
    {
        GEvent.addListener(marker,"mouseover", function() {
           if(map.getZoom()>=14) marker.openInfoWindowHtml(html);
        });
        GEvent.addListener(marker,"mouseout", function() {
        });
    }
    return marker;
};
function loadMap2()
{
    if(!is_map_loaded)
    {
        initGoogleMap();showGoogleMap(); printHoteles(); is_map_loaded=true;
    }
};
function load_gg_map()
{
//    $('gg_loading').style.display='none';
//    $('gg_show').style.display='block';
};
function show_gg_map4(ver_mapa, lat, lon)
{
    if (ver_mapa) show_gg_map2(false);
    showInMap(lat, lon, recomendedIcon);
};
function show_gg_map3() { show_gg_map2(false); }
function show_gg_map2(hide)
{
    if(hide)
    {
        $('gg_map').style.display='none';
        $('gg_hide').style.display='none';
        $('gg_show').style.display='block';
        if($('gg_form')) $('gg_form').style.display='none';
    }
    else
    {
        $('gg_map').style.display='block';
        $('gg_hide').style.display='block';
        $('gg_show').style.display='none';
        if($('gg_form')) $('gg_form').style.display='block';
        loadMap2();
    }
}

function _calcRange(lat, dist)
{
    TWOPI=2*Math.PI;
    RAD=6378137.0; //meters
    lat_range= 360 * dist / ( TWOPI * RAD);
    lon_range= 360 * dist / ( TWOPI * RAD * Math.cos(lat*TWOPI/360));
    return [lat_range, lon_range];
}
function drawCircle()
{
	var zoom = map.getZoom();
	var centerPt = normalProj.fromLatLngToPixel(centerMarker.getPoint(), zoom);
	var radiusPt = normalProj.fromLatLngToPixel(radiusMarker.getPoint(), zoom);
	var circlePoints = Array();
	with (Math) {
		var radius = floor(sqrt(pow((centerPt.x-radiusPt.x),2) + pow((centerPt.y-radiusPt.y),2)));
		for (var a = 0 ; a < 361 ; a+=10 ) {
			var aRad = a*(Math.PI/180);
			y = centerPt.y + radius * sin(aRad)
			x = centerPt.x + radius * cos(aRad)
			var p = new GPoint(x,y);
			circlePoints.push(normalProj.fromPixelToLatLng(p, zoom));
		}
		//map.removeOverlay(circleLine);
		//map.addOverlay(circleLine);
		map.addOverlay(new GPolyline(circlePoints,'#DE0000',3,1));
	}
}
//version 2
function showHotelInGoogleMap_v2(id_hotel)
{
  if(GBrowserIsCompatible())
  {
    if(!is_map_loaded || !marker[id_hotel])
    {
        setTimeout("showHotelInGoogleMap_v2('"+id_hotel+"');",500);
        return;
    }
    map.setZoom(16);
    marker[id_hotel].openInfoWindowHtml(html[id_hotel]);
    if($('fecha_entrada')) $('fecha_entrada').focus();
   }
   return false;
}

function showAddress(address)
{
    if(gg_append_cpp) address_1=address+", "+gg_ciudad+", "+gg_provincia+", "+gg_pais;
    else address_1=address;
    address_2=address+", "+gg_ciudad+", "+gg_pais;
    if (geocoder)
    {
        geocoder.getLocations(address_1,
        function(result)
        {
            if (result.Status.code != G_GEO_SUCCESS)
            {
                errores.push(new Error('12','000','000',address + " Direccion desconicida"));
                errores.show();
            }else{
              if (result.Placemark.length > 1)
              {
                $("quiso_decir").innerHTML = "Quiso decir:";
                for (var i=0; i<result.Placemark.length; i++) {
                  var p = result.Placemark[i].Point.coordinates;
                  $("quiso_decir").innerHTML += "<li><a href='#' onclick='place(" +p[1]+","+p[0]+")'>"+ result.Placemark[i].address+"</a></li>";
                }
              }else{
                var p = result.Placemark[0].Point.coordinates;
                place(p[1],p[0],null,address, false);

              }
            }
          }
        );
    }
}
function place(lat,lng,icon,title, zoomeasiosi)
{
    var point = new GLatLng(lat,lng);
    $("quiso_decir").innerHTML = "";
    x_zoom=14;
    map.setCenter(point,x_zoom);
    map.addOverlay(new createMarker(point, icon, null, title, false,true));
}