geogoerFunc.prototype.embed = function(object_id, type, options)
{
	return new GeogoerEmbed(object_id, type, options);
}
function GeogoerEmbed(object_id, type, options){
	this.options = {};
	this.geogoer_site_url = "http://localhost/gg/";
	this.object_id = object_id;
	this.iframe_id = this.object_id + "_geogoer_frame";
	this.type = type;
	this.setOptions(options);
	if(this.options.embed_height){ height = this.options.embed_height; }else{ height = 300;}
	if(this.options.embed_width){ width = this.options.embed_width; }else{ width = 200;}
	document.getElementById(this.object_id).innerHTML = '<iframe src="" id="' + this.iframe_id + '" onload="GeogoerEmbed.prototype.iframeOnLoad(\'' + this.iframe_id + '\');" name="' + this.iframe_id + '_name" style="width: ' + width + 'px; height: ' + height + 'px" frameborder="0" scrolling="no"></iframe>';
}
GeogoerEmbed.prototype.formToArray = function(elements)
{
	var result = {};
	for(var i = 0; i < elements.length; i++){
		switch(elements[i].type){
			case "text" : 
				if(elements[i].value){
					result[elements[i].name] = {};
					result[elements[i].name].name = elements[i].name;
					if(elements[i].name == "css"){
						result[elements[i].name].value = this.urlEncode(elements[i].value); //if its a css format
					}else{
						result[elements[i].name].value = elements[i].value;
					}
					result[elements[i].name].type = elements[i].type;
				}
			break;
			case "hidden" : 
				if(elements[i].value){
					result[elements[i].name] = {};
					result[elements[i].name].name = elements[i].name;
					result[elements[i].name].value = elements[i].value;
					result[elements[i].name].type = elements[i].type;
				}
			break;
			case "textarea" : 
				if(elements[i].value){
					result[elements[i].name] = {};
					result[elements[i].name].name = elements[i].name;
					result[elements[i].name].value = elements[i].value;
					result[elements[i].name].type = elements[i].type;
				}
			break;
			case "radio" : 
				if(elements[i].checked == true && elements[i].value){
					result[elements[i].name] = {};
					result[elements[i].name].name = elements[i].name;
					result[elements[i].name].value = elements[i].value;
					result[elements[i].name].type = elements[i].type;
				}
			break;
			case "select-one" : 
				if(elements[i].options[elements[i].selectedIndex].value){
					result[elements[i].name] = {};
					result[elements[i].name].name = elements[i].name;
					result[elements[i].name].value = elements[i].options[elements[i].selectedIndex].value;
					result[elements[i].name].type = elements[i].type;
				}
			break;
		}
	} 
	return result;
}
GeogoerEmbed.prototype.superarrayToGET = function(object)
{
	str = "";
	for(var i in object){
		str += "&" + object[i].name + "=" + object[i].value;
	}
	return str;
}
GeogoerEmbed.prototype.urlEncode = function(str)
{
	return escape(str).replace('+', '%2B').replace('%20', '+').replace('*', '%2A').replace('/', '%2F').replace('@', '%40');
}
GeogoerEmbed.prototype.setOptions = function(object)
{
	for(var i in object){
		if(i != "show"){
			this.options[i] = object[i];
		}
	}
	if(object.show){
		switch(typeof(object.show)){
			case "string" : this.options.show = object.show; break;
			case "array" :
				this.options.show = "";
				for(var i in object.show){
					this.options.show += object.show[i];
				}
			break;
			case "object" :
				this.options.show = "";
				for(var i in object.show){
					this.options.show += object.show[i];
				}
			break;
		}
	}
}
GeogoerEmbed.prototype.generateUrl = function(type, post)
{
	show = this.generateShow(post);
	var url = "index.php?controller=embeds&action=" + type;
	for(i in post){
		if(i.indexOf("show[") == -1){
			url += "&" + post[i].name + "=" + post[i].value;
		}
	}
	url += "&show=" + show;
	return url;
}
GeogoerEmbed.prototype.GETToObject = function(get)
{
	var object = {};
	var params = get.split(/\&/);
	for(var j = 0; j < params.length; j++){
		var all = params[j].split(/=/);
		var left = all[0];
		var right = all[1];
		var left_parts = left.split(/\[/);
		var container = object;
		for(var i = 0; i < left_parts.length - 1; i++){	
			var identifier = left_parts[i].replace(/\]$/, "");
			if(!container[identifier]){
				container[identifier] = {};
			}
			container = container[identifier];
		}
		container[left_parts[left_parts.length - 1].replace(/\]$/, "")] = right;
	}
	return object;
}
GeogoerEmbed.prototype.generateShow = function(post)
{
	shower = "";
	for(show in post){
		if(show.indexOf("show[") != -1){
			shower += post[show].value;
		}
	}
	return shower;
}
GeogoerEmbed.prototype.objectToGET = function(object, name)
{
	str = "";
	for(key in object){
		if(name != "show"){
			var key_str;
			if(name){ key_str = name + "[" + key + "]";}
			else{ key_str = key; }
			switch(typeof(object[key])){
				case "string" : str += "&" + key_str + "=" + object[key]; break;
				case "number" : str += "&" + key_str + "=" + object[key]; break;
				case "boolean" : str += "&" + key_str + "=" + object[key]; break;
				case "array" : str += this.objectToGET(object[key], key_str); break;
				case "object" : str += this.objectToGET(object[key], key_str); break;
			}
		}
	}
	return str;
}
GeogoerEmbed.prototype.setTheme = function(name)
{
	this.options.geogoer_css = 1;
	this.options.geogoer_theme = name;
	
	var iframe_name = eval(this.iframe_id + "_name");
	iframe_name.document.getElementById("geogoer_theme_css").href = "css/embeds/themes/" + name + ".css";
}
GeogoerEmbed.prototype.render = function()
{
	document.getElementById(this.iframe_id).style.width = this.options.embed_width + "px";
	document.getElementById(this.iframe_id).style.height = this.options.embed_height + "px";
	url = this.geogoer_site_url + "index.php?controller=embeds&action=" + this.type;
	url += this.objectToGET(this.options);
	document.getElementById(this.iframe_id).src = url;
}
GeogoerEmbed.prototype.iframeOnLoad = function(iframe_id){ // using only staticly
	iframe_name = eval(iframe_id + "_name");
	var height = iframe_name.document.getElementById("geogoer_embed_container").offsetHeight;
	document.getElementById(iframe_id).style.height = height + "px";
	//ajax request for locationsaving
	iframe_name.save_embed_location(window.location.href);
}
GeogoerEmbed.prototype.render_code = function(object_id, json_string)
{
	str = "";
	str += '<div id="' + object_id + '"></div>';
	str += '<script type="text/javascript">';
	str += 'GEmbed = new GeogoerEmbed("' + object_id + '", "' + this.type + '", ' + json_string + ');';
	str += 'GEmbed.render();';
	str += "</script>";
	str += '<div id="embed_preview_logo_div" style="text-align: left" title="Geogoer"><a href="' + this.geogoer_site_url + '" title="Geogoer"><img src="' + this.geogoer_site_url + 'images/embeds/geogoer-logo.png" alt="Geogoer" border="0" title="Geogoer"></a></div>';
	return str;
}