/**
* icony Name Space
*/
var icony = icony || {};

/**
* GadgetPrefs Handler Class
*/
icony.GadgetPrefs = function() {};

/**
* URL for the load/save User Pref Ajax Call
*/
icony.GadgetPrefs.prototype.ajaxUrl = '/ajax/userGadgetPrefs.php';

/**
* set a Gadgets preferences
* @param integer gadget_id
* @param object prefsObject
*/
icony.GadgetPrefs.prototype.set = function(gadget_id, prefsObject) {
  var params = 'command=set&gadgetId='+gadget_id;
  $H(prefsObject).each(function(data){
    params += '&data'+encodeURIComponent('['+data.key+']')+'='+encodeURIComponent(data.value);
  });
  var request = new Ajax.Request(this.ajaxUrl, {
    method: 'post',
    postBody: params
  });
}

/**
* saves a Gadgets preferences
* @param integer gadget_id
* @param object prefsObject
*/
icony.GadgetPrefs.prototype.save = function(gadget_id, prefsObject) {
  var params = 'command=save&gadgetId='+gadget_id;
  $H(prefsObject).each(function(data){
    params += '&data'+encodeURIComponent('['+data.key+']')+'='+encodeURIComponent(data.value);
  });
  var request = new Ajax.Request(this.ajaxUrl, {
    method: 'post',
    postBody: params
  });
}

/**
* loads a Gadgets preferences
* @param integer gadget_id
*/
icony.GadgetPrefs.prototype.load = function(gadget_id) {
  var request = new Ajax.Request(this.ajaxUrl, {
    method: 'post',
    parameters: {command: 'load', gadgetId: gadget_id},
    onComplete: icony.GadgetPrefs.prototype._loadCallback.bind(this)
  });
}

/**
* internal callback function, calls a custom onLoad function
*/
icony.GadgetPrefs.prototype._loadCallback = function(transport) {
  try {
    var json = transport.responseText;
    this.onLoad(json ? eval('(' + json + ')') : null);
  }
  catch (e) {
    this.onLoad(null);
  }
}

/**
* onLoad Callback function to be used from extern
* @param object data
*/
icony.GadgetPrefs.prototype.onLoad = function(data) {
}

