var image_name = '';
var image_description = '';
var lat = 0;
var lon = 0;
var add_image_id = 0;
var loc = 0;

function init() {
	$("file_upload_form").onsubmit=function() {
		$("file_upload_form").target = "upload_target";
		
		// This works great!!!
		var iframe = $("upload_target");
		$("upload_form").hide();
		$("loader").show();
		if (iframe.addEventListener) {
			iframe.addEventListener("load", uploadDone, false); // firefox
		} else if (iframe.attachEvent) {
			iframe.attachEvent("onload", uploadDone); // IE
		}		
		//$("upload_target").onload = uploadDone;
	}
}

function uploadDone() {
	$("submitdescription").value = $("l_update").name;
	
	var ret = frames['upload_target'].document.getElementsByTagName("body")[0].innerHTML;
	//$("output").innerHTML = ret;
	var data = eval("("+ ret +")");
	if(data.success) { 
		image_name = data.file_name;
		var ratio = data.ratio;
		var im_width = data.im_width;
		var im_height = data.im_height;
		var image_action = 'add';
		var place_id = '-1';
		if ($("place_id").value){
			place_id = $("place_id").value;
		} 
		
		loc = data.loc;
		if(loc==1) {
			lat = Number(data.lat);
			lon = Number(data.lon);
		}
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {filename: image_name, description: image_description, lat: lat, lon: lon, ratio: ratio, width: im_width, height: im_height, action: image_action, place_id: place_id},
			onSuccess: function(transport) {
				add_image_id = transport.responseText;
				if (add_image_id > 0) {
					$("preview").innerHTML = "<img src='" + data.abs_file_name + "' alt='preview' /><br/>";
					$("preview", "describe").invoke("show");
					$("loader", "upload_form").invoke("hide");
				} else {
					$("loader").hide();
					$("upload_form").show();					
					alert($("something_wrong").value);
				}
			}
		});	
	} else {
		$("loader").hide();
		$("upload_form").show();					
		alert($("jpeg").value);
	}
}

function submdescription() {
	image_description = $("img_description").value;
	if (!image_description) {
		alert($("short_descr").value);
	} else {
		var image_action = 'describe';
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: add_image_id, description: image_description, action: image_action},
			onSuccess: function(transport) {
				$("submitdescription").value = $("l_update").value;
				//$("output").innerHTML = transport.responseText;
				if (loc == 1) {
					$("location_lat").value = lat;
					$("location_lng").value = lon;
					$("zoomlevel").value = 16;
					//submdata();	
					if(! $("locate").visible()) {
						$("submitlocation", "locate").invoke("show");
						initmaps("map", "location");
					}
					
				} else {
					if(! $("locate").visible()) {
						$("submitlocation", "locate").invoke("show");
						initmaps("map", "location");
					}
				}
			}
		});	
	}		
}

function submlocation() {
	lat = $("location_lat").value;
	lon = $("location_lng").value;
	if (!lat || !lon) {
		alert($("please_localise").value);
	} else {
		var image_action = 'location_activate';
		$("describe", "locate", "submitlocation").invoke("hide");
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: add_image_id, lat: lat, lon: lon, action: image_action},
			onSuccess: function(transport) {
				$("preview_list").insert(transport.responseText, {position: 'top'});
			}
		});	
		
		$("preview").innerHTML = "";
		$("img_description").value = "";
		$("file").value = "";
		$("upload_form").show();
	}
}

function editlocation() {
	var image_action = 'location_edit';
	lat = $("location_lat").value;
	lon = $("location_lng").value;
	add_image_id = $("id").value;
	var ajaxrequ = new Ajax.Request("submit.php", {
		method: 'post', parameters: {id: add_image_id, lat: lat, lon: lon, action: image_action},
		onSuccess: function(transport) {
			alert($("location_changed").value);
		}
	});	
}

function delete_photo(image_id) {
	if (confirm($("im_del").value)){
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: image_id, action: 'delete_image'},
			onSuccess: function(transport) {
				//$("output").innerHTML = transport.responseText;
				if(transport.responseText == '1'){ 
					if ($("is_upload")) {
						$("preview_" + image_id).remove(); 
					} else {
						window.location.reload();
					}
				}
			}
		});
	}
}

function leave_place(place_id) {
	if (confirm($("pl_leave").value)){
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: place_id, action: 'delete_place'},
			onSuccess: function(transport) {
				//$("output").innerHTML = transport.responseText;
				if(transport.responseText == '1'){ //$("preview_" + image_id).remove(); 
				window.location.reload(); }
			}
		});
	}
}

function delete_place(place_id) {
	if (confirm($("pl_del").value)){
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: place_id, action: 'delete_place'},
			onSuccess: function(transport) {
				//$("output").innerHTML = transport.responseText;
				if(transport.responseText == '1'){ //$("preview_" + image_id).remove(); 
				window.location.reload(); }
			}
		});
	}
}

