function localtabs(tab, list)
{
	this.last_tab = null;
	this.last_list = null;
	this.swap(tab, list);
}

localtabs.prototype.swap = function (tab, list)
{
	if (this.last_tab)
	{
		document.getElementById(this.last_tab).style.display='none';
	}

	if (this.last_list)
	{
		document.getElementById(this.last_list).setAttribute('className', '');
		document.getElementById(this.last_list).setAttribute('class', '');
	}

	if (document.getElementById(tab))
	{
		document.getElementById(tab).style.display='block';
	}

	if (document.getElementById(list))
	{
		document.getElementById(list).setAttribute('className', 'on');
		document.getElementById(list).setAttribute('class', 'on');
	}
	this.last_tab = tab;
	this.last_list = list;
}

/**
 * Open a new window with traffic information for the selected city.
 *
 * @param string id - element_id of the select field
 * @return bool
 */
function local_traffic_submit(id)
{
	if (document.getElementById(id))
	{
		var city_link = document.getElementById(id).value;

		// new window
		window.open(city_link);
	}

	return false;
} 

/**
 * Update the radiotime component with the new zipcode.
 *
 * @param mixed element_id element of input box to change zipcode
 * @param mixed err_element_id element to use to display an error message
 * @param mixed replace_id element to have the iframe update
 */
function local_change_radiotime_zip(element_id, err_element_id, replace_id)
{
	element_id = typeof(element_id) == 'string' ? document.getElementById(element_id) : element_id;
	err_element_id = typeof(err_element_id) == 'string' ? document.getElementById(err_element_id) : err_element_id;
	replace_id = typeof(replace_id) == 'string' ? document.getElementById(replace_id) : replace_id;

	if (element_id.value == local_prev_rt_zip)
	{
		return 0;
	}

	local_prev_rt_zip = element_id.value;

	if (!element_id.value.match(/^\d{5}$/))
	{
		err_element_id.innerHTML = 'Please enter a valid zipcode';
	}
	else
	{
		err_element_id.innerHTML = '';
		
		new SynAjax().update(
			replace_id.id,
			'local_ajax.php',
			{
				method: 'post',
				parameters: 'local_radiotime_zipcode=' + element_id.value
			}
		); 
	}
}

/**
 * Sends email on the event
 * @param (String) returndiv The div containing what to return
 * @param (String) eventdiv The div containing the event information
 */
function eventsendmail(returndiv, eventdiv)
{
	var config = {};
	config['to'] = null;
	config['email'] = null;
	config['subject'] = null;

	// Get return div obj
	var returnobj = document.getElementById(returndiv) ? document.getElementById(returndiv) : null;

	// Clear the returnobj.innerHTML or errors will be in email
	returnobj.innerHTML = '';
	
	// Get event div
	var eventobj  = document.getElementById(eventdiv) ? document.getElementById(eventdiv) : null; 
	
	if ((!returnobj) || (!eventobj))
	{
		// no point to attempt this... no return div / no event div
		return;
	}
	// Check / Get Config
	for (var key in config)
	{
		config[key] = (document.getElementById(key)) ? document.getElementById(key).value : null;		
		
		if (config[key] == null)
		{
			// there's really no point, were missing info
			return;	
		}
	}

	// Optional Fields
	config['bcc'] = (document.getElementById('bcc')) ? document.getElementById('bcc').value : null;
	config['message'] = (document.getElementById('message')) ? document.getElementById('message').value : null;
	config['copy'] = (document.getElementById('copy')) ? document.getElementById('copy').checked : null;;

	// Put in the html from the div to the message...
	if (config['message'])
	{
		config['message']  = '<pre>' + config['message'] + '</pre><br /><hr />';
		config['message'] += eventobj.innerHTML;
	}
	else
	{
		config['message'] += eventobj.innerHTML;
	}
	
	// Handle Copy Checkbox
	var copy = (config['copy']) ? 1 : 0;
	
	var url =  Syn.Config.PortalRoot+'local/eventmailsender.php?';
	url += 'to='       + encodeURIComponent(config['to']);
	url += '&from='    + encodeURIComponent(config['email']);
	url += '&bcc='     + encodeURIComponent(config['bcc']);
	url += '&subject=' + encodeURIComponent(config['subject']);
	url += '&message=' + encodeURIComponent(config['message']);
	url += '&copy='    + copy;

	// We made it here... lets attempt to send..
	var request = getXMLRequestObject();

	if (!request)
	{
		alert('Not Supported Browser');
		return;
	}

	request.open('GET', url, true);
	request.send(null);

	request.onreadystatechange = function()
	{
		if (request.readyState == 4)
		{
			var xml = request.responseText;
			if (xml == 'OK')
			{
				returnobj.innerHTML = '';
				hide_event_info_popup();
			}
			else
			{	
				returnobj.innerHTML = xml;
				$('#mail_status_message').slideDown('normal');
			}
		}
	}
}


