var prov_hash = $H({
					'Alberta': 'AB',
					'British Columbia': 'BC',
					'Alberta': 'AB',
					'British Columbia': 'BC',
					'Manitoba': 'MB',
					'New Brunswick': 'NB',
					'Newfoundland': 'NF',
					'Nova Scotia': 'NS',
					'Northwest Territories': 'NT',
					'Nunavut': 'NU',
					'Ontario': 'ON',
					'Prince Edward Island': 'PE',
					'Quebec': 'QC',
					'Saskatchewan': 'SK',
					'Yukon Territory': 'YT',
					'Alaska': 'AK',
					'Alabama': 'AL',
					'Arkansas': 'AR',
					'American Samoa': 'AS',
					'Arizona': 'AZ',
					'California': 'CA',
					'Colorado': 'CO',
					'Connecticut': 'CT',
					'District Of Columbia': 'DC',
					'Delaware': 'DE',
					'Florida': 'FL',
					'Federated States Of Micronesia': 'FM',
					'Georgia': 'GA',
					'Guam': 'GU',
					'Hawaii': 'HI',
					'Iowa': 'IA',
					'Idaho': 'ID',
					'Illinois': 'IL',
					'Indiana': 'IN',
					'Kansas': 'KS',
					'Kentucky': 'KY',
					'Louisiana': 'LA',
					'Massachusetts': 'MA',
					'Maryland': 'MD',
					'Maine': 'ME',
					'Marshall Islands': 'MH',
					'Michigan': 'MI',
					'Minnesota': 'MN',
					'Missouri': 'MO',
					'Northern Mariana Islands': 'MP',
					'Mississippi': 'MS',
					'Montana': 'MT',
					'North Carolina': 'NC',
					'North Dakota': 'ND',
					'Northern California': 'CA',
					'Nebraska': 'NE',
					'New Hampshire': 'NH',
					'New Jersey': 'NJ',
					'New Mexico': 'NM',
					'Nevada': 'NV',
					'New York': 'NY',
					'Ohio': 'OH',
					'Oklahoma': 'OK',
					'Oregon': 'OR',
					'Pennsylvania': 'PA',
					'Puerto Rico': 'PR',
					'Palau': 'PW',
					'Rhode Island': 'RI',
					'South Carolina': 'SC',
					'South Dakota': 'SD',
					'Southern California': 'CA',
					'Tennessee': 'TN',
					'Texas': 'TX',
					'Utah': 'UT',
					'Virginia': 'VA',
					'Virgin Islands': 'VI',
					'Vermont': 'VT',
					'Washington': 'WA',
					'Washington DC': 'DC',
					'Wisconsin': 'WI',
					'West Virginia': 'WV',
					'Wyoming': 'WY'
});


