Event.observe(window, 'load', function(){
	// if IE5.5+ on win32, then display PNGs with AlphaImageLoader
	if ((/MSIE 5.5/.test(navigator.userAgent)) || (/MSIE 6/.test(navigator.userAgent))) {
		document.getElementsByClassName('ie-fix-opacity').each(function(el) {
			var bg = el.getStyle('background');
			if (bg != null) {
				// get the current background, then set to "none"
				bg = bg.substring(4, bg.length-1);
				el.setStyle({background: 'none'});
				// add the filter
				var filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + bg + '", sizingMethod="scale")';
				el.style.filter = filter;
			}
		});
	}
}, false);

/*
 * Clear the text from the control with the id provided
 * if its value is equal to the value provided
 */
function clearText(id, value, pass) 
{
	var el = $(id); //document.getElementById(id);
	if (el && el.value == value)
	{
		el.value = "";
	}
}
/*
 * Reset the text from the control with the value provided
 * if its value is empty
 */
function resetText(id, value) {
	var el = $(id);
	if (el.value == "") {
		el.value = value;
	}
}

function limitText(limitField, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	}
}

function submit_on_enter(form_field, e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;
	if (keycode == 13)
   	{
   		form_field.form.submit();
   		return false;
   	}
	else
   		return true;
}

function artist_search_submit_on_enter(form_field,e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;
	if (keycode == 13)
   	{
		artist_search_on_submit();
   		setTimeout("document.artist_search_form.submit()", 1000);
   		return false;
   	}
	else
   		return true;
}

function artist_search_on_submit()
{
	
	document.artist_search_form.action += artist_encode(document.getElementById('artist_input').value) + '/';
	
}

function artistCollapse(sType, aArgs)
{
	$('artist_input').focus();
}

function artistArrowTo( oSelf , elItem ){
	$('artist_input').value = elItem[1]._oResultData[0];
}

