function trim(s) { return s.replace( /^\s*/, '' ).replace( /\s*$/, '' ); }

function make_link() {
	//link
	var code = "<a href=\"http://uwhub.ca/";
	var title = 'UWhub - a search engine for content related to the University of Waterloo';
	var linkquery = trim(document.getElementById('linkquery').value);
	if (document.getElementById('rlinkquery').checked && linkquery) { code += '?q=' + linkquery; title = "UWhub search results for '" + linkquery + "'";;}
	code += '" title="' + title + '">';
	//text/img
	var linktypes = document.getElementsByName('linktype');
	var i=0;
	while (!linktypes[i].checked) { i++; }
	if (i==0) { code += 'UWhub'; }
	else {
		code += '<img alt="UWhub" src="http://uwhub.ca/img/';
		if (i==2) { code += 'big'; var width = '88'; var height = '31'; }
		else { var width = '80'; var height = '15'; }
		code += 'button.png" width="' + width + '" height="' + height + '" border="0" />';
		}
	//end link
	code += '</a>';
	//display code
	document.getElementById('code-link').value = code;
	return false;
	}
function link_query() {
	if (document.getElementById('linkquery').value) { document.getElementById('rlinkquery').checked = 'checked'; }
	else { document.getElementById('rlink').checked = 'checked'; }
	make_link();
	}
function queryclick() {
	document.getElementById('linkquery').focus();
	make_link();
	}
function make_link2(obj) { make_link(); } //hack for IE
function no_return() { return false; }
make_link();
document.getElementById('link-sub').style['display'] = 'none';
var form = document.getElementById('f-link');
form.onsubmit = no_return;
for (var i=0; i<form.elements.length; i++) {
	if (form.elements[i].type == 'radio') { var func = new Function('make_link2(this)'); form.elements[i].onchange = func; }
	else if (form.elements[i].type == 'text') { form.elements[i].onkeyup = link_query; form.elements[i].onblur = link_query; }
	}
document.getElementById('rlinkquery').onclick = queryclick;
document.getElementById('code-link').onfocus = make_link; //required for IE

function make_box() {
	var breakbit = ' ';
	if (document.getElementById('shape-tall').checked) { breakbit = '<br />'; }
	var logocode = '';
	var button = '';
	if (document.getElementById('logo-yes').checked) { logocode = '<a href="http://uwhub.ca/"><img src="http://uwhub.ca/img/logo_line.png" alt="UWhub" width="65" height="22" border="0" style="vertical-align:bottom" /></a>' + breakbit; }
	else { button = ' UWhub'; }
	var within_other = false;
	if (document.getElementById('within-other')) { within_other = document.getElementById('within-other').checked; }
	var within_uw = document.getElementById('within-uw').checked;
	var within_people = document.getElementById('within-people').checked;
	var within_ext = document.getElementById('within-ext').checked;
	var ext_name = trim(document.getElementById('ext-name').value);
	var ext_act = trim(document.getElementById('ext-act').value);
	var ext_var = trim(document.getElementById('ext-var').value);
	var external = false;
	if (within_ext && ext_name && ext_act && ext_var) { external = true; }
	var nicename = '';
	if (document.getElementById('nicename')) { nicename = document.getElementById('nicename').childNodes[0].nodeValue; }
	var within = '';
	if (document.getElementById('within')) { within = document.getElementById('within').value; }
	var hidden = '';
	var select = '';
	var radio = '';
	//one option
	if (within_other && !within_uw && !within_people && !external) { button = ' ' + nicename; hidden = '<input type="hidden" name="within" value="' + within + '" />'; }
	else if (within_uw && !within_people && !within_other && !external) { hidden = '<input type="hidden" name="within" value="uw" />'; }
	//multiple options
	else if (within_uw || within_other || (within_people && external)) {
		var withins = new Array;
		if (external) { withins['external:' + ext_act + ',' + ext_var] = ext_name; }
		if (within_other) { withins[within] = nicename; }
		if (within_uw) { withins['uw'] = 'UW'; }
		if (within_people) { withins['vertical:people'] = 'people'; }
		if (document.getElementById('dropdown').checked) {
			select = '<select name="within">';
			for (var v in withins) { select += '<option value="' + v + '">' + withins[v] + '</option>'; }
			select += '</select>' + breakbit;
			}
		else {
			var ch = new Array (' checked="checked"');
			var i = 0;
			for (var v in withins) { if(!ch[i]){ch[i]='';} radio += '<label><input type="radio" name="within" value="' + v + '"' + ch[i] + ' />' + withins[v] + '</label>' + breakbit; i++; }
			if (breakbit==' ') { radio = trim(radio); }
			else { radio = radio.substring(0, radio.length-6); }
			radio = '<br />' + radio;
			}
		}

	var code = '<form action="http://uwhub.ca/">' + hidden + logocode + '<input type="text" name="q" />' + breakbit + select + '<input type="submit" value="search' + button + '" />' + radio + '</form>';
	document.getElementById('code-box').value = code;
	document.getElementById('preview').innerHTML = code;
	return false;
	}
function box_check(obj) {
	var i = 0;
	if (document.getElementById('within-people').checked) { i++; }
	if (document.getElementById('within-uw').checked) { i++; }
	if (document.getElementById('within-other')) { if (document.getElementById('within-other').checked) { i++; } }
	if (i==0) { document.getElementById('within-uw').checked = 'checked'; i++ }
	if (document.getElementById('within-ext').checked) { i++; document.getElementById('ext-ops').style['display'] = 'block'; }
	else { document.getElementById('ext-ops').style['display'] = 'none'; }
	if (i<2) { document.getElementById('show-ops').style['display'] = 'none'; }
	else { document.getElementById('show-ops').style['display'] = 'inline'; }
	make_box();
	}
function make_box2(obj) { make_box(); } //hack for IE
box_check();
var form = document.getElementById('f-box');
form.onsubmit = no_return;
document.getElementById('box-sub').style['display'] = 'none';
//document.getElementById('box-sub').onclick = make_box;
for (var i=0; i<form.elements.length; i++) {
	if (form.elements[i].type == 'radio') { var func = new Function('make_box2(this)'); form.elements[i].onclick = func; }
	else if (form.elements[i].type == 'text') { form.elements[i].onkeyup = make_box; form.elements[i].onblur = make_box; }
	else if (form.elements[i].type == 'checkbox') { var func = new Function('box_check(this)'); form.elements[i].onclick = func; }
	}