function trim(str) {
	if(str=="") {
		return str;
	}
	for(trimi=0;trimi<str.length;trimi++) {
		if(str.charAt(trimi)==' ') {
			str=str.substr(1,str.length-1);
			trimi=-1;
		}
		else
			break;
	}

	for(trimi=str.length-1;trimi>=0;trimi--) {
		if(str.charAt(trimi)==' ') {
			str=str.substr(0,str.length-1);
			trimi=str.length;
		}
		else
			break;
	}
	return str;
}

function processing() {
	var div = document.createElement("DIV");
	div.style.position = "absolute";
	div.style.top = window.screen.height/2-250;
	div.style.left = window.screen.width/2-200;
	div.style.width = "300px";
	div.style.height = "60px";
	div.style.border = "4px double darkblue";
	div.style.backgroundColor = "white";
	div.style.fontSize = "18pt";
	div.style.fontWeight = "bold";
	div.style.color="red";
	div.style.padding = "10px";
	div.innerHTML = "<center>Processing...please wait...";
	document.body.appendChild(div);
}

function restrictToAlphaNumeric(e) {
	if((e.keyCode>=48 && e.keyCode<=57) ||
			(e.keyCode>=65 && e.keyCode<=90)||
				(e.keyCode>=97 && e.keyCode<=122)) {
		return true;
	}
	return false;
}

function restrictToDate(e) {
	if((e.keyCode>=48 && e.keyCode<=57) ||
		e.keyCode==47) {
		return true;
	}
	return false;
}

function isValidEmail(str)
{
  var checkAt = false;
  for (var i = 0; i < str.length; i++) {
    var ch = str.substring(i, i + 1);
    if (ch == "!" || ch == "(" || ch == ")" || ch == "/" || ch == "<" || ch == ">"
		|| ch == "<" || ch == "," || ch == ";" || ch == ":" || ch == "<" || ch == ","
		|| ch == ";" || ch == ":" || ch == "[" || ch == "]" || ch == "\\" || ch == " ") {
		// alert("Illegal characters in this field.");
		 return false;
	}
  }
  
  var ind = str.indexOf('@');
  if(ind==-1) {
	return false;
  }
  
  arr = str.split('@');
  if(arr.length>2) {
	return false;
  }
  
  if(arr[1].indexOf('.')==-1) {
	return false;
  }
  return true;
}

function isValidDate(str) {
	//must be mm/dd/yyyy

	arr=str.split('/');
	if(arr.length!=3) {
		return false;
	}
	
	temp1 = parseInt(trim(arr[0]),10);
	temp2 = parseInt(trim(arr[1]),10);
	
	temp3 = parseInt(trim(arr[2]));
	if(isNaN(temp1) || isNaN(temp2) || isNaN(temp3)) {
		return false;
	}
	
	if(temp1<1 || temp2<1 || temp1>12 || temp2>31 || trim(arr[2]).length!=4) {
		return false;
	}
	
	if(temp1==2 && temp2>29) {
		return false;
	}
	
	if((temp1==4 || temp1==6 || temp1==9 || temp1==11) && temp2>30) {
		return false;
	}
	
	return true;
}

function NoEmail() {
	alert("No Email has been entered for this person.");
}

function roomLocator(room_id) {
		var features = "height=600,width=800px, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, directories=no, status=no,top=50px,left=100";
		window.open("popup_roomLocator.asp?select=false&room_id="+room_id, "roomLocator", features);
}

/*Recurrence Pattern String structure
	
	[start date]_[recurrenceType]_[recurrenceSubType]_[# args]_
		[arg 1]_[arg 2]_..._[arg n]_
			[recurrenceEndType]_[numOccurrences or end date]_
				[numExceptionDates]_[exceptionDate 1]_
					[exceptionDate 2]_..._[exceptionDate n]
					
	recurrenceTypes:
		
		1.  Daily
		2.  Weekly
		3.  Monthly
			
	recurrenceSubTypes:
		
		Daily:
			1.  Every ___ day(s) (1 arg)
			2.  Every weekday (0 args)
				
		Weekly:
			1.  Every ___ weeks on (1 - 7 weekdays where 1=Sunday, etc...)  (from 2 to 8 args)
				
		Monthly:
			1.  Day ___ of every ___ months(s)  (2 args)
			2.  The ___ ___ of every ___ month(s) (3 args)
				Note:
				a.  Arg 1 is 1-5 ("first","second",etc...)
				b.  Arg 2 is 1-7 for day of week (1=Sunday, etc...)
					
	recurrenceEndTypes
		
		1.  by number of occurrences
		2.  by end date
*/

