/* +----------------------------------------------------+ */
/* | JavaScript for Hextractor.com                      | */
/* +----------------------------------------------------+ */

/**
 * Call onLoad functions
 */
$(document).ready(function() {
	tab_observer();
	field_observer();
	file_input_observer();
	get_palette();
	reset_observer();
});

/**
 * Kill parent framesets
 */
if (top.location != self.location) {
	top.location.replace(self.location.href);
}

/**
 * Displays the form for the selected tab
 */
function tab_observer()
{
	$('#tab_list li a').click(function(event) {
		// Hide current form and switch tab focus 
		$('div.input_area').hide();
		$('#tab_list li a').removeClass('current');
		$('#tab_list li a').addClass('inactive');
		$('#' + this.id).addClass('current');
		// Show selected form 
		var form = this.id.replace('_tab', '_form');
		$('#' + form).show();
		event.preventDefault();
	});
}

/**
 * Watch form fields and take any necessary actions
 */
function field_observer()
{
	$('#url_field').click(function() {
		if ($('#url_field').get(0).value == $('#url_field').get(0).defaultValue) {
			$('#url_field').attr('value', '');
		}
	});
}

/**
 * Gets color palette from provided CSS 
 */
function get_palette()
{
	$('#form').submit(function(event) {
		// Figure out which form is active
		var input_id    = $('div.input_area:visible').get(0).id.replace('_form', '');
		var input_field = input_id + "_field";
		
		//pageTracker._trackPageview('/extract/' + input_id);
		$('#reset').show();
		
		// Don't use Ajax for file uploads; allow form to submit normally
		if (input_id == "upload") return true;
		
		var form = $('#form').serialize();		
		jQuery.post('/extract', form, function(data) {
			$('#palette').empty().append(data);
		});
		
		$('#' + input_field).attr('value', $('#' + input_field).get(0).defaultValue);
		event.preventDefault();
	});
}

/**
 * Display path and filename of selected file to upload.
 */
function file_input_observer()
{
	$('#upload_field').change(function() {
		var file_info       = $('#file_info').get(0);
		var file_info_label = $('#file_info_label').get(0);
		var file_path       = $('#upload_field').get(0).value;
				
		// Split path on *nix or Windows slashes
		var delimiter_regex = /(\/|\\)/;
		var path_parts   = file_path.split(delimiter_regex);
		var file_pos_num = path_parts.length - 1;
		var file_name    = path_parts[file_pos_num];
		
		$(file_info_label).show();
		$(file_info).empty().append(file_name).show();
	});
}

/**
 * Sorts color table by column header
 */
function color_table_observer()
{
	$('#colortable th a').click(function(event) {
		var column = this.id.replace('sort_', '');
		$('#colortable').load('/colormap/?sort=' + column);
		event.preventDefault();
	});
}

/**
 * Toggles visibility of palette source HTML
 */
function toggle_source()
{
	$('div.sourcelink').click(function() {
		$('#source_text').toggle('slow');
		$('#show_source').toggle();
		$('#hide_source').toggle();
	});
	$('#source_text').click(function() {
		$('#source_text textarea').select();
	});
}

/**
 * Clear submitted styles and display example again
 */
function reset_observer()
{
	$('#reset').click(function(event) {
		$('#palette').load('/reset');
		$('#reset').hide();
		event.preventDefault();
	});
}



