/*
 * Copyright 2007 Piet Jonas. All rights reserved.
 */

var sharing = new Sharing();

function Sharing() {
}

Sharing.loading = "BusyLoading";

Sharing.loadPage = function(callback, desktop, id, password) {
  var params = new Object();
  params.desktop = desktop;
  params.id = id;
  if (password) {
    params.password = password;
  }
  doRequest(params, "getPage", function(request) {
    if (request.status == 200) {
      var page = null;
      var result = null;
      var error = null;
      var status = eval(request.responseText);
      callback(page, result, error);
    }
    else {
      callback(null, null, "Connection error");
    }  
  }, Sharing.loading);
}

Sharing.loadSharedPage = function(callback, desktop) {
  var params = new Object();
  params.desktop = desktop;
  doRequest(params, "getShared", function(request) {
    if (request.status == 200) {
      var page = null;
      var error = null;
      var status = eval(request.responseText);
      callback(page, status, error);
    }
    else {
      callback(null, "success", "Connection error");
    }  
  }, Sharing.loading);
}

Sharing.updateSharedPage = function(callback, page) {
  var request = createXMLHttpRequest();
  var content = "command=updateShared";
  content += "&desktop=" + encodeURIComponent(page.desktop);
  content += "&title=" + encodeURIComponent(page.title);
  content += "&description=" + encodeURIComponent(page.description);
  content += "&status=" + encodeURIComponent(page.status);
  if (page.password && page.password.length > 0) {
    content += "&password=" + encodeURIComponent(page.password);
  }  
  request.open("POST", "commands", true);
  request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  request.onreadystatechange = function() {
	  if (request.readyState == 4) {
      if (request.status == 200) {
        var page = null;
        var error = null;
        var status = eval(request.responseText);
        callback(page, status, error);
      }
      else {
        callback(null, "success", "Connection error");
      }  	    
	  }  
  }  
  request.send(content);  
}       

Sharing.removeSharedPage = function(callback, page) {
  var params = new Object();
  params.desktop = page.desktop;
  doRequest(params, "removeShared", function(request) {
    if (request.status == 200) {
      var error = null;
      var status = eval(request.responseText);
      callback(null, status, error);
    }
    else {
      callback(null, "success", "Connection error");
    }  
  }, Sharing.loading);
}

Sharing.loadPages = function(callback, category) {
  var params = new Object();
  params.category = category;
  doRequest(params, "getPages", function(request) {
    if (request.status == 200) {
      var pages = null;
      var error = null;
      var status = eval(request.responseText);
      callback(pages, error);
    }
    else {
      callback(null, "Connection error");
    }  
  }, Sharing.loading);
}

Sharing.searchPages = function(callback, search) {
  var params = new Object();
  params.search = search;
  doRequest(params, "searchPages", function(request) {
    if (request.status == 200) {
      var pages = null;
      var error = null;
      var status = eval(request.responseText);
      callback(pages, error);
    }
    else {
      callback(null, "Connection error");
    }  
  }, Sharing.loading);
}

