/***** ftdAlsConference.ca - Developed by ScriptReaction - www.scriptreaction.com *****/

var formHandler = {
	launch: function (formId){
		formHandler.formId = formId;
		
		//create containters
		formHandler.fields = new Array();
		formHandler.addFields = new Array();
		
		//success
		if(formHandler.fieldError == 'submitted'){
			var form = formHandler.formId;
				
				if(form == 'dataForm_abstract'){
					var success = '<h2>Thank you for providing your abstract.</h2>';
						success+= '<p class="pFirst"><span class="hl b">It has been successfully submitted.</span></p>';
						success+= "<p>The Department of Clinical Neurological Sciences will be reviewing your submission shortly. ";
						success+= "You will be notified if your abstract is not accepted due to incomplete information.</p>";
						success+= "<span class=\"split\"></span>";
						success+= "<p>Should you have images you to include with your abstract submission, please email ";
						success+= "them to Betsy Toth ( <a href=\"mailto:betsy.toth@lhsc.on.ca?subject=FTD ALS Conference - Images for Abstract Submission&nbsp;#&nbsp;" + formHandler.formSession + "\">betsy.toth@lhsc.on.ca</a> ). ";
						success+= "Be sure to include the following in the <span class=\"b\">subject line:</span></p>";
						success+= "<p><span class=\"b\">FTD ALS Conference - Images for Abstract Submission # " + formHandler.formSession + "</span></p>";
						success+= "<span class=\"split\"></span>";
				}

				success+= "<p class=\"pLast\"><a href=\"http://www.ftdalsconference.ca/\">Go to the Conference Home Page</a></p>";
			global.setDivContent( "bdy_txt", success );
			return;
		}
		
		//check for field error
		if(formHandler.fieldError > ''){
			var errorNotice = document.getElementById('errorNotify');
			errorNotice.style.display = 'block';
			
			var error = formHandler.fieldError;
			var errorField = document.getElementById('error_' + error);
			errorField.style.display = 'block';
		}
		
		//check for previous submit
		if(formHandler.fieldVars > ''){
			var returnArray = formHandler.fieldVars.split('&');
			returnArray.splice(returnArray.length-1,1);
			for(var itemCount=0; itemCount<returnArray.length; itemCount++){
				var whichItem = returnArray[itemCount];
				var itemParam = whichItem.split('=');
				var itemField = itemParam[0];
				var itemValue = itemParam[1];
				formHandler['returnVar_' + itemField] = itemValue;
			}
		}
		
		var formHolder = document.getElementById('bdy_txt');
		var formTypes = new Array('textarea','input','select'); //verify order
		
		for(var typeCount=0; typeCount<formTypes.length; typeCount++){
			var whichType = formTypes[typeCount];
			this['formType_'+whichType] = formHolder.getElementsByTagName(whichType);
			var whichTypeArray = this['formType_'+whichType];
			for(var itemCount=0; itemCount<whichTypeArray.length; itemCount++){
				var whichItem = whichTypeArray[itemCount];
				var handle = whichItem.className; //required||optional
				var fieldId = whichItem.name;
				if(typeof(handle) != 'undefined' && handle > ''){
					if(handle == 'required' || handle =='optional'){
						formHandler.fields.push([fieldId,whichType,handle]);
					}
				}
				var hasReturn = formHandler['returnVar_' + fieldId];
				if(typeof(hasReturn) != 'undefined'){
					if(hasReturn > ''){
						document[formHandler.formId][fieldId].value = unescape(hasReturn);
					}
				}
			}
		}
	},
	doSubmit: function (){
		for(var addCount=0; addCount<formHandler.addFields.length; addCount++){
			var whichAdd = formHandler.addFields[addCount];
			if(whichAdd > ''){
				formHandler.fields.push(whichAdd);
			}
		}
		var returnValues = '';
		for(var fieldCount=0; fieldCount<formHandler.fields.length; fieldCount++){
			var whichField = formHandler.fields[fieldCount];
			var fieldId = whichField[0];
			whichField[3] = escape(document[formHandler.formId][fieldId].value);
			returnValues += fieldId.toString() + '=' + whichField[3] + '&';
		}
		document[formHandler.formId].fieldParams.value = formHandler.fields.toString();
		document[formHandler.formId].fieldValues.value = returnValues;
		if(document[formHandler.formId].formSession.value == 0){
			document[formHandler.formId].formSession.value = Math.ceil(Math.random()*999999999);
		}
	},
	restrict: function (fieldName,maxCount){
		setTimeout('formHandler.doRestrict("'+ fieldName +'",'+ maxCount +')',2);
	},
	doRestrict: function (fieldName,maxCount){
		var field = document[formHandler.formId][fieldName];
		var content = field.value;
		var count = content.length;
		var countRemain = maxCount - count;
		if(countRemain < 0){
			field.value = content.slice(0,maxCount);
			countRemain = 0;
		}
		// remaining count display
		var displayName = 'restrictDsp_' + fieldName;
		var displayDiv = document.getElementById(displayName);
		var displayContent = (countRemain == 1) ? '<span class="b">1</span> character' : '<span class="b">' + countRemain + '</span> characters';
		if(displayDiv){
			global.setDivContent(displayName,displayContent);
		}	
	},
	abstract: {
		maxCount: 3000,
		countRemain: this.maxCount,
		countFields:Array('Background','Objectives','Methods','Results','Conclusions'),
		count: function (fieldName){
			setTimeout('formHandler.abstract.doCount("'+ fieldName +'")',2);
		},
		doCount: function (fieldName){
			var currentCount = 0;
			var activeField = fieldName;
			
			for(var i=0; i<this.countFields.length; i++){
				var fieldName = 'abs' + this.countFields[i];
				var field = document[formHandler.formId][fieldName];
				this['fieldCount_' + fieldName] = field.value.length;
				currentCount += field.value.length;
			}
			
			this.countRemain = this.maxCount - currentCount;
			
			if(this.countRemain < 0){
				var fieldCount = this['fieldCount_' + activeField] - 1;
				var field = document[formHandler.formId][activeField];
				var content = field.value;
				field.value = content.slice(0,fieldCount);
				this['fieldCount_' + activeField] = fieldCount;
				this.countRemain = 0;
			}
			
			for(var i=0; i<this.countFields.length; i++){
				var fieldName = this.countFields[i];
				var displayName = 'restrictDsp_abs' + (i+1);
				var displayContent = (this.countRemain == 1) ? '<span class="b">1</span> character' : '<span class="b">' + this.countRemain + '</span> characters';
				global.setDivContent(displayName,displayContent);	
			}
		}
	}
}