/**
 * Script to dynamically create a drop down list to  be used in a form or as a stand alone
 *
 * @created 26 Oct 2009
 */

/* DROP DOWN LIST CLASS */
/*----------------------------------------------------------------------------*/
function DropDownList (select_id, select_opts, select_size, cookie_name, cookie_exp_days) {
	this.select_id       = select_id;
	this.select_opts     = select_opts;
	this.select_size     = select_size;
	this.cookie_name     = cookie_name;
	this.cookie_exp_days = cookie_exp_days;
	this.my_select;
}

DropDownList.prototype.createSelect = function () {
	this.my_select = document.createElement('select');
	this.my_select.setAttribute('id',this.select_id);
	this.my_select.setAttribute('name',this.select_id);
	if (this.select_size > 1) { 
		this.my_select.setAttribute('multiple','multiple');
		this.my_select.setAttribute('size',this.select_size);
	}

	for (var i = 0; i<this.select_opts.length; i++) {
		if (this.select_opts[i].value == null || this.select_opts[i].value == '') {
			this.select_opts[i].value = this.select_opts[i].text;
		}
		if (document.all && !window.opera) {
			this.my_select.add(this.select_opts[i]);
		} else {
			this.my_select.add(this.select_opts[i],null);
		}	
	}
}

DropDownList.prototype.getSelectObject = function () {
	if (this.my_select == null) { this.createSelect(); }
	return this.my_select;
}

DropDownList.prototype.setSelectedIndex = function () {
	var cookie = this.getCookie();
	for (var i=0; i<this.my_select.length; i++) {
		this.my_select[i].selected = false;
		if (this.my_select[i].value === cookie) {
			this.my_select[i].selected = true;
		}
	}

}

// Drop Down List Cookie Functions
DropDownList.prototype.getCookie = function () {
	if (this.cookie_name && document.cookie.length > 0) {
		var cookie_start = document.cookie.indexOf(this.cookie_name + "=");
		if (cookie_start != -1) {
			cookie_start = cookie_start + this.cookie_name.length + 1;
			cookie_end = document.cookie.indexOf(";",cookie_start);
			if (cookie_end == -1) cookie_end = document.cookie.length;
			return unescape(document.cookie.substring(cookie_start,cookie_end));
		}
	}
	return "";
}

DropDownList.prototype.setCookie = function (cookie_val) {
	var expire_date = new Date();
	expire_date.setDate(expire_date.getDate() + this.cookie_exp_days);
	document.cookie = this.cookie_name + "=" + escape(cookie_val) + ((this.cookie_exp_days ==null) ? "" : ";expires=" + expire_date.toGMTString());
}
/*----------------------------------------------------------------------------*/


/* SAMPLE LISTS */
/*----------------------------------------------------------------------------*/
DropDownList.STATE_LIST = [new Option("Select a State","",true), new Option("Alabama"), new Option("Alaska"), new Option("Arizona"), new Option("Arkansas"),
	new Option("California"),new Option("Colorado"),new Option("Connecticut"),new Option("Delaware"),new Option("District of Columbia"),new Option("Florida"),
	new Option("Georgia"),new Option("Hawaii"),new Option("Idaho"),new Option("Illinois"),new Option("Indiana"),new Option("Iowa"),new Option("Kansas"),
	new Option("Kentucky"),new Option("Louisiana"),new Option("Maine"),new Option("Maryland"),new Option("Massachusetts"), new Option("Michigan"), 
	new Option("Minnesota"), new Option("Mississippi"), new Option("Missouri"),new Option("Montana"),new Option("Nebraska"),new Option("Nevada"),
	new Option("New Hampshire"),new Option("New Jersey"),new Option("New Mexico"),new Option("New York"),new Option("North Carolina"),
	new Option("North Dakota"),new Option("Ohio"),new Option("Oklahoma"),new Option("Oregon"),new Option("Pennsylvania"),new Option("Rhode Island"),
	new Option("South Carolina"),new Option("South Dakota"),new Option("Tennessee"),new Option("Texas"),new Option("Utah"),new Option("Vermont"),
	new Option("Virginia"),new Option("Washington"),new Option("West Virginia"),new Option("Wisconsin"),new Option("Wyoming")];
/*----------------------------------------------------------------------------*/



