if (!window.FB) { var FB = {}; }
if (!window.FB.DY) { FB.DY = { "Util" : {} }; }

FB.DY.Util.ask_permissions = function(permissions, callback, options) {
	if (!options) { options = {} };
	FB.Connect.showPermissionDialog(
    	permissions.join(","), 
      	function(data) {
    		if (data == "" || data == false || data == "false") { 
    			if (options.required) {
					FB.DY.Util.ask_permissions(permissions, callback, options);
				}
				return;
    		}
			for (var i = 0; i< permissions.length; i++) {
				if (data.search(permissions[i]) == -1) {
					if (options.required) {
						FB.DY.Util.ask_permissions([permissions[i]], callback, options);
						return;
					}
				}
			}
          	callback.apply(window);
      	});
}

FB.DY.Util.save_permissions = function(session, callback) {
	var UID = session.uid;
	FB.Facebook.apiClient.fql_query("SELECT publish_stream, read_stream, email, read_mailbox, offline_access, create_event, rsvp_event, sms FROM permissions WHERE uid = " + UID, 
		function(result, exception) {
			if (exception == null) {
				session.perms = result[0];
		    	callback.apply(window);
			}else{
				alert(exception);
			}
		}
   	);
}
