var ErrorsOn=0;
var MAX_RESULTS=26;
var rb = new Resource({
	CONFIG_LIST:['storelocator'],
	LIMIT:['not_compatible','need_more_criteria','no_criteria','search_error','no_results','email_required','first_name_required','zip_required','optin_error','dir_distance','view_directions','view_map']
	});
var infowindow;

document.observe('dom:loaded', function () {
//	NAV_ID = NAV_ID || getQueryParamValue("navId");
//	var so = new SWFObject("/media/flash/events/clinique-events.swf", "clinique-events", "963", "392", "9.0.45", "#FFFFFF");
//	so.addVariable("assetsDomain", "/media/flash/events/");		
//	so.addVariable("siteData", "xml/events.xml");
//	so.addParam("scale", "noscale");
//	so.addParam("wmode", "transparent");
//	so.write("events_flash_content");
//	so.addVariable("navId", NAV_ID);
	init_LocatorMap();
	Event.observe(document.body, 'click', hideError, true);
	});
	
function init_LocatorMap(){
	Event.observe('search-locator-button', 'click', showLocatorMap, true);
	Event.observe('driving-button', 'click', showDirectionsMap, true);
	Event.observe('sign-up-button', 'click', doOptIn, true);
	}

function slFormHandler(){
	return false;
	}

function fieldChange(field,thing){
	$(field).value=thing;
	console.log("IE hack: " + field + "=" + thing);
	if(field == 'CITY'){store_picker(thing);}
	hideError();
	}
	
function doOptIn(){
	if($F('EMAIL') == ""){showOptError(rb.keys.get('email_required'));}
	else if($F('FIRST_NAME') == ""){showOptError(rb.keys.get('first_name_required'));}
	else if($F('POSTAL') == ""){showOptError(rb.keys.get('zip_required'));}
	else{
		$('opt-loading').show();
		$('signup-form').hide();
		var params = [{
			"PC_EMAIL_ADDRESS" : $F('EMAIL'),
			"FIRST_NAME" : $F('FIRST_NAME'),
			"ZIP" : $F('POSTAL'),
			"_SUBMIT" : "storelocator"+formIdSeparator+"email_signup"
			}];

		jsonRpcWrapper.fetch({
			method: 'email.signup', 
			params: params,
			onSuccess: function (jsonRpcResponse) {
				console.log("jsonRpcResponse: ", jsonRpcResponse);
				var data = jsonRpcResponse.getValue();
				console.log("data: ", data);
                if (jsonRpcResponse.errors) {
					console.log("errors: ", jsonRpcResponse.errors);
					$('signup-form').show();
					$('opt-loading').hide();
					$('signup-confirm').hide();
					showOptError(rb.keys.get('optin_error'));
					}
				else{
					console.log('Opt In successful');
	//				document.fire("CM:StoreLocSignUp", data.result);
	//				console.log("store loc page data is", data.result);
					$('opt-loading').hide();
					$('signup-confirm').show();
					}
				},
			onError: function () {
				$('signup-form').show();
				$('opt-loading').hide();
				$('signup-confirm').hide();
				console.log('Store Locator JSON failed to load ');
				showOptError(rb.keys.get('optin_error'));
				}
			});
		}
	}

function loadDirectionsWindow(lat,lon,address,city,zip,dd){
	if(dd == 'yes'){
		var fulladdress=address;
		var duo = /<br>/g;
		if(duo.exec(address)){
			var two = new Array(); 
			two = address.split('<br>');
			address=two[1];
			}
		address = address.replace("/", "|");
		var duo = /|/g;
		if(duo.exec(address)){
			var two = new Array(); 
			two = address.split('|');
			address=two[0];
			}
		$('LAT').value=lat;
		$('LON').value=lon;
		$('DESTINATION_ADDRESS').value=address;
		$('DESTINATION_CITY').value=city;
		$('DESTINATION_ZIP').value=zip;
		var address_display = fulladdress + '<br>' + city + ' ' + zip;
		$('show_address').update(address_display);
		$('route').hide();
		$('fc-search').hide();
		$('driving-directions').show();
		}
	}

function showDirectionsMap(){
	if($F('ORIGIN_ADDRESS') != "" && $F('ORIGIN_CITY') != ""){
		var lat = $F('LAT');
		var lon = $F('LON');
		var address = $F('ORIGIN_ADDRESS');
		var city = $F('ORIGIN_CITY');
		var address2 = $F('DESTINATION_ADDRESS');
		var city2 = $F('DESTINATION_CITY');
		var zip2 = $F('DESTINATION_ZIP');
		console.log("from: " + address + ", " + city + " to: " + address2 + ", " + city2 + " " + zip2);
		$('route').update('');
		$('show_map').hide();
		$('driving-directions').hide();
		$('signup-form').hide();
		$('opt-loading').hide();
		$('signup-confirm').hide();
		
		$('show_driving_map').show();
		$('route').show();
				
		var directionsService = new google.maps.DirectionsService();
		var directionsDisplay = new google.maps.DirectionsRenderer();
		var myOptions = {
			zoom:7,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			center: new google.maps.LatLng(lat,lon)
			}
		var dmap = new google.maps.Map($('driving_map'), myOptions);
		directionsDisplay.setMap(dmap);
		directionsDisplay.setPanel($('route'));
		var start = address + ", " + city;
		var end = address2 + ", " + city2 + " " + zip2;
		var request = {
			origin:start, 
			destination:end,
			travelMode: google.maps.DirectionsTravelMode.DRIVING
			};
		directionsService.route(request, function(response, status) {
			if (status == google.maps.DirectionsStatus.OK) {
				directionsDisplay.setDirections(response);
				}
			});

		}
	else{showError(rb.keys.get('no_criteria'));}
	}