function buildRecurrencePatternDisplay(recurrencePatternString) {
	arr=recurrencePatternString.split("_");
	if(arr.length<=3) {
		return "";
	}
	
	startDate = arr[0];
	recurrenceType = parseInt(arr[1],10);
	recurrenceSubType = parseInt(arr[2],10);
	numArgs = parseInt(arr[3],10);
	
	str = "Beginning "+startDate+", recurring ";
	switch(recurrenceType) {
		case 1:		//daily
			switch(recurrenceSubType) {
				case 1:
					if(numArgs>1) {
						return "[Recurrence Pattern Build Error]";
					}
					numDays = parseInt(arr[4],10);
					daysDisplay="day";
					if(numDays>1) {
						daysDisplay="days";
					}
					str += "every "+numDays+" "+daysDisplay+" ";
					break;
				case 2:
					if(numArgs>0) {
						return "[Recurrence Pattern Build Error]";
					}
					str += "every weekday ";
					break;
			}
			break;
		case 2:		//weekly
			if(numArgs>8) {
				return "[Recurrence Pattern Build Error]";
			}
			numWeeks = parseInt(arr[4],10);
			weeksDisplay="week";
			if(numWeeks>1) {
				weeksDisplay="weeks";
			}
			str += "every "+numWeeks+" "+weeksDisplay+" on ";
			for(i=5;i<(5+numArgs-1);i++) {
				str += getDayOfWeek(parseInt(arr[i],10));
				if(i!=(5+numArgs-2)) {
					str += ",";
				}
				str += " ";
			}
			break;
		case 3:		//monthly
			switch(recurrenceSubType) {
				case 1:
					if(numArgs>2) {
						return "[Recurrence Pattern Build Error]";
					}
					months = parseInt(arr[5],10);
					monthsDisplay = "month";
					if(months>1) {
						monthsDisplay = "months";
					}
					str += "Day "+arr[4]+" of every "+months+" "+monthsDisplay+" ";
					break;
				case 2:
					if(numArgs>3) {
						return "[Recurrence Pattern Build Error]";
					}
					val = parseInt(arr[4],10);
					val2 = parseInt(arr[5],10);
					
					switch(val) {
						case 1:
							str += "The 1st ";
							break;
						case 2:
							str += "The 2nd ";
							break;
						case 3:
							str += "The 3rd ";
							break;
						case 4:
							str += "The 4th ";
							break;
						case 5:
							str += "The last ";
							break;
					}
					months = parseInt(arr[6],10);
					monthsDisplay = "month";
					if(months>1) {
						monthsDisplay = "months";
					}
					str += getDayOfWeek(val2)+"  of every "+months+" "+monthsDisplay+" ";
					break;
			}
			break;
	}
	
	nextIndex = 4+numArgs;
	recurrenceEndType = parseInt(arr[nextIndex],10);
	switch(recurrenceEndType) {
		case 1:
			str += "for "+arr[nextIndex+1]+" occurrences";
			break;
		case 2:
			str += "until after "+arr[nextIndex+1];
			break;
	}
	
	numExceptions = parseInt(arr[nextIndex+2],10);
	if(!isNaN(numExceptions) && numExceptions>0) {
		str += " except for ";
		for(i=(nextIndex+3);i<(nextIndex+3+numExceptions);i++) {
			str += arr[i];
			if(i<(nextIndex+2+numExceptions)) {
				str += ", ";
			}
		}
	}
	return str;
}

function getStartDateFromRecurrencePattern(recurrencePatternString) {
	arr = recurrencePatternString.split("_");
	if(arr.length<=3) {
		return "";
	}
	
	return arr[0];
}

function getDayOfWeek(ind) {
	switch(ind) {
		case 1:
			return "Sunday";
		case 2:
			return "Monday";
		case 3:
			return "Tuesday";
		case 4:
			return "Wednesday";
		case 5:
			return "Thursday";
		case 6:
			return "Friday";
		case 7:
			return "Saturday";
	}
	return "";
}
