//===================================
//
//           ARRAY FUNCTIONS
//
//===================================
Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

/**
 * Removes duplicates in the array 'a'
 * @author Johan Känngård, http://dev.kanngard.net
 */
function unique(a) {
	tmp = new Array(0);
	for(i=0;i<a.length;i++){
		if(!contains(tmp, a[i])){
			tmp.length+=1;
			tmp[tmp.length-1]=a[i];
		}
	}
	return tmp;
}

/**
 * Returns true if 's' is contained in the array 'a'
 * @author Johan Känngård, http://dev.kanngard.net
 */
function contains(a, e) {
	for(j=0;j<a.length;j++)if(a[j]==e)return true;
	return false;
}

Array.prototype.multiSort = function(index){
// Written By: WillyDuitt@hotmail.com | 03-10-2005 \\;
for(var i=0; i<this.length; i++){
var temp = this[i].splice(index,1);
this[i].unshift(temp);
} return this.sort();
} 

function l_multisort(arr,index){
	newarr = arr.multiSort(index);
	for(var i=0; i<arr.length; i++){
		arr[i].reverse();
	}
	return newarr;
}

//===================================
//
//           STRING FUNCTIONS
//
//===================================

function decode(str) {
     return unescape(str.replace(/\+/g, " "));
}

function stripHTML(s) {
	return s.replace(/(<([^>]+)>)/ig,""); 
}

//===================================
//
//           DATE & TIME FUNCTIONS
//
//===================================
function getdate(){
	var currentTime = new Date();
	var month = currentTime.getMonth() + 1;
	var day = currentTime.getDate();
	var year = currentTime.getFullYear();
	var s =(month + "/" + day + "/" + year);
	return s;
}

function gettime(){
	var currentTime = new Date();
	var hours = currentTime.getHours();
	var minutes = currentTime.getMinutes();
	if (minutes < 10){ minutes = "0" + minutes; }
	var s =  (hours + ":" + minutes + " ");
	if(hours > 11){
		s = s + ("PM");
	} else {
		s = s + ("AM");
	}
	return s;
}

function datetime(){
	return( getdate() + " " + gettime() );
}

//===================================
//
//           MESS WITH THE DOM
//
//===================================

// send me a class ".myclass" and it will make all items in that class the same height.
function equalheight(cl){
		var list = $$(cl);

		// Search height of all tabs to find tallest
		var tabheight = 0;
		list.each(function(el) {
			if (el.getCoordinates().height > tabheight) { tabheight = el.getCoordinates().height; };
		});
		
		// Make all tabs same height
		liheight = (tabheight  + 2) +  'px';
		list.each(function(el) {
			el.setStyle('height', liheight); 
		});
}

// send a class of a table and it will stripe it
function makestripes(cl){
	$$(cl).each(function(table){
	  $ES("tr", table).each(function(row,i){
		if ( i % 2 != 1 )
		  row.addClass( "odd" );
	  });
	});
}

//===================================
//
//           SHOW / HIDE
//
//===================================
function show(x){ $(x).setStyle('display', 'block'); }
function hide(x){ $(x).setStyle('display', 'none'); }

//==========================================
//
//                    STATUS BOXES
//
//==========================================

function statusbox(x,h,c){
	html = "<div class='" + c + "'>"+h+"</div>";
	$(x).setHTML(html);
	show($(x));
}

function successbox(x,h){ statusbox(x,h,"success") }
function failbox(x,h){ statusbox(x,h,"alert") }

// fix loadingbox to match others above in future
function loadingbox(x,h){
	html = "<div class='loadingdata'><p><img src='images/ajaxload2.gif' align='absmiddle'> "+h+"</p></div>";
	$(x).setHTML(html);
	show($(x));
}



//==========================================
//
//       BUILD FORM ELEMENT FUNCTIONS
//
//==========================================

// Building listmenus

function makelistmenu(listname,arr,sel){
	// this probably won't work in IE - 
	// this is based on setHTML
	var listhead = "<select name='" + listname + "' id='" + listname + "' class='select' >";
	var listfoot = "</select>";
	var listguts = makelistmenuguts(arr,sel);
	return listhead + listguts + listfoot;
}

function listsel(a,b){
	var sel = "selected='selected'";
	if(a == b){ return sel; }else{ return ""; };
}
 