function returntoMap(){
	$('show_driving_map').hide();
	$('route').hide();
	$('show_map').show();
	$('fc-search').show();
	}

function returntoSearch(){
	$('driving-directions').hide();
	$('events-results').hide();
	$('special-events').show();
	$('fc-search').show();
	}
	
function showLocatorMap(){
	if($F('ZIP') != "" || ($F('CITY') != "")){
		$('show_map').hide();
		$('show_driving_map').hide();
		$('signup-confirm').hide();
		$('signup-form').hide();
		$('opt-loading').show();
		var params = [{
			"zip" : $F('ZIP'),
			"city" : $F('CITY'),
			"show_stores_list" : $F('DOORNAME'),
			"radius" : $F('PERIMITER'),
			"fields" : "DOOR_ID, DOORNAME, EVENT_NAME, EVENT_START_DATE, EVENT_END_DATE, EVENT_IMAGE, STORE_HOURS, ADDRESS, ADDRESS2, CITY, STATE_OR_PROVINCE, REGION, COUNTRY, ZIP_OR_POSTAL, PHONE1"
			}];
		console.log("params: ", params);
		jsonRpcWrapper.fetch({
			method: 'locator.doorsandevents', 
			params: params,
			onSuccess: showit,
			onError: function () {
				console.log('Store Locator JSON failed to load ');
				showError(rb.keys.get('search_error'));
				}
			});
		}
	else if ($F('ZIP') == "" && $F('CITY') == ""){showError(rb.keys.get('no_criteria'));}
	else{showError(rb.keys.get('need_more_criteria'));}
	}
	
