var popWin;

function clearForm(form){
	var elementA = form.elements;
	var type;
	for (i=0;i<elementA.length;i++){
		type = elementA[i].type;
		if (type == "text"){
			elementA[i].value = "";
		} else if (type == "select-one"){
			elementA[i].options[0].selected = true;
		} else if (type == "checkbox"){
			elementA[i].checked = false;
		}
	}
}

function setFocus(field){
	field.focus();
}

function formatPhone(s){
		
	var s2 = "";
	var c;
	for (i = 0; i < s.length; i++){
        c = s.charAt(i);
        if (digits.indexOf(c) != -1){
        	s2 += c;
        }
    }    
	if (s2.length == 10){
		s = "("+s2.substring(0,3)+") "+s2.substring(3,6)+"-"+s2.substring(6);
	}	
	return s;
}

function formatTime(s){
	var hh;
	var mi;
	var amPm = "";
	
	s = s.toLowerCase();
	var i = s.indexOf("p");
	if (i != -1){
		amPm = "p.m.";
	} else {
		i = s.indexOf("a");
		if (i != -1){
			amPm = "a.m.";
		}
	}
	if (i != -1){
		s = s.substring(0,i);
	}
	s = trim(s);
	i = s.indexOf(":");
	if (i != -1){
		hh = s.substring(0,i);
		mi = s.substring(i+1);
	} else {
		hh = s;
		mi = "00";
	}
	return pad(hh,2,"0","pre")+":"+pad(mi,2,"0","pre")+" "+amPm;
}

//not named formatDate, cause another function by that name in CalendarPopup.js
function formatDate2(s){
	var mm;
	var dd;
	var yy;
	
	var i = s.indexOf("/");
	if (i == -1){
		return s;
	} else {
		mm = s.substring(0,i);
		j = s.indexOf("/",i+1);
		if (j == -1){
			return s;
		} else {
			dd = s.substring(i+1,j);
			yy = s.substring(j+1);
		}
	}
	return pad(mm,2,"0","pre")+"/"+pad(dd,2,"0","pre")+"/"+yy;
}


function pad(s,num,padVal,prePost){
	if (s == null) s = "";
	
	var i;
	var pads = "";
	
	for(i=0;i<num-s.length;i++){
		pads += padVal;
	}
	
	if (prePost == "post"){
		return ""+s+pads;
	} else {
		return ""+pads+s;
	}
}

function trim(s){
	
	var charFound = false;
	var c;
	var newS = "";
	var newLength = 0;
	
	for (var i=0; i<s.length; i++){   
    	c = s.charAt(i);
		if (c != " " || charFound){
			charFound = true;
			newS += c.toString();
		}
	}
	
	s = newS;
	 
	for (var i=s.length-1; i>=0; i--){   
    	c = s.charAt(i);
		if (c != " "){
			newLength = i+1;
			break;
		}
	}
	
	return s.substr(0,newLength);
}

function changeList(field,dir){
	var i = field.selectedIndex;
	
	if (i==-1) return;
	
	var incDec = 0;
	
	if (dir == "up"){
		if (i==0){
			return;
		}
		
		incDec = -1;
	}
	
	if (dir == "down"){
		for(;i<field.options.length;i++){
			if (!field.options[i].selected){
				break;
			}
		}
		i--;
		
		if (i==field.options.length-1){
			return;
		}
	
		incDec = 1;	
	
	} 

	holdText = field.options[i+incDec].text;
	holdValue = field.options[i+incDec].value;

	for(var j=i;dir == "up" ? j<field.options.length : j>-1;j-=incDec){
		if (field.options[j].selected){
			field.options[j+incDec].text = field.options[j].text;
			field.options[j+incDec].value = field.options[j].value;
			field.options[j+incDec].selected = true;
		} else {
			break;
		}
	}
	
	field.options[j+incDec].text = holdText;
	field.options[j+incDec].value = holdValue;		
	field.options[j+incDec].selected = false;

	
}