function artist_encode(text){
	return escape(text.replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\&/g, '__and__').replace(/\//g, '_-_') );
}

var chan_animating = false;
function toggle_channels_drop()
{
	if(!chan_animating)
	{
		if (!$('channels_drop').expanded) {
			chan_animating = true;
			Effect.Appear('channels_drop', {duration:1,beforeStart: freeze, afterFinish: function (){$('channels_drop').expanded = true;chan_animating = false;wake();}});
		}
		else{
			hide_channels_drop();		
		}
	}
	return false;
}
function hide_channels_drop(){
	if(!chan_animating)
	{
		chan_animating = true;
		Effect.Fade('channels_drop', {duration:1,beforeStart: freeze, afterFinish: function (){$('channels_drop').expanded = false;chan_animating= false;wake();}});
	}
}
function clear_delay_hide()
{
	if($('channels_drop').delay_hide){
		clearTimeout($('channels_drop').delay_hide);
	}
}
function set_delay_hide(){
	if($('channels_drop').delay_hide){
		clearTimeout($('channels_drop').delay_hide);
	}
	$('channels_drop').delay_hide = setTimeout("hide_channels_drop()",2500);
}

function select_channels_drop()
{
	return false;
}



function toggle_bio(){
	var tog = $('bio_toggle');
	var more = $('bio_more');
	if(more)
	{
		if(tog.hasClassName('more')){
			tog.removeClassName('more');
			tog.addClassName('less');
			more.style.display = 'inline';
			$('dots').hide();
		}
		else{
			tog.removeClassName('less');
			tog.addClassName('more');
			more.style.display = 'none';
			$('dots').show();
		}
	}
}

function scroll_to_login(){
	new Effect.ScrollTo('member_login', {offset: -75,afterFinish: function (){new Effect.Pulsate('username'); $('username').focus();}});
	return false;

}

function setVideoAnchor(id){
	self.document.location.hash = "#\/video\/" + id;
}

function setPhotoAnchor(id){
	self.document.location.hash = "#\/photo\/" + id;
}

function freeze(){
	if(typeof(player) !="undefined")
	{
		if (player.ready) player.sleep();
	}
}
function wake(){
	if(typeof(player) !="undefined")
	{
		if (player.ready) player.wake();
	}
}

var block_size = 312;
var first_page = 1;
var is_scrolling = false;


function initScrollArrows(control, up_control , down_control){
	var top = $(control).getStyle('top');
	top = parseInt(top,10);
	var curr_page = Math.abs(top / block_size) + 1;	
	updateScrollArrows(control,curr_page,up_control,down_control);	
}

function resetScrollArea(control, up_control, down_control){
	$(control).setStyle( 'top:0');
	updateScrollArrows(control, 1, up_control,down_control);

}



function updateScrollArrows(control, curr_page, up_control , down_control){
	var height = $(control).getStyle('height');
	if(height == null)
		height = 0;
	else
		height = parseInt(height,10);
	var last_page = Math.ceil(height / block_size);
	if(last_page < 1)
		last_page = 1;	

	if(curr_page == first_page && curr_page == last_page)
	{
		$(up_control).style.visibility = 'hidden';
		$(down_control).style.visibility = 'hidden';
	}
	else
	{
	
		if(curr_page == first_page)
			$(up_control).style.visibility = 'hidden';
		else
			$(up_control).style.visibility = 'visible';

		if(curr_page == last_page)
			$(down_control).style.visibility = 'hidden';
		else
			$(down_control).style.visibility = 'visible';
	}
}

function scroll_down(control, up_control, down_control){	
	var top = $(control).getStyle('top');
	var height = $(control).getStyle('height');
	top = parseInt(top,10);
	height = parseInt(height,10);
	var last_page = Math.ceil(height / block_size);
	var curr_page = Math.abs(top / block_size) + 1;
	if(curr_page != last_page){
		if(this.is_scrolling){return;}is_scrolling = true;
		
		new Effect.Move ($(control),{y: -block_size, mode: 'relative', fps:10, duration: 0.5, beforeStart:freeze ,afterFinish: after_scroll});
		curr_page += 1;
	}
	updateScrollArrows(control, curr_page, up_control, down_control);
}

function scroll_up(control, up_control, down_control){
	var top = $(control).getStyle('top');
	var height = $(control).getStyle('height');
	top = parseInt(top,10);
	height = parseInt(height,10);
	var last_page = Math.ceil(height / block_size);
	var curr_page = Math.abs(top / block_size) + 1;
	if(curr_page != first_page){
		if(is_scrolling){return;}is_scrolling = true;//top = top - block_size 	
		new Effect.Move ($(control),{y: block_size, mode: 'relative',fps:10, duration: 0.5, beforeStart:freeze,afterFinish: after_scroll});
		curr_page -= 1;
	}
	updateScrollArrows(control, curr_page, up_control, down_control);
	
}

function scroll_to_index(index, items_per_page, control, up_control, down_control){
	
	var top = $(control).getStyle('top');
	var height = $(control).getStyle('height');
	top = parseInt(top,10);
	height = parseInt(height,10);
	var curr_page = Math.abs(top / block_size) + 1;
	var index_page = Math.floor(index / items_per_page) + 1;
	top = ((curr_page - index_page) * block_size);
	if(is_scrolling){return;}is_scrolling = true;
	
	new Effect.Move ($(control),{y: top, mode: 'relative',fps:10,duration: 0.5, beforeStart:freeze ,afterFinish:after_scroll});
	updateScrollArrows(control,index_page, up_control,down_control);
}

function after_scroll(control, up_control, down_control){
	is_scrolling = false;
	wake();
}

function check_play_on_ready(autoplay){
		var anch = self.document.location.hash.substring(1);
		if(anch.match('\/video\/')){		
			var id = anch.replace(/\/video\//g, '');
			var index = get_media_index_from_id(id, player.playList);
			if(index != -1){
				scroll_to_index(index, 4, 'video_tab_content','video_up','video_down');
				player.playVideoIndex(index);			
			}
		}
		else if(anch.match('\/photo\/')){
			var id = anch.replace(/\/photo\//g, '');
			var index = get_media_index_from_id(id, player.photoList);
			if(index != -1){
				scroll_to_index(index, 12, 'photo_tab_content','photo_up','photo_down');
				player.playPhotoIndex(index);
			}
		} else if (autoplay) {
			if (player.playList) player.playVideoIndex(0);
		}
}


function get_media_index_from_id(id, list){

	var ret = -1;
	for (var i = 0; i <= list.length; i++)
   	{
  		if(list[i].call_context.id == id)
		{	
			ret = i;
			break;
		}   
   	}
	return ret;
}



function setVideoSelected(control_id, container_id){
	var container = $(container_id);
	if(container){
		var videos = container.select('div.video_item');
		for(var i=0; i < videos.length; i++) {
			if(videos[i].hasClassName('selected')){
				videos[i].removeClassName('selected');
			}
			if(videos[i].id == control_id){
				videos[i].addClassName('selected');
			}
		}
	}
}


/*
 * ARTIST AJAX
 */

function add_to_playlist(){
	new Ajax.Request('/my_concert/add_to_playlist/',
	{
		method: 'post',
		asynchronous: true,
		parameters: Form.serialize($('add_playlist_form')),
		onSuccess: function(transport){
			var res = transport.responseText.evalJSON(true);
			if(res.result)
			{
				$('playlist_dialog_error').innerHTML = res.message;
				if(res.playlist){
					var op = new Option(res.playlist.title, res.playlist.id, false, true);
   					var sel = $('playlist_video_playlist_id');
					sel.options.add(op);
					hide_create_playlist();
					$('select_playlist').style.display = 'block';
				}
				hide_playlist_dialog();
			}
			else
			{
				showAddError(res.message);
			}
			
		},
		onFailure: function(){ 
			showAddError('Playlist error.'); 
		}
	}); 
		
	return false;
 }


function createPlaylist()
{
	new Ajax.Request('/my_concert/create_playlist/',
	{
		method: 'post',
		asynchronous: true,
		parameters: $('playlist_title').serialize(),
		onSuccess: function(transport){
			var res = transport.responseText.evalJSON(true);
			if(res.result)
			{
				var op = new Option(res.playlist.title, res.playlist.id, false, true);
   				var sel = $('playlist_video_playlist_id');
				sel.options.add(op);
				hideCreationError();
				hide_create_playlist();
			}
			else
			{
				showCreationError(res.message);
			}
			
		},
		onFailure: function(){ showCreationError('Playlist error.'); }
	}); 
		
	return false;
 }


/*
 * show the playlist selection 
 * dialog for the media player
 */
function show_playlist_dialog(video_id, artist_name, video_title, video_desc, video_att, video_img){
	if($('select_playlist_menu')){
		$('dialog_title').innerHTML = video_title;
		$('dialog_att').innerHTML = video_att;
		$('dialog_desc').innerHTML = video_desc;
		$('dialog_video_id').value = video_id;
		if(video_img)
			$('dialog_video_img').src = video_img;
		else
			$('dialog_video_img').src = '/public/images/video_item_thumb.jpg';
	}
	 //new Effect.Appear('playlist_dialog', { duration: 1 });
	 //new Effect.BlindDown('playlist_dialog', {duration:1});
	
	$('playlist_dialog').style.display = 'block';
	return false;
}

function hide_playlist_dialog()
{
	document.getElementById('playlist_dialog').style.display = 'none';
	hideAddError();
	return false;
}

function hide_create_playlist()
{
	Effect.BlindDown('select_playlist_menu', {duration:1, beforeStart:freeze ,afterFinish:function(){$('playlist_title').value = 'PLAYLIST TITLE';hideCreationError(); wake();}});
	return false;
}
function show_create_playlist()
{
	Effect.BlindUp('select_playlist_menu', {duration:1, beforeStart: freeze,afterFinish: function(){hideAddError();wake();} });
	return false;
}

function hideAddError(){
	if($('playlist_add_error_text'))
		$('playlist_add_error_text').innerHTML = '';
	if($('playlist_add_error'))
		$('playlist_add_error').style.display = 'none';
	if($('playlist_add_message'))
		$('playlist_add_message').style.display = 'block';
	if($('add_ok'))	
		$('add_ok').removeClassName('error');
}
function showAddError(message){
	$('playlist_add_error_text').innerHTML = message;
	$('playlist_add_error').style.display = 'block';
	$('playlist_add_message').style.display = 'none';
	$('add_ok').addClassName('error');
}


function hideCreationError(){
	$('playlist_create_error_text').innerHTML = '';
	$('playlist_create_error').style.display = 'none';
	$('playlist_create_message').style.display = 'block';
	$('create_ok').removeClassName('error');
}
function showCreationError(message){
	$('playlist_create_error_text').innerHTML = message;
	$('playlist_create_error').style.display = 'block';
	$('playlist_create_message').style.display = 'none';
	$('create_ok').addClassName('error');
}


/*REMIND*/

function showRemindDialog(control_id, program_id, title) {

	var control = $(control_id);
	if (!control.expanded) {
		var tcontrol = control.select('span.title');
		if(tcontrol[0]){
			tcontrol[0].innerHTML = title;
			var submit_button = control.select('a.remind');
			submit_button[0].onclick = function(){return submitReminder(program_id,control_id);};
		}
		Effect.Appear(control, {duration:.5,afterFinish: function (){control.expanded = true;}});	
		
	}
}

function hideRemindDialog(control_id) {
	var control = $(control_id);
	var submit_button = control.select('a.remind');
	if(submit_button[0])
		submit_button[0].onclick = null;
	Effect.Fade(control, {duration:.5,afterFinish: function (){control.expanded = false;clearRemindError(control_id);}});		
}

function showRemindError(control_id, message)
{
	
	error = $(control_id).select('span.error');
	if(error[0])
		error[0].innerHTML = message;

}

function clearRemindError(control_id)
{
	error = $(control_id).select('span.error');
	if(error[0])
		error[0].innerHTML = "";

}

function submitReminder(program_id, control_id){

	//var element = Event.element(event);
  	
	new Ajax.Request('/my_concert/remind_me/',
	{
		method: 'post',
		asynchronous: true,
		parameters: { program_id: program_id },
		onSuccess: function(transport){
			hideRemindDialog(control_id);
		},
		onFailure: function(transport){ 
			showRemindError(control_id,  transport.responseText); 
		}
	}); 
		
	return false;
 }




/*SHARE*/

function showShareDialog(video_id, title){
	freeze();
	//$('share_dialog_title').innerHTML = title;
	$('friends_email').value = 'FRIENDS EMAIL';
	$('share_video_id').value = video_id;
	$('share_dialog').show(); //style.display = 'block';
	wake();
}
function hideShareDialog(){
	freeze();
	$('share_dialog').hide();//style.display = 'none';
	wake();
}

function validateShareForm(){
	allClear = true;
	if(!validateEmail($('your_email'))){
		allClear = false;
		setInputError($('your_email'));
	}
	else
	{
		resetShareFormInput($('your_email'));
	}
	if(!validateEmail($('friends_email'))){
		allClear = false;
		setInputError($('friends_email'));
	}
	else
	{
		resetShareFormInput($('friends_email'));		
	}
	if(!validateRequired($('your_name'),'YOUR NAME')){
		allClear = false;
		setInputError($('your_name'));
	}
	else
	{
		resetShareFormInput($('your_name'));
	}
	return allClear;
}

function validateTellFriendForm(){
	allClear = true;
	if(!validateEmail($('yemail'))){
		allClear = false;
		setInputError($('yemail'));
	}
	if(!validateEmail($('femail'))){
		allClear = false;
		setInputError($('femail'));
	}
	if(!validateRequired($('fname'),'FRIENDS NAME')){
		allClear = false;
		setInputError($('fname'));
	}
	
	if(allClear)
		clearText('share_message','TYPE YOUR MESSAGE HERE',false);
	
	
	return allClear;
}


function validateRequired(field, ignore_value)
{
	if (field.value==null||field.value==""||field.value==ignore_value)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function resetShareFormInput(input) {
	input.setStyle({ backgroundColor: '#ffffff', color: '#696969' });
}


function shareVideo(video_id, type){

	if(validateShareForm())
	{

	new Ajax.Request('/share/share_video/',
	{
		method: 'post',
		asynchronous: true,
		parameters: Form.serialize($('share_form')),
		onSuccess: function(transport){
			hideShareDialog();
		},
		onFailure: function(transport){ 
			showShareError(); 
		}
	}); 
	
	}	
	return false;
 }



function updateComments(artist_id, page_num){
	new Ajax.Updater({ success: 'comments_container' }, '/artist/show_comments/' + artist_id + '/', {
  	parameters: { comment_page: page_num },
	onComplete: function(transport) {
		new Effect.ScrollTo($('comments_container'));
	}

  	});

	return false;
}


var videoViews = [];
function updateViewCount(id){
	if(videoViews.indexOf(id) < 0)
	{
		videoViews.push(id);	
		new Ajax.Request('/video/update_view_count/' + id,
		{
			method: 'post',
			asynchronous: true
		});
	} 
	return false;
	 
}




/**
 *  AJAX for NEWS 
 */

function loadFeed(url, feed_id) {

	var el = $('feed-'+feed_id);
	
	new Ajax.Updater(el, '/news/feed/', {
		parameters: { feed: url, feed_id: feed_id },
		evalScripts: true
	});
}

/**
 *  CHANNELS
 */

function loadChannel(channel_id, play_id) {
	window.location.hash = '/' + channel_id;
	updateChannel(channel_id, play_id);
	channel = channel_id;
}

function updateChannel(channel_id, play_id) {
	new Ajax.Updater('video_tab_content', '/channels/get_video_list/', {
		parameters: { channel: channel_id, play: play_id },
		evalScripts: true,
		onSuccess: function(transport) {
		    //$('media_container').scrollTo();
			$('yui-custom-artist').scrollTo(); // might need to figure out a better way to do this
		}
	});
}

/**
 *  WIN
 */

function enterContest() {
	var agree = $('agree');
	if (!agree.checked) {
		alert('Please agree to the Contest Rules before entering.');
	} else {
		if (validateEntryForm()) {
			$('entry_form').request({
				onComplete: function(response){
					if (response.responseText == 'true') {
						//alert("You've been entered in the contest.");
						$('enter_button').hide();  
						new Effect.BlindUp('entry_form_container', { duration:1.0, afterFinish: function() {
							new Effect.BlindDown('entered', {duration:1.0});
						} });
					} else {
						alert('There was an error creating your contest entry.  Please try again later.');
					}
				}
			})
		}
	}
}

/** 
 * validate the form for a contest entry.  not the best way, but functional
 */
function validateEntryForm() {
/*	
cell_phone
birthday
gender
*/	
	var valid = true;
	if ($('first_name').value == 'first name') {
		valid = false;
		setInputError($('first_name'));
	} else {
		resetEntryFormInput($('first_name'));
	}
	if ($('last_name').value == 'last name') {
		valid = false;
		setInputError($('last_name'));
	} else {
		resetEntryFormInput($('last_name'));
	}
	if ($('address_1').value == 'address 1') {
		valid = false;
		setInputError($('address_1'));
	} else {
		resetEntryFormInput($('address_1'));
	}
	if ($('city').value == 'city') {
		valid = false;
		setInputError($('city'));
	} else {
		resetEntryFormInput($('city'));
	}
	if ($('state').value == 'state') {
		valid = false;
		setInputError($('state'));
	} else {
		resetEntryFormInput($('state'));
	}
	if ($('zip').value == 'zip') {
		valid = false;
		setInputError($('zip'));
	} else {
		resetEntryFormInput($('zip'));
	}
	if ($('email').value == 'email' || !validEmail()) {
		valid = false;
		setInputError($('email'));
	} else {
		resetEntryFormInput($('email'));
	}
	
	if (valid) {
		return true;
	} 
	
	return false;
}

function resetEntryFormInput(input) {
	input.setStyle({ backgroundColor: '#fff', color: '#696969' });
}

function setInputError(input) {
	input.setStyle({ backgroundColor: '#c22', color: '#fff' });
}

function validEmail() {
	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test($('email').value));
}

function validateEmail(email) {
	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email.value));
}


/**
 *  MY CONCERT
 */
function expandPlaylist(plist) {
	var effects = [];
	freeze();
	if (!$(plist).expanded) {
			var sortable = $$('.playlist_container');
			for (var s = 0; s < sortable.length; s++) {
				if ($(sortable[s]).expanded){
					effects.push(new Effect.BlindUp(sortable[s].id,{duration: 0.5}));
					$(sortable[s]).expanded = false;
				}
			}
		effects.push(new Effect.BlindDown(plist, {duration: 0.5}));
		new Effect.Parallel(effects, {duration: this.duration, queue: {position: 'end', scope: ''}});
		$(plist).expanded = true;
	} else {
		new Effect.BlindUp(plist, {duration: 0.5});
		$(plist).expanded = false;
	}
	wake();
}


function deletePlaylist(playlist_id, control_id) {
	
	new Ajax.Request('/my_concert/delete_playlist/',
	{
		method: 'post',
		asynchronous: true,
		parameters: {playlist_id: playlist_id} ,
		onSuccess: function(transport){
			$(control_id).remove();
		},
		onFailure: function(){ alert("Error deleting playlist!"); }
	}); 
		
	return false;

}

function deletePlaylistItem(item_id, control_id) {

	new Ajax.Request('/my_concert/delete_playlist_item/',
	{
		method: 'post',
		asynchronous: true,
		parameters: {video_item_id: item_id} ,
		onSuccess: function(transport){
			$(control_id).remove();
			
		},
		onFailure: function(){ alert("Error deleting item!"); }
	}); 
		
	return false;
}


function loadPlaylist(playlist_id) {

	new Ajax.Updater({ success: 'video_tab_content' }, '/my_concert/load_playlist', {
  	parameters: { playlist_id: playlist_id},
	onComplete: function(transport) {
		initScrollArrows('video_tab_content','video_up','video_down');
		player.stopVideo();
		/*player.playVideoIndex(0);*/
		},
	evalScripts: true
  	});

	return false;
}

//*********** MY CONCERT **************
function showInput(label, el, val) {
	$(label).hide();
	$(el).show();
	if ($(el).value == val) $(el).value = '';
	$(el).focus();
}
function hideInput(label, el, val) {
	if ($(el).value == '') {
		$(el).hide();
		$(label).show();
	}
}

// CHANGE PASSWORD
function changePassword() {
	// validate confirmation, then submit
	if (requiredPasswords()) {
		if ($('new_password_confirm').value != $('new_password').value) {
			$('flash_notice').update('Your new passwords do not match.')
			$('flash_notice').show();
			setInputError($('new_password'));
			setInputError($('new_password_confirm'));
		} else {
			$('change_password_form').request({
				onComplete: function(response){
					var res = response.responseText.evalJSON(true);
					if (res.result) {
						$('message').update(res.message);
						new Effect.Appear('confirm_notice', { duration:0.3 });
					} else {
						$('flash_notice').update(res.message);
						$('flash_notice').show();
					}
				}
			});
		}
	} else {
		$('flash_notice').update('Please enter the required fields.')
		$('flash_notice').show();
	}
	//$('change_password_form').submit();
}
function requiredPasswords() {
	// LABELS
	var valid = true;
	if ($('password_label').value == 'current password' && $('password').value == '') {
		valid = false;
		setInputError($('password_label'));
	} 
	if ($('new_password_label').value == 'new password' && $('new_password').value == '') {
		valid = false;
		setInputError($('new_password_label'));
	} 
	if ($('new_password_confirm_label').value == 'new password confirm' && $('new_password_confirm').value == '') {
		valid = false;
		setInputError($('new_password_confirm_label'));
	} 	
	// INPUT FIELDS
	if ($('password').value == '') {
		valid = false;
		setInputError($('password'));
	} else {
		resetEntryFormInput($('password'));
		resetEntryFormInput($('password_label'));
	}
	if ($('new_password').value == '') {
		valid = false;
		setInputError($('new_password'));
	} else {
		resetEntryFormInput($('new_password'));
		resetEntryFormInput($('new_password_label'));
	}
	if ($('new_password_confirm').value == '') {
		valid = false;
		setInputError($('new_password_confirm'));
	} else {
		resetEntryFormInput($('new_password_confirm'));
		resetEntryFormInput($('new_password_confirm_label'));
	}
	if (valid) return true;
	
	return false;
}

function submitForgotPassword() {
	if (requiredEmail()) {
		$('forgot_password_form').request({
			onComplete: function(response){
				var res = response.responseText.evalJSON(true);
				if (res.result) {
					$('message').update(res.message);
					new Effect.Appear('confirm_notice', { duration:0.3 });
				} else {
					$('flash_notice').update(res.message);
					$('flash_notice').show();
				}
			}
		});
	} else {
		$('flash_notice').update('Please enter an email address.')
		$('flash_notice').show();
	}	
}
function requiredEmail() {
	// LABELS
	var valid = true;
	if ($('email').value == 'your email address' || $('email').value == '' || !validateEmail($('email'))) {
		valid = false;
		setInputError($('email'));
	} else {
		resetEntryFormInput($('email'));
	}
	if (valid) return true;
	
	return false;
}

function requiredLoginFields() {
	var valid = true;
	if ($('username').value == 'username' || $('username').value == '') {
		valid = false;
		setInputError($('username'));
	} else {
		resetEntryFormInput($('username'));
	}
	if ($('password').value == 'password' || $('password').value == '') {
		valid = false;
		setInputError($('password'));
	} else {
		resetEntryFormInput($('password'));
	}
	if (valid) return true;
	
	return false;
}

function loginSubmit() {
	if (requiredLoginFields()) {
		$('login_form').submit();
	} else {
		$('flash_notice').update('Please enter the required fields.')
		$('flash_notice').show();
	}	
}

function requiredRegisterFields() {
	
	var valid = true;
	if ($('username').value == 'username' || $('username').value == '') {
		valid = false;
		setInputError($('username'));
	} else {
		resetEntryFormInput($('username'));
	}

	if ($('email').value == 'email' || $('email').value == '') {
		valid = false;
		setInputError($('email'));
	} else {
		resetEntryFormInput($('email'));
	}

	if ($('password_label').value == 'password' && $('password').value == 'password') {
		valid = false;
		setInputError($('password_label'));
	} 
	if ($('password_confirm_label').value == 'password conf' && $('password_confirm').value == 'password') {
		valid = false;
		setInputError($('password_confirm_label'));
	} 	
	// PASSWORD FIELDS
	if ($('password').value == 'password') {
		valid = false;
		setInputError($('password'));
	} else {
		resetEntryFormInput($('password'));
		resetEntryFormInput($('password_label'));
	}
	if ($('password_confirm').value == 'password') {
		valid = false;
		setInputError($('password_confirm'));
	} else {
		resetEntryFormInput($('password_confirm'));
		resetEntryFormInput($('password_confirm_label'));
	}

	if ($('captcha').value == '') {
		valid = false;
		setInputError($('captcha'));
	} else {
		resetEntryFormInput($('captcha'));
	}

	if (valid) return true;
	
	return false;
}

function validateRegisterEmail() {
	var valid = true;
	if (!validateEmail($('email'))) {
		valid = false;
		setInputError($('email'));
	} else {
		resetEntryFormInput($('email'));
	}
	
	return valid;
}

function registerSubmit() {
	if (requiredRegisterFields()) {
		if (validateRegisterEmail()) {
			$('register_form').submit();
		} else {
			$('flash_notice').update('Please enter a correct email address.')
			$('flash_notice').show();
		}
	} else {
		$('flash_notice').update('Please enter the required fields.')
		$('flash_notice').show();
	}
}

function call_function_on_enter(form_field,e,func) {
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;
	if (keycode == 13)
	{
		Event.stop(e); // stop the form submission
		func();
		return true;
	}
	else {
		return true;
	}
}