// ajaxHandler


// postData class definition (mainly for toString purposes)
function postData()
{

this.data = 0;

this.toString = function () {
    var re = ' ';
    for(p in this.data) {
        re += p + '->' + this.data[p] + ' | ';
    }
    return re;
}
    
}


// handler literal definition
var AjaxHandler = {
    
    pd : new postData(),
    
    backend : false,

    setData : function(data) {this.pd.data = data;},
    
    setBackend : function(burl) {this.backend = burl;},
    
    Post : function(c_function, dtype)
    {
    	$('#ajax_working').show();
        $.post(this.backend, this.pd.data,
        function(data) {
        	$('#ajax_working').hide();
            if(data.error) {
                alert(data.text + '\nSent:' + this.pd);
            }
            else {
                eval(c_function + "(data);");
            }
        }, dtype);   
    }
       
}

// ajaxizer literal definition

var Ajaxizer = {	

  ajaxizeDocument : function() {
            			$('.ajaxform').unbind('submit');
            			$('.ajax').unbind('click');
            	
				        $('.ajaxform').bind('submit', function() {
				           var validated = true;
				           if(eval('typeof formValidators.' + $(this).attr('id')) == 'function') {
				        	   eval('validated = formValidators.' + $(this).attr('id') + '();');
				           }
				           if(validated) {
						       var dataToSend = $(this).serialize();
						       AjaxHandler.setBackend($(this).attr('action'));
						       AjaxHandler.setData(dataToSend);
						       AjaxHandler.Post('formCallbacks.' + $(this).attr('id'), 'json');
				           }
					       return false;
				        });
				        
				        $('.ajax').bind('click', function() {
					        var linkContent = $(this).attr('href');
					        var regexp = /[^?]+\?/;
					        linkContent = linkContent.replace(regexp, '?');
					        linkContent = linkContent.substr(1);
					        var linkArray = new Array();
					        linkArray = linkContent.split('&');
					        toDo = new Array();
					        toDo = linkArray[0].split('=');
					        if(toDo[0].toLowerCase() == 'action') {
			                    Ajaxizer.doAction(toDo[1]);
			                    return false;
					        }					
					        if(toDo[0].toLowerCase() == 'get') {
			                    Ajaxizer.doGet(toDo[1], linkArray[1]);
			                    return false;
					        }
					        return false;
				        });
				
  },
	
	doAction : function(action) {
    			  var isFunction = false;
					  var linkFunction = new Array();
            linkFunction = action.split('(');
					  eval("if(typeof " + linkFunction[0] + " == 'function') {isFunction = true;}");
						if(isFunction) {
              eval(action + ';');
              return false;
            }
            else {
              return false;
            }
  },
  
  doGetTarget: null,
  
  doGet: function(page, target) {
            Ajaxizer.doGetTarget = target;
            AjaxHandler.setData(null);
            AjaxHandler.setBackend(page);
            AjaxHandler.Post('Ajaxizer.doGetCallback', 'html');
            return false;
  },
  
  doGetCallback: function(data) {
            $('#' + Ajaxizer.doGetTarget).html(data);
  }
	
}




