ConstruccionesCNJ_Web/Source/gallery2/lib/javascript/AutoComplete.js
2007-10-31 12:30:19 +00:00

72 lines
3.0 KiB
JavaScript

/*
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2007 Bharat Mediratta
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
function autoCompleteAttach(element, url) {
// YUI's autocomplete data source expects to receive the url in pieces
// so split it up accordingly.
var path_and_params = url.split('?');
var path = path_and_params[0];
var params = path_and_params[1].split('&');
var ds = new YAHOO.widget.DS_XHR(path, ["\n", "\t"]);
ds.queryMatchContains = true;
ds.responseType = ds.TYPE_FLAT;
// Extract that param that has __VALUE__ in it and use that as
// the data source scriptQueryParam
new_params = [];
for (i = 0; i < params.length; i++) {
if (params[i].indexOf('__VALUE__') != -1) {
tmp = params[i].split('=');
ds.scriptQueryParam = tmp[0];
} else {
new_params.push(params[i]);
}
}
ds.scriptQueryAppend = new_params.join('&');
var target = YAHOO.util.Dom.get(element);
var target_region = YAHOO.util.Dom.getRegion(target);
var target_width = target_region.right - target_region.left;
var shadow = document.createElement('div');
shadow.id = element + '_autoCompleteShadow';
target.parentNode.appendChild(shadow, target);
YAHOO.util.Dom.addClass(shadow, 'autoCompleteShadow');
var container = document.createElement('div');
container.id = element + '_autoCompleteContainer';
shadow.appendChild(container);
YAHOO.util.Dom.addClass(container, 'autoCompleteContainer');
// These are here for backwards compatibility to the CSS that we used in 2.1. Unfortunately,
// it breaks drop shadows in the new version. Remove these when GalleryTheme API gets to 3.x
YAHOO.util.Dom.setStyle(shadow, 'position', 'absolute');
YAHOO.util.Dom.setStyle(shadow, 'background', '#FFF');
YAHOO.util.Dom.setStyle(container, 'position', 'relative');
// Adjust for relative positioning of the container inside the shadow
var pos = [target_region.left, target_region.bottom];
pos[0] += Number(YAHOO.util.Dom.getStyle(container, "right").replace(/[^0-9]/g, ""));
pos[1] += Number(YAHOO.util.Dom.getStyle(container, "bottom").replace(/[^0-9]/g, ""));
YAHOO.util.Dom.setXY(shadow, pos);
YAHOO.util.Dom.setStyle(shadow, "width", target_width + "px");
oAutoComp = new YAHOO.widget.AutoComplete(element, element + '_autoCompleteContainer', ds);
}