/**
 * Gets the information for the upcoming events and pops it on the screen
 * @param (String) id 
 * @param (String) anchor_id
 */
function upcoming_events_info(id, anchor_id)
{
		var req = getXMLRequestObject();
		var url = Syn.Config.PortalRoot+'local/eventdetails_xhtml.php?event_id='+id;
		if (!req) 
		{ 
			alert('Outdated Browser Alert!\nPlease update your web browser to a newer version'); 
		}
		req.open('GET', url, true);
		
		req.onreadystatechange = function()  
		{
			if (req.readyState == 4) 
			{
				var xml = req.responseText;
				
				var div = document.getElementById("event_info_pop");
				if (!div)
				{
					div = document.createElement('div');
					div.id = "event_info_pop";
					document.getElementsByTagName('body').item(0).appendChild(div);
				}
				hide_id('event_info_pop');

				div.innerHTML = xml;
				
				var link_x = find_pos_x(document.getElementById(anchor_id));
				var link_y = find_pos_y(document.getElementById(anchor_id));
				var move_x = 0;
				if (link_x > 500 && screen.availWidth < 850) 
				{
					move_x = -350;
				}

				var move_y = 0;
				SYNACOR_Snap(anchor_id, 'event_info_pop', move_x, move_y);
				show_event_info_popup();

				add_event_listener(window, 'resize', function()
				{
					SYNACOR_Snap(anchor_id, 'event_info_pop', 0, 0);
				}, false);
			}
		}
	req.send(null);
}


/**
 * Hides problematic tags during dragging
 */
function hide_ie_superlayers()
{
	//IE 6 only
  if ( navigator.userAgent.indexOf('MSIE') < 0 )
	{
		return;
	}
	var types = ['embed','select','object','iframe'];

	for (var i=0;i<types.length;i++)
	{
		var tags = document.getElementsByTagName(types[i]);
		for (var j=0;j<tags.length;j++)
		{
			var tag = tags[j];
			if (tag.style.visibility = 'visible')
			{
				tag.style.visibility = 'hidden';
				tag.setAttribute('forced_hidden',true);
			}
		}
	}
}



/**
 * Iterates through tag types that show over the top of everything in IE and
 * makes them visible once again, only elements that are made invisible AND
 * given the forced_hidden attribute from "hide_naughty_tags()" will re-show
 */
function reveal_ie_superlayers()
{
	//IE 6 only
  if ( navigator.userAgent.indexOf('MSIE') < 0 )
	{
		return;
	}

	var types = ['embed','select','object','iframe'];

	for (var i=0;i<types.length;i++)
	{
		var tags = document.getElementsByTagName(types[i]);
		for (var j=0;j<tags.length;j++)
		{
			var tag = tags[j];
			if (tag.getAttribute('forced_hidden'))
			{
				tag.style.visibility = 'visible';
				tag.setAttribute('forced_hidden',false);
			}
		}
	}
}

/**
 * Hides the event popup
 */
function hide_event_info_popup()
{
	$('#event_info_pop .event_banner_ad iframe').css('visibility', 'hidden');
	$('#event_info_pop').slideToggle('normal', function(){
		reveal_ie_superlayers();
	});
}

/**
 * Shows the event popup
 */
function show_event_info_popup()
{
	 if ( navigator.userAgent.indexOf('MSIE 6.0') > 0 )
	 {
		 hide_ie_superlayers();
	 }
	$('#event_info_pop').slideToggle('normal', function(){
		// Becasue hide_ie_superlayers will hide the ad iframe.  We need to re-show it
		$('#event_info_pop iframe').css('visibility', 'visible');	
	});
}