function jumpList(field_from,field_to){	
	var i = field_from.selectedIndex;
	var newOption;
	
	for(var i=0;i<field_from.options.length;i++){
		if (!field_from.options[i].selected) continue;
		
		newOption = new Option(field_from.options[i].text, field_from.options[i].value);
		newOption.selected = true;
		field_to.options[field_to.options.length] = newOption;
		field_from.options[i] = null;
		i--;
	}
}

function removeFromList(field){	
	for(var i=0;i<field.options.length;i++){
		if (!field.options[i].selected) continue;
		field.options[i] = null;
		i--;
	}
}

function selectAll(field){
	for(var i=0;i<field.options.length;i++){
		field.options[i].selected = true;
	}
}

function unselectAll(field){
	for(var i=0;i<field.options.length;i++){
		field.options[i].selected = false;
	}
}

function getSelectedOptions(field,delim){
	if (getSelectedOptions.arguments.length == 1){
		delim = ",";
	}    

	var selectedOptions = "";
	for(var i=0;i<field.options.length;i++){
		if(field.options[i].selected){
			selectedOptions += field.options[i].value + delim ; 
		}
	}
	return chop(selectedOptions);
}

function select(field,value){
	if (!field.options){
		return;
	}
	for(var i=0;i<field.options.length;i++){
		if(field.options[i].value == value){
			field.options[i].selected = true;
			break; 
		}
	}
}

function checkAll(form,fieldIdent){
	a = form.elements;
	for(var i=0;i<a.length;i++){
		ind = a[i].name.indexOf(fieldIdent);
		if (ind != -1){
			a[i].checked = true;
		}
	}
}

function uncheckAll(form,fieldIdent){
	a = form.elements;
	for(var i=0;i<a.length;i++){
		ind = a[i].name.indexOf(fieldIdent);
		if (ind != -1){
			a[i].checked = false;
		}
	}
}	

	
function chop(s,i){
	if (chop.arguments.length == 1){
		i = 1;
	}
	if (s.length < i) {
		return s;
	}
	return s.substring(0,s.length-i);
}

function arrayContains(a,s){
	for(var i=0;i<a.length;i++){
		if (a[i] == s){
			return true;
		}
	}
	return false;
}

function sortList(field,dir){
	var separator = "\t";
	var origA = new Array(field.options.length);
	for(var i=0;i<field.options.length;i++){
		origA[i] = field.options[i].text + separator + field.options[i].value;
	}
	var sortedA = dir == "a" ? origA.sort(caseInsensitiveSort) : origA.sort(reverseSort);
	var textValueA;
	for(var i=0;i<sortedA.length;i++){
		textValueA = sortedA[i].split(separator);
		field.options[i].text = textValueA[0]; 
		field.options[i].value = textValueA[1];
	}
}

function reverseSort(a, b){ 
   if(a.toLowerCase() > b.toLowerCase()) 
      return -1 
   if(a.toLowerCase() < b.toLowerCase()) 
      return 1 
   return 0 
} 

function caseInsensitiveSort(a, b){ 
   if(a.toLowerCase() > b.toLowerCase()) 
      return 1 
   if(a.toLowerCase() < b.toLowerCase()) 
      return -1 
   return 0 
} 

function prefixedParamsToArray(form, prefix) {
	var a = new Array();
	var param;
	paramA = form.elements;
	for(var i=0;i<paramA.length;i++){
		param = paramA[i].name;
		if (param!=undefined && param.substr(0,prefix.length)==prefix) {
			a.push(param.substr(prefix.length));
		}
	}
	return a;	
}

function getCounties(form){
	if (typeof XMLHttpRequest == "undefined"){
		form.submit();
		return;
	} 	
	new Ajax.Request("/ajax/getCounties.jsp", {method: 'post', parameters: Form.serialize(form), onComplete: getCountiesResponse});
}

function getCountiesResponse(originalRequest){
	var myJson = eval("("+originalRequest.responseText+")");
		
	$('countyId').options.length = 1;
	
	var i = 1;
	while((typeof myJson["countyId_"+i]) !=  "undefined"){
		$('countyId').options[i] = new Option(myJson["county_"+i],myJson["countyId_"+i]);
		i++;
	}
	
	$('countySelect').style.display = "";

}
