/*
implements a popup window that loads a form via AJAX and returns the name value pairs
in the form when it closes
*/


// Copyright (c) NimbleCat, 2008

// make sure that the required includes are there
 if (typeof NC == 'undefined') {
       alert("generatedlist.js requires the NC JavaScript framework");
 }
 
/* constructor
 * 
 */ 
 NC.widget.GeneratedList = function( targetFormName) {
 		this.targetFormName = targetFormName;
 }
 
 
  NC.widget.GeneratedList.prototype = {

 	initialize: function(targetFormName) {
 		this.targetFormName = targetFormName;
 	},
 	
 	listCheckedBoxes: function( ) {
 		var list = '';
 		var form = document.forms[this.targetFormName];
	   	for (var i = 0; i < form.elements.length; i++) {
		   	var element = form.elements[i];
		   	switch( element.type.toLowerCase()) {
      			case 'checkbox':
      				if (element.checked == true) {
      					if (list.length > 0) {
      						list += ',';
      					}
      					list += element.name;
      				}
      				break;
      			
      			default:
      				break;
		   		
		   	}
	   	}
	   	return list;
 	},
 	
 	countCheckedBoxes: function( ) {
 		var count = 0;
 		var form = document.forms[this.targetFormName];
	   	for (var i = 0; i < form.elements.length; i++) {
		   	var element = form.elements[i];
		   	switch( element.type.toLowerCase()) {
      			case 'checkbox':
      				if (element.checked == true) {
      					count += 1;
      				}
      				break;
      			
      			default:
      				break;
		   		
		   	}
	   	}
	   	return count;
 	},
 	
 	setAllCheckboxes: function( value) {
// 		alert( this.listCheckedBoxes());
 		var form = document.forms[this.targetFormName];
	   	for (var i = 0; i < form.elements.length; i++) {
		   	var element = form.elements[i];
		   	switch( element.type.toLowerCase()) {
      			case 'checkbox':
      				element.checked = value;
      				break;
      			
      			default:
      				break;
		   		
		   	}
	   	}
 	},
 	
 	submitFilter: function( containerId, filterParameters, contentContainerId, addToHistory) {
 		var url = './sc.php?' + filterParameters; 
 		var container = container = document.getElementById(containerId);
// 		alert( 'ContainerId = ' + containerId);
// 		alert( "Container = " + container);
// 		var filters = container.descendants();
 		var filters = NC.util.Dom.descendants(container);
// 		alert( "Filter length = " + filters.length);
 		var i;
 		for (i = 0; i < filters.length; i++) {
 			var element = filters[i]
// 			alert( 'element name = ' + element.name);
// 			alert( 'element tag = ' + element.tagName);
	 		var value = '';
	 		switch( element.tagName.toLowerCase()) {
	 			case 'select':
	 				value = element.options[element.selectedIndex].value;
	 				break;
 			
	 			case 'input':
	 				value = element.value;
	 				break;
 			
	 			case 'default':
	 				value = '';
	 		}
//	 		alert( 'Value length= ' + value.length);
	 		if (value.length > 0) {
	 			url += '&' + element.name + '=' + value;
//	 			alert( "url = " + url);
	 		}
 		}
// 		alert ( value);
// 		var value = element.options[element.selectedIndex].value;
 		url += "&ref=" + new Date().getTime()
		var parms = '';
//		alert( url);
		var updater = new NC.util.AjaxUpdate( 'GET', url, contentContainerId,  contentContainerId, null);
		updater.doUpdate( true);
		if (addtoHistory) {
			NC.util.AjaxManager.addMainFrameHistory(url);
		}
		/*
		var request = new Ajax.Updater(
			'MainFrame',
			url, 
			{
				method: 'get', 
				parameters: parms
			}
		);
		* */
 	}
 }

