// methods to show/hide "AJAX" form divs. assumes you have _form, _busy, and _link divs
function show_busy_div(name) {
	if($(name+'_form')) { Element.hide(name+'_form'); };
	if($(name+'_link')) { Element.hide(name+'_link'); };
	if($(name+'_busy')) { Element.show(name+'_busy'); };
}
function show_form_div(name) {
	if($(name+'_link')) { Element.hide(name+'_link'); };
	if($(name+'_busy')) { Element.hide(name+'_busy'); };
	if($(name+'_form')) { Element.show(name+'_form'); };
}
function show_link_div(name) {
	if($(name+'_busy')) { Element.hide(name+'_busy'); };
	if($(name+'_form')) { Element.hide(name+'_form'); };
	if($(name+'_link')) { Element.show(name+'_link'); };
}
function clear_form_div(name) {
	if($(name+'_form')) { $(name+'_form').innerHTML = ''; }
	if($(name+'_form')) { Element.hide(name+'_form'); };
	if($(name+'_busy')) { Element.hide(name+'_busy'); };
	if($(name+'_link')) { Element.show(name+'_link'); };
}
// methods to show/hide "AJAX" form spans in table rows.
function show_busy_row(name,id) {
	if($('tr_'+name+'_link_'+id)) { Element.hide('tr_'+name+'_link_'+id); };
	if($('tr_'+name+'_busy_'+id)) { Element.show('tr_'+name+'_busy_'+id); };
}
function show_link_row(name,id) {
	if($('tr_'+name+'_busy_'+id)) { Element.hide('tr_'+name+'_busy_'+id); };
	if($('tr_'+name+'_link_'+id)) { Element.show('tr_'+name+'_link_'+id); };
}
// methods to show/hide busy widgets
function show_busy_widget(name) {
	if($(name)) { Element.show(name); };
} 
function hide_busy_widget(name) {
	if($(name)) { Element.hide(name); };
}
// -------------------------------------------------------

// method to validate form field input
function validate_required(field, alerttxt) {
	with (field) {
  	if (value==null || value=="") {
  		alert(alerttxt);
			return false;
  	}
  	else {
  		return true;
  	}
	}
}

function validate_time(element,which_time) {
	var time_str = $F(element);
	time_str = parse_time(time_str);
	if(time_str.length>0){return true;}
	alert(which_time+' is not a valid time. Please enter time in HH:MM(am|pm) format.');
	return false;
} // end validate_time()

function fix_times() {
	var stime = make_num_from_time_str(parse_time($F('event_start_time_display')));
	var etime = make_num_from_time_str(parse_time($F('event_end_time_display')));
	if(etime<stime){$('event_end_time_display').value=$F('event_start_time_display');};
	return true;
} // end fix_times()

function parse_time(time_str) {
	var output = '';
	time_str = time_str.toLowerCase();
	var hours = -1;
	var mins = -1;
	var is_pm = false;
	var pieces = time_str.split(':');
	if(pieces.length >= 2) {
		hours = Number(pieces[0]);
		if(pieces[1].indexOf('am')!=-1) {
			pieces[1] = pieces[1].substring(0,pieces[1].indexOf('am'));
		} else if(pieces[1].indexOf('pm')!=-1) {
			pieces[1] = pieces[1].substring(0,pieces[1].indexOf('pm'));
			is_pm = true;
		}
		mins = Number(pieces[1]);
	} else {
		if(time_str.indexOf('am')!=-1) {
			time_str = time_str.substring(0,time_str.indexOf('am'));
		} else if(time_str.indexOf('pm')!=-1) {
			time_str = time_str.substring(0,time_str.indexOf('pm'));
			is_pm = true;
		}
		mins = 0;
		hours = Number(time_str);
	}
	if(is_pm&&hours!=12){hours+=12;};	 // 01:00PM = 13:00
	if(!is_pm&&hours==12){hours-=12;}; // 12:00AM = 00:00
	if(hours>0&&hours<24&&mins>=0&&mins<60){
		if(hours<10){output='0';};
		output+=hours.toString()+':';
		if(mins<10){output+='0';};
		output+=mins.toString();
	}
	return output;
} // end parse_time()

function toggle_all_day() {
	if($F('event_all_day_event')) {
		Element.hide('start_time_field');
		Element.hide('end_time_field');
	} else {
		Element.show('start_time_field');
		Element.show('end_time_field');
	}
} // end toggle_all_day()

function make_num_from_time_str(time_str) {
	var output = 0;
	if(time_str.length>0){
		if(time_str.indexOf(':')!=-1){time_str=time_str.replace(':','');};
		output=Number(time_str);
	};
	return output;
} // end make_num_from_time_str()
function validate_time(element,which_time) {
	var time_str = $F(element);
	time_str = parse_time(time_str);
	if(time_str.length>0){return true;}
	alert(which_time+' is not a valid time. Please enter time in HH:MM(am|pm) format.');
	return false;
} // end validate_time()

function manage_link_add_category() {
	var ajax_url = 	'/manage/links/add_link_category?name=' + escape($F('new_link_category_name'));
	new Ajax.Updater('link_category_select',ajax_url,{asynchronous:true, evalScripts:true}); 
	show_busy_div('add_link_category');
	return false;
}

function flash_talk(parms){
	//parms.replace(/\|/g,'=').replace(/\:/g,'&')
	new Ajax.Request('/manage/documents/upload_complete?upload_session_id=' + parms, {asynchronous:true, evalScripts:true}); return false;
}

function apply_tags(){
	var tags = $F('batch_tags');
	var form_inputs = Form.getInputs('batch_form');
	
	for(var i=0; i<form_inputs.length; i++){
		if(form_inputs[i].name.match("tags")){
			if( form_inputs[i].value.length > 0 ){
				form_inputs[i].value = form_inputs[i].value + ", " + tags;
			} else {
				form_inputs[i].value = tags;
			}
		}
	}
	
	// clear out the field
	Field.clear('batch_tags');
}

function submit_add_document_category_form() {
	var cc_name = $F('new_document_category');
	var ws_id = $F('ws_id');
	show_busy_div("new_document_category");
	new Ajax.Updater('document_categories_form', 
									 '/manage/workshops/' + ws_id + '/ws_documents/new_document_category?name=' + cc_name, 
									 {asynchronous:true, 
										evalScripts:true, 
										onComplete:function(request){show_link_div("new_document_category")}
									 	}); 
	return false;
} // end submit_add_document_category_form()

function submit_add_committee_category_form() {
	var cc_name = $F('new_committee_category');
	show_busy_div("new_committee_category");
	new Ajax.Updater('committee_categories_form', 
									 '/manage/committees/new_committee_category?name=' + cc_name, 
									 {asynchronous:true, 
										evalScripts:true, 
										onComplete:function(request){show_link_div("new_committee_category")}
									 	}); 
	return false;
} // end submit_add_committee_category_form()

function submit_add_sponsor_to_level(sponsor,level) {
	var ws_id = $('ws_id').innerHTML;
	new Ajax.Updater('sponsors_bucket_'+level, 
									 '/manage/workshops/' + ws_id + '/sponsors/levels/' + sponsor + "/" + level, 
									 {asynchronous:true, 
										evalScripts:true, 
										onLoading:function(draggable, droppable){
											droppable.cleared = true; parentNode.removeChild(draggable);
										}}); 
	return false;

} // end submit_add_sponsor_to_level()