function toggleElement(element) {
  $(element).toggle();
}

if(typeof(Control) == "undefined")
  var Control = {};

Control.CampoCorto = Class.create();
Object.extend(Control.CampoCorto.prototype,{
  initialize: function(campo,options){
    this.campo = $(campo);
    this.options = $H({
      textoVisible: ''
    }).merge(options || {});
    this.campo.value = this.options.textoVisible;
    this.campo.onfocus = this.onFocus.bind(this);
    this.campo.onblur = this.onBlur.bind(this);
  },
  
  onFocus: function() {
    if(this.campo.value == this.options.textoVisible) {
      this.campo.value = '';
    }
  },
  
  onBlur: function() {
    if(this.campo.value == '') {
      this.campo.value = this.options.textoVisible;
    }
  }
});

Control.toolCompartir = Class.create();
Object.extend(Control.toolCompartir.prototype,{
  initialize: function(element, options){
    this.element = $(element);
    this.options = $H({
      urlArticulo: '',
      images: 'image/'
    }).merge(options || {}).toObject();
    
    this.iefix = null;
    this.selectElement = null;
    
    var compartidos = [{nombre: 'del.icio.us', url:'http://del.icio.us/post?url=', ico:'delicious.gif'},
                      {nombre: 'google', url:'http://www.google.com/bookmarks/mark?op=edit&title=&bkmk=', ico:'goo_book.gif'},
                      {nombre: 'technorati', url:'http://technorati.com/faves?add=', ico:'technorati.gif'},
                      {nombre: 'meneame', url:'http://meneame.net/submit.php?url=', ico:'meneame.gif'},
                      {nombre: 'yahoo', url:'http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', ico:'yahoo_MW.gif'},
                      //{nombre: 'fresqui', url:'http://tec.fresqui.com/post?url=', ico:'yahoo_MW.gif'}
                      {nombre: 'enchilame', url:'http://www.enchilame.com/submit.php?url=', ico:'enchilame.gif'}
                      ]
    var selectElement = $(document.createElement("ul"));
    selectElement.setAttribute('id', 'compartir_' + this.element.id);
    selectElement.addClassName('tool_compartir');
    selectElement.hide();
    
    Position.clone(this.element, selectElement,{setTop: false, setHeight: false, setWidth: false});
    var parentNode = this.element.parentNode;
    selectElement = parentNode.insertBefore(selectElement, this.element.nextSibling);
    
    selectElement.setStyle({border:'1px solid #000', position: 'absolute', width: '100px', background:'#fff', zIndex: '1002', margin:'0px', padding:'2px 4px', listStyle: 'none'});
    
    compartidos.each(function(el) {
      var li = $(document.createElement('li'));
      li.setStyle({padding: '1px 0px'});
      var href = $(document.createElement('a'));
      href.update(el['nombre']);
      href.setAttribute('href', el['url'] + this.options.urlArticulo);
      href.setAttribute('target', '_blank');
      href.onclick = this.cerrar.bind(this);
      
      href.setStyle({background: 'transparent url(' + this.options.images + el['ico'] + ') no-repeat 0px 0px;'});
      li.appendChild(href);
      selectElement.appendChild(li);
    }.bind(this));
    
    //Se crea una opción de cerrar
    var li = $(document.createElement('li'));
    var href = $(document.createElement('a'));
    href.update('Cerrar');
    href.setAttribute('href', '#nogo');
    href.onclick = this.cerrar.bind(this);
    
    //Se asigna la opción de cerrar al final
    li.appendChild(href);
    selectElement.appendChild(li);
    
    this.selectElement = selectElement;
    
    //Muestra el listado de opciones
    this.element.onclick = function() {
      selectElement.toggle();
      if(this.iefix) {
        this.iefix.show();
      }
    }.bind(this);

    //Ajuste para ie para evitar overlapping
    if(!this.iefix
        && (navigator.appVersion.indexOf('MSIE')>0)
        && (navigator.userAgent.indexOf('Opera')<0)
        && (Element.getStyle(selectElement, 'position')=='absolute'))
    {
        new Insertion.After(selectElement, '<iframe id="' + selectElement.id + '_iefix" '+
        'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
        'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
        this.iefix = $(selectElement.id + '_iefix');
    }
  },
  cerrar: function() {
    this.selectElement.hide();
    if(this.iefix) {
      this.iefix.hide();
    }
  }
});


Control.toolEnviar = Class.create();
Object.extend(Control.toolEnviar.prototype,{
  initialize: function(element, options) {
    var element = $(element);

    this.options = $H({
      url: '',
      link: ''
    }).merge(options || {}).toObject();
    
    var selectElement = Element.extend(document.createElement("ul"));
    selectElement.setAttribute('id', 'enviar_' + element.id);
    selectElement.addClassName('tool_enviar');
    li = Element.extend(document.createElement("li"));
    liul = Element.extend(document.createElement("ul"));
    liul.setStyle({display:'none'});
    
    liulli = Element.extend(document.createElement("li"));
    
    selectElement.appendChild(li);

    element.parentNode.insertBefore(selectElement, element.nextSibling);
    this.element = li.appendChild(element.remove());
    this.element.onclick = this.onClick.bindAsEventListener(this);
    
    var form = new Element('form', {
                         action: this.options.url,
                         method: 'post',
                         id: 'enviar_form_' + element.id
                       });
    var inputMail = new Element('input', {
      id: 'enviar_form_email_' + element.id,
      type: 'text',
      value:'email'
    });
    var inputButton = new Element('input', {
       type: 'button',
       value: 'OK',
       style: 'padding: 2px!important; margin-left: 2px!important;'
    });
    
    inputMail.onfocus = function() {
      if(this.value == 'email') {
        this.value = '';
      }
    };
    
    inputMail.onblur = function() {
      if(this.value == '') {
        this.value = 'email';
      }
    };
    
    form.appendChild(inputMail);
    form.appendChild(inputButton);
    
    liulli.appendChild(form);
    liul.appendChild(liulli);
    li.appendChild(liul);
    
    inputButton.onclick = function() {
      info = 'email='+ $F('enviar_form_email_'+element.id) +'&link=' + this.options.link;

      //console.log('despues',info);
      new Ajax.Request(this.options.url + '?'+info, {
                method: 'post',
                //parameters: info,
                onSuccess: function(transport) {
                  //Element.update(target, transport.responseText);
                  if(transport.responseText == 'OK') {
                    alert('El artículo fue enviado exitosamente.');
                  } else {
                    alert('El artículo no pudo ser enviado, intente más tarde.');
                  }
                }
      });
      this.onClick();
    }.bind(this);
  },
  onClick: function() {
    this.element.nextSibling.toggle();
  }
});

Control.toolImprimir = Class.create();
Object.extend(Control.toolImprimir.prototype,{
  initialize: function(element, options) {
    this.element = $(element);
    
    if(!$('iframe_imprimir')) {
      var _iframeImprimir = $(document.createElement('iframe'));
      _iframeImprimir.setStyle({width: '0px', height:'0px', border:'none'})
      _iframeImprimir.setAttribute('id', 'iframe_imprimir');
      this.iframeImprimir = _iframeImprimir;
      this.iframeImprimir = document.body.appendChild(this.iframeImprimir);
    } else {
      this.iframeImprimir = $('iframe_imprimir');
    }
    
    //Event.observe(this.element, 'click', this.onClick.bind(this));
    //Event.observe(this.element, 'click', function (evt) { this.onClick(evt)}.bind(this));
    this.element.onclick = this.onClick.bindAsEventListener(this);
    this.options = $H({
      url: ''
    }).merge(options || {});
  },
  
  onClick: function() {
    if(Prototype.Browser.Gecko) {
      this.iframeImprimir.onload = this.onLoad.bindAsEventListener(this);
      this.iframeImprimir.setAttribute('src', this.options.url);
    } else if(Prototype.Browser.IE) {
       this.iframeImprimir.setAttribute('src', this.options.url+"?opera=1");
       //this.iframeImprimir.contentWindow.document.body.onload = this.onLoad.bindAsEventListener(this);
      //document.frames ('iFrameName').focus ();
      //document.frames ('iFrameName').print ();
    } else {
      prueba = window.open(this.options.url+'?opera=1','ventana','width=800,height=400,left=0,top=100,screenX=0,screenY=100,scrollbars=yes');
      //prueba.print();
    }
  },
  
  onLoad: function() {
    var doc = this.iframeImprimir.contentWindow;
    
    if(doc.document.body.hasChildNodes()) {
      this.iframeImprimir.contentWindow.focus();
      this.iframeImprimir.contentWindow.print();
    }
  }
});

function previewContent(_cme_origen, _destino) {
  var cme_origen = $(_cme_origen);
  var destino = $(_destino);
  destino.innerHTML = cme_origen.contentWindow.document.body.innerHTML;
  destino.show();
}


function mousePosition(e) {
    var posx = 0;
    var posy = 0;
    if (!e) var e = window.event;
    if (e.pageX || e.pageY)
    {
        posx = e.pageX;
        posy = e.pageY;
    }
    else if (e.clientX || e.clientY)
    {
        posx = e.clientX + document.body.scrollLeft;
        posy = e.clientY + document.body.scrollTop;
    }
    var pos = new Array();
    pos['x'] = posx;
    pos['y'] = posy;
    return pos;
    // posx and posy contain the mouse position relative to the document
    // Do something with this information
}