var Closeable = Class.create();
Closeable.prototype = {
	initialize : function(parent, callback) {
		this.parent = parent;
		this.callback = callback;

		this.trigs = Array();
		this.targs = Array();
		this.actuators = Array();

		this.trigs = this.childrenWith(parent, "ClTrig");

		for(var i=0; i< this.trigs.length; i++){
			this.actuators[i] = this.trigs[i].getElementsByTagName("input")[0];
			if(this.actuators[i].type == "checkbox"){
				this.targs[i] = this.childrenWith(parent, "ClTarg");
			}else{
				this.targs[i] = document.getElementsByClassName(this.actuators[i].value);
			}
			Event.observe(this.trigs[i], "click", this.update.bindAsEventListener(this));
		}
		this.update(null);
	},

	update : function(e) {
		var c = 0;

		if(this.trigs.length == 1){
			if (this.actuators[0].checked) {
				this.parent.addClassName("optopen");
				this.targs[0][0].removeClassName("closed");
			} else {
				this.parent.removeClassName("optopen");
				this.targs[0][0].addClassName("closed");
				this.clearInnerFields($A(this.targs[0][0].getElementsByTagName("input")));
			}

		}else {
			this.parent.removeClassName("optopen");
			for(var i=0; i<this.trigs.length; i++){
				for(var j=0; j<this.targs.length; j++){
					if(this.targs[i][j]){
						this.targs[i][j].addClassName("closed");
					}
				}
			}
			for(var i=0; i<this.trigs.length; i++){
				for(var j=0; j<this.targs.length; j++){
					if(this.actuators[i].checked && this.targs[i] && this.targs[i][j]){
						this.parent.addClassName("optopen");
						this.targs[i][j].removeClassName("closed");
						c = i;
					}
				}
			}
		}
		// var $content = $("outer").innerHTML;
		// $("outer").innerHTML = $content;
		// if ($blah) alert($content);
		if(this.callback){
			this.callback(this.actuators[c]);

		}

	},

	clearInnerFields: function(arr){
		for(var i=0; i<arr.length; i++){
			if(arr[i].hasClassName("CloseablePreserve")){
				continue;
			}
			if(arr[i].type == "checkbox"){
				arr[i].checked = false;
			}else if(arr[i].type == "text"){
				arr[i].value = "";
			}
		}
	},



	// fixes for broken scriptaculous functions
	// (childrenWith at least is fixed in latest version, not part of jslib)
	childrenWith : function(element, className) {

		var children = $(element).getElementsByTagName('*');
		var elements = new Array();

		for (var i = 0; i < children.length; i++) {

			if (Element.hasClassName(children[i],className)){
				elements.push(children[i]);
			}
		}
		return elements;
	}

}



var ChboxMultiselect = Class.create();
ChboxMultiselect.prototype = {
	initialize : function(trig) {
		this.trig = trig;

		Event.observe(this.trig, "click", this.update.bindAsEventListener(this));
		this.chboxes = this.trig.parentNode.getElementsByTagName("input");
		this.update();
	},


	update: function(){

		for(var i=1; i< this.chboxes.length; i++){
			var chbox = this.chboxes[i];

			if(this.trig.checked){
				chbox.checked = true;
			}else {
				chbox.checked = false;
			}

		}
	}

}

function initChboxMultiselect() {
	var elements = document.getElementsByClassName("ChboxMultiselect");
	for (i = 0 ; i < elements.length ; i++) {
		new ChboxMultiselect(elements[i]);
	}
}


function initCloseable() {
	var elements = document.getElementsByClassName("Closeable");
	for (i = 0 ; i < elements.length ; i++) {
		new Closeable(elements[i]);
	}
}


function handleSpectralBands(){



	if($("c_scan_length1").checked){//If 'Single' is selected, then use the smaller constraint
   $("o_spectral_bands").value = "1:143";
	}else {
   $("o_spectral_bands").value = "1:246";
	}
	if($("o_spectral_bands_all").checked){
		Form.Element.disable($("o_spectral_bands"))
	}else{
		Form.Element.enable($("o_spectral_bands"))
	}
}

function handleIrtmBands(all){
	if($("o_irtm").checked){
		$("o_irtm_bands_cnt").removeClassName("hidden");
	}else{
		$("o_irtm_bands_cnt").addClassName("hidden");
	}

	$("o_irtm_bands").value = "1:5";

	if($("o_irtm_bands_all").checked){
		Form.Element.disable($("o_irtm_bands"))
	}else{
		Form.Element.enable($("o_irtm_bands"))
	}
}
function handleSpectralBandsType(){
  var scanLength = Form.getInputs('mainForm','radio','c_scan_length').find(function(radio) { return radio.checked; }).value;
  if(scanLength==3){ //If 'None' is selected for 'Scan Length'
  var spectralType = Form.getInputs('mainForm','radio','o_spectral_bands_type').find(function(radio) { return radio.checked; }).value;
    if(spectralType != 0)
      $("spectral_warning").removeClassName("hidden");
    else
      $("spectral_warning").addClassName("hidden");
  }
  else
  $("spectral_warning").addClassName("hidden");
}
function init() {
	initCloseable();
	initChboxMultiselect();
  handleSpectralBandsType();
	Event.observe($("o_spectral_bands_all"), "click", handleSpectralBands);
	Event.observe($("o_irtm_bands_all"), "click", handleIrtmBands);
	Event.observe($("o_irtm"), "click", handleIrtmBands);

	if($("o_spectral_bands").value == ""){
		handleSpectralBands();
	}
	if($("o_irtm_bands").value == ""){
		handleIrtmBands();
	}
  Form.getInputs('mainForm','radio','c_scan_length').find(function(radio) {
    Event.observe(radio, "click", handleSpectralBandsType);
    Event.observe(radio, "click", handleSpectralBands);
  });

}
Event.observe(window, 'load', init);
//window.onload = init;

