// Slide Map
function initialize(mapCanvas, lat, lng) {
	var latlng = new google.maps.LatLng(parseFloat(lat), parseFloat(lng));

	var mapOptions = {
		zoom: 17,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scrollwheel: false
	};
	var map = new google.maps.Map(mapCanvas, mapOptions);

	var circleOptions = {
		center: latlng,
		fillColor: '#0066FF',
		fillOpacity: 0.1,
		map: map,
		radius: 100,
		strokeColor: '#0066FF',
		strokeOpacity: 0.6,
		strokeWeight: 2
	};
	var circle = new google.maps.Circle(circleOptions);

	google.maps.event.addListener(circle, 'dragend', function() {
		var circle = this.getPosition();
	});
}

function headerFX() {
	if ($(document).scrollTop() - $('#top_group').find('.header_banner').outerHeight(true) > 0) {
		$('#top_group:not(.fixed_top)').addClass('fixed_top');
		$('.flash_message_v3:not(.fixed_top_flash)').addClass('fixed_top_flash');
	} else {
		$('#top_group.fixed_top').removeClass('fixed_top');
		$('.flash_message_v3.fixed_top_flash').removeClass('fixed_top_flash');
	}
}

$(function(){
	 // For IE
	 if($.browser.msie){
		  $('div.shadow').remove();
	 }
	 if($('div.map_canvas').hasClass('detail_map') == true){
		var breakdown_url = $('div.show_map a#001_btn').attr('href').split('/');
		var lat = breakdown_url[jQuery.inArray('lat', breakdown_url) + 1];
		var lng = breakdown_url[jQuery.inArray('lng', breakdown_url) + 1];
		 $('div#001 div.map_canvas').each(function() {
			 initialize(this, lat , lng);
			 $('div#001 div.shadow').css("display","block");
			 $('div#001 div.map_canvas').addClass('selected');
		 });
	 } else {
		 $('div.map_canvas').css('display','none');
	 }
	 $("a.slide_btn").click(function(){
			var slideNum = $(this).attr('id').split('_',1)[0];
			if($('div#' + slideNum + ' div').hasClass('selected') == true){
				$('div#' + slideNum + ' div.map_canvas').removeClass('selected');
				$('div.show_map a#' + slideNum +'_btn').text('Show Map');
				$('div#' + slideNum + ' div.map_canvas').slideUp('fast');
				$('div#' + slideNum + ' div.shadow').fadeOut();
			} else {
				$('div.map_canvas').removeClass('selected');
				$('div.map_wrapper div.map_canvas').slideUp('fast');
				$('div#' + slideNum + ' div.map_canvas').addClass('selected');
				$('div#' + slideNum + ' div.shadow').fadeIn();
				$('div#' + slideNum + ' div.map_canvas').slideDown('fast', function() {
						if ($('div#' + slideNum + ' div.map_canvas div').size() == 0) {
							var breakdown_url = $('div.show_map a#' + slideNum +'_btn').attr('href').split('/');
							var lat = breakdown_url[jQuery.inArray('lat', breakdown_url) + 1];
							var lng = breakdown_url[jQuery.inArray('lng', breakdown_url) + 1];
							$('div#' + slideNum + ' div.map_canvas').each(function() {
									initialize(this, lat , lng);
							});
						}
				});
				//shadow attr
				$('div.map_wrapper div.shadow').css("display","none");
				$('div#' + slideNum + ' div.shadow').css("display","block");
				// text attr
				$('div.show_map a').text('Show Map');
				$('div.show_map a#' + slideNum +'_btn').text('Close Map');
			}
			return false;
	});
	// Corner Radius
	$('.property_wrap').corner('3px');
	$('.view').corner('3px');
	$('.inquire_btn a').corner('3px');
	$('.property_rad_box').corner('3px');
	$('.description p').corner('3px');
	$('.feature_wrap').corner('3px');
	$('.inquire_pop span').corner('3px');

	//Disclaimer slide
	$('div.disclaimer_space').css("display","none");
	$("a.disclaimer_btn").click(function(){
			if($(this).hasClass('selected') == true){
				$('div.disclaimer_space').slideUp('fast');
				$(this).removeClass('selected');
			} else {
				$('div.disclaimer_space').slideDown('fast');
				$(this).addClass('selected');
			}
			return false;
	});
	
	
	// LOGIN POPUP
	$("#htabs  .title a").click(function(e) {
		var form_name = $(this).attr('id');
		e.preventDefault();
		$('div#'+form_name+'_form').toggle();
		$('#htabs .title a').toggleClass("menu-open");
	});    
	$("#htabs div.form_field").mouseup(function() {
		return false;
	});
	// END LOGIN POPUP

	// CLOSE POPUP
	$(document).mouseup(function(e) {
		if($(e.target).parent('p.contact').length==0) {
	   $('#htabs .title a').removeClass("menu-open");
	   $('#htabs div.form_field').hide();
		}
	});
	// END CLOSE POPUP
	
	// FIRST SELECTOR
	$('div.property_rad_box:first h3').addClass('first');
	// END FIRST SELECTOR
});

