$.fn.refreshComposite = function(domId, compositeAreaId, parent, composite) {
	var _domId = domId;
	var data = "compositeAreaId=" + compositeAreaId;
	data += "&compositeParent=" + parent;
	data += "&compositeName=" + composite;
	data += "&action=refreshComposite";
	$.ajax({
          url: "/ajax/composites.php",
          data: data,          
	      cache: false,
	         success: function(txt){
               $("#" + _domId).html(txt);
	         }
	  });
};

$.fn.refreshCompositeTable = function(domId, view, model, gadgetName, gadgetLayout, search) {
	var _domId = domId;
	data = "&action=refreshCompositeTable";
	if (typeof(search) != "undefined") {
	   data += "&search=" + search;
	}
	var postData = "view=" + view + "&model=" + model + "&gadget=" + gadgetName;
    postData += "&layout=" + gadgetLayout;
    postData += data;
	$.ajax({
          url: "/ajax/composites.php",
          data: postData,          
	      cache: false,
	         success: function(txt){
               $("#" + _domId).html(txt);
	         }
	  });
};

$.fn.refreshCompositeTableContent = function(domId, view, model, gadgetName, gadgetLayout, search) {
	var _domId = domId;
	data = "&action=refreshCompositeTableContent";
	data += "&search=" + search;
	var postData = "view=" + view + "&model=" + model + "&gadget=" + gadgetName;
    postData += "&layout=" + gadgetLayout;
    postData += data;
	$.ajax({
          url: "/ajax/composites.php",
          data: postData,          
	      cache: false,
	         success: function(txt){
               $("#" + _domId).html(txt);
	         }
	  });
};

$.fn.saveComposite = function(domId, view, model, gadgetName, gadgetLayout, infoBox, callback) {
	var _this = $(this);
	var _domId = domId;
	var data = $(this).getSaveCompositeData();
	data = replaceAll(data, "+", "%2B");
	var _view = view;
	var _model = model;
	var _gadgetName = gadgetName;
	var _gadgetLayout = gadgetLayout;
	if (typeof(data) != "undefined") {
		// submit using ajax post call to address /ajax/events.php
		var postData = "view=" + view + "&model=" + model + "&gadget=" + gadgetName;
	    postData += "&layout=" + gadgetLayout;
	    postData += "&action=saveOrUpdate";
	    postData += data;
//	    alert("data = " + data);
		$.ajax({  
		  type: "POST",  
		  url: "/ajax/composites.php",  
		  data: postData,  
		  success: function(txt) { 
			  // check for error
			  var status = ajaxGetParam(txt, "status");
			  if (status == "error") {
				  $(_this).setErrorForFields(txt, infoBox);
			  }
			  if (status == "success") {
				  $(_this).refreshCompositeTable(_domId, _view, _model, _gadgetName, _gadgetLayout);
				  $(_this).resetErrorForFields(txt, infoBox);
				  if (typeof(callback) != "undefined") {		  
					  callback(txt);
				  }
			  }
		  }  
		});  		
	}
	$(_this).refreshGadget(view, model, gadgetName, $("#gadget_search_"+gadgetName).val());
};

$.fn.updateComposite = function(domId, compositeID, view, model, gadgetName, gadgetLayout, infoBox, callback) {
	var _this = $(this);
	var _domId = domId;
	var compositeName = $("#compositeName_" + compositeID).val();
	var compositeTitle = $("#compositeTitle_" + compositeID).val();
	var compositeAliases = $("#compositeAliases_" + compositeID).val();
	var compositeParent = $("#compositeParent_" + compositeID).val();
	var compositeOwner = $("#compositeOwner_" + compositeID).val();
	var _view = view;
	var _model = model;
	var _gadgetName = gadgetName;
	var _gadgetLayout = gadgetLayout;
	// submit using ajax post call to address /ajax/events.php
	var postData = "ID=" + compositeID;
	postData += "&compositeName=" + compositeName;
	postData += "&compositeTitle=" + compositeTitle;
	postData += "&compositeAliases=" + compositeAliases;
	postData += "&compositeParent=" + compositeParent;
	postData += "&compositeOwner=" + compositeOwner;
	postData += "&view=" + view + "&model=" + model + "&gadget=" + gadgetName;
    postData += "&layout=" + gadgetLayout;
    postData += "&action=saveOrUpdate";
	postData = replaceAll(postData, "+", "%2B");
//	    alert("postData = " + postData);
	$.ajax({  
	  type: "POST",  
	  url: "/ajax/composites.php",  
	  data: postData,  
	  success: function(txt) { 
		  // check for error
		  var status = ajaxGetParam(txt, "status");
		  if (status == "error") {
			  $(_this).setErrorForFields(txt, infoBox);
		  }
		  if (status == "success") {
			  $(_this).refreshCompositeTable(_domId, _view, _model, _gadgetName, _gadgetLayout);
			  $(_this).resetErrorForFields(txt, infoBox);
			  if (typeof(callback) != "undefined") {		  
				  callback(txt);
			  }
		  }
	  }  
	});  		
	$(_this).refreshGadget(view, model, gadgetName, $("#gadget_search_"+gadgetName).val());
};

$.fn.getSaveCompositeData = function() {
	$.fn.getSaveCompositeData.data = "";
	this.each(function() {
		var type = this.type, tag = this.tagName.toLowerCase();
		var name = this.name;
		if (tag == 'div') {
			$(':input', this).getSaveCompositeData();
			return;
		}
		if (tag == 'form') {
			$(':input', this).getSaveCompositeData();
			return;
		}
		if (tag == 'tr') {
			$(':input', this).getSaveCompositeData();
			return;
		}
		if (type == 'text' || type == 'password' || tag == 'textarea' || type == 'hidden')
			$.fn.getSaveCompositeData.data += "&" + name + "=" + this.value;
		else if (type == 'checkbox' || type == 'radio')
			$.fn.getSaveCompositeData.data += "&" + name + "=" + $(this).is(':checked');
		else if (tag == 'select')
			$.fn.getSaveCompositeData.data += "&" + name + "=" + this.value;
	});
	if (typeof($.fn.getSaveCompositeData.data) != "undefined") {
		return $.fn.getSaveCompositeData.data;
	}
	return "";
};

$.fn.deleteComposite = function(domId, compositeID, view, model, gadgetName, gadgetLayout, infoBox, callback) {
	var _this = $(this);
	var _domId = domId;
	var _view = view;
	var _model = model;
	var _gadgetName = gadgetName;
	var _gadgetLayout = gadgetLayout;
	var postData = "ID=" + compositeID;
	postData += "&view=" + view + "&model=" + model + "&gadget=" + gadgetName;
    postData += "&layout=" + gadgetLayout;
    postData += "&action=deleteComposite";
	$.ajax({  
	  type: "POST",  
	  url: "/ajax/composites.php",  
	  data: postData,  
	  success: function(txt) { 
		  // check for error
		  var status = ajaxGetParam(txt, "status");
		  if (status == "error") {
			  $(_this).setErrorForFields(txt, infoBox);
		  }
		  if (status == "success") {
			  $(_this).refreshCompositeTable(_domId, _view, _model, _gadgetName, _gadgetLayout);
			  $(_this).resetErrorForFields(txt, infoBox);
			  if (typeof(callback) != "undefined") {
				  callback(txt);
			  }
		  }
	  }  
	});  		
	$(_this).refreshGadget(view, model, gadgetName, $("#gadget_search_"+gadgetName).val());
};

