
var autoAjax = Class.create({
  initialize: function(){
    $('loading').hide();
    this.domain = null;
  },
  applyAjax: function(domain)
  {
      if(!Ajax.getTransport) return;
      $$('a').each(function(v,k){

         if(!this.testUrl(v.href,domain)) return;

         var tmp    = v.href.split('?');
         var fullurl= v.href;
         var url    = tmp[0];
         var params = tmp[1] ? tmp[1] : '';

         if(params.search(/&m=/) < 0) params += '&m=1';

         v.href = 'javascript:;'
         v.onclick = function()
         {
             this.viewLoading(true);
             this.setCursor(false);
			 var ajaxlocation = params;
             new Ajax.Updater(
                'content',
                './',
                {
                    parameters: params,
                    evalScripts: true,
                    method: 'get',
                    onComplete: function()
                    {
                        $('add').onclick = function(){return addthis_open($('add'),'',fullurl,'[TITLE]')}
						window.ajaxlocation = '?'+ajaxlocation;
						//Analitycs
						try {
							pageTracker._trackPageview('?'+params);
						} catch(err) {}
						//End Analitycs
						
                        this.applyAjax(domain);
                        this.viewLoading(false);
                        this.setCursor(true);

                        $('mpp').scrollTo();
                    }.bind(this)
                }
             );
             return false;
         }.bindAsEventListener(this);

      }.bind(this));

      $$('form').each(function(v,k){
	
         if(!this.testUrl(v.action,domain)) return;

         var tmp    	= v.action.split('?');
         var url    	= tmp[0];
         var urlparams  = tmp[1] ? tmp[1] : '';

         //metodo post, agregar m a urlparams
         if(v.method.toLowerCase() == 'post')
         {
            if(urlparams.search(/&m=/) < 0) urlparams += '&m=1';
         }
         else
         //metodo get, los valores get se tomaran del form, eliminar urlparams
         {
            urlparams = '';
         }

         v.action = 'javascript:;';
         v.onsubmit = function()
         {

             var params = v.serialize();

             //Agregar m a params si el metodo es get
             if(v.method.toLowerCase() == 'get')
             {
                if(params.search(/&m=/)    < 0) params += '&m=1';
             }

             this.setCursor(false);
             this.viewLoading(true);
			 var ajaxlocation = params;
             new Ajax.Updater(
                'content',
                './'+(urlparams.empty() ? '' : '?'+urlparams),
                {
                    parameters: params,
                    method: v.method,
                    evalScripts: true,
                    onComplete: function()
                    {
                        $('add').onclick = function(){return addthis_open($('add'),'',fullurl,'[TITLE]')}
						window.ajaxlocation = '?'+ajaxlocation;
						//Analitycs
						try {
							pageTracker._trackPageview('?'+params);
						} catch(err) {}
						//End Analitycs

                        this.applyAjax(domain);
                        this.setCursor(true);
                        this.viewLoading(false);

                        $('mpp').scrollTo();
                    }.bind(this)
                }
             );
             return false;
         }.bindAsEventListener(this);

       }.bind(this));
  },
  updateMenu: function(domain,id,oncomplete)
  {
    this.setCursor(false);
    this.viewLoading(true);
    new Ajax.Updater(
        'conttopmenu',
        './',
        {
            parameters: 'm=2&id='+id,
            method: 'get',
            evalScripts: true,
            onComplete: function()
            {
                this.applyAjax(domain);
                this.setCursor(true);
                this.viewLoading(false);
                if(oncomplete) oncomplete();
            }.bind(this)
        }
    );
  },
  setCursor: function(ready)
  {
    $$('html').each(function(v){v.style.cursor = ready ? 'default' : 'wait'});
  },
  viewLoading: function(view)
  {
    if(view)
        $('loading').show();
    else
        $('loading').hide();
  },
  testUrl: function(url,domain)
  {
    var re;

    //Already processed
    re = new RegExp('(#|javascript:;)$');
    if(url.search(re)> -1) return false;

    //domain.com/ => domain.com
    re = new RegExp('/$');
    domain = domain.replace(re,'');

    //Check for HTTP
    re = new RegExp('^http://');
    if(url.search(re) == -1)
	{
		re = new RegExp('(^|/){1}(index.php)*($|\\?){1}');
		if(url.search(re) == -1)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	
    //Check...
    re = new RegExp('^http://(.)*' + RegExp.escape(domain) + '/(index.php)*($|\\?){1}');
    if(url.search(re) == -1) return false;

    return true;
  }
});