function makelistmenuguts(id,arr,sel){
	//setHTML does not work with IE on list menus. 
	//use this instead!
	var l,i,idobj;
	var l = arr.length;
	idobj = $(id);
	idobj.options.length = 0;
	idobj.options[0]=new Option('Select:', '', true, false);
	for (i=1; i< l; ++i) {
		if(arr[i][0]==sel){ issel = true; }else{ issel = false; }
		idobj.options[i]=new Option(arr[i][1], arr[i][0], false, issel);
	}
}


function makelistmenuguts2(id,arr,sel){
	//setHTML does not work with IE on list menus. 
	//use this instead!
	var l,i,idobj;
	l = arr.length;
	idobj = $(id);
	idobj.options.length = 0;
	//idobj.options[0]=new Option('Select:', '', true, false)
	for (i=0; i< l; ++i) {
		if(arr[i][0]==sel){ issel = true; }else{ issel = false; }
		idobj.options[i]=new Option(arr[i][1], arr[i][0], false, issel);
	}
}

// Building listmenus - for STATE

function getstatearray(){
	var arr = [
	['AL','Alabama'],
	['AK','Alaska'],
	['AZ','Arizona'],
	['AR','Arkansas'],
	['CA','California'],
	['CO','Colorado'],
	['CT','Connecticut'],
	['DE','Delaware'],
	['DC','District of Columbia'],
	['FL','Florida'],
	
	['GA','Georgia'],
	['HI','Hawaii'],
	['ID','Idaho'],
	['IL','Illinois'],
	['IN','Indiana'],
	['IA','Iowa'],
	['KS','Kansas'],
	['KY','Kentucky'],
	['LA','Louisiana'],
	
	['ME','Maine'],
	['MD','Maryland'],
	['MA','Massachusetts'],
	['MI','Michigan'],
	['MN','Minnesota'],
	['MS','Mississippi'],
	['MO','Missouri'],
	['MT','Montana'],
	['NE','Nebraska'],
	
	['NV','Nevada'],
	['NH','New Hampshire'],
	['NJ','New Jersey'],
	['NM','New Mexico'],
	['NY','New York'],
	['NC','North Carolina'],
	['ND','North Dakota'],
	['OH','Ohio'],
	['OK','Oklahoma'],
	
	['OR','Oregon'],
	['PA','Pennsylvania'],
	['RI','Rhode Island'],
	['SC','South Carolina'],
	['SD','South Dakota'],
	['TN','Tennessee'],
	['TX','Texas'],
	['UT','Utah'],
	['VT','Vermont'],
	
	['VA','Virginia'],
	['WA','Washington'],
	['WV','West Virginia'],
	['WI','Wisconsin'],
	['WY','Wyoming']
	];
	return arr;
}

function makestatelistmenu(listname,sel){
	return makelistmenu(listname,getstatearray(),sel);
}

function makestatelistmenuguts(id,sel){
	return makelistmenuguts(id,getstatearray(),sel);
}




//=======================================================
//
//                   BUILDING TABLE FUNCTIONS 
//                   (as in pr_all.asp)
//
//=======================================================


function makeColGuts(row,i,page){
	//options are: text, date, editbutton, deletebutton
	var col = i[0];
	var nice = i[1];
	var show = i[2];
	
	switch(show){
		case "editbutton":
			 return "<a href='pr_edit.asp?id=" + row[col] + "&page=" + page +  "'><img src='icons/page_white_edit.png' width='16' height='16' border='0'></a>";
			 break;
		case "deletebutton":
			 return "<a href='pr_all.asp?delete=Yes&id=" + row[col] + "&page=" + page +  "'  class='confirm'  onClick='javascript:return confirm(\"Are you sure you want to delete this record?\")' ><img src='icons/cross.png' width='16' height='16' border='0'></a>";
			  break;
		default:
			 return stripHTML(decode(row[col]));
			 break;
	}
}


function makeHeaderGuts(i,arrow,newdir){
	//options are: text, date, editbutton, deletebutton
	var col = i[0];
	var nice = i[1];
	var show = i[2];
	
	var arrowhtml = ""
	var preimg = "<image width='8' height='10' src='icons/";
	var endimg = "'  valign='middle' />";
	if (arrow == "selup"){ arrowhtml = preimg + "arrow_up.gif" + endimg;  }
	if (arrow == "seldown"){ arrowhtml=preimg + "arrow_down.gif" + endimg;  }
	
	switch(show){
		case "editbutton":
			 return nice;
			 break;
		case "deletebutton":
			 return nice;
			  break;
		default:
			 return "<a href='pr_all.asp?orderby=" + col + "&dir=" + newdir + "' >" + nice + " </a>" + arrowhtml;
			 break;
	}
	
}