function join_place(place_id) {
	if (confirm($("pl_join").value)){
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: place_id, action: 'join_place'},
			onSuccess: function(transport) {
				//$("output").innerHTML = transport.responseText;
				if(transport.responseText == '1'){ //$("preview_" + image_id).remove(); 
				window.location.reload(); }
			}
		});
	}
}

function edit_description(image_id) {
	var address = "description_" + image_id;
	var old_description = $(address).innerHTML;
	$(address).innerHTML = "<br /><textarea class='inputtext' id='img_description_" + image_id + "' rows='5' cols='70'>" + old_description + "</textarea><br />";
	var subm = $("submit_txt").value;
	$("descript_bt_" + image_id).innerHTML = "<input type='button' name='subm_edit_description' id='subm_edit_description' value='" + subm + "' onclick='subm_edit_description(\""+image_id+"\")' />"
}

function edit_place_description(place_id) {
	var address = "description_" + place_id;
	var old_description = $(address).innerHTML;
	$(address).innerHTML = "<br /><textarea class='inputtext' id='img_description_" + place_id + "' rows='5' cols='70'>" + old_description + "</textarea><br />";
	var subm = $("submit_txt").value;
	$("descript_bt_" + place_id).innerHTML = "<input type='button' name='subm_edit_description' id='subm_edit_description' value='" + subm + "' onclick='subm_pl_edit_description(\""+place_id+"\")' />"
}

function subm_edit_description(image_id) {
	var address = "description_" + image_id;
	var new_description = $("img_description_" + image_id).value;
	// TODO Update db
	if (!new_description) {
		alert($("please_describe").value);
	} else {
		var image_action = 'describe';
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: image_id, description: new_description, action: image_action},
			onSuccess: function(transport) {
				$(address).innerHTML = new_description;
				$("descript_bt_" + image_id).innerHTML = "<a href='#' onclick='edit_description(\"" + image_id + "\")'>Edit</a>";
			}
		});	
	}
}

function subm_pl_edit_description(place_id) {
	var address = "description_" + place_id;
	var new_description = $("img_description_" + place_id).value;
	// TODO Update db
	if (!new_description) {
		alert($("please_describe").value);
	} else {
		var image_action = 'pl_describe';
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: place_id, description: new_description, action: image_action},
			onSuccess: function(transport) {
				$(address).innerHTML = new_description;
				$("descript_bt_" + place_id).innerHTML = "<a href='#' onclick='edit_place_description(\"" + place_id + "\")'>Edit</a>";
			}
		});	
	}
}

function edit_location(image_id, lat, lon) {
	$("map_control").innerHTML = '';
	$("locate").show();
	initmaps("map","location_" + image_id,lat,lon);
}

function save_location(image_id){
	//$("output").innerHTML = $("location_" + image_id).value;
	var new_location = $("location_" + image_id).value;
	// TODO Update db
	$("locate_" + image_id).hide();
}

function set_place(evt) {
    // equalize W3C/IE event models to get event object
    evt = (evt) ? evt : ((window.event) ? window.event : null);
    if (evt) {
        // equalize W3C/IE models to get event target reference
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (elem) {
            try {
                if (elem.selectedIndex > 0) {
                    var val = elem.options[elem.selectedIndex].value;
					var ajaxrequ = new Ajax.Request("submit.php", {
						method: 'post', parameters: {im_pl: val, action: "image2place"},
						onSuccess: function(transport) {
			                
							//$(address).innerHTML = new_description;
							//$("descript_bt_" + image_id).innerHTML = "<a href='#' onclick='edit_description(\"" + image_id + "\")'>Edit</a>";
						}
					});
                }	
            }
            catch(e) {
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
                alert("Unable to get XML data:\n" + msg);
                return;
            }
        }
    }
}

function submcomment() {
	var comment = $("commdesc").value;
	var genre = $("genre").value;
	var _id = $("genre_id").value;
	if (comment && genre && _id) {
		var image_action = 'add_comment';
		var ajaxrequ = new Ajax.Request("submit.php", {
			method: 'post', parameters: {id: _id, genre: genre, comment: comment, action: image_action},
			onSuccess: function(transport) {
				$("preview_list").insert(transport.responseText, {position: 'top'});
			}
		});	
		$("commdesc").value = "";
	}
}

function delete_comment(comment_id) {
	var ajaxrequ = new Ajax.Request("submit.php", {
		method: 'post', parameters: {id: comment_id, action: 'delete_comment'},
		onSuccess: function(transport) {
			if(transport.responseText == '1'){ 
				$("comment_" + comment_id).remove(); 
				//$("comment_" + comment_id).innerHTML=transport.responseText; 
			}
		}
	});
}

window.onload=init;
