
var unitLabel;
var unitSelector;
var cabinLabel;
var cabinSelector;
var fromLabel;
var fromSelector;
var toLabel;
var toSelector;
var subjectLabel;
var subjectSelector;
var msgLabel;
var msgSelector;
var sendBtn;
var charText;

var controllableFormSelectors;
var controllableFormLabels;

var msgInError = false;
var errTxt = "";

var isDisabled = false;

var textLimit = 2000;

/*@cc_on @if (@_win32 && @_jscript_version >= 5) if (!window.XMLHttpRequest)
window.XMLHttpRequest = function() { return new ActiveXObject('Microsoft.XMLHTTP') }
@end @*/

function getXML()
{
	return new XMLHttpRequest();
}

function initOnly()
{
	unitLabel = document.getElementById('unitLabel');
	unitSelector = document.getElementById('unit');
	cabinLabel = document.getElementById('cabinLabel');
	cabinSelector = document.getElementById('cabin');
	fromLabel = document.getElementById('fromLabel');
	fromSelector = document.getElementById('from');
	toLabel= document.getElementById('toLabel');
	toSelector = document.getElementById('to');
	subjectLabel = document.getElementById('subjectLabel');
	subjectSelector = document.getElementById('subject');
	msgLabel = document.getElementById('msgLabel');
	msgSelector = document.getElementById('msg');
	sendBtn = document.getElementById('sendBtn');
	charText = document.getElementById('charText');
	controllableFormSelectors = new Array(cabinSelector,fromSelector,toSelector,subjectSelector,msgSelector,sendBtn);
	controllableFormLabels = new Array(cabinLabel,fromLabel,toLabel,subjectLabel,msgLabel,charText);
}

function sizeError()
{
	addErrorText("You had too many spaces or carriage returns in your message and the text cannot fit on a single page. Please remove some extra space and try again.");
	addStyles(new Array(msgSelector,msgLabel),"error");
	   error = true;
	   msgInError = true
	showError();
}

function startMail()
{
	document.form1.style.display = '';
	initOnly();
	disableForm();
	setCurrentObject(unitSelector);
	Tip('Choose the Unit and Cabin (Bunk) for the person you are trying to reach. If you are unsure of the correct information, call the camp office at (818) 889-5500.', BALLOON, true, ABOVE, true);
}

function addStyles(elements1,class1)
{
	for(var x=0;x<elements1.length;x++)
	{
		addStyle(elements1[x],class1);
	}
}
function removeStyles(elements1,class1)
{
	for(var x=0;x<elements1.length;x++)
	{
		removeStyle(elements1[x],class1);
	}
}

function addStyle(element1,class1)
{
	element1.className+=element1.className?' '+class1:class1;
}

function removeStyle(element1,class1)
{
	 var rep=element1.className.match(' '+class1)?' '+class1:class1;
     element1.className=element1.className.replace(rep,'');
}

function disableForm()
{
	if(isDisabled == false)
	{
		for(var x=0;x<controllableFormSelectors.length;x++)
		{
			controllableFormSelectors[x].disabled = true;
			addStyle(controllableFormSelectors[x],"disabled");
		}
		addStyles(controllableFormLabels,"disabled");
	}
	isDisabled = true;
}

function enableForm()
{
	if(isDisabled == true)
	{
		for(var x=0;x<controllableFormSelectors.length;x++)
		{
			controllableFormSelectors[x].disabled = false;
			removeStyle(controllableFormSelectors[x],"disabled");
		}
		removeStyles(controllableFormLabels,"disabled");
	}
	
	isDisabled = false;
}

function clearError(element)
{
	hideError();
	removeStyle(element,"error");
	if(element.id == "from")
		removeStyle(fromLabel,"error");
	else if(element.id == "to")
		removeStyle(toLabel,"error");
	else if(element.id == "subject")
		removeStyle(subjectLabel,"error");
	else if(element.id == "msg", "error")
		removeStyle(msgLabel,"error");
}

function check() 
{
   var error = false;
   if(fromSelector.value.length <= 2)
   {
	   addStyles(new Array(fromSelector,fromLabel),"error");
	   addErrorText("From name is required.");
	   error = true;
   }
   
   if(toSelector.value.length <= 2)
   {
	   addStyles(new Array(toSelector,toLabel),"error");
	   addErrorText("To name is required.");
	   error = true;
   }
   
   if(subjectSelector.value.length <=2)
   {
	   addStyles(new Array(subjectSelector,subjectLabel),"error");
	   addErrorText("Subject is required.");
	   error = true;
   }
   
   if(msgSelector.value.length <= 2 || msgSelector.value.length > 2000)
   {
	   if(msgInError == false)
	   	addStyles(new Array(msgSelector,msgLabel),"error");
	   addErrorText("Message is required and must be under 2,000 characters");
	   error = true;
	   msgInError = true;
   }
   
   if(error)
   	return false;
   else
   	return true;
}

function addErrorText(msg)
{
	errTxt = errTxt + "\n<br>&#8226; " + msg;
}

function showError()
{
	errTxt = "Your message has the following errors:<br>\n" + errTxt;
	document.getElementById('errorBox').innerHTML = errTxt;
	document.getElementById('errorBox').style.display = "block";
}

function hideError()
{
	errTxt = "";
	document.getElementById('errorBox').style.display = "none";
}

function checkAndSumbit()
{
	hideError();
	if(check())
	{
		document.getElementById('form1').submit();
	}
	else
	{
		showError();
		return false;
	}
}

function update() 
{
   var curCount = msgSelector.value.length;
   charValue.innerHTML = textLimit - curCount;
   
   if(textLimit - curCount < 0 && !msgInError)
   {
	   addStyles(new Array(msgSelector,msgLabel,charValue),"error");
	   msgInError = true;
   }
   else if(textLimit - curCount >= 0 && msgInError)
   {
	   removeStyles(new Array(msgSelector,msgLabel,charValue),"error");
	   msgInError = false;
   }
}

function updateCabins()
{
	disableForm();
	if(unitSelector.options[0].value == "x-x-x")
		unitSelector.options[0] = null;
	var xml = getXML();
	xml.open("GET", "ajax.php?unit="+unitSelector.options[unitSelector.selectedIndex].value, true);
	clearCabins();
	addCabin("Loading...");
	  xml.onreadystatechange = function()
		{
			if (xml.readyState == 4) {
			if (xml.status == 200) 
				{
					clearCabins();
					var r = xml.responseText;
					var r = r.split(",");
					for(var x=0;x<r.length;x++)
					{
						addCabin(r[x]);
					}
					enableForm();
				}
			}
		}
	  xml.send(null);
}

function clearCabins()
{
	cabinSelector.options.length = 0;
}

function addCabin(name)
{
	var i = cabinSelector.options.length;
	cabinSelector.options[i] = new Option (name,name);
}