// Savoy.Ajax Javascript Class.
var Savoy = new Object();

//var doc;

// Our main object constructor
Savoy.Ajax = function()
{
	this.ajax_api = "atrlibs_ajax_api.php";		// Specify main API script.
}

// Debugging
Savoy.Ajax.prototype.GetDataDebug = function(str,a_callback)
{
	location = this.ajax_api + "?" + str;
}

// Request data from server
Savoy.Ajax.prototype.GetData = function(str,a_callback)
{
	try
	{
	  callback = a_callback;
	  if (typeof window.ActiveXObject != 'undefined' ) 
	  { 
	      doc = new ActiveXObject("Microsoft.XMLHTTP"); 
	      doc.onreadystatechange = this.DisplayState;
	  } 
	  else 
	  { 
	      doc = new XMLHttpRequest(); 
	      doc.onload = this.DisplayState;
	  }
	  
	  //doc.open( "POST", this.ajax_api, true );		// asynchronous 
	  doc.open( "POST", this.ajax_api, false ); 			// synchronous
	  doc.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); 
	  doc.send(str); 
		
	  return doc;
	}
	catch (e)
	{
		window.location = 'noactivex.php';
	}
}


// The Ajax response callback
Savoy.Ajax.prototype.DisplayState = function()
{
    if(doc.readyState == 4)
		{
        // only if "OK"
        if(doc.status == 200)
				{
					var reply = doc.responseXML;
					var err = reply.getElementsByTagName('error')[0].firstChild.nodeValue;
					if (err=='10')
					{
						var msg = reply.getElementsByTagName('message')[0].firstChild.nodeValue;
						alert(msg);
					}
					else
						callback(reply);
        }
        else
				{
            alert("There was a problem retrieving the data:\n" +
            		doc.statusText);
        }
    }
}

// Obtain the values for a specified form
Savoy.Ajax.prototype.GetFormValues = function(fobj) 
{
   var str = ""; 
   var valueArr = null; 
   var val = ""; 
   var cmd = ""; 
   for(var i = 0;i < fobj.elements.length;i++) 
   { 
       switch(fobj.elements[i].type) 
       { 
           case "text": 
					 case "hidden":
					 case "password":
					 case "file":
					 case "button":
           case "textarea":
                str += fobj.elements[i].name + 
                "=" + encodeURIComponent(fobj.elements[i].value) + "&";
                 break; 
								  
           case "select-one": 
                str += fobj.elements[i].name + 
                "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&"; 
                break; 
       }
			 //alert("getFormValues: " + str);
   } 
   str = str.substr(0,(str.length - 1)); 
	 str = encodeURI(str);
	 //alert("getFormValues: " + str);
   return str; 
}

// Ask server to change user mode
Savoy.Ajax.prototype.SwitchUserMode = function(mode, callback)
{
  this.GetData("rid=SwitchUserMode", callback);
}

// Add to page stack data
Savoy.Ajax.prototype.AddToPageStack = function(data, callback)
{
	//alert('Savoy.Ajax.prototype.AddToPageStack');
	this.GetData("rid=AddToPageStack&page_ref_data=" + data, callback); 
}
// Remove data from page stack
Savoy.Ajax.prototype.RemoveFromPageStack = function(callback)
{
	this.GetData("rid=RemoveFromPageStack", callback); 
}


// General server request
Savoy.Ajax.prototype.ServerRequest = function(rid, data, callback)
{
	var s = "rid=" + rid + "&" + data;
	//alert(s);
	this.GetData(s, callback);
}


function MyBrowser() {
  var ua, s, i;
  ua = navigator.userAgent;
	//alert(ua);

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0)
    return "IE";

  s = "Firefox";
  if ((i = ua.indexOf(s)) >= 0)
    return "FF";

  s = "Chrome";
  if ((i = ua.indexOf(s)) >= 0)
    return "CH";
}

var myBrowser = MyBrowser();








