/*************************************
File contents - clientside functions

insertTable
emailchanged()
convertToUppercase(textbox)
viewInfo(type,data)
viewHelp(type);
formatDate(Textbox) - checks textboxes and formats the date
convertTime(RaceTime)
checkName(pageLocation)
setMatch(input)
unique(a)
contains(a,e)
viewSwimmerDetails(id)
capitalise(string)
changeName(textbox)
*/
var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December"); 
var days = new Array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");  

if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
	HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
	{
		switch (where){
		case 'beforeBegin':
			this.parentNode.insertBefore(parsedNode,this)
			break;
		case 'afterBegin':
			this.insertBefore(parsedNode,this.firstChild);
			break;
		case 'beforeEnd':
			this.appendChild(parsedNode);
			break;
		case 'afterEnd':
			if (this.nextSibling) 
				this.parentNode.insertBefore(parsedNode,this.nextSibling);
			else this.parentNode.appendChild(parsedNode);
			break;
		}
	}

	HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
	{
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML)
	}


	HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
	{
		var parsedText = document.createTextNode(txtStr)
		this.insertAdjacentElement(where,parsedText)
	}
}

function insertTable()
{
	var viewInfoWindow = window.open("/swimming/admin/insert_table/", "createTable","width=600,height=400,scrollbars,resizable,status,toolbar");
	viewInfoWindow.focus();
	return false;
}
							
function emailchanged(){
	//document.getElementById("Email").innerText = "Note: Changing email will change log in username";
	alert("WARNING: Changing email will change log in username");
}

function convertToUppercase(textbox){
	//used by swimmer detail forms
	var text = new String(textbox.value);
	text = text.toUpperCase();
	textbox.value = text;
}

function viewInfo(type,data){
	var url = "/swimming/info.asp?type=" + type + "&data=" + data;
	var viewInfoWindow = window.open(url, "viewInfo","width=300,height=400,scrollbars=yes,resizable=yes,status=yes");
	viewInfoWindow.focus();
	return false;
}

/* Function to be replaced with inline help using CSS & javascript */
function viewHelp(type){
	var url = "/swimming/help.asp?type=" + type;
	var viewInfoWindow = window.open(url, "viewInfo","width=350,height=400,scrollbars=yes,resizable=yes,status=yes");
	viewInfoWindow.focus();
	return false;
}

function formatDate(textBox)
{
	//takes a value from a text box and returns day day month year
	//var months = new Array("Jan",31,"Feb",29,"Mar",31,"Apr",30,"May",31,"Jun",30,"Jul",31,"Aug",31,"Sep",30,"Oct",31,"Nov",30,"Dec",31);
	var months = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	
	if(textBox.name=="DOB") var normalYearVal = "19";
	else var normalYearVal = "20";
	
	var textBoxValue = textBox.value;
	if(textBoxValue.length!=0){
		var dateArray = textBoxValue.split('/');
		var ok = true;
		if(dateArray.length==3){
		
			//Make year four digits
			dateArray[2] = makeYearFourDigits(dateArray[2], normalYearVal);
			//alert("new value for dateArray[2]:" + dateArray[2]);
			//Check if acceptable date

			var checkDate = new Date(dateArray[0] + " " + months[dateArray[1]-1] + " " + dateArray[2]);
			if(checkDate.getDate()!=dateArray[0]){ ok=false; }
			if(checkDate.getMonth()!=dateArray[1]-1){ ok=false; }
			if(checkDate.getFullYear()!=dateArray[2]){ ok=false; }
		}
		//Changed to handle any textbox
		if(ok){ 
			textBox.value = dateArray[0] + "\/" + dateArray[1] + "\/" + dateArray[2];
		}else{
			textBox.value = dateArray[0] + "\/" + dateArray[1] + "\/" + dateArray[2] + " - INVALID DATE";
			textBox.focus();
		}
		
	}
}

function makeYearFourDigits(input, normalYearVal){
	if(input.length==2 & !isNaN(input)){
		//alert("length is 2 and a number");
		return normalYearVal + input;
	}
	else if(input.length>4){
		var yearValue = input.substring(0,4);
		if(isNaN(yearValue)){
			//alert("length is greater than 4, and first four chars don't make a number");
			return normalYearVal + input.substring(0,2);
			
		}else{
			//alert("length is greater than 4 and first four chars are a number");
			return yearValue;
		}
	}
	else{
		//alert("last one");
		return input;
	}
}

