function CentrarVentana(){
	x = (screen.width - 300) / 2;
	y = (screen.height - 200) / 2;
	moveTo(x, y);
}

function VentanaIsq(){
	x = (screen.width - 400) / 4;
	y = (screen.height - 400) / 4;
	moveTo(x, y);
}

function showPopup(){
	var popup = window.open(this.href, 'popup', 'height=800,width=600');
	popup.focus();
	return false;
}

function showInPopup(url){
	var popup = window.open(url, 'ventana', 'height=800,width=600');
	popup.focus();
	return true;
}

function popup_upload(url){
	window.open(url, 'ventana', 'height=200,width=400');
}


// nuevas - 2007 12 19
function obtener_valor_get(variable){
	var remplaza = /\+/gi;
	var url = window.location.href;

	url = unescape(url);
	url = url.replace(remplaza, " ");
	//url = url.toUpperCase();

	//var variable_may = variable.toUpperCase();
	var variable_may = variable;
	var variable_pos = url.indexOf(variable_may);

	if (variable_pos != -1)	{
		var pos_separador = url.indexOf("&", variable_pos);

		if (pos_separador != -1){
			return url.substring(variable_pos + variable_may.length + 1, pos_separador);
		}else{
			return url.substring(variable_pos + variable_may.length + 1, url.length);
		}
	}else{
		return "";
	}
}

function noNumbers(e) {
	var keynum
	var keychar
	var numcheck

	if(window.event) { // IE
		keynum = e.keyCode
	}
	else if(e.which) { // Netscape/Firefox/Opera
		keynum = e.which
	}
	keychar = String.fromCharCode(keynum)
	numcheck = /\d/
	return !numcheck.test(keychar)
}

function SoloNumerico(e){
	var keynum
	var keychar
	var numcheck
	numcheck = /\d/

	if(window.event){ // IE
		keynum = e.keyCode
	}
	else if(e.which){ // Firefox
		keynum = e.which
	}

	//alert(keynum);

	keychar = String.fromCharCode(keynum);

	if(keynum == 13 || keynum == 8 || keynum == 46){
		return keychar;
	}

	return numcheck.test(keychar)
}

/**
obtiene el valor seleccionado de un select
select_id es el ID del elemento select
*/
function Value_from_select(select_id){
	var selector = document.getElementById(select_id);
	var selected_option=selector.options.selectedIndex;
	return selector.options[selected_option].innerHTML;
}

/**
 * regresa el key del select (value del option)
 * @param {Object} select_id
 */
function Key_from_select(select_id){
	var selector = document.getElementById(select_id);
	var selected_option=selector.options.selectedIndex;
	return selector.options[selected_option].value;
}

/**
 * funcion para determinar la existencia de funciones
 * @param {Object} function_name
 * @return bool
 */
function function_exists( function_name ) {
    // Return TRUE if the given function has been defined
    // 
    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_function_exists/
    // +       version: 804.1712
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Steve Clay
    // +   improved by: Legaev Andrey
    // *     example 1: function_exists('isFinite');
    // *     returns 1: true


    if (typeof function_name == 'string'){
        return (typeof window[function_name] == 'function');
    } else{
        return (function_name instanceof Function);
    }
}

/**
 * determina si existe una variable, como en PHP
 */
function isset(  ) {
    // Determine whether a variable is set
    // 
    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_isset/
    // +       version: 804.1713
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: FremyCompany
    // *     example 1: isset( undefined, true);
    // *     returns 1: false
    // *     example 2: isset( 'Kevin van Zonneveld' );
    // *     returns 2: true

    var a=arguments; var l=a.length; var i=0;
    
    while ( i!=l ) {
        if (typeof(a[i])=='undefined') { 
            return false; 
        } else { 
            i++; 
        }
    }
    
    return true;
}

/**
 * selector de un checkbox a la ves, del grupo especificado
 * como element, clases objetos etc ...
 * 
 * @param {Object} element
 */
function jquery_checkboxes_selector_once(element){
	$(element).click( function() { 
	//clear("checkbox_tr"); 
	$(element).attr('checked',false);
	$(this).attr('checked',true);
} );
}

function selector_selectedIndex_change(selectid,index){
var selector = document.getElementById(selectid);

selector.options.selectedIndex = index;
}

function selector_selectedIndex(selectid,optvalue){
var selector = document.getElementById(selectid);

selector.options.selectedIndex = 2;
}

/**
 * como el nombre lo dice hace eso ...
 * @param {Object} iframeid
 * @param {Object} src
 */
function Orion_Iframe_change_src(iframeid,src){
	var iframe = document.getElementById(iframeid);
	iframe.src = src;
}

/**
convierte el contenido de un textarea en un array
*/
function Orion_textareaToArray(t){
	return t.value.split(/[\n\r]+/);
}

/**
permite visualizar un array en un alert, para depuracion
*/
function debug_showArray(a){
	var msg="";
	for(var i=0;i<a.length;i++){
		msg+=i+": "+a[i]+"\n";
	}
	alert(msg);
}

// modulo para jQuery, recarga de imagenes
// pasar las imagenes como argumento
jQuery.preloadImages = function(){
  for(var i = 0; i<arguments.length; i++){
    jQuery("<img>").attr("src", arguments[i]);
  }
}

