// JavaScript Document
var unique = 0;

function assignEvent(a)
{
	a.onkeyup = function()
	{
		evaluate22(this);
	};
	
	if(a.type == 'text' && !/date/.test(a.className) && !/image/.test(a.className))
	{
		a.onblur = function()
		{
			this.hasFocus = false;
			format(this);
		};
		
		a.onfocus = function()
		{
			this.hasFocus = true;
		};
	}
	else if(a.type == 'text' && /date/.test(a.className) && !/image/.test(a.className))
	{
		a.onblur = function()
		{	
		  var self = this;
			self.hasFocus = false;
			format(self);	
			calendarThumbInputBlur(this);		
			//calTimeout = setTimeout('calendarOps(document.getElementById(\''+a.id+'\'))',500);
		};
		
		a.onfocus = function()
		{
			this.hasFocus = true;
			//ajaxFunction(a.id.replace(/Input/,''));
			calendarThumbInputFocus(this);
		};
	}
	else if(a.type == 'text' && !/date/.test(a.className) && /imageL/.test(a.className))
	{
		a.onblur = function()
		{
			formImageDisplay(this);
		};		
	}
	else if(a.type == 'file' && /imageF/.test(a.className))
	{
		a.onchange = function()
		{
			this.parentNode.parentNode.getElementsByTagName('p')[0].innerHTML = '<img src="'+rootRelative+'images/calNew/progress.gif" />';
			formImageSubmit(this);
		};
	}
}

function inputProperties() 
{
	if (!document.getElementById || !document.getElementsByTagName) //check for javascript functionality
		return false;
		
	if(document.getElementById('messageSend'))
	  document.getElementById('messageSend').disabled = true;
		
	var formInputs = [];
	
	if(document.getElementById('messageForm'))	
	  formInputs = document.getElementById('messageForm').getElementsByTagName('input');
	
	for(var i = 0, len = formInputs.length; i < len; i++)
	{
		assignEvent(formInputs[i]);
	}
	
/*	if(document.getElementById('userForm'))
	  formInputs = document.getElementById('userForm').getElementsByTagName('input');
	
	for(var i = 0, len = formInputs.length; i < len; i++)
	{
		assignEvent(formInputs[i]);
	}*/
	
	var formLabels = document.getElementsByTagName('label');
	
	for(var i = 0, len = formLabels.length; i < len; i++)
	  formLabels[i].id = formLabels[i].htmlFor + 'Label';
}