t_head = new Template('<h3>#{region}</h3><table width="100%"><tbody>');
t_row = new Template(
	'<tr><td nowrap style="border: 1px solid rgb(220, 220, 220); vertical-align: top;" valign="top" width="128">#{city}<br /></td>' +
	'<td nowrap style="border: 1px solid rgb(220, 220, 220); vertical-align: top;" valign="top" width="280">#{name}<br />#{address}<br />#{city}#{city_sep} #{province} &nbsp; #{postal_code}#{displays_products_str}</td>' +
	'<td nowrap style="border: 1px solid rgb(220, 220, 220); vertical-align: top;" valign="top" width="20">' +
	'<span style="#{phone1_style}">Phone:<br /></span>' +
	'<span style="white-space:nowrap;#{phone2_style}">#{phone2_label}<br /></span>' +
	'<span style="#{fax_style}">Fax:<br /></span>' +
	'<span style="#{email_style}">Email:</span></td>' +
	'<td nowrap style="border: 1px solid rgb(220, 220, 220); vertical-align: top;" valign="top" width="160">' +
	'<span style="#{phone1_style}">#{phone1}<br /></span>' +
	'<span style="#{phone2_style}">#{phone2}<br /></span>' +
	'<span style="#{fax_style}">#{fax}<br /></span>' +
	'<span style="#{email_style}"><a href="mailto:#{email}">#{email}</a><br /></span>' +
	'<span style="#{url_style}"><a href="#{url}" target="_blank">Website</a></span></td></tr>'
);
t_foot = new Template('</tbody></table>');
function get_list(region, map) {
	$(map,'map_page_text').invoke('hide');
	$('list_results').update('Getting results...').show();

	new Ajax.Request('/get_list.php', {
		method: 'get',
		parameters: { list_type: list_type, region_name: region, request_type: 'JSON', rand: Math.floor(Math.random()*1001) },
		onSuccess: function(transport) {
			$('list_results').update('No results found.');

			json = transport.responseText.evalJSON();
			if (json) {
				result_str = t_head.evaluate(json[0]);
				json.each(function(s) {
					if (s.phone1 == '') s['phone1_style'] = 'display:none;';
					if (s.phone2 == '') s['phone2_style'] = 'display:none;';
					if (s.fax == '') s['fax_style'] = 'display:none;';
					if (s.email == '') s['email_style'] = 'display:none;';
					if (s.url == '') s['url_style'] = 'display:none;';
					s.city_sep = '';
					if (s.city != '') {
						s.city_sep += ',';
					}
					
					if (s.displays_products) {
						s.displays_products_str = '<br/><i>* Displays Caroma products in showroom</i>';
					}
					result_str += t_row.evaluate(s);
				});
				result_str += t_foot.evaluate('');
				$('list_results').update(result_str);
			}
		},
		onFailure: function() {
			$('list_results').update('AJAX request failed.');
			$(map,'map_page_text').invoke('show');
		}
	});
}

var list_type = 1;
function swap_lists() {
	list_type == 1 ? list_type = 2 : list_type = 1;
	$('get_distributors','distributor_message','get_reps','rep_message').invoke('toggle');
	show_map();
}

function show_map(map) {
	if (map == 'canada') {
		$('map_page_text','canada_map').invoke('show');$('usa_map','list_results').invoke('hide');
	} else {
		$('map_page_text','usa_map').invoke('show');$('canada_map','list_results').invoke('hide');
	}
}

function picklist_update(target) {
	$(target).update('');
	$(target).disabled = true;
	$('request_type').value=target;
	new Ajax.Updater(target, '/get_list.php', {
		method: 'post',
		parameters: $('maintenance_form').serialize(true),
		onSuccess: function (transport) {
			if (transport.responseText.length > 0) {
				$(target).disabled = false;
			}
		},
		onComplete: function() {
			load_companies();
		}
	});
}

tco_head = new Template(
				'<tr>' +
				' <td align="left" colspan="8">' +
				'  <a id="add_company_toggle" href="#" onclick="return add_company_toggle();">[+] Add Company</a>' +
				'  <table id="add_company_fields" style="display:none">' +
				'   <tr><td>Name:</td><td><input type="text" id="new_name" name="new_name" /></td></tr>' +
				'   <tr><td>Address:</td><td><input type="text" id="new_address" name="new_address" /></td></tr>' +
				'   <tr><td>City:</td><td><input type="text" id="new_city" name="new_city" /></td></tr>' +
				'   <tr><td>State/Prov:</td><td><input type="text" id="new_province" name="new_province" /></td></tr>' +
				'   <tr><td>Zip/Postal:</td><td><input type="text" id="new_postal_code" name="new_postal_code" /></td></tr>' +
				'   <tr><td>Country:</td><td><input type="text" id="new_country" name="new_country" /></td></tr>' +
				'   <tr><td>Phone 1:</td><td><input type="text" id="new_phone1" name="new_phone1" /></td></tr>' +
				'   <tr><td>Phone 2:</td><td><input type="text" id="new_phone2" name="new_phone2" /></td></tr>' +
				'   <tr><td>Fax:</td><td><input type="text" id="new_fax" name="new_fax" /></td></tr>' +
				'   <tr><td>Email:</td><td><input type="text" id="new_email" name="new_email" /></td></tr>' +
				'   <tr><td>URL:</td><td><input type="text" id="new_url" name="new_url" /></td></tr>' +
				'   <tr><td colspan="2" align="right"><label><input type="checkbox" id="new_displays_products" name="new_displays_products" /> Displays Caroma products in showroom</label></td></tr>' +
				'   <tr><td></td><td><input type="button" value=" Add " onclick="add_company()" /></td></tr>' +
				'  </table>' +
				' </td>' +
				'</tr>' +
				'<tr>' +
				' <th colspan="2">Company</th>' +
				' <th>Address</th>' +
				' <th>City</th>' +
				' <th>State/Prov</th>' +
				' <th>Zip/Postal Code</th>' +
				' <th>Country</th>' +
				' <th></th>' +
				'</tr>'
			);