//function to convert race times in textboxes to a valid format
function convertTime(postTime)
{
      var Itime = new String(postTime);
      //Response.Write(Itime + "<br>");
      var regExp = /\./g;
      Itime = Itime.replace(regExp, "");
      var regExp = /\:/g;
      Itime = Itime.replace(regExp, "");
      //Response.Write(Itime + "<br>");
      var PostTime;
      switch(Itime.length)
      {
       case 1:
        PostTime = "  :  .0" + Itime;
        break;
       case 2:
        PostTime = "  :  ." + Itime;
        break;
       case 3:
        PostTime = "  : " + Itime.charAt(0); + "." + Itime.substring(1,2);
        break;
       case 4:
        PostTime = "  :" + Itime.substring(0,2) + "." + Itime.substring(2,4);
        break;
       case 5:
        PostTime = " " + Itime.charAt(0) + ":" + Itime.substring(1,3) + "." + Itime.substring(3,5);
        break;
       case 6:
        PostTime = Itime.substring(0,2) + ":" + Itime.substring(2,4) + "." + Itime.substring(4,6);
        break;
      }
   return PostTime;
}

// VARIABLE TO HOLD PAGE REQUESTING NAMES **************************
var returnlocation;
var widget;
var widgetval;
var usefunction;

//TAKES NAME AND MATCHES AGAINST SwimmerArray *********************************
//THEN DISPLAYS WINDOW WITH LIST OF MATCHES   *********************************
function checkName(pagelocation)
{
 returnlocation = pagelocation;
 usefunction = "checkName";
 frm = document.resultsForm;
 
 var isresults = false;
   //alert("rl=" + returnlocation);
 
 if(returnlocation=="Swimmer0"){
    widget = frm.Swimmer0;
    widgetid = frm.SwimmerID0;
    isresults = true;
 }
 else if(returnlocation=="Swimmer1"){
    widget = frm.Swimmer1;
    widgetid = frm.SwimmerID1;
    isresults = true;
 }
 else if(returnlocation=="Swimmer2"){
    widget = frm.Swimmer2;
    widgetid = frm.SwimmerID2;
    isresults = true;
 }
 else if(returnlocation=="Swimmer3"){
    widget = frm.Swimmer3;
    widgetid = frm.SwimmerID3;
    isresults = true;
 }
 else if(returnlocation=="Swimmer4"){
    widget = frm.Swimmer4;
    widgetid = frm.SwimmerID4;
    isresults = true;
 }
 else if(returnlocation=="Swimmer5"){
    widget = frm.Swimmer5;
    widgetid = frm.SwimmerID5;
    isresults = true;
 }
 else if(returnlocation=="Swimmer6"){
    widget = frm.Swimmer6;
    widgetid = frm.SwimmerID6;
    isresults = true;
 }
 
//alert(widget);
 var found = 0;
 
 //TAKE NAME FROM BOX AND CONVERT TO LOWERCASE
 var NameToSearch = widget.value;
 
 //*********************
 // Check for an empty field and do nothing if so
 //*********************
 if(NameToSearch.length==0)
 {  
  return;
 }
 
 //*********************
 // If not empty, continue
 //********************
 
 NameToSearch = NameToSearch.toLowerCase();
  
 //CHECK FOR A PERFECT MATCH AND ASSIGN SwimmerID
 //INCASE OF POP-UP WINDOW FAILURE (IT WILL GIVE A NAME IF SOMETHING GOSE WRONG)
 for(var b=0; b<swimmerArray.length; b++)
 {
  var arraynameinlowercase = new String(swimmerArray[b][1]).toLowerCase();
  if(arraynameinlowercase==NameToSearch)
  {
   widgetid.value = swimmerArray[b][0];
   widget.value = swimmerArray[b][1];
   widget.style.backgroundColor = "#00ff00";
   found++;
  }
 }
 
 //INITIALISE VARIABLES
 var pos = -1;
 var url;
 var foundAt;
 var foundFullMatchArray = new Array();
 var foundFullMatchCounter = 0;
 var foundPartialMatchArray = new Array();
 var foundPartialMatchCounter = 0;
 var posArray = new Array();
  
 if(!isresults || (isresults && found!=1))
 {
  
  //PERFORM SEARCH OF SWIMMER ARRAY
  for(var y=0; y<swimmerArray.length; y++)
  {
   //SPLIT THE NAME INTO IT'S WORDS
   var nameInput = new String(NameToSearch);
   var splitName =  nameInput.split(" ");
   
   var fullNameMatch = new String(swimmerArray[y][1]).toLowerCase();
   var firstNameMatch = new String(swimmerArray[y][2]).toLowerCase();
   var surnameMatch = new String(swimmerArray[y][3]).toLowerCase();
   
   //CHECK FOR NAME MATCHES
    for(var z=0; z<splitName.length; z++)
    {
     if(splitName[z] == firstNameMatch || splitName[z] == surnameMatch)
     {
      foundPartialMatchArray[foundPartialMatchCounter] = swimmerArray[y][0];
      foundPartialMatchCounter++;
     } 
    }
  }

  foundPartialMatchArray = unique(foundPartialMatchArray);
  widget.style.backgroundColor = "#ff0000";
 
   capitalisedName = capitalise(widget.value);
   
   var strQuery = "count=" + foundPartialMatchArray.length + "&";
   strQuery += "search=" + capitalisedName + "&";

   for(var p=0; p<foundPartialMatchArray.length; p++)
   {
    strQuery += "id" + p + "=" + foundPartialMatchArray[p] + "&";
   }
   
   strQuery = strQuery.substring(0,strQuery.length-1);
   //alert(posArray);
   //alert(strQuery);
   var url = "/swimming/admin/swimmerNameCheck.asp?returnlocation=" + returnlocation + "&" + strQuery;
   checkNameWindow = window.open(url,"checkNameWindow", "height=400, width=650, scrollbars, resizable, status");
   checkNameWindow.focus();

 //}
 }//CLOSE (IF FOUND && RESULTS)
}