function fillCities() {
	if ($('select#city option').size() > 0) {
		// the cities are already loaded...
		// don't trigger a second ajax call...
		return;
	}
	var prefecture_id = $('#selected_prefecture').attr('value');
	$('select#city').html('');
	if (prefecture_id == '0') {
		return;
	}
	$.getJSON($('#url_citylookup').val(), {'prefecture': prefecture_id}, function(data){
			// Display city list
			if (data.cities.length > 1) {
				var list = data.cities;
				var select = '';
				for (var i = 0; i < list.length; i++) {
					select += '<option value="' + list[i].city_id + '">' + list[i].city + '</option>';
				}
				$('select#city').html(select);
			}
	});
}

function fillDistricts() {
	var city_id = $('#city option:selected').attr('value');
	$('select#district').html('');
	if (city_id == '0') {
		return;
	}
	$.getJSON($('#url_districtlookup').val(), {'city': city_id}, function(data){
			// Display district list
			if (data.districts.length > 1) {
				var list = data.districts;
				var select = '';
				for (var i = 0; i < list.length; i++) {
					select += '<option value="' + list[i].location_id + '">' + list[i].district + '</option>';
				}
				$('select#district').html(select);
			}
	});
}

function fillTrainlines() {
	if ($('select#trainline option').size() > 0) {
		// the trainlines are already loaded...
		// don't trigger a second ajax call...
		return;
	}
	var prefecture_id = $('#selected_prefecture').attr('value');
	$('select#trainline').html('');
	if (prefecture_id == '0') {
		return;
	}
	$.getJSON($('#url_trainlinelookup').val(), {'prefecture': prefecture_id}, function(data){
			// Display city list
			if (data.trainlines.length > 1) {
				var list = data.trainlines;
				var select = '';
				for (var i = 0; i < list.length; i++) {
					select += '<option value="' + list[i].trainline_id + '">' + list[i].name + '</option>';
				}
				$('select#trainline').html(select);
			}
	});
}

function fillStations() {
	var prefecture_id = $('#selected_prefecture').attr('value');
	var trainline_id = $('#trainline option:selected').attr('value');
	$('select#station').html('');
	if (trainline_id == '0') {
		return;
	}
	$.getJSON($('#url_stationlookup').val(), {'prefecture': prefecture_id, 'trainline': trainline_id}, function(data){
			// Display station list
			if (data.stations.length > 1) {
				var list = data.stations;
				var select = '';
				for (var i = 0; i < list.length; i++) {
					select += '<option value="' + list[i].group_id + '">' + list[i].name + '</option>';
				}
				$('select#station').html(select);
			}
	});
}