tco_row = new Template(
				'<tr id="row1_#{id}" bgcolor="#{bgcolor}">' +
				' <td rowspan="3" valign="top"><input type="checkbox" name="delete_companies[#{id}]" /></td>' +
				' <td nowrap id="name_#{id}" onclick="edit_element(#{id}, \'name\')">#{name}</td>' +
				' <td nowrap id="address_#{id}" onclick="edit_element(#{id}, \'address\')">#{address}</td>' +
				' <td nowrap id="city_#{id}" onclick="edit_element(#{id}, \'city\')">#{city}</td>' +
				' <td nowrap id="province_#{id}" onclick="edit_element(#{id}, \'province\')" title="2 char state/prov code">#{province}</td>' +
				' <td nowrap id="postal_code_#{id}" onclick="edit_element(#{id}, \'postal_code\')">#{postal_code}</td>' +
				' <td nowrap id="country_#{id}" onclick="edit_element(#{id}, \'country\')" title="2 char country code">#{country}</td>' +
				' <td rowspan="3" width="60"><input id="btn_save_#{id}" type="button" value="  Save   " style="display:none" /></td>' +
				'</tr><tr id="row2_#{id}" bgcolor="#{bgcolor}">' +
				' <td nowrap id="phone1_#{id}" onclick="edit_element(#{id}, \'phone1\')">Ph1: #{phone1}</td>' +
				' <td nowrap id="phone2_#{id}" onclick="edit_element(#{id}, \'phone2\')">Ph2: #{phone2}</td>' +
				' <td nowrap colspan="2" id="fax_#{id}" onclick="edit_element(#{id}, \'fax\')">Fax: #{fax}</td>' +
				' <td nowrap id="email_#{id}" onclick="edit_element(#{id}, \'email\')">Email: #{email}</td>' +
				' <td nowrap id="url_#{id}" onclick="edit_element(#{id}, \'url\')">URL: #{url}</td>' +
				'</tr><tr id="row3_#{id}" bgcolor="#{bgcolor}">' +
				' <td colspan="6"><label><input class="displays_products" type="checkbox" name="displays_products_#{id}" #{displays_products_checked} onclick="update_displays_products(#{id})"/> Displays Caroma products in showroom</label></td>' +
				'</tr>'
			);

frm_input = new Template('<input id="frm_#{name}_#{id}" name="#{name}" type="text" value="#{value}" onblur="save_element(#{id}, \'#{name}\');" />');
function edit_element(id, name) {
	if ($('frm_'+name+'_'+id) != null) return;
	$('company_id').value = id;
	$(name+'_'+id).update(frm_input.evaluate({ id: id, name: name, value: $(name+'_'+id).innerHTML }));
	$('frm_'+name+'_'+id).activate();
	$('btn_save_'+id).show();
}
function save_element(id, name) {
	$('request_type').value = 'update_company';
	$('maintenance_form').request({
		onSuccess: function(transport) {
			if (transport.responseText != '') {
				alert(transport.responseText);
			}
			$(name+'_'+id).update($F('frm_'+name+'_'+id));
			$('btn_save_'+id).hide();
		}
	});
}