//FUNCTION TO RECEIVE SELECTION FROM POP-UP ****************************
function setMatch(input)
{
 if(input!="new")
 {
  for(var i=0; i<swimmerArray.length; i++)
  {
   if(swimmerArray[i][0]==input)
   {
    widget.value = swimmerArray[i][1];
	widget.style.backgroundColor = "#00ff00";
    widgetid.value = input;
    if(returnlocation=="alumni")
    {
     document.form1.submitType.value = "update";
    }
   }
  }
 }
 else
 {
   //CAPITALISE FIRST LETTERS
   var currentText = widget.value;
   var stringArray = currentText.split(" ");

   for(var x=0; x<stringArray.length; x++)
   {
    currentWord = new String(stringArray[x]);
    firstletter = currentWord.substr(0,1).toUpperCase();
    stringArray[x] = firstletter + currentWord.substring(1,currentWord.length);
   }

   var capitalisedName = "";
 
   for(x=0; x<stringArray.length; x++)
   {
    capitalisedName += stringArray[x] + " ";
   }
  capitalisedName = capitalisedName.substring(0,capitalisedName.length-1);
  widget.value = capitalisedName;
 }
 //document.form1.email.focus();
 
 if(usefunction=="checkName")
 {
  checkNameWindow.close();
 }
 else if(usefunction=="changeName")
 {
  selectswimmer.close();
 }
}

//REMOVES ALL DUPLICATES FROM ARRAY a *******************************
function unique(a) {
	tmp = new Array(0);
	for(i=0;i<a.length;i++){
		if(!contains(tmp, a[i])){
			tmp.length+=1;
			tmp[tmp.length-1]=a[i];
		}
	}
	return tmp;
}

//RETURNS TRUE IS a IS CONTAINED IN e ************************
function contains(a, e) {
	for(j=0;j<a.length;j++)if(a[j]==e)return true;
	return false;
}

//OPEN SWIMMER DETAILS WINDOW ******************************************
function viewSwimmerDetails(id)
{
 var url = "/swimming/swimmerDetails.asp?id=" + id; 
 checkNameWindow = window.open(url,"swimmerDetails", "height=500, width=650, scrollbars, resizable");
 checkNameWindow.focus();
 return false;
}

//FUNCTION TO CAPITALISE FIRST LETTERS OF A STRING ************************************
function capitalise(thisString)
{
   var currentText = thisString;
   var stringArray = currentText.split(" ");

   for(var x=0; x<stringArray.length; x++){
    currentWord = new String(stringArray[x]);
    firstletter = currentWord.substr(0,1).toUpperCase();
    stringArray[x] = firstletter + currentWord.substring(1,currentWord.length);
   }

   var capitalisedName = "";
 
   for(x=0; x<stringArray.length; x++)
    capitalisedName += stringArray[x] + " ";
 
  capitalisedName = capitalisedName.substring(0,capitalisedName.length-1);
  
  return capitalisedName;
}


function changeName(textbox)
{

 //returnlocation = results;
 usefunction = "changeName";
 form = document.resultsForm;
 
 if(textbox=="Swimmer1"){
     widget = form.Swimmer1;
    widgetid = form.SwimmerID1;
 }
 else if(textbox=="Swimmer2"){  
    widget = form.Swimmer2;
    widgetid = form.SwimmerID2;
 }
 else if(textbox=="Swimmer3"){
    widget = form.Swimmer3;
    widgetid = form.SwimmerID3;
 }
 else if(textbox=="Swimmer4"){
    widget = frm.Swimmer4;
    widgetid = frm.SwimmerID4;
 }
 else if(textbox=="Swimmer5"){
    widget = frm.Swimmer5;
    widgetid = frm.SwimmerID5;
 }
 else {
    widget = form.Swimmer0;
    widgetid = form.SwimmerID0;
 }
 
 //return false if the box is empty
 
  var url = "/swimming/selectswimmer.asp?returnto=" + returnlocation + "&search=" + capitalise(widget.value);

  selectswimmer = window.open(url,"selectionwindow","height=400,width=600,scrollbars,resizeable");
  selectswimmer.focus();
  return false;
 
}
