var panels = ["panel_virtual_tour", "panel_information", "panel_tools", "panel_print_flyer", "panel_map", "panel_feedback"];

$(document).ready(function(){
	// TODO set apr_input and apr_value display from this
	$("#apr_slider").slider({
		max: 15,
		min: 3,
		step: .1,
		value: 5,
		slide: function(event, ui) {
			$("#apr_value").html(ui.value);
			$("input#apr_input").val(ui.value);
		}
	});
	setup_panel();
	setup_map();
	setup_ajax_form("#mortgage_calculator_form");
});

$(window).unload(function(){
	GUnload();
});

function vt_feedback_submit(url)
{
	$("div#vt_fb_message").hide();
	//get and check form
	var data = {
		"contact": ($("input#cb_vtfb_contact").attr("checked") == true ? 'True' : ''),
		"first_name": $("input#text_vtfb_firstname").val(),
		"last_name": $("input#text_vtfb_lastname").val(),
		"email": $("input#text_vtfb_email").val(),
		"phone": $("input#text_vtfb_phone").val(),
		"comment": $("textarea#textarea_vtfb_feedback").val(),
		"captcha": $("input#text_vtfb_captcha").val(),
		"fair_price": $("input[name=fair_price]:checked").val(),
		"shows_well": $("input[name=shows_well]:checked").val(),
		"desireable_location": $("input[name=desireable_location]:checked").val()
	};

	//do some client side checks
	var err = "";
	if (data["comment"].length < 1)
		err += "<ul><li>Comment is a required field.</li></ul>"
	if (data["captcha"].length < 1)
		err += "<ul><li>Your captcha answer is not correct.</li></ul>"
	if (err == "" && data["contact"] == 'True' && data["email"].length < 1 && data["phone"].length < 1)
		err += "<ul><li>Please provide an email address or a phone number if you want this agent to contact you.</li></ul>";

	if (err != "")
		vt_feedback_errors(err);
	else
	{
		$("div#vt_fb_form").hide();
		$("div#vt_fb_sending").show();	
		$.post(url,data,
			function (data){
				$("div#vt_fb_sending").hide();
				$("div#vt_fb_form").show();
				if (data == "0")
				{
					vt_feedback_success();
				}
				else
				{
					vt_feedback_errors(data);
				}
			});
	}

	return false;
}
function vt_feedback_errors(errs)
{
	$("div#vt_fb_message").html("Please correct the following errors:" + errs);
	$("div#vt_fb_message").show();
	$("form#vt_feedback_form img.captcha").attr("src", "/pub/captcha/25/150/25/30/0/captcha.png?t=" + (new Date()).getTime());
	$("input#text_vtfb_captcha").val("");
}
function vt_feedback_success()
{
	$("div#vt_fb_form").hide();
	$("div#vt_fb_success").show();
}
function vt_feedback_reset()
{
	$("input#cb_vtfb_contact").attr("checked","");
	$("input#text_vtfb_firstname").val("");
	$("input#text_vtfb_lastname").val("");
	$("input#text_vtfb_email").val("");
	$("input#text_vtfb_phone").val("");
	$("textarea#textarea_vtfb_feedback").val("");
	$("form#vt_feedback_form img.captcha").attr("src", "/pub/captcha/25/150/25/30/0/captcha.png?t=" + (new Date()).getTime());
	$("input#text_vtfb_captcha").val("");
	$("input[value=Fair]").attr("checked","checked");
	$("div#vt_fb_success").hide();
	$("div#vt_fb_message").hide();
	$("div#vt_fb_sending").hide();	
	$("div#vt_fb_form").show();
}
function vt_feedback_request_showing()
{
	$('#button_feedback').click();
	vt_feedback_reset();
	$("input#cb_vtfb_contact").attr("checked","checked");
	message = "I would like to request a showing for your listing '" + title + ".'\nPlease contact me at your convenience.";
	$("textarea#textarea_vtfb_feedback").val(message);
}