$(function(){
		var text_alert_email = $('#alert_email').attr("title");
		var text_alert_confirm_email = $('#confirm_alert_email').attr("title");
		if($('#alert_email').val() == ""){
			$('#alert_email').val(text_alert_email);
		}
		if($('#confirm_alert_email').val() == ""){
			$('#confirm_alert_email').val(text_alert_confirm_email);
		}
		// remove instruction for keywords.
		$('#alert_email').focus(function(){
				if($(this).val() == text_alert_email){
					$(this).val("");
				}
		}).blur(function(){
			if($(this).val() == ""){
				$(this).val(text_alert_email);
			}
		});
		$('#confirm_alert_email').focus(function(){
				if($(this).val() == text_alert_confirm_email){
					$(this).val("");
				}
		}).blur(function(){
			if($(this).val() == ""){
				$(this).val(text_alert_confirm_email);
			}
		});
		$('.alert').submit(function(){
				if($('#alert_email').val() == text_alert_email){
					$('#alert_email').val("");
				}
				if($('#confirm_alert_email').val() == text_alert_confirm_email){
					$('#confirm_alert_email').val("");
				}
		});

		$('a.round_corner').corner("round 10px");

		$("div#navigation ul li a").click(function() {
				var ref = $(this).attr("href");
				$('.large_img_wrapper .partie:visible').fadeOut(350, function() {
						$("div" + ref).fadeIn(350);
				});
				return false;
		});

		$('form#inquiryrf').submit(function(){
				$('#notice').html('');
				var req = 'The following fields are required :';
				var send = true;
				
				if($('#fullname').val() == '') {
					req += ' - fullname';
					send = false;
				}
				if($('#email').val() == '') {
					req += ' - email';
					send = false;
				}
				//if($('#phone').val() == '') {
				//    req += ' - phone';
				//    send = false;
				//}
				if($('#rf_city').val() == '') {
					req += ' - city';
					send = false;
				}
				if($('#budget').val() == '') {
					req += ' - budget';
					send = false;
				}
				if($('#disclaimer:checked').val() != 'yes') {
					req += ' - disclaimer';
					send = false;
				}

				req += '.';

				if (send == false) {
					$('#notice').html(req);
				} else {
					var filter =/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
					var filter2=/^([0123456789 \.\-\(\)\+_]*)$/i;
					if (filter.test($('#email').val())) {
						if (filter2.test($('#phone').val())) {
							$.getJSON($(this).attr('action'), $(this).serializeArray(), function(data) {
									if (data.status == 'success') {
										$('#inquiry_form').html(data.message);
									} else {
										$('#notice').html(data.message);
									}
							})
						} else{
							alert("Please input a valid phone number");
						}
					} else{
						alert("Please input a valid email address");
					}
				}

				// Prevent normal submit
				return false;
		});

		$('#method_ward').change(function(){
				if ($(this).is(':checked')) {
					$('.trainline_formelem').hide();
					$('.ward_formelem').show();
					fillCities();
				}
		});
		$('#method_trainline').change(function(){
				if ($(this).is(':checked')) {
					$('.ward_formelem').hide();
					$('.trainline_formelem').show();
					fillTrainlines();
				}
		});

		$('#city').change(fillDistricts);

		$('#trainline').change(fillStations);

		$('#refine_search').click(function(){
				if ($('#method_ward').is(':checked')) {
					$('select#trainline').empty();
					$('select#station').empty();
				}
				if ($('#method_trainline').is(':checked')) {
					$('select#city').empty();
					$('select#district').empty();
				}
		});

		$('#search_form .toggle_inner').hide();

		// Property image
		if ($("a[rel^='prettyPhoto']").length != 0) {
			$("a[rel^='prettyPhoto']").prettyPhoto({
					animation_speed: 'normal',
					theme: 'light_square',
					show_title: false,
					default_width: 600,
					default_height: 400
			});
		}
		$('div.property_wrap div.large_img_wrapper a').mouseenter(function(){
				$(this).append('<span>' + $(this).attr('rev') + '</span>');
				$(this).find('span').fadeIn();
		}).mouseleave(function(){
			$(this).find('span').fadeOut(function(){
					$(this).detach();
			});
		});

		$('#map_areas area').mouseenter(function(){
				if ($('#mapcurrent').length < 1) {
					return false;
				}
				var breakdown_url = $('#mapcurrent').attr('src').split('/');
				breakdown_url.pop();
				var path_link = breakdown_url.join('/');
				var image_name = $(this).attr('rel');
				$('#mapcurrent').attr('src', path_link + '/' + image_name + '.png');
		}).mouseleave(function(){
			if ($('#mapcurrent').length < 1) {
				return false;
			}
			var breakdown_url = $('#mapcurrent').attr('src').split('/');
			breakdown_url.pop();
			var path_link = breakdown_url.join('/');
			$('#mapcurrent').attr('src', path_link + '/space.gif');
		});

		$('#research a').click(function() {
				if ($('#research').hasClass('active')) {
					return false;
				}
				$('#research').addClass('active');
				$('#research_form').addClass('active');
				$('#contactagent').removeClass('active');
				$('#contactagent_form').removeClass('active');
				return false;
		})
		$('#contactagent a').click(function(){
				if ($('#contactagent').hasClass('active')) {
					return false;
				}
				if (!$('#contactagent_form .agent_list').length && $('#contactagent_intro').length) {
					$.getJSON($(this).attr('href'), null, function(data) {
							if (data) {
								var list_agents = '';
								$.each(data, function(i, agent){
										list_agents += '<li><label>\n'
										+ '<img class="logo" src="' + agent.url_logo + '" width="35" height="35" />\n'
										+ '<span class="text"><strong>' + agent.company_name + '</strong>\n'
										+ agent.location + '</span>\n'
										+ '<span class="checkbox"><input type="checkbox" name="agent_id[]" value="' + agent.agent_id + '" id="agent_id_' + agent.agent_id + '" checked="checked" /></span>\n'
										+ '</label></li>\n'
								});
								$('#contactagent_form .ajaxloading').remove();
								$('#contactagent_intro').after('<ul class="agent_list">\n'
									+ list_agents
									+ '</ul>\n');
							}
					});
				}
				$('#contactagent').addClass('active');
				$('#contactagent_form').addClass('active');
				$('#research').removeClass('active');
				$('#research_form').removeClass('active');
				return false;
		})

		$('#contactagent_formelem').submit(function(){
				var contact_form = $(this);
				$.getJSON(contact_form.attr('action'), contact_form.serializeArray(), function(data) {
						if (data) {
							if (data.status) {
								// todo: format properly
								contact_form.replaceWith('<h2>' + data.title + '</h2>\n'
									+ '<p>' + data.message + '</p>');
							} else {
								// todo: place the error messages at the right place...
								var list_errors = '';
								$.each(data.errors, function(name, value){
										list_errors += '<li>- ' + value + '</li>\n';
								});
								list_errors = '<ul id="contactagent_errorlist">\n' + list_errors + '</ul>\n';
								$('#contactagent_errorlist').remove();
								$('#contactagent_formsubmit').before(list_errors);
							}
						}
				});
				return false;
		});

		$('#agent_contactform dd .field').click(function(){
				$(this).hide();
				$(this).siblings('.input').focus();
		});
		$('#agent_contactform dd .input').focus(function(){
				$(this).siblings('.field').hide();
		});
		$('#agent_contactform dd .input' ).blur(function(){
				if($(this).val() == ''){
					$(this).siblings('.field').show();
				}
		});

		$('select#type').change(function(data){
				if ($(this).children('option:selected').length > 0) {
					$(this).parents('form#sort_list_fn').submit();
				}
		});

		/** FX for GP only */
		if (!('ontouchstart' in document.documentElement) && $('#top_group').length) {
			headerFX();
			$(window).scroll(function(){
					headerFX();
			});
		}
		
});