function update_displays_products(id) {
	$('request_type').value = 'update_displays_products';
	$('company_id').value = id;
	$('maintenance_form').request();
}

function load_companies() {
	$('companies').update('');
	$('request_type').value='load_companies';
	var params = $('maintenance_form').serialize(true)
	params.rand = Math.floor(Math.random()*1001);
	new Ajax.Request('/get_list.php', {
		method: 'post',
		parameters: params,
		onSuccess: function(transport) {
			var json = transport.responseText.evalJSON();

			var result_str = tco_head.evaluate('');
			if (json.length > 0) {
				json.each(function(s){
					$('bgcolor').value = $F('bgcolor') == '#ffffff' ? '#dddddd' : '#ffffff';
					s['bgcolor'] = $F('bgcolor');
					if (s.displays_products){
						s.displays_products_checked='checked';
					}
						
					result_str += tco_row.evaluate(s);
				});
			}
			$('companies').update(result_str);
			$('delete_button').show();
		}
	});
}


function reset_new_form() {
	var region_name = $('region_picklist').options[$('region_picklist').selectedIndex].text;
	$('new_name','new_address','new_city','new_province','new_postal_code','new_country','new_phone1',
			'new_phone2','new_fax','new_email','new_url','new_displays_products').invoke('clear');
	$('new_province').value = prov_hash.get(region_name) == 'undefined' ? '' : prov_hash.get(region_name);
	$('new_country').value = $F('region_country');
	$('new_name').activate();
}

function add_company_toggle() {
	$('add_company_fields').toggle();
	if ($('add_company_toggle').innerHTML == '[+] Add Company') {
		$('add_company_toggle').update('[-] Done');
		reset_new_form();
	} else {
		$('add_company_toggle').update('[+] Add Company');
	}
	return false;
}

function add_company() {
	$('request_type').value = 'add_company';
	$('bgcolor').value = $F('bgcolor') == '#ffffff' ? '#dddddd' : '#ffffff';
	new Ajax.Updater('companies', '/get_list.php', {
		method: 'post',
		parameters: $('maintenance_form').serialize(),
		insertion: Insertion.Bottom,
		onSuccess: function() {
			reset_new_form();
		}
	});
}

function delete_companies() {
	$('request_type').value = 'delete_companies';
	new Ajax.Request('/get_list.php', {
		method: 'post',
		parameters: $('maintenance_form').serialize(),
		onSuccess: function(transport) {
		var json = transport.responseText.evalJSON();
		if (json.status == 'OK') {
				json.ids.each(function (s) {
					$('row1_'+s,'row2_'+s,'row3_'+s).invoke('remove');
				});
			} 
			alert(json.status_message);
		}
	});
}

function check_link () {
	if ($F('list_type') != '' && $F('region_country') != '') {
		$('get_list_button','display_regions').invoke('show');
	} else {
		$('get_list_button','display_regions').invoke('hide');
	}
	picklist_update('region_picklist');
}

function add_region_toggle() {
	$('add_region_fields').toggle();
	if ($('add_region_toggle').innerHTML == '[+] Add New') {
		$('add_region_toggle').update('[-] Done');
		$('region_name').activate();
	} else {
		$('add_region_toggle').update('[+] Add New');
	}
	
	return false;
}

function add_region() {
	$('request_type').value = 'add_region';
	new Ajax.Updater('region_picklist', '/get_list.php', {
		method: 'post',
		parameters: $('maintenance_form').serialize(true),
		insertion: Insertion.Bottom,
		onSuccess: function() {
			$('region_id').selectedIndex = 0;
			$('region_name').clear().activate();
			load_companies();
		}
	});
}
