/* Definitions */
var ajax_target = "#content";
var ajax_anim_attribute = "opacity";
var ajax_anim_type = "linear";

/* Initialisation ShadowBox */
Shadowbox.init({ skipSetup: true });

/* Serialise un objet pour en avoir une representation textuelle */
function serialize(obj) {
        var returnVal;
        if(obj != undefined){
            switch(obj.constructor) {
               case Array:
	        	  var vArr="[";
	        	  for(var i=0;i<obj.length;i++)
	        	  {
	        	   if(i>0) vArr += ",";
	        	   vArr += serialize(obj[i]);
	        	  }
	        	  vArr += "]"
	        	  return vArr;
               case String:
	        	  returnVal = escape("'" + obj + "'");
	        	  return returnVal;
               case Number:
	        	  returnVal = isFinite(obj) ? obj.toString() : null;
	        	  return returnVal;
               case Date:
	        	  returnVal = "#" + obj + "#";
	        	  return returnVal;
               default:
	        	  if(typeof obj == "object"){
	        	     var vobj=[];
	        	     for(attr in obj) {
	        		 if(typeof obj[attr] != "function") {
	        		     vobj.push('"' + attr + '":' + serialize(obj[attr]));
	        		 }
	        	     }
        	     if(vobj.length >0)
        		 return "{" + vobj.join(",") + "}";
        	     else
        		 return "{}";
        	  } else {
        	      return obj.toString();
        	  }
            }
        }
        return null;
}

/* Gestion d'envoi de formulaire Ajax */
function send_form(obj){
    data = $(obj).parents('form:first').serializeObject(true);
    Dajaxice.myproject.myapp.send_form('Dajax.process',{'form':data});
    return false;
}

/* Gestion de chargement de page Ajax */
function change(data){
    if(ajax_anim_attribute=="width"){
	    $(ajax_target).animate({
	    	width: 'toggle'
	    }, 1000, ajax_anim_type,function() {
			Dajax.process(data);
			init_ajax();
			$(ajax_target).animate({
				width: 'toggle'
			}, 1000, ajax_anim_type);
	    });
    }else if(ajax_anim_attribute=="height"){
	    $(ajax_target).animate({
			height: 'toggle'
	    }, 1000, ajax_anim_type,function() {
			Dajax.process(data);
			init_ajax();
			$(ajax_target).animate({
				height: 'toggle'
			}, 1000, ajax_anim_type);
	    });
    } else {
	    $(ajax_target).animate({
			opacity: 'toggle'
	    }, 1000, ajax_anim_type,function() {
			Dajax.process(data);
			init_ajax();
			$(ajax_target).animate({
				opacity: 'toggle'
			}, 1000, ajax_anim_type);
	    });
    }
}

/* Initialisation de la gestion Ajax */
function init_ajax(){
    $('a[rel~="url"]').each(function(index) {
        $("#" + $(this).attr("id")).attr("href","#");
        $("#" + $(this).attr("id")).unbind('click');
        $("#" + $(this).attr("id")).click(function() {
        	ajax_target = "#content";
        	ajax_anim_attribute = "opacity";
        	ajax_anim_type = "linear";
        	attributs = $(this).attr("rel").split(" ")
	        actions = $(this).attr("id").split("_", 2)
	        if(actions.length==1){
				if(attributs.length==1)
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0]}});
				else if(attributs.length==2){
					ajax_target = "#" + attributs[1];
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0], 'idhtml':attributs[1]}});
				}else if(attributs.length==3){
					ajax_target = "#" + attributs[1];
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0], 'idhtml':attributs[1], 'block':attributs[2]}});
				}
	        }else{
				if(attributs.length==1)
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0], 'parameter':actions[1]}});
				else if(attributs.length==2){
					ajax_target = "#" + attributs[1];
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0], 'parameter':actions[1], 'idhtml':attributs[1]}});
				}else if(attributs.length==3){
					ajax_target = "#" + attributs[1];
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0], 'parameter':actions[1], 'idhtml':attributs[1], 'block':attributs[2]}});
				}else if(attributs.length==4){
					ajax_anim_attribute = attributs[3];
					ajax_target = "#" + attributs[1];
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0], 'parameter':actions[1], 'idhtml':attributs[1], 'block':attributs[2]}});
				}else if(attributs.length==5){
					ajax_anim_attribute = attributs[3];
					ajax_anim_type = attributs[4];
					ajax_target = "#" + attributs[1];
					Dajaxice.myproject.myapp.change('change',{'actions':{'action':actions[0], 'parameter':actions[1], 'idhtml':attributs[1], 'block':attributs[2]}});
				}
	        }
	    	return false;
        });
    });
    $('form[rel="url"]').each(function(index) {
        $("#" + $(this).attr("id")).attr("action","");
        $("#" + $(this).attr("id")+" #send_form").unbind('click');
        $("#" + $(this).attr("id")+" #send_form").click(function() {
    	send_form(this);
    	return false;
        });
    });
    Shadowbox.setup();
}

$(document).ready(function() {
    init_ajax();
});

