/*---------------------------------------- DREAMWEAVER ----------------------------------------*/
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/*---------------------------------------- PLANETACION ----------------------------------------*/
var raiz = ( window.parent == window ) ? window : window.parent.raiz;
var ventanaPopUp;

var MAX_DUMP_DEPTH = 10;

function Placom()
{
	////////////////////////////////////////////////////////////////////////// INICIO
	this.esIE = ( navigator.appVersion.indexOf('MSIE') > 0 );
	this.imgPre = new Object();

	////////////////////////////////////////////////////////////////////////// FUNCIONES
	// Precargamos imágenes
	this.precargaImagenes = function()
	{
		if( document.images)
		{
		    if( typeof precargaImg != 'undefined' )
		    {
			    for( var i=0; i < precargaImg.length; i++ )
			    {
						tmp = new Image();
						tmp.src = "img/"+precargaImg[i];
			    }
		    }
		}
	};
	// Muestra nueva imagen en etiqueta <img> con id 'imagen'
	this.mostrarFoto = function( imagen, sufijo )
	{
	    if( document.images)
	        document.images[ imagen ].src = eval( "this.imgPre['"+imagen + sufijo +"'].src");
	};
	// RollOver & RollOut
	this.rollOver = function( elemento )
	{
		elemento.className += 'Over';
	};
	this.rollOut = function( elemento )
	{
		elemento.className = elemento.className.replace( 'Over', '' );
	};
	// Icono RollOver & Icono RollOut
	this.iconoOver = function( elemento )
	{
		var imagen = elemento.getElementsByTagName('img')[0];
		if( imagen.ouSrc ) imagen.src = imagen.ouSrc;
		else
		{
			var fuente = imagen.src; 
			var longitud = fuente.length;
			var extension = fuente.substr( longitud-4 );
			imagen.ovSrc = fuente;
			imagen.src = fuente.substr( 0, longitud-4 )+'Over'+extension;
			imagen.ouSrc = imagen.src;
		}
	};
	this.iconoOut = function( elemento )
	{
		var imagen = elemento.getElementsByTagName('img')[0];
		imagen.src = imagen.ovSrc;		
	};
	// RollOver & RollOut
	this.focoOn = function( elemento )
	{
		elemento.className += 'Foco';
	};
	this.focoOff = function( elemento )
	{
		elemento.className = elemento.className.replace( 'Foco', '' );
	};
	// Orden columnas
	this.cambiarOrdenColumna = function( elemento )
	{
		var orden = elemento.id;
		if( orden == 'colAsc')
		{
			elemento.id = 'colDesc';
			return 'desc';
		}
		else
		{
			elemento.id = 'colAsc';
			return 'asc';
		}
	};
	// IrA
	this.irA = function( ruta, enlace )
	{
		if( enlace ) enlace.href = $('rutabase').href+ruta;
		else window.location.href = $('rutabase').href+ruta;
	};
	// Pantalla
	this.tamanyoPantalla = function()
	{
	  var myWidth = 0, myHeight = 0;
	  if( typeof( window.innerWidth ) == 'number' )
	  { //Non-IE
	    myWidth = window.innerWidth;
	    myHeight = window.innerHeight;
	  }
	  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	  { //IE 6+ in 'standards compliant mode'
	    myWidth = document.documentElement.clientWidth;
	    myHeight = document.documentElement.clientHeight;
	  }
	  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	  { //IE 4 compatible
	    myWidth = document.body.clientWidth;
	    myHeight = document.body.clientHeight;
	  }
	  return { ancho: myWidth, alto: myHeight };
	};
	this.scrollPantalla = function()
	{
	  var scrOfX = 0, scrOfY = 0;
	  if( typeof( window.pageYOffset ) == 'number' )
	  { //Netscape compliant
	    scrOfY = window.pageYOffset;
	    scrOfX = window.pageXOffset;
	  }
	  else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
	  { //DOM compliant
	    scrOfY = document.body.scrollTop;
	    scrOfX = document.body.scrollLeft;
	  }
	  else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
	  { //IE6 standards compliant mode
	    scrOfY = document.documentElement.scrollTop;
	    scrOfX = document.documentElement.scrollLeft;
	  }
	  return { x: scrOfX, y: scrOfY };
	};
	// Click boton derecho imágenes
	this.deshabilitarClick = function( e )
	{
		var deshabilitar = false;
		if( document.all ) 
		{
			if( ( event.button==2 || event.button==3 ) && event.srcElement.tagName=="IMG") deshabilitar = true;
		}
		else if (document.layers) 
		{
			if( e.which == 3 ) deshabilitar = true;
		}
		else if (document.getElementById)
		{
			if( e.which==3 && e.target.tagName=="IMG" ) deshabilitar = true;
		}
		if( deshabilitar )
		{
			if( this.msjDeshabImg ) alert( this.msjDeshabImg );
			return false;
		}
	};
	this.deshabilitarClickImgs = function()
	{
		this.msjDeshabImg = ( arguments.length >  1 && typeof( arguments[1] ) != 'string' ) ? arguments[1] : 'Función deshabilitada';
	
		if( document.all )
		 	document.onmousedown = this.deshabilitarClick.bind( this );
		else if( document.getElementById )
			document.onmouseup = this.deshabilitarClick.bind( this );
		else if( document.layers )
		{
			for( i=0; i<document.images.length; i++ )
				document.images[i].onmousedown = this.deshabilitarClick.bind( this );
		}
		document.oncontextmenu = new Function("return false;" );
	};
	// Obtener elementos x nombre de clase
	this.getElementsByClassName = function( className, tagName, parentElement)
	{
		var children = ($(parentElement) || document.body).getElementsByTagName( (( !tagName ) ? '*' : tagName) );
		return $A(children).inject( [], function(elements, child)
	  	{
		    if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
		      elements.push(Element.extend(child));
		    return elements;
		});
	};

	this.dump = function( obj, name, indent, depth)
	{
        if( depth > MAX_DUMP_DEPTH )
        	return indent + name + ": <Maximum Depth Reached>\n";

        if(typeof obj == "object")
        {
            var child = null;
			var output = indent + name + "\n";
			indent += "\t";
	        for (var item in obj)
			{
	             try {
                         child = obj[item];
                 } catch (e) {
                     child = "<Unable to Evaluate>";
                 }
                 if (typeof child == "object")
                 	output += this.dump(child, item, indent, depth + 1);
				 else
				    output += indent + item + ": " + child + "\n";
            }
	        return output;
        }
        else
            return obj;
    };
    
    this.abrirPopUp = function( dir, ancho, alto )
	{
		if( ventanaPopUp != null && !ventanaPopUp.closed && ventanaPopUp.location)
			ventanaPopUp.location.href = dir;
		else
		{
			var x = (screen.width-ancho)/2;
			var y = (screen.height-alto)/2;
			ventanaPopUp = window.open( dir, "", "width="+(ancho)+", height="+(alto)+", channelmode=no, directories=no, fullscreen=no, location=no, toolbar=no, resizable=no, menubar=no, status=no, titlebar=no, marginwidth='0', marginheight='0', frameborder='0' " );
			ventanaPopUp.moveTo(x,y);
			if( !ventanaPopUp.opener) 
				 ventanaPopUp.opener = self;
		}
		if( !window.focus)
			ventanaPopUp.focus();
	};
	/**
	 * xajax.getFormValues() builds a query string XML message from the elements of a form object
	 * The first argument is the form or the id of the form
	 * El tercer argumento (opcional) es un array de nombres de etiquetas select en las cuales se
	 * quiere incluir todos sus elementos ( seleccionado o no ) en los datos enviados x el formulario
	 */
	this.valoresForm = function( frm, xajax )
	{
		var objForm, elemUnion, elemSig, salida;
		var selecTodo = [];

		if( arguments.length > 2 && typeof( arguments[2] ) == 'object' ) selecTodo = arguments[2];
		if( xajax )
		{
			salida 		= "<xjxquery><q>";	
			elemUnion 	= '=';
			elemSig		= '&';
		}
		else
		{
			salida 		= '';
			elemUnion	= '/';
			elemSig		= '/';
		}
		if( typeof tinyMCE != 'undefined' ) // TinyMCE
		{
			for( var n in tinyMCE.instances)
			{
	            if( tinyMCE.isInstance( tinyMCE.instances[n] ) ) tinyMCE.removeMCEControl(tinyMCE.instances[n].editorId);
	        }
		}
		objForm = ( typeof(frm) == "string") ? document.getElementById( frm ) : frm;		
		if( objForm && objForm.tagName == 'FORM' )
		{
			var algunElem = false;
			var formElements = objForm.elements;
			for( var i=0; i < formElements.length; i++ )
			{
				if( !formElements[i].name )
					continue;
				if( formElements[i].type && (formElements[i].type == 'radio' || formElements[i].type == 'checkbox') && formElements[i].checked == false )
					continue;

				var name = formElements[i].name;
				if( name )
				{
					if( algunElem ) salida += elemSig;
					if( formElements[i].type=='select-multiple' )
					{
						if( !selecTodo.containsValue( formElements[i].id ) )
						{
							for( var j = 0; j < formElements[i].length; j++ ) /* Solo los elementos seleccionados */
								if( formElements[i].options[j].selected == true )
								{
									salida += name+elemUnion+encodeURIComponent(formElements[i].options[j].value)+elemSig;
									algunElem = true;
								}
						}
						else
						{
							for( var j = 0; j < formElements[i].length; j++ ) /* Todos los elementos */
							{
								salida += name+elemUnion+encodeURIComponent(formElements[i].options[j].value)+elemSig;
								algunElem = true;
							}
						}
					}
					else
					{
						salida += name+elemUnion+encodeURIComponent(formElements[i].value);
						algunElem = true;
					}
				}
			}
		}
		if( xajax ) salida +="</q></xjxquery>";
		return salida;
	}
}

var Placom = new Placom();