function showit(jsonRpcResponse) {
//	console.log("jsonRpcResponse: ", jsonRpcResponse);
	var data = jsonRpcResponse.getValue();
	console.log("data: ", data);
	if(data == null){
		$('opt-loading').hide();
		$('signup-form').show();
		showError(rb.keys.get('no_results'));
		}
	else if(data.count){
		var gotstores = data.count;
		console.log("count: ", gotstores);
		var error = data.error;
		console.log("error: ", error);
		var dd = data.driving_directions;
		console.log("driving_directions: ", dd);
		var c_lat = data.latitude;
		var c_lon = data.longitude;
		console.log("ground zero: " + c_lat + "," + c_lon);
		var doors = data.doors;

		$('show_map').show();
		$('show_driving_map').hide();
	//	$('feature-text').hide();
		$('signup-form').hide();
		$('opt-loading').hide();
		$('signup-confirm').hide();
	//	$('fc-search').className="fc-col-2";
		$('feature-content').setStyle({'height':'450px'});
		$('search-feature-content').setStyle({'height':'440px'});
		$('special-events').hide();
		$('events-loading').show();
	
		var location = data.results;
		var count=0;
		var mapOptions = {
			zoom: 12,
			center: new google.maps.LatLng(c_lat,c_lon),
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			navigationControl: true,
			mapTypeControl: true,
			scaleControl: true
			};
		var map = new google.maps.Map($('map'), mapOptions);
		
		function createMarker(latlng, id, letter, info, toss) {
	//		console.log("loc " + letter + ": " + id + ", " + latlng + ", " + info + ", " + toss);
			var icon = new google.maps.MarkerImage("/images/maps/icon_green" + letter + ".png");
			var marker = new google.maps.Marker({
				position:	latlng, 
				icon:		icon,
				title:		letter,
				map:		map
				});
			google.maps.event.addListener(marker, 'click', function() {
				if (infowindow) infowindow.close();
				infowindow = new google.maps.InfoWindow({content: info});
				infowindow.open(map,marker);
				});
			return marker;
			}
	
		$('event-body').update('');
		var spot = $H(location);
		console.log(spot);
		doors.each( function (k) {
			console.log(k);
			var detail = spot.get(k);
			
			var letter = String.fromCharCode("A".charCodeAt(0) + count);
			detail.letter=letter;
			var doorname = detail.DOORNAME;
			doorname = doorname.replace(/'/, "&#39");
			doorname = doorname.replace(/<.*/, "");
			detail.DOORNAME = doorname;
			console.log(detail.DOORNAME);
			
	//		if (detail.EVENT_NAME) {
	//			detail.EVENT_CLASS = '';
	//			if(detail.EVENT_FEATURES){detail.EVENT_TEXT = detail.EVENT_FEATURES + "<br>";}
	//			var event_text = detail.EVENT_START_DATE;
	//			var event_end = detail.EVENT_END_DATE;
	//			if (event_text && event_end) {
	//				event_text = event_text.replace(/ 00:00:00/, "");
	//				event_end = event_end.replace(/ 00:00:00/, "");
	//				var start = new Array();
	//				start = event_text.split('-');
	//				event_text=start[2] + "/" + monthit(start[1]) + "/" + start[0];
	//				var end = new Array(); 
	//				end = event_end.split('-');
	//				event_end=end[2] + "/" + monthit(end[1]) + "/" + end[0];
	//				if (event_text && event_end && event_text != event_end) {event_text += ' - ' + event_end;}
	//				detail.EVENT_TEXT = event_text + "<br>";
	//				}
	//			if(detail.EVENT_TIMES){detail.EVENT_TEXT = detail.EVENT_TEXT + detail.EVENT_TIMES + "<br>";}
	//			var event_image = detail.EVENT_IMAGE;
	//			if(event_image == null){detail.EVENT_IMAGE = 'no_event.gif';}
	//			}
	//		else{
			detail.EVENT_CLASS = 'hidden';
	//		}

			var hours = detail.STORE_HOURS;
			if(hours != null){detail.STORE_HOURS = 'Store Hours: ' + hours;}

			var address2 = detail.ADDRESS2;
			if(address2 != null){detail.ADDRESS = detail.ADDRESS + '<br>' + address2;}

			var distance = parseFloat(detail.DISTANCE);
			if(distance > 0){
				distance = rb.keys.get('dir_distance') + ' ' + distance.toFixed(2) + ' km';
				detail.DISTANCE = distance;
				}
			else{detail.DISTANCE = '';}
			var lat = detail.LATITUDE;
			var lon = detail.LONGITUDE;

			if(lat && lon && count < MAX_RESULTS){
			
		// uncomment this if you want to center the map on the location of the first store
		//		if(letter == "A"){
		//			map.setCenter(new google.maps.LatLng(lat, lon), 11);
		//			console.log('centering map to store A: lat '+lat+', lon '+lon);
		//			}
				var viewdd = rb.keys.get('view_directions');
				if(dd == 'no'){viewdd = rb.keys.get('view_map');}
				detail.maplinktitle = viewdd;
				detail.DD=dd;
				
				var point = new google.maps.LatLng(lat,lon);
				var info = "<b>" + detail.DOORNAME + "</b><br><br>" + detail.ADDRESS + "<br>" + detail.CITY + " " + detail.ZIP_OR_POSTAL;
				console.log("loc: " + detail.DOOR_ID + ": " + k  + ": " + lat + "|" + lon + " - " + info);
				var themark=createMarker(point, detail.DOOR_ID, letter, info, k);
				templatefactory.get('/templates/store-locator-result-row.tmpl').evaluateCallback({
					object: detail,
					callback: function(html) {
						$('event-body').insert(html);
						var loclinkid = $("door_" + detail.DOOR_ID);
						var maplinkid = $("maplink_" + detail.DOOR_ID);
						loclinkid.observe('click', function(evt) {
							console.log("clicked door_" + detail.DOOR_ID);
							google.maps.event.trigger(themark, 'click');
							});
						maplinkid.observe('click', function(evt) {
							console.log("clicked maplink_" + detail.DOOR_ID);
							google.maps.event.trigger(themark, 'click');
							});
						}
					});
				count++;
				}
			});
		$('many_locations').update(count);
		$('events-loading').hide();
		$('events-results').show();
		}
	else{
		console.log('door count was zero');
		$('opt-loading').hide();
		$('signup-form').show();
		showError(rb.keys.get('no_criteria'));
		}
	}

function showError(error){
	var messages = $('locator_messages');
	var messageUL = messages.down('ul');
	messageUL.select('li').each(function(elm){elm.remove()});	
	messageUL.insert('<li>' + error + '</li>');
	messages.show();
	$('store-locator-form-div').setStyle({'top':'30px'});
	ErrorsOn=2;
	}

function showOptError(error){
	var messages = $('optin_messages');
	var messageUL = messages.down('ul');
	messageUL.select('li').each(function(elm){elm.remove()});	
	messageUL.insert('<li>' + error + '</li>');
	messages.show();
	ErrorsOn=2;
	}

function hideError(){
	if(ErrorsOn){
		if(ErrorsOn == 1){
			$('locator_messages').hide();
			$('optin_messages').hide();
			ErrorsOn=0;
			$('store-locator-form-div').setStyle({'top':'0px'});
			}
		else{ErrorsOn=ErrorsOn-1;}
		}
	}

function monthit(month){
	if (month == "JAN"){return "01";}
	else if (month == "FEB"){return "02";}
	else if (month == "MAR"){return "03";}
	else if (month == "APR"){return "04";}
	else if (month == "MAY"){return "05";}
	else if (month == "JUN"){return "06";}
	else if (month == "JUL"){return "07";}
	else if (month == "AUG"){return "08";}
	else if (month == "SEP"){return "09";}
	else if (month == "OCT"){return "10";}
	else if (month == "NOV"){return "11";}
	else if (month == "DEC"){return "12";}
	}