/**
cortar palabras largas
uso: cortar_palabras("Hello everyone how are you doing? I'm writing an extravagently long string.", 6);
*/
function cortar_palabras(str, num) {
  return str.replace(RegExp("(\\w{" + num + "})(\\w)", "g"), function(all,text,char){
    return text + "<wbr>" + char;
  });
}

/**
linda funcion para recortar palabras y frases de forma rapida
*/
function recortar_palabras(str, num) {
	var cadena = '';
	var largo = str.length;

	if(largo > num){
		return str.substring(0,num)  + ' ..';
	}else{
		return str;
	}
}

/**
crea un div oculto, el cual sirve para mostrar informacion a los usuarios
llamandolo con jQuery y cargandole el contenido a traves de ajax
id del div contenido: avisos_content
utilizar toggle sobre avisos
*/
function notify_div_create(){
	// crear el div oculto para desplegar informacion al usuario
	$(document).ready( function() {

		// agregando los estilos al vuelo
		addCss('#avisos {display:none;position:fixed;top:150px;left:300px;background:#dddddd;z-index:40;}');
		if($.browser.msie){
		addCss('#avisos {display:none;position:absolute;top:300px;left:300px;background:#444444;z-index:40;}');
		//addCss('#avisos {position:fixed;}');
		}
		
		addCss('#avisos_content {position:relative;top:20px;padding:3px;margin-bottom:20px;}');
		addCss('.avisos_barra {margin-right:4px;position:absolute;right:0px;top:0px;}');

		addCss('#avisos_background {opacity:0.60;filter:alpha(opacity=60);width:100%;height:170%;display:none;position:absolute;top:0px;background:#444444;z-index:28;}');
		if($.browser.msie){
		addCss('#avisos_background {width:0px;height:0px;display:none;position:absolute;top:0px;left:0px;background:#444444;z-index:35;}');	
		}
		
		$('<div id="avisos_background"></div>').appendTo("body");
		
		$('<div id="avisos"><div id="avisos_content"> avisos loading ... </div></div>').appendTo("body");
		$('<div class="avisos_barra"> <a href="javascript:;" rel="avisos_toggle" id="avisos_cerrar">cerrar</a> </div>').appendTo("div#avisos");
		//$("div#avisos").load("/html/algo.html");

		// efecto de acultacion del div de avisos
		$("a[@rel='avisos_toggle']").click(function() {
			$("#avisos_background").toggle(100);
			$("#avisos").toggle(400);
		});
		
		$("div#avisos_background").click(function() {
			$("#avisos_background").toggle(100);
			$("#avisos").toggle(400);
		});		

	} );
}

/**
 *despliega los mensajes a los usuarios
 */
function form_messages_show(a){
	var msg="";
	for(var i=0;i<a.length;i++){
		msg += a[i]+"\n";
	}
	alert(msg);
}

/**
 * procesa los mensajes recividos como respuesta de los
 * formularios ajaxForm a traves de la API nebula
 */
function form_processJson(data){
    //var errors = data.errors;
    var errors = 'errors' in data? data.errors : "";
    //var notice = data.notice;
    var notice = 'errors' in data? data.notice : "";

    var sin_errores = true;

    if(errors.length > 0){
    form_messages_show(errors);
     sin_errores = false;
    }

    if(notice.length > 0){
    form_messages_show(notice);
    }

    return sin_errores;
}

function formularios(){

    // control de formularios basico
    var options = {
        dataType:  'json',
        success:   form_processJson
    }

     // formulario de comentarios
    var options_formcontacto = {
        dataType:  'json',
        success:   function(data){
         form_processJson(data);
         $('#formcontacto').clearForm();
         //tinyMCE.getInstanceById('textareaid').setContent('');
         //tinyMCE.getInstanceById('desc').getBody().innerHTML=' ';
         //tinyMCE.getInstanceById('info').getBody().innerHTML=' ';
        }
    }
    $('#formcontacto').ajaxForm(options_formcontacto);

}

/**
 *esta funcion es de suma importancia para las interacciones ajax
 */
function ajaxpostload(){
   // acciones ayax - mandar los enlaces al centro //
    $('a[@rel*=orioncontentload]').OrionContentLoad(function(){
        // formularios dinamicos (ayax)
        formularios();
        //ajaxpostload();
    });

    // asigno popups a los enlaces que contengan "openinpopup"
    $('a[@rel*=openinpopup]').popup();

    // Nebula API links
    $('a[@rel*=napi_action]').ajax_action();
}


/**
 * esta funcion carga la URL en un contenedor
 * es ideal para ser llamada desde flash.
 */
function orion_flajax(url,target){
    $('#'+target).load(url,{orionload:1},function(){
        ajaxpostload();
    });
}

/**
 * carga la url en el contenedor "target",
 * params son los parametros al estilo JSON y son enviados
 * por POST
 *
 * 
 */
function orion_flajax_param(url,target,params,callback){
    params.orionload = 1;

    $('#'+target).load(url,params,function(){
        ajaxpostload();
        if(typeof(callback) != "undefined"){
            callback();
        }
    });
}

