var UoN;

if (!UoN) { UoN = {}; }

if (!UoN.Policy) {
	UoN.Policy = {};
	
	/** Toggles Advanced Search Options in the Policy Library */
	UoN.Policy.toggleOptions = function() {
		var link = document.getElementById('advSearchOption');
		var options = document.getElementById('options');
		
		if (options.toggle) {
			return options.toggle();
		} else if (options) {
			var maxHeight;
			if (!YAHOO.util.Dom.hasClass(options,'expanded')) {
				YAHOO.util.Dom.addClass('options','expanded')
				maxHeight = options.offsetHeight;
				YAHOO.util.Dom.setStyle(options,'height',0);
			} else {
				maxHeight = options.offsetHeight;
			}

			var anim = new YAHOO.util.Anim(options);
			anim.duration = 0.5;
			anim.method = YAHOO.util.Easing.easeOut;

			options.toggle = function() {

				var currentHeight = options.offsetHeight;
				if (currentHeight > 0) {
					YAHOO.util.Dom.removeClass(link,'optionsOpen');
					anim.attributes = { height: { to: 0 } };
				} else {
					YAHOO.util.Dom.addClass(link,'optionsOpen');
					anim.attributes = { height: { to: maxHeight } };
				}
				anim.animate();
				return false;
			};
			return options.toggle();
		} else {
			return true;
		}
	};
}

if (!UoN.GoogleBox) { UoN.GoogleBox = {}; }

if (!UoN.GoogleBox.setRequiredFields) {

	/**
	 *  UoN.GoogleBox.setRequiredFields(form, fieldName[, fieldName]*)
	 *      Sets the 'requiredfields' parameter of a GoogleBox form to allow request filtering
	 *      using the required fields options of a Google Search Appliance.
	 *      Retrieves fields from the given form of fieldName, and appends their values to the
	 *      'requiredfields' field of the form in the following syntax.
	 *           fieldName:value[.(fieldName:value)+]
	 */
	UoN.GoogleBox.setRequiredFields = function(form) {

		var reqFields = new Array();

		reqFields.contains = function(val) {
			var i;
			for (i=0;i<reqFields.length;i++) {
				if (val == reqFields[i]) {return true;}
			}
			return false;
		};

		var i;
		for (i=1;i<arguments.length;i++) {
			reqFields[i-1]=arguments[i];
		}


		var reqFieldsValue = '';
		var reqFieldsObject;

		var elem, name, type, value;
		for (i=0;i<form.elements.length;i++) {

			elem = form.elements[i];
			name = elem.name;
			type = elem.type;

			if (name && type) {
				if (name == 'requiredfields') {
					reqFieldsObject = elem;

				} else if (reqFields.contains(name)){
					if (type.indexOf('select') != -1) {
						value = elem.options[elem.selectedIndex].value;
					} else {
						value = elem.value;
					}


					if (value != '') {
						if (reqFieldsValue != '') { reqFieldsValue += '.' }

						reqFieldsValue += encodeURI(name) + ':' + encodeURI(value);
					}
				}
			}
		}

		if (reqFieldsObject) {
			reqFieldsObject.value = reqFieldsValue;
		}
	}
}

