
var http = false;

if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
}

//Perform an AJAX call to the server with a callback function
function ajax_call(urlstr,callback,method,error_callback) {
		var http_obj = false;
		if(navigator.appName == "Microsoft Internet Explorer") {
		  http_obj = new ActiveXObject("Microsoft.XMLHTTP");
		} else {
		  http_obj = new XMLHttpRequest();
		}

		http_obj.abort();
		http_obj.open(method, urlstr, true);
		http_obj.onreadystatechange=function() {
			if(http_obj.readyState == 4 && http_obj.status==200) {
						if (http_obj.responseText){
                                                    callback(http_obj.responseText);
						}
			} else {
			if (error_callback!=null)
				error_callback(http_obj.status);
			}
		};
		http_obj.send(null);						
}

function show_login(main_url,apikey,auth_token) {
	if(navigator.appName == "Microsoft Internet Explorer") 
	 	window.open(main_url+'/widget_login.php?src=api_test_tool&api_key='+apikey+'&auth_token='+auth_token);
	  else 
	 	window.open(main_url+'/widget_login.php?src=api_test_tool&api_key='+apikey+'&auth_token='+auth_token,'height=250,width=400,resizable=true');
	 
}

function load_view(viewname,divname,param) {
	var callback=function(response) {
		document.getElementById(divname).innerHTML=response;
	}
	var urlstr = "";
	if (param!='') 
		urlstr = "api_test_views/"+viewname+".php?" + param;
	else
		urlstr = "api_test_views/"+viewname+".php";
	ajax_call(urlstr,callback,"GET",null);
}

//called when the page starts
function page_onload() {
	load_view('login','widget_login','');

}

//Reloads the login page 
function reload_login() {
	apikey = document.getElementById('api_key').value;
	secret = document.getElementById('secret').value;
	load_view('login','widget_login','api_key='+apikey+'&secret='+secret);
}

//Events when the Login button is clicked.
function widget_login(main_url) {

	apikey = document.getElementById('api_key').value;
	secret = document.getElementById('secret').value;
	auth_token =  document.getElementById('auth_token').value;
	state = document.getElementById('state').value;
	
	if (state=="session") {
		var urlstr = "api_test_ajax.php?func=get_session&api_key=" + apikey+ "&secret=" + secret+"&auth_token="+auth_token;
		var callback=function(response) {
		      var myObject = eval("("+response+")");
			  var result = myObject.result;
			  var session = myObject.session;
			  if (result=='ok') {
				load_view('logout','widget_login','api_key='+apikey+'&secret='+secret);
				load_view('select','method_selection','');
				
				document.getElementById('hidden_session').value = session;
				document.getElementById('hidden_apikey').value = apikey;
				document.getElementById('hidden_secret').value = secret;				
				
				//enable the method and build request fields
				document.getElementById('build_request').disabled=false;
			  } else {
			  	alert("Cannot obtain session. You must first login into the widget login page");
			  }							
		}
		ajax_call(urlstr,callback,"GET",null);
	} else {
		//get the auth token
		var auth_token;
		var urlstr = "api_test_ajax.php?func=get_auth&api_key=" + apikey+ "&secret=" + secret;
		var callback=function(response) {
		      var myObject = eval("("+response+")");
		      var result = myObject.result;
				auth_token = myObject.token;
				if (result=='ok') {
					document.getElementById('auth_token').value = auth_token;
					show_login(main_url,apikey,auth_token);
			  		load_view('widgetlogin','widget_login','api_key='+apikey+'&secret='+secret);
				  	//var popup_window = window.open('php/testclient.php');
				  	document.getElementById('login').value="Click here after Login";				  	
			  	} else {
			  		alert("Unable to obtain auth token. Please make sure that the API key and secret is correct.");
			  	}
		}

		ajax_call(urlstr,callback,"GET",null);
  	}
}

function get_method_details(method) {
	load_view(method,'method_specific','');
	//Added so that the send button is recoverable even when there is
	//a send failure before
	document.getElementById('progress_indicator').innerHTML = '';
}

function submit_request() {
	var myform = document.getElementById('api_request');
	myform.target="response";
   var ifdoc = document.getElementById('response');
   var doc = ifdoc.contentDocument;
   if (doc == undefined || doc == null)
      doc = ifdoc.contentWindow.document;
   var prev_ctt = doc.all[0].innerHTML;
   try {
      var prev_elts = doc.getElementsByTagName('pre');
      var prev_response = prev_elts[0].innerHTML;
      var myObject = eval("("+prev_response+")");
      if ( myObject.auth != undefined ) {
         document.getElementById('hidden_auth').value = myObject.auth;
      }
      if ( myObject.device_id != undefined ) {
         document.getElementById('hidden_device_id').value = myObject.device_id;
      }
   } catch (e) {
   }
   document.getElementById('progress_indicator').innerHTML='<img src="ajax-loader.gif">';
   myform.submit();
}

function widget_logout() {
	//enable the method and build request fields
	document.getElementById('method_selection').innerHTML="";
	document.getElementById('method_specific').innerHTML="";
	document.getElementById('build_request').disabled=true;
	document.getElementById('hidden_session').value = "";
				document.getElementById('hidden_apikey').value = "";
				document.getElementById('hidden_secret').value = "";
	load_view('login','widget_login','');
}
