if (typeof(LocalHipster) == "undefined") {
	var LocalHipster = {
		root_url: "http://thriftyhipster.com/widget/",
		social_links_url: "http://thriftyhipster.com/widget/social",
		widget_types: ["happyhour", "sociallinks", "events", "events_wide", "menu"]
	}
}

LocalHipster.BuildIFrame = function (url, options) {
	var params = LocalHipster.obj_to_params("options", options);

	var iframe = document.createElement("iframe");
	iframe.width = options["width"] + "px";
	iframe.height = options["height"] + "px";
	iframe.src = url + "?"+params;
	iframe.style.borderWidth = "0px";
	iframe.style.overflow = "hidden";
	iframe.frameBorder = 0;

	var div = document.createElement("div");
	div.appendChild(iframe);

	return div;
}

LocalHipster.extend = function(destination, source) {
	for (var property in source) {
		var obj = source[property];
		if (obj != null) {
			destination[property] = obj;
		}else if(typeof(obj) == "object") {
			destination[property] = LocalHipster.extend(destination[property], obj);
		}
	}

	return destination;
}

LocalHipster.obj_to_params = function (namespace, master_object) {
	var out_params = [];

	for (var property in master_object) {
		var object = master_object[property];

		var key = namespace+"["+property+"]";
		if (typeof(object) == "object") {
			out_params.push(LocalHipster.obj_to_params(key, object));
		} else {
			out_params.push(key+"="+escape(object));
		}
	}

	return out_params.join("&");
}

LocalHipster.includeArray = function (base, compare) {
	var include = false;

	if (typeof(compare) != "object") {
		compare = [compare];
	}

	for (var i=0; i < compare.length; i++) {
		include = LocalHipster.include(base,compare[i]);
	}

	return include;
}

LocalHipster.include = function(array, object) {
	var include = false;

	for (var i=0; i < array.length; i++) {
		if (array[i] == object) {
			include = true;
			break;
		}
	}

	return include;
};

LocalHipster.Widget = function (options) {
	if (options == null || options["type"] == null || options["venue"] == null || !LocalHipster.includeArray(LocalHipster.widget_types, options["type"])) {
		document.write("You must specify valid options for widget.");
		return;
	}
	var default_options = {
		type: null,
		width: 250,
		height: 300,
		theme: { shell: {}, datestimes: {} }
	}

	LocalHipster.extend(default_options, options);

	if (LocalHipster.include(default_options["type"], "sociallinks")) {
		var url = LocalHipster.social_links_url;
	} else {
		var url = LocalHipster.root_url;
	}
	document.write(LocalHipster.BuildIFrame(url, default_options).innerHTML);
}

