api = {}
host = location.protocol + "//" + location.host + "/";

api.update_band_data = function(band_id,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{band:JSON.stringify(band_data)},
		url: host + "lyrics/profile/" + band_id + "/",
		success: success_callback,
		error: error_callback
	});
}

api.update_label_data = function(label_id,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{label:JSON.stringify(label_data)},
		url: host + "lyrics/label/" + label_id + "/",
		success: success_callback,
		error: error_callback
	});
}

api.update_gig_data = function(gig_id,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{gig:JSON.stringify(gig_data)},
		url: host + "lyrics/" + gig_id + "/",
		success: success_callback,
		error: error_callback
	});
}

api.add_band_to_label = function(label_id, success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{new_band:JSON.stringify(new_band)},
		url: host + label_id + "/add_band/",
		success: success_callback,
		error: error_callback
	});
}

api.update_css = function(id,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data: {"theme":JSON.stringify(all_css), "theme_id": theme_id || "theme"},
		url: host + id + "/theme/",
		success: success_callback,
		error: error_callback
	});
}

api.update_content = function(id,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data: {"content":JSON.stringify(ui_content), "theme_id": theme_id || "theme"},
		url: host + id + "/content/",
		success: success_callback,
		error: error_callback
	});
}

api.ajax_render = function(id,template,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"GET",
		data: {"template":template},
		url: host + "ajax_render/" + id + "/",
		success: success_callback,
		error: error_callback
	});
}

api.update_order = function(id,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data: {"order":JSON.stringify(ui_order), "theme_id": theme_id || "theme"},
		url: host + id + "/order/",
		success: success_callback,
		error: error_callback
	});
}

api.update_band_theme = function(band_id,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data: {"theme":JSON.stringify(theme)},
		url: host + band_id + "/theme/",
		success: success_callback,
		error: error_callback
	});
}

// SONG methods
api.create_song = function(success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{song:JSON.stringify(song)},
		url: host + "lyrics/add_song/",
		success: success_callback,
		error: error_callback
	});
}

api.update_song = function(song_id,song_data,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{song:JSON.stringify(song_data)},
		url: host + "lyrics/songs/" + song_id + "/",//location.href,
		success: success_callback,
		error: error_callback
	});
}

api.delete_song = function(song_id,song_data,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{song:JSON.stringify(song_data)},
		url: host + "lyrics/songs/" + song_id + "/:delete/",
		success: success_callback,
		error: error_callback
	});
}


// GIG methods
api.update_gig = function(gig_id,the_data,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{data:JSON.stringify(the_data)},
		url: host + "lyrics/" + gig_id + "/",
		success: success_callback,
		error: error_callback
	});
}

api.create_gig_website = function(gig_url,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"POST",
		data:{gig_data:JSON.stringify(gig_data)},
		url: host + "lyrics/create_gig_website/" + gig_url + "/",
		success: success_callback,
		error: error_callback
	});
}

api.reset_cache = function(resource, success_callback){
	$.ajax({
		type:"GET",
		url: host + resource + "/reset_cache",
		success: success_callback
	});
}

api.request_customization = function(success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"GET",
		url: host +  "request_customization/" + username,
		success: success_callback,
		error: error_callback
	});
}

api.search_google_images = function(search_term, callback){
	var handleSuccess = function(response){
		callback(response);
	}
	$.ajax({
		type:"GET",
		url: host + "google_images/" + search_term,
		success:handleSuccess
	});
}

// checks if the url is already taken
api.is_url_ok = function(url,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"GET",
		data:{url:url},
		url: host +  "is_url_available/",
		success: success_callback,
		error: error_callback
	});
}

api.get_user_nonce = function(user,success_callback,error_callback){
	success_callback = success_callback || function(){};
	error_callback = error_callback || function(){};
	$.ajax({
		type:"GET",
		data:{user:user},
		url: host +  "nonce/",
		success: success_callback,
		error: error_callback
	});
}

api.get_ui_state = function(success_callback){
	var error_callback = function(){};
	$.ajax({
		type:"GET",
		url: host +  "ui_state/",
		success: success_callback,
		error: error_callback
	});
}

api.update_ui_state = function(){
	var success_callback = function(){};
	var error_callback = function(){};
	$.ajax({
		type:"POST",
		data: {ui_state: JSON.stringify(ui_state)},
		url: host +  "ui_state/",
		success: success_callback,
		error: error_callback
	});
}

api.clear_ui_state = function(){
	var success_callback = function(){location.href = location.href};
	var error_callback = function(){};
	$.ajax({
		type:"POST",
		url: host +  "clear_ui_state/",
		success: success_callback,
		error: error_callback
	});
}

api.generate_random_id = function(salt){
	var my_date = new Date();
	return hex_md5(((salt != null) ? salt : "") + my_date.getTime());
}