var FORM_SECTIONS = [['evType', 'all_type'], ['subject', 'all_sub'], ['timeOfDay', 'all_time'], ['siteString', 'all_loc']];

// -- start init (and supporting functions) {{{
function init(){
	var startDate = $("keyStartDate");
	if (startDate){
		startDate.value = get_start_date();
	}

	FORM_SECTIONS.each(function(a){
		set_onclick(a[0], a[1])
	});

	// -- insert the iframe for the PopCalendarXP date picker (done this way so page actually validates)
	insert_datepicker_iframe();
}

function set_onclick(group_class, single_id){
	document.getElementsByClassName(group_class).each(function(c){
		c.onclick = function(){if(c.checked){$(single_id).checked = false;}}
	});

	$(single_id).onclick = function(){
		document.getElementsByClassName(group_class).each(function(c){c.checked = false});
	};
}

function get_start_date(){
	// set start date to today
	var d = new Date();

	//append a zero to months and dates with only one digit
	d = [d.getMonth() + 1, d.getDate(), d.getFullYear()].collect(function(x){
		if (x < 10){
			x = "0" + x;
		}
		return x;
	});

	return d.join('/');
}

function insert_datepicker_iframe(){
	var iframe = '<iframe width="132" height="142" name="gToday:contrast:agenda.js" id="gToday:contrast:agenda.js" src="/search/ipopeng.htm" scrolling="no" frameborder="0" style="visibility:visible; z-index:999; position:absolute; left:-500px; top:0px;"></iframe>'
	new Insertion.Bottom(document.body, iframe);
}
// -- end init (and supporting functions) }}}

// -- start go (and supporting functions) {{{
function go(){
	var cX = ['t:8//:ssl//sitemap taxonomy//:Calendar:'];

	// user query
	var query = $("keyPhrase");
	if (query && query.value != ""){
		$('command').value = "text";
		$('attr1').value = query.value;
	}

	// start date and end date constraint
	get_start_and_end_date("keyStartDate", "keyEndDate").each(function(d){
		cX.push(d);
	});

	FORM_SECTIONS.each(function(section){
		var group_class = section[0];
		var checked_values = get_checked_values(group_class);
		var ary_checked_values = new Array()
		
		if (checked_values.length != 0) {
			if (group_class == 'siteString') {
			    for (i=0;i<checked_values.length;i++) {
                        ary_checked_values [i] = "s:8;" + group_class + ";:ss;" + checked_values[i];
                }
                cX.push(ary_checked_values.join('.'));
			}else{
				cX.push("e:8//" + group_class + "//:in//" + checked_values.join(','));
			}
		}
	});

	// push to form and disable unused
	for (var i=0; i < 7; i++){
		if (cX[i]) {
			$('c' + i).value = cX[i];
		}else{
			$('c' + i).disabled = true;
		}
	}

	$('search').submit();
}

function get_start_and_end_date(sd, ed){
	sd = format_query_date(sd);
	ed = format_query_date(ed);
	var d = [];

	if (sd != "" && ed != ""){
		d.push("dt:8//eventStartDate//:lte//" + ed);
		d.push("dt:8//eventStartDate//:gte//" + sd + ".dt:8//eventEndDate//:gte//" + sd);
	}
	else if (sd != ""){
		d.push("dt:8//eventStartDate//:gte//" + sd);
	}
	else if (ed != ""){
		d.push("dt:8//eventEndDate//:eq//" + ed);
	}
	return d;
}

function format_query_date(x){
	x = $F(x).split("/");
	x.unshift(x.pop());
	return x.join('..');
}

function get_checked_values(group_class) {
	var checked_values = [];

	document.getElementsByClassName(group_class).each(function(cb){
		if (cb.checked) {
			checked_values.push(cb.value);
		}
	});
	return checked_values;
}
// -- end go (and supporting functions) }}}
