TFS_ANTIGUO/SIGPC/ProyectoSIGPC/Scripts/dhtml.js

646 lines
15 KiB
JavaScript
Raw Normal View History

function ReadFileSync(sUri) {
var async = false;
try {
var xmlHttp = XmlHttp.create();
xmlHttp.open("GET", sUri, async);
} catch (ex) {
alert('Descripci<63>n: ' + ex.description
//+ ' L<>nea ' + ex.number
//+ ' Mensaje: ' + e.message
);
};
xmlHttp.send(null);
return xmlHttp.responseText;
}
function SendFormAsXMLHTTP(form, returnString) {
var async = false;
try {
var xmlHttp = XmlHttp.create();
sUri = form.action;
//seg<65>n la documentaci<63>n el url debe ser absoluto
//FireFox completa el action de los forms en caso de ser ruta relativa, IE no,
//por lo tanto es necesario completar
if (sUri.toUpperCase().indexOf('HTTP://') == -1) {
sUri = location.protocol + '//' + location.host + sUri;
alert(sUri);
}
xmlHttp.open(form.method, sUri, async);
} catch (ex) {
alert('Descripci<63>n: ' + ex.description
//+ ' L<>nea ' + ex.number
//+ ' Mensaje: ' + e.message
);
};
xmlHttp.send(buildQueryString(form));
//return xmlHttp.responseText;
if (returnString)
return returnString;
else
form.innerHTML = xmlHttp.responseText;
}
var listaLinks = [];
function copyArray(oldArray) {
var newArray = [];
for (var j=0; j<oldArray.length; j++)
newArray[ newArray.length ] = oldArray[j];
return newArray;
}
function copyArray(oldArray, skipDuplicates) {
if (isUndefined(skipDuplicates))
skipDuplicates = false;
var newArray = [];
for (var j=0; j<oldArray.length; j++)
if (skipDuplicates) {
//ver si ya estaba
if (newArray.indexOf(oldArray[j]) == -1 )
newArray[ newArray.length ] = oldArray[j];
}
else
newArray[ newArray.length ] = oldArray[j];
return newArray;
}
var _hermesShowAlert = true;
function alertAndSkip(s) {
if (_hermesShowAlert)
_hermesShowAlert = confirm(s,s);
}
function ReplaceLinksWithContent() {
var links = copyArray( document.getElementsByTagName("a") ); //obtener un array que no se modifique
var links2 = copyArray( document.getElementsByName("HERMES_INCLUDES") );
links = links.concat( links2 );
links = copyArray(links , true); //para quitar los repetidos
var E = null;
var ext = null;
var urlToLoad;
var href;
for (var i = 0; i < links.length; i++) {
//for (var i = links.length-1; i > -1; i--) {
if (links[i].alt) //si era imagen
href = links[i].alt;
else {
href = links[i].href;
}
if (href.indexOf("|") >= 0 || href.indexOf(escape("|")) >= 0) {
E = links[i];
while (E.tagName!="TD") {
//alertAndSkip( 'E.tagName:' + E.tagName + '\n E.innerHTML:' + E.innerHTML );
E = E.parentNode;
}
urlToLoad = href.substring(href.indexOf("|")+1,href.length);
if (urlToLoad.indexOf(escape("|")) > 0)
urlToLoad = href.substring(href.indexOf(escape("|"))+3,href.length);
ext = GetValueFromQueryString(urlToLoad, 'ext');
if (ext != null) {
if (listaLinks[ ext ] == null)
listaLinks[ ext ] = [];
listaLinks[ ext ][ listaLinks[ ext ].length ] = urlToLoad;
}
E.innerHTML = ReadFileSync(urlToLoad);
//alert( urlToLoad );
//alert(E.innerHTML);
}
}
ProcessPlayers();
}
function ProcessSWGPlayer() {
var swfs = copyArray(document.getElementsByName("unSWF"));
var cualUrl;
var w;
var h;
for (var j=0; j<swfs.length; j++) {
cualUrl = GetValueFromQueryString(listaLinks['swf'][j], 'url');
w = GetValueFromQueryString(listaLinks['swf'][j], 'w');
h = GetValueFromQueryString(listaLinks['swf'][j], 'h');
swfs[j].id = swfs[j].id + j;
var cualSWF = new SWFObject(cualUrl, swfs[j].id, w, h, "8", "#ffffff");
cualSWF.addParam("wmode", "opaque");
cualSWF.write(swfs[j].id);
//alert('swfs.length al final=' + swfs.length);
//alert(swfsOriginal.length);
}
}
function ProcessYouTubePlayer() {
var youtubes = copyArray(document.getElementsByName("unYouTube"));
var cualUrl;
var w;
var h;
var tmp;
for (var j=0; j<youtubes.length; j++) {
cualUrl = GetValueFromQueryString(listaLinks['youtube'][j], 'url');
cualUrl = 'http://www.youtube.com/watch/v/' + cualUrl;
youtubes[j].id = youtubes[j].id + j;
var cualswf = new SWFObject(cualUrl, youtubes[j].id, '425', '355', "7", "#ffffff");
cualswf.addParam("movie",cualUrl);
cualswf.addParam("wmode","transparent");
//alert(youtubes[j].id);
cualswf.write(youtubes[j].id);
}
}
function ProcessIMGPlayer() {
var imgs = copyArray(document.getElementsByName("unIMG"));
var cualUrl;
for (var j=0; j<imgs.length; j++) {
cualUrl = GetValueFromQueryString(listaLinks['img'][j], 'url');
imgs[j].id = imgs[j].id + j;
imgs[j].src = cualUrl;
}
}
function ProcessVIDEOPlayer() {
var elems = copyArray(document.getElementsByName("unVIDEO"));
var elemsDIV = copyArray(document.getElementsByName("unVIDEODIV"));
var cualUrl;
var w;
var h;
for (var j=0; j<elems.length; j++) {
cualUrl = GetValueFromQueryString(listaLinks['video'][j], 'url');
w = GetValueFromQueryString(listaLinks['video'][j], 'w');
h = GetValueFromQueryString(listaLinks['video'][j], 'h');
elems[j].id = elems[j].id + j;
elemsDIV[j].id = elemsDIV[j].id + j;
elems[j].src = cualUrl;
if (h==0){
elems[j].height = 240;
//alert('h usando valores default');
}else{
elems[j].height = h;
}
if(w==0){
elems[j].width = 320;
//alert('w usando valores default');
}else{
elems[j].width = w;
}
elemsDIV[j].innerHTML = elemsDIV[j].innerHTML; //truco para firefox
}
}
function ProcessFLVPlayer() {
var flvs = copyArray(document.getElementsByName("unFLV"));
var cualUrl;
var w;
var h;
for (var j=0; j<flvs.length; j++) {
cualUrl = GetValueFromQueryString(listaLinks['flv'][j], 'url');
w = 320;
h = 240;
flvs[j].id = flvs[j].id + j;
var cualFLV = new SWFObject("/js_srv/flvplayer.swf", flvs[j].id, w, h, "7", "#ffffff");
cualFLV.addParam("allowfullscreen","true");
// cualFLV.addParam("wmode", "opaque");
cualFLV.addVariable("file",cualUrl);
cualFLV.write(flvs[j].id);
//alert('swfs.length al final=' + flvs.length);
//alert(swfsOriginal.length);
}
}
//buscar en el DOM actualizado luego de ReplaceLinksWithContent() elementos que deban desplegarse en un player
function ProcessPlayers() {
ProcessSWGPlayer();
ProcessIMGPlayer();
ProcessVIDEOPlayer();
ProcessYouTubePlayer();
ProcessFLVPlayer();
}
function GetValueFromQueryString(queryString, sParam) {
var sKey = sParam + "=";
//var myregexp = new RegExp(regexstring, "gims").
//var oParams = queryString.split("?")[1].split("&");
var oParams = queryString.split("?");
oParams = oParams[oParams.length-1].split("&");
for(var i = 0; i < oParams.length; i++)
if(oParams[i].indexOf(sKey) == 0)
return oParams[i].substring(sKey.length);
return null;
};
function TravelDOM(elem, actionFunction) {
if (elem.childNodes) {
for (var i=0; i < elem.childNodes.length; i++) {
TravelDOM(elem.childNodes[i], actionFunction);
}
}
actionFunction( elem )
}
function TravelCollection(collection, actionFunction) {
if (collection) {
//el recorrido se hace inverso pues si el "actionFunction" elimina elementos la colecci<63>n tambi<62>n se acorta
for (var i=collection.length-1; i >= 0; i--) {
actionFunction( collection[i] )
}
}
}
function FindElementWithAttributeValue(elems, attName, attValue) {
for (var i=0; i<elems.length; i++) {
attribs = elems[i].attributes;
for (var j=0; j < attribs.length; j++) {
//alert('name:' + attribs[j].nodeName + ', value=' + attribs[j].nodeValue);
if (attribs[j].nodeName == attName && attribs[j].nodeValue == attValue)
return elems[i];
}
}
return null;
}
function FindElementsWithAttributeValue(elems, attName, attValue, parcial) {
var returnElems = [];
if (isUndefined(parcial))
parcial = false;
for (var i=0; i<elems.length; i++) {
attribs = elems[i].attributes;
//alert('name:' + attribs[i].nodeName + ', value=' + attribs[i].nodeValue);
for (var j=0; j < attribs.length; j++)
if (attribs[j].nodeName == attName) {
if (!parcial && attribs[j].nodeValue == attValue)
returnElems[returnElems.length] = elems[i];
else
if (parcial && attribs[j].nodeValue.indexOf(attValue) != -1) //==0
returnElems[returnElems.length] = elems[i];
}
}
return returnElems;
}
function RemoveAttributes(elems, attName)
{
for (var i = 0; i < elems.length; i++) {
elems[i].removeAttribute(attName);
}
}
function buildQueryString(theForm) {
var qs = ''
for (e=0;e<theForm.elements.length;e++) {
if (theForm.elements[e].name!='') {
qs+=(qs=='')?'?':'&'
qs+=theForm.elements[e].name+'='+escape(theForm.elements[e].value)
}
}
return qs
}
/*
function CambiarImage(cual) {
var img = document.getElementById("destino");
if (img != null){
img.src = cual;
}
}
function AlterarHRefs() {
var imgLinks = document.getElementsByTagName('A');
var actual;
for (var i=0; i<imgLinks.length; i++) {
actual = imgLinks[i].href.toUpperCase();
if (actual.lastIndexOf('.JPG') > 0 || actual.lastIndexOf('.GIF') > 0 || actual.lastIndexOf('.PNG') > 0)
imgLinks[i].href = "javascript:CambiarImage('" + actual + "')";
}
}*/
function AutoFitIframe(iFrameObj) {
try {
//alert('antes de resize');
iFrameObj.height = iFrameObj.contentWindow.document.body.scrollHeight + 40;
//alert('despues de resize');
}
catch(e)
{
//alert(e);
iFrameObj.height = 800;
}
}
function FixMenuStyle() {
var tablasConMenu = FindElementsWithAttributeValue(document.getElementsByTagName("table"), 'class', 'topMenu', true); //apy0m0TB
var tds;
var tablas;
for (var t=0; t < tablasConMenu.length; t++) {
tds = tablasConMenu[t].getElementsByTagName("td");
tablas = tablasConMenu[t].getElementsByTagName("table");
RemoveAttributes(tds, "style");
RemoveAttributes(tds, "cellpadding");
RemoveAttributes(tds, "cellspacing");
RemoveAttributes(tablas, "cellpadding");
RemoveAttributes(tablas, "cellspacing");
}
}
//nuevas funciones incluidas en el objecto HASObject
if(typeof HASObject=="undefined"){var HASObject=new Object();}
HASObject.GetElementValue = function(obj) {
var resultado = null;
//alert( 'GetElementValue obj.type=' + obj.type );
//alert( 'GetElementValue obj.length=' + obj.length );
if (obj == null)
alert('GetElementValue, obj == null');
if (isUndefined(obj))
alert('GetElementValue, obj == undefined');
if (obj.length != null)
for ( var i = 0; i < obj.length; i++) {
resultado = HASObject.GetElementValue( obj[i] );
if (resultado != null)
return resultado
}
if ( obj.type == 'hidden' || obj.type == 'text' || obj.type == 'password' || obj.type == 'textarea' || obj.type == 'button' || obj.type == 'submit' || obj.type == 'reset' || obj.type == 'file') {
return obj.value;
} else if ( obj.type == 'checkbox' || obj.type == 'radio' ) {
//alert( 'GetElementValue obj.value=' + obj.value );
if (obj.checked)
return obj.value;
} else if ( obj.type == 'select-one' || obj.type == 'select-multiple') {
//alert(obj.type);
for ( var i = 0; i < obj.options.length; i++) {
if (obj.options[i].selected) {
return obj.options[i].value
}
}
}
return null;
}
HASObject.RevisarCamposRequeridos = function () {
if(typeof __HermesRequeridos=="undefined")
return;
var campos = __HermesRequeridos;
var faltantes = "";
var elem, elems;
var focalizado = false;
var valor = null;
for (var i=0; i<campos.length; i++) {
elems = document.getElementsByName(campos[i])
if (elems.length > 0) //posiblemente un radio
valor = HASObject.GetElementValue(elems);
else
valor = HASObject.GetElementValue(elems[0]);
if (valor == null || valor.length == 0 ) {
faltantes += '\n' +campos[i];
if (!focalizado) {
elems[0].focus();
focalizado = true;
}
}
}
if (faltantes == "")
return true
else {
alert('Los siguientes datos son requeridos:\n' + faltantes);
return false;
}
}
HASObject.Enmarcar = function() {
var divs = FindElementsWithAttributeValue(document.getElementsByTagName('div'), 'class', 'hermes_enmarcar', false); // document.getElementsByTagName('div');
var actual = 0;
//alert( divs.length );
for (var i=0; i<divs.length; i++) {
// if (divs[i].id.toLowerCase().indexOf("hermes_enmarcar") > -1) {
var E = divs[i];
var contenido = E.innerHTML; //salvar el contenido anterior
E.innerHTML = ReadFileSync('/redondeo.html'); //poner el html de redondeo
var contenidoRedondeado = document.getElementById("contenidoRedondeado");
contenidoRedondeado.innerHTML = contenido; //ubicar dentro del html de redondeo el elemento donde se pone el contenido
contenidoRedondeado.id = contenidoRedondeado.id + i
// }
}
}
HASObject.ConvertirElementoEnToolTip = function(elem) {
elem = document.getElementById(elem);
var texto = elem.innerHTML;
if (texto.length > 63) {
var descripcion = texto.substring(0,63) + " ...<br>";
// celda.innerHTML = descripcion + '<br><a class="info" href="#">[+ info]<span>' + texto + '</span></a>'
elem.innerHTML = descripcion + '<div align="right"><span class="txt_masinfo" >[<a class="info" href="#" >+ info<span>' + texto + '</span></a>]</span></div>';
}
}
HASObject.fileExist = function (fileurl){
var xmlHttp = XmlHttp.create();
xmlHttp.open('GET', fileurl, false);
xmlHttp.send(null);
return(xmlHttp.status == 200)
}
var hermesFormBodyField = null;
function SaveFormBodyForHAF(action) {
if (action == null || action == '') {
action = 'RecibirFormulario.aspx';
}
var theForm = FindElementsWithAttributeValue(document.forms, 'action', action, true);
if (theForm) {
theForm = theForm[0]; //solo un formulario x page
SaveFormBody(theForm);
}
else {
alert("No se encontro el form");
}
}
function SaveFormBody(theForm) {
var hermesFormBodyField = theForm.elements['HERMESFORMBODY'];
if (hermesFormBodyField == null || hermesFormBodyField == undefined) {
hermesFormBodyField = document.createElement('input');
hermesFormBodyField.name = 'HERMESFORMBODY';
hermesFormBodyField.type = 'hidden';
theForm.appendChild(hermesFormBodyField);
}
var hapiFormBegin = "<!--HAPI_FORM_BEGIN-->";
var innerHtml = theForm.innerHTML;
var pComment = innerHtml.indexOf(hapiFormBegin);
if (pComment > 0) {
pComment += hapiFormBegin.length;
innerHtml = innerHtml.substr(pComment, innerHtml.length - pComment);
}
var hapiFormEnd = "<!--HAPI_FORM_END-->";
var pComment = innerHtml.indexOf(hapiFormEnd);
if (pComment > 0) {
innerHtml = innerHtml.substr(0, pComment);
}
hermesFormBodyField.value = encodeHTML(innerHtml);
}
function encodeHTML(str) {
var aStr = str.split(''),
i = aStr.length,
aRet = [];
while (--i) {
var iC = aStr[i].charCodeAt();
if (iC > 127) {
aRet.push('&#' + iC + ';');
} else {
aRet.push(aStr[i]);
}
}
return aRet.reverse().join('');
}