var sprintSandBoxAPIURL = "http://sprintdevelopersandbox.com/devSandbox/resources/";

var resourceParams = {
	"location" : ["mdn"],
	"sms": ["mdn", "senderName", "message"],
	"presence": ["mdn"],
	"smsStatus": ["tranno"]
}

$(document).ready(function(){
	$("#query").setup();
	$("#response").val("");

	$(".refreshQuery").
		keyup(function(){$("#query").setup();}).
		change(function(){$("#query").setup();});
	
	$("#send").click(function(){
		$("#response").val("sending...");
	
		$.ajax({
			type: "GET",
			url: $("#resource").buildUrl(),
			data: $.buildQueryString({callback:false}),
			dataType: "text",
			success: function(data){
				$("#response").val(data);
			},
			error: function(data){ 
				$("#response").val("Error Unable to Send");
			}
		});
	});
});   

$.fn.setup = function(){
	$(this).val($("#resource").buildUrl() + "?" +
		 $.buildQueryString({callback:true}));
}

$.fn.buildUrl = function(){
	var query_url = sprintSandBoxAPIURL;
	query_url += $(this).val();
	query_url += "." + $("#format").getFormat();

	return query_url;
}

$.buildQueryString = function(arg){
	var query_string = [];

	if($("#format").isJSONP() && arg.callback)
		query_string.push("callback=" + "jsonp" + parseInt(Math.random() * 10000));

	var params = $("#resource").requiredParams();
	query_string.push("key=YOUR_API_KEY");
	$.each(params,function(i){
		var value = "";
		if(params[i].match("message")){
			value = escape($("#" + params[i]).val());
		} else if(params[i].match("senderName")){
			value = "console";
		} else if(params[i].match("mdn")){
			value = $("#" + params[i]).text();
		} else {
			value = $("#" + params[i]).val();
		}
		query_string.push(params[i] + "=" + value);
	});
	return query_string.join("&");
}

$.fn.urlJSON = function(){
	var query_url = sprintSandBoxAPIURL;
	query_url += $(this).val();
	query_url += ".json";
	return query_url;
}

$.fn.getFormat = function(){
	var format = $(this).val();
	if(format.match("jsonp"))
		format = "json";
	return format;
}

$.fn.isJSONP = function(){
	return $(this).val().match("jsonp");
}

$.fn.requiredParams = function(){
	return resourceParams[$(this).val()];
}