function evaluate22(id) //checks field specifics as they are typed
{		
	//name	
	if(id.className.match(/name2/))
	{
		var regExp = /^[a-z-\']+.?\s+[a-z-\']+.?(\s+[a-z-\']*.?)*$/i;
		var pass = 'John Wayne';
		var fail = 'Please enter your First and Last name. (John Wayne)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//email
	if(id.className.match(/email/))
	{
		var regExp = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i ;
		var pass = '&nbsp;';
		var fail = 'Please enter your email address. (benjamin.netanyahu@und.edu)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//phone
	if(id.className.match(/phone/))
	{
		var regExp = /^\s*((\(\s*[0-9]{3}\s*\))|([0-9]{3}\s*[-.]?))\s*[0-9]{3}\s*[-.]?\s*[0-9]{4}$/ ;
		var pass = '(701) 777-3325';
		var fail = 'Please enter your phone number. ((701) 777-3325)';
		fieldCheck(id,regExp,pass,fail);
	}	
	
	//course number
	if(id.className.match(/courseNumber/))
	{
		var regExp = /^[a-z]+\s[\d]+$/i;
		var pass = 'Biol 332';
		var fail = 'Please enter the course number. (Biol 332)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//course name
	if(id.className.match(/courseName/))
	{
		var regExp = /^[a-z.\s]+$/i;
		var pass = 'General Ecology';
		var fail = 'Please enter the course name. (General Ecology)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//class meeting time
	if(id.className.match(/classMeetTime/))
	{
		var regExp = /[a-z\d\s]+/i;
		var pass = 'TH 11:00-12:15';
		var fail = 'Please enter the class meeting time. (TH 11:00-12:15)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//date of visit
	if(id.className.match(/dateVisit/))
	{
		var regExp = /[\d]+/;
		var pass = '7/1/2017';
		var fail = 'Please enter a preferred date of visit. (7/1/2017)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//students
	if(id.className.match(/students/))
	{
		var regExp = /^[\d]+$/;
		var pass = '42';
		var fail = 'Please enter the number of students. (41)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//dollar
	if(id.className.match(/amount/))
	{
		var regExp = /^[\d]+$/;
		var pass = '&nbsp;';
		var fail = 'Please enter a dollar amount. (328)';
		fieldCheck(id,regExp,pass,fail);
	}	
	
	//id
	if(id.className.match(/id/))
	{
		var regExp = /^\d{7}$/;
		var pass = '0123457';
		var fail = 'Please enter your seven digit employee ID. (0123457)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//stop
	if(id.className.match(/stop/))
	{
		var regExp = /^[\d]{4}$/;
		var pass = '7104';
		var fail = 'Please enter your stop. (7104)';
		fieldCheck(id,regExp,pass,fail);
	}	
	
	//department
	if(id.className.match(/department/))
	{
		var regExp = /^[a-z\s\/-]{2,}$/i;
		var pass = 'Office of Instructional Development';
		var fail = 'Please enter your department name. (Instructional Development)';
		fieldCheck(id,regExp,pass,fail);
	}
	
	//title
	if(id.id == 'title')
		document.getElementById('titleChars').innerHTML = (30 - id.value.length); //limits title to 30 chars
	
	var form = id.parentNode;
	
	while(form.tagName.toLowerCase() != 'form')
	  form = form.parentNode;
		
	validate(form); //check to see if all required input has been entered
}

function format(id) //checks field format
{
	//name	
	if(/\bname\b/.test(id.className))
	{		
		//Capitalizes appropriate first letters
		var regExp = id.value.replace(/[^a-z-\'.\s]/gi,'').split(' '); //each name
		var i=0, len = regExp.length;
		regExp[len] = '';
		
		for(; i < len; i++)
		  if(regExp[i].length > 0)
				regExp[len] += regExp[i].substring(0,1).toUpperCase() + regExp[i].substring(1,regExp[i].length).toLowerCase() + ' ';
		
		regExp = regExp[len].substring(0,(regExp[i].length - 1)).split('-'); //hiphenated name; Mary-Grace
		i=0, len = regExp.length;
		regExp[len] = '';
		
		for(; i < len; i++)
		  if(regExp[i].length > 0)
				regExp[len] += regExp[i].substring(0,1).toUpperCase() + regExp[i].substring(1,regExp[i].length) + '-';
		
		regExp = regExp[len].substring(0,(regExp[i].length - 1)).split('\''); //apostrifical name; O'Mallie
		i=0, len = regExp.length;
		regExp[len] = '';
		
		for(; i < len; i++)
		  if(regExp[i].length > 0)
				regExp[len] += regExp[i].substring(0,1).toUpperCase() + regExp[i].substring(1,regExp[i].length) + '\'';
			
		id.value = regExp[len].substring(0,(regExp[i].length - 1));
	}
	
	//email
	if(/email/.test(id.className))
		id.value = id.value.replace(/\s/g,'');
	
	//phone
	if(/phone/.test(id.className))
	{
		var defaultNumber = '7017770000';
		var tempValue = id.value.replace(/[^\d]/g,'');		
		defaultNumber = defaultNumber.slice(0,10 - tempValue.length) + tempValue;
		
		if(tempValue.length > 0)
			id.value = '(' + defaultNumber.slice(0,3) + ') ' + defaultNumber.slice(3,6) + '-' + defaultNumber.slice(6,10);
		else
		  id.value = '';
	}
	
	//number
	if(/number/.test(id.className))
	  id.value = id.value.replace(/[^\d]/g,'');
		
	//letter
	if(/letter/.test(id.className))
	  id.value = id.value.replace(/[^a-z\s]/gi,'');
	
	//dollar
	if(/number/.test(id.className))
	{
	  var tempValue = id.value.replace(/[^\d.]/g,'');
		tempValue = id.value.split('.');
		
		if(tempValue.length > 0)
			id.value = tempValue[0];
		else
		  id.value = '';
	}
	/*
	//zip
	if(id.className.match(/zip/))
	  id.value = id.value.replace(/[^\d.]/g,'');*/
		
	//title	
	if(/title/.test(id.className))
	{		
		//Capitalizes appropriate first letters
		var regExp = id.value.split(/\s+/g); //each word
		var i=0, len = regExp.length;
		var noCap = /^a$|^an$|^the$|^and$|^but$|^or$|^so$|^after$|^before$|^when$|^while$|^since$|^until$|^although$|^even\sif$|^because$|^both$|^either$|^neither$|^not\sonly$|^but\salso$\^aboard$|^about$|^above$|^absent$|^across$|^after$|^against$|^along$|^alongside$|^amid$|^amidst$|^among$|^amongst$|^around$|^as$|^aslant$|^astride$|^at$|^atop$|^barring$|^before$|^behind$|^below$|^beneath$|^beside$|^besides$|^between$|^beyond$|^but$|^by$|^despite$|^down$|^during$|^except$|^failing$|^following$|^for$|^from$|^in$|^inside$|^into$|^like$|^merry$|^mid$|^minus$|^near$|^next$|^notwithstanding$|^of$|^off$|^on$|^onto$|^opposite$|^outside$|^over$|^past$|^plus$|^regarding$|^round$|^save$|^since$|^than$|^through$|^throughout$|^till$|^times$|^to$|^toward$|^towards$|^under$|^underneath$|^unlike$|^until$|^up$|^upon$|^via$|^with$|^within$|^without$|^according\sto$|^ahead\sof$|^as\sto$|^aside\sfrom$|^because\sof$|^close\sto$|^due\sto$|^far\sfrom$|^in\sto$|^inside\sof$|^instead\sof$|^near\sto$|^next\sto$|^on\sto$|^out\sof$|^outside\sof$|^owing\sto$|^prior\sto$|^subsequent\sto$|^as\sfar\sas$|^as\swell\sas$|^by\smeans\sof$|^in\saccordance\swith$|^in\saddition\sto$|^in\sfront\sof$|^in\splace\sof$|^in\sspite\sof$|^on\saccount\sof$|^on\sbehalf\sof$|^on\stop\sof$|^with\sregard\sto$|^in\scase\sof$|^anti$|^betwixt$|^circa$|^cum$|^in\slieu\sof$|^per$|^qua$|^sans$|^unto$|^versus$/i; 
		//src http://www.cumbrowski.com/CarstenC/articles/20070623_Title_Capitalization_in_the_English_Language.asp
		regExp[len] = '';
		
		for(; i < len; i++)
		  if(/^[A-Z]+$/.test(regExp[i]))
				regExp[len] += regExp[i] + ' '; //acrynymn so all uppper
			else if((i + 1) != len && (i + 2) != len && noCap.test(regExp[i]+' '+regExp[i+1]+' '+regExp[i+2])) //test for preposition triplets
			{
				regExp[len] += (regExp[i] + ' ' + regExp[i+1] + ' ' + regExp[i+2]).toLowerCase() + ' ';
				i+=2;
			}
			else if((i + 1) != len && noCap.test(regExp[i]+' '+regExp[i+1])) //test for preposition pairs
			{
				regExp[len] += (regExp[i] + ' ' + regExp[i+1]).toLowerCase() + ' ';
				i++;
			}
			else if(noCap.test(regExp[i])) //test for preposition
			  regExp[len] += regExp[i].toLowerCase() + ' ';
			else
				regExp[len] += regExp[i].substring(0,1).toUpperCase() + regExp[i].substring(1,regExp[i].length).toLowerCase() + ' ';
		
		regExp = regExp[len].substring(0,(regExp[i].length - 1)).split('-'); //hiphenated name; Mary-Grace
		i=0, len = regExp.length;
		regExp[len] = '';
		
		for(; i < len; i++)
		  if(regExp[i].length > 0)
				regExp[len] += regExp[i].substring(0,1).toUpperCase() + regExp[i].substring(1,regExp[i].length) + '-';
			
		id.value = regExp[len].substring(0,1).toUpperCase() + regExp[len].substring(1,(regExp[i].length - 1));
	}
		
	//date
	if(/date/.test(id.className))
	  id.value = dateParse(id.value)[1];
		
	//time
	if(/time/.test(id.className))
	{
		//formats: hh:mm ap, hhmm ap, hhmm
		var regExp = [id.value.replace(/[^\d:apm\s]/ig,'')];
		
		if(/p/i.test(regExp[0]))
		  regExp[2] = 'pm';
		else if(/a/i.test(regExp[0]))
		  regExp[2] = 'am';
		else
		  regExp[2] = '';
			
		regExp[0] = regExp[0].replace(/[^\d]/g,'');
		
		if(regExp[0].length >= 4)
		  regExp = [regExp[0].slice(0,2),String(regExp[0].slice(2,4)%60 < 10 ? '0' + regExp[0].slice(2,4)%60 : regExp[0].slice(2,4)%60),regExp[2]];
		else if(regExp[0].length == 3)
		  regExp = [regExp[0].slice(0,1),String(regExp[0].slice(1,3)%60 < 10 ? '0' + regExp[0].slice(1,3)%60 : regExp[0].slice(1,3)%60),regExp[2]];
		else if(regExp[0].length == 2)
		  regExp = [regExp[0].slice(0,2),'00',regExp[2]];
		else if(regExp[0].length == 1)
		  regExp = [regExp[0].slice(0,1),'00',regExp[2]];
		else
		  return id.value = '';
			
		if(regExp[0] == 12 && regExp[2] != 'am')	
		  regExp = [regExp[0],regExp[1],'pm'];
		else if(regExp[0]%24 > 11 || regExp[2] == 'pm')
		  regExp = [regExp[0]%12,regExp[1],'pm'];
		else
		  regExp = [regExp[0]%12,regExp[1],'am'];
			
		if(regExp[0] == 0)
		  regExp = [12,regExp[1],'am'];
			
		id.value = regExp[0] + ':' + regExp[1] + ' ' + regExp[2];
	}
		
	//url
	if(/url/.test(id.className))
	{														
		if(id.value.length > 0 && !(id.value.indexOf('http') + 1))
		{
			id.value = 'http://' + id.value; //add prefix to address if forgotten
			ajaxFunction(id); //valides address is valid
		}
	}
	
	//username
	/*if(/username/.test(id.className))
	  ajaxFunction(id);*/
	
	evaluate22(id);
}

function validate(form) //checks validation of all fields for sumbittion
{
	var formLabels = form.getElementsByTagName('input');
	var submitForm;
	
	for(var i = (formLabels.length - 1); i > 0; i--)
	  if(formLabels[i].type == 'submit')
		{
		  submitForm = formLabels[i];
			break;
		}
	  
	for(var i = 0, len = formLabels.length; i < len; i++)
	  if(formLabels[i].type == 'text' && formLabels[i].className.match(/required/) && (formLabels[i].value.length == 0 || document.getElementById(formLabels[i].id + 'Label').style.color == 'red'))
		{
			
			/*<?php
			if(isset($_SESSION['level']) && ($_SESSION['level'] == 1 || $_SESSION['level'] == 2))
			//if(isset($_SESSION['employeeid']) && ($_SESSION['employeeid'] == '0462254'))
			{ ?>
				submitForm.disabled = false;
				<?php 
			}
			else
			{ ?>*/
				submitForm.disabled = true;
				/*<?php 
			} ?>*/
			
			return;
		}
		else if(i == (len - 1))
	    submitForm.disabled = false;
}

function fieldCheck(id,regExp,pass,fail)
{
	var temp = document.getElementById(id.id + 'Label');
	
	if(!id.hasFocus && id.value.length > 0 && !regExp.test(id.value)) 
	{
		temp.style.color = 'red';
		temp.style.fontWeight = 'bold';			
		document.getElementById(id.id + 'Span').innerHTML = fail;
	}
	else if(id.hasFocus && id.value.length > 0 && regExp.test(id.value))
	{
		temp.style.color = 'black';
		temp.style.fontWeight = 'normal';
		document.getElementById(id.id + 'Span').innerHTML = pass;
	}		
}

function uploadFileF(id)
{
	//get the file, upload, return the link and file name, change to hidden, give the option to remove
	//var iframe = document.getElementById('uploadFileFrame').cloneNode(false);
	var iframe;
	(navigator.appName == "Microsoft Internet Explorer" ? iframe = document.createElement('span') : iframe = document.getElementById('uploadFileFrame').cloneNode(false) );
	var input = id.cloneNode('false');
	input.id = input.id.replace(unique - 1, '') + unique;
	input.style.display = 'block';
	input.value = '';
	input.onchange = function()
	{
		uploadFileF(this);
	}
	
	var img = document.createElement('img');
	img.src = 'http://webapp.und.edu/dept/oid/images/progress.gif';
	img.style.display = 'block';
	img.id = img.name = id.id.replace('upload','image');
	document.getElementById('uploadPre').click();
	id.parentNode.appendChild(input);
	id.parentNode.replaceChild(img,id);
	document.getElementById('request').target = 'uploadFileFrame' + unique;
	//document.getElementById(id.id + 'Span').innerHTML = 'working';
	(navigator.appName == "Microsoft Internet Explorer" ? iframe.innerHTML = '<iframe id="uploadFileFrame'+unique+'" name="uploadFileFrame'+unique+'" src="javascript:void(0)" style="visibility:visible; position:absolute; width:680px" frameborder="0" marginheight="0" marginwidth="0"></iframe>' : iframe.id = iframe.name = iframe.id + unique );
	//iframe.name = 'uploadFileFrame' + unique;
	document.getElementById('uploadFileFrame').parentNode.appendChild(iframe);
	document.getElementById('unique').value = unique;
	//iframe = document.getElementById('uploadFileFrame' + unique);
	//iframe.name = 'uploadFileFrame' + unique;
	//alert(document.getElementById('uploadFileFrame' + unique));
	//alert(document.getElementById('uploadFileFrame').parentNode.innerHTML);
	//alert(document.getElementById('request').target);
	
	//id.style.display = 'none';
	unique++;	
}

inputProperties();