function setup_map()	{
	if (GBrowserIsCompatible()) 
	{
		//var point = new GLatLng(37.4419, -122.1419);

		var geocoder = new GClientGeocoder();

		if (geocoder)
		{

			geocoder.getLatLng(address, function(point) {

				if (!point) return;

				var map = new GMap2(document.getElementById("map"));
				map.setCenter(point, 16);
				map.addControl(new GLargeMapControl());
				map.addOverlay(new GMarker(point));

				// add streetview
				panoClient = new GStreetviewClient();
				panoClient.getNearestPanorama(point, function(panoData){
					if (panoData.code != 200){
						//alert("Server rejected with code: " + panoData.code);
						return;
					}
					var streetview_pane = document.getElementById("streetview_holder");
					myPano = new GStreetviewPanorama(streetview_pane);
					myPano.setLocationAndPOV(panoData.location.latlng);
					$("#go_streetview").css("display","block");
					streetview_hide();
				});
				$("#go_streetview").click(function(){
					streetview_show();
					return false;
				});
				$("#go_map").click(function(){
					streetview_hide();
					return false;
				});
				function streetview_show(){
					$("#streetview").css("margin-left","0");
				}
				streetview_hide = function(){
					$("#streetview").css("margin-left","-10000px");
				}

				if (mode=="unbranded")
				{
					var map2 = new GMap2(document.getElementById("vt_panel_meta"));
					map2.setCenter(point, 16);
					map2.addControl(new GSmallMapControl());
					map2.addOverlay(new GMarker(point));
				}
				
				enable_button($("#button_map"));
			});
		}
	}
}

function setup_panel(){
	$("div.subtabs>div.subtab>a").click(function() {
		var subtabs = $("div.subtabs>div.subtab");
		subtabs.removeClass("active");
		var st = $(this).parent();
		st.addClass("active");

		var subpanels = $("div.subpanels>div.subpanel");
		subpanels.removeClass("active");
		var id = st.attr('id');
		var subpanel_id = id.slice(7);
		subpanels.filter("#subpanel_"+subpanel_id).addClass("active");
	});

	$(".button:not(.unimplemented)").not("#button_map").each(function() {
		// google map button will take care of itself if everything loads ok
		enable_button($(this));
	});

	$("#button_feedback").click(vt_feedback_reset);
}

function enable_button(button)	{
	button.css("color","#FFF");
	button.click(function() {
		if (typeof(streetview_hide) == 'function') streetview_hide();
		$("div.subtabs>div.subtab>a:first").click();
		var b = $(this);
		// if this is a flash panel bring it back, else push it out
		// sharethis has a bad habit of not minding its own business regarding embed's visiblity
		if (b.hasClass("flash_virtual_tour"))
			$("#panel_virtual_tour").css("margin-left","0px");
		else
			$("#panel_virtual_tour").css("margin-left","-10000px");
		$(".button").removeClass("active");
		b.addClass("active");
		var bid = b.attr('id');
		var pid = "panel" + bid.slice(bid.indexOf("_"));
		for (var p = 0; p < panels.length; p++) {
			if (panels[p] != pid) {
				$("#"+panels[p]).css('visibility', 'hidden'); //hide();
			}
		}
		$("#"+pid).css('visibility', 'visible'); //show();
	});
}
function disable_button(button)	{
	button.unbind("click");
	button.click(function()	{ return false; });
	button.css("color","#222222");
}

function begin_video_download(url) {
	dl = $("#download");
	pw = $("#please_wait");
	vp = $("#video_progress");

	if (dl.attr("target") == "_blank")
	{
		return;
	}

	dl.css("display", "none");
	pw.css("display", "block");
	vp.css("display", "block");
	dl.unbind("click");

	var interval = null;
	interval = setInterval(function() {
		$.get(url, {}, function(res) {
			if (res !== null && res != "false")
			{
				dl.css("display", "block");
				dl.attr("href", res);
				dl.attr("target", "_blank");
				pw.css("display", "none");
				vp.css("display", "none");
				window.open(res);
				clearInterval(interval);
				$("#download").css("display", "block");
				$("#please_wait").css("display", "none");
				$("#video_progress").css("display", "none");
				$("#video_ready_iframe").attr('src', res);
			}
		});
	}, 1000*60*5);
}


function setup_ajax_form(sel)
{
	$(sel).submit(function () {

		var f = $(sel);
		var url = f.attr('action');
		var data = f.serialize();

		f.find('input,select').attr('disabled', 'disabled');
		f.find(".mc_err").text("");
		f.find("#mortgage_calculator_error").hide();
		f.find("#mortgage_calculator_success").text("");
		f.find("#mortgage_calculator_please_wait").show();

		$.post(url, data, function(data) {
			if (data['success'])
			{
				f.find(".mc_err").text("");
				f.find("#mortgage_calculator_error").hide();
				f.find("#mortgage_calculator_success").text("You should receive your mortgage calculation shortly.");
			}
			else
			{
				f.find("#mortgage_calculator_error").show();
				f.find(".mc_err").text("");
				for (k in data['messages'])
				{
					f.find(".mc_" + k + "_err").text(data['messages'][k]);
				}
				f.find("#mortgage_calculator_success").text("");
			}

			f.find("#mortgage_calculator_please_wait").hide();
			f.find('input,select').removeAttr('disabled');
		}, "json");

		return false;
	});
}
