/* 
	cookies.js
	File containing all the cookie script files prepared for Shaftesbury CC website
	Created by Questronics Computing Service
 */

var cookieOK = navigator.cookieEnabled
var cookieDisabled = !cookieOK

function GetCookieArray(name) {
	var i, x, cookieName, newCookie = '', val = GetCookie(name)
	if (val != null) {
//alert(val.length)
		x = parseInt(val)
		if (isNaN(x) == false) { val = val.substr(2) }
		if (val.indexOf('¬') != -1) {
			var CookieArray = val.split('¬')
			for (var i = 0; i < CookieArray.length; i++) {
				cookieName = CookieArray[i]
				val = GetCookie(cookieName)
//alert(val)
				if (val != null) {
					val = val.split('¬')
					newCookie += ((newCookie != '') ? ';' : '') + val
				}
			}
		   expire = new Date()
   		expire.setTime(expire.getTime() + (400 * 24 * 3600000))
			SetCookie(name, newCookie, expire)
			val = GetCookie(name)
		}
	}
	return val
}

function GetCookie(name) {
	var i = 0, arg = name + '=', alen = arg.length, clen = document.cookie.length
	while ( i < clen ) {
		var j = i + alen
		if (document.cookie.substring(i, j) == arg) { return getCookieVal(j) }
		i = document.cookie.indexOf(' ', i) + 1
		if (i == 0) { break }
	}
	return null
}

function getCookieVal(offset) {
	var endstr = document.cookie.indexOf(";", offset)
	if (endstr == -1) { endstr = document.cookie.length }
	return unescape(document.cookie.substring(offset, endstr))
}

function SaveCookie(name,value,ndays) {
	if ((ndays != null) && (ndays != 0)) {
	  	expire = new Date()
  		expire.setTime(expire.getTime() + (ndays * 24 * 3600000))
// 		                                                       (dd)   * (hr) * (ms in hr)
		SetCookie(name, value, expire)
	}
	else { SetCookie(name, value) }
}

function SetCookie(name,value) {
	var argv = SetCookie.arguments
	var argc = SetCookie.arguments.length
	var expires = (argc > 2) ? argv[2] : null
	var path = (argc > 3) ? argv[3] : null
	var domain = (argc > 4) ? argv[4] : null
	var secure = (argc > 5) ? argv[5] : false
	document.cookie = name + '=' + escape(value) 
	+ ((expires == null) ? " " : ("; expires=" + expires.toGMTString()))
	+ ((path == null) ? " " : (" ; path=" + path))
	+ ((domain == null) ? " " : (" ; domain=" + domain))
	+ ((secure == true) ? " ; secure=" : " ")
}

function DeleteCookie(name) {
	var exp = new Date()
	exp.setTime(exp.getTime() - 1)
	var cval = GetCookie(name)
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString()
}

function saveRecord(eform, cookieName, Rider, deleteRecord) {
//	if (cookieDisabled) { return false }
	var i, expire, value, foundN, foundZ, ndays, Names = new Array(), id = '', val
	var pName = document.location.pathname
	if (pName.indexOf('entryforms') == -1) {
		pName = pName.replace('audax/','entryforms/')
		pName = pName.replace('audax\\','entryforms\\')
		pName = pName.replace('tt/','entryforms/')
		pName = pName.replace('tt\\','entryforms\\')
	}
	pName = pName.replace('entryformTT.html','')
	pName = pName.replace('roadraceform.html','')
	pName = pName.replace('audaxform.html','')
	pName = pName.replace('member_form.html','')
	pName = pName.replace('timetrialformTT.html','')
	pName = pName.replace('%20',' ')
//alert(pName)
	switch (eform) {
		case 'RRentries':
			id = 'BCF'
			break
		case 'OPENentries':
			id = 'RTTC'
			break
		case 'Entries':
			id = 'AUK'
			break
		case 'TTentries':
			id = 'TT'
			cookieName = Rider.toUpperCase()
			break
	}
//alert(cookieName)
//alert(NamesArray.length)
	while (true) {
		for (i = 0, foundN = false, foundZ = false; i < NamesArray.length; i++) {
			Names = NamesArray[i]
			if (Names == null) { 
				NamesArray[i] = 'ZZZZZ'
				foundZ = true
				continue 
			}
			if (typeof Names == 'object') { Names = Names.join(',') }
			Names2 = ((id == 'TT') ? Names.toUpperCase() : Names)
//alert(Names2)
			if (Names2.indexOf(cookieName) != -1) {
				foundN = true
				break
			}
		}
		if (foundN && deleteRecord) { 
			if ((id == 'BCF') || (id == 'RTTC')) {
				DeleteCookie(id + ',' + cookieName.substring(0, cookieName.length - 1))
			}
			NamesArray[i] = 'ZZZZZ' 
			foundZ = true
		}
		if (foundZ) {
			NamesArray.sort()
			for (i = 0; i < NamesArray.length; i++) {
				if (NamesArray[i] == 'ZZZZZ') { break }
			}
			NamesArray.length = i
			if ((i == 1) && ((id == 'BCF') || (id == 'RTTC'))) {
				Names = NamesArray[0].split(',')
				DeleteCookie(id + ',' + Names[0] + ',' +Names[1])
			}
		}
		else { break }
	}
	if (!foundN) { i = NamesArray.length }
	if (!deleteRecord) {	 
		if (typeof Rider == 'object') { NamesArray[i] = Rider.join(',') }
		else { NamesArray[i] = Rider }
	}
	value = ''
	len = NamesArray.length
	ndays = -1												// yesterday !
	if (len > 0) { ndays = 400 }										// 400 days from now !
  	expire = new Date()
  	expire.setTime(expire.getTime() + (ndays * 24 * 3600000))
// 	                                                       (dd)   * (hr) * (ms in hr)

	NewArray = new Array()
	var value = ''
	if ((len > 1) && ((id == 'BCF') || (id == 'RTTC'))) {
//alert(typeof NamesArray)
		if (typeof NamesArray != 'object') { NamesArray = NamesArray.join(',') }
		for (i = 0; i < NamesArray.length; i++) {
			Names = NamesArray[i].split(',')
			NewArray[i] = Names[0] + ',' + Names[1]
			SetCookie(id + ',' + NewArray[i], NamesArray[i], expire, pName)
			val =GetCookie(id + ',' + NewArray[i])
			if (val == null) { disableCookie(); return false 	}
		}
		for (i = 0; i < NewArray.length; i++) { value += ((value != '') ? ';' : '') + NewArray[i] }
		SetCookie(id + 'entries', value, expire, pName)
		val =GetCookie(id + 'entries')
		if (val == null) { disableCookie(); return false 	}
	} else {
//alert(NamesArray.length+' : '+pName)
		for (i = 0; i < NamesArray.length; i++) { value += ((value != '') ? ';' : '') + NamesArray[i] }
		SetCookie(id + 'entries', value, expire, pName)
		val =GetCookie(id + 'entries')
		if (val == null) { disableCookie(); return false 	}
	}
	showButton("load", ((NamesArray.length > 0) ? "enabled" : "disabled"))
	return true
}

function disableCookie() {
//	cookieDisabled = false 
//return
	cookieDisabled = true 
	alert('You have disabled this Shaftesbury Cookie')
	NamesArray.length = 0
	showButton("load", "disabled")
}

function loadDefaults(eform) {
	var EntriesCookie = null
	var Names, nPath = '', nForm, nForm1 = '', nForm2 = ''
	var cText, i, j, id, val
	var mText = ' onfocus="inputFocus(this.name)" onmouseout="msg()" onmouseover="msg(this.name)" onblur="msg()">'
	cookieUpdate()
	var outputForm = eform
	var focusID = ((eform == 'TTentries') ? 'riderName' : 'surname')
	if (cookieOK) {
		switch (eform) {
			case 'TTentries' :
				id = 'TT'
//				mText = ' onfocus="inputFocus(this.name)" title="Select required name, then click [Go]">'
				break
			case 'Handbook' :
				id = 'AUK'
				break
			case 'Entries':
				id = 'AUK'
				nForm1 = 'BCF'
				nForm2 = 'RTTC'
				break
			case 'OPENentries':
				id = 'RTTC'
				nForm1 = 'BCF'
				nForm2 = 'AUK'
				break
			case 'RRentries':
				id = 'BCF'
				nForm1 = 'RTTC'
				nForm2 = 'AUK'
				break
			case 'RRentries2':
				id = 'BCF'
				eform = 'BCFentries'
				mText = ''
				break
		}
		cText = '<select name="rider" ' + mText
		nForm = id
		EntriesCookie = GetCookie(nForm + 'entries')
		if ((EntriesCookie == null) && (nForm1 != '')) {
			nForm = nForm1
			EntriesCookie = GetCookie(nForm + 'entries')
		}
		if ((EntriesCookie == null) && (nForm2 != '')) {
			nForm = nForm2
			EntriesCookie = GetCookie(nForm + 'entries')
		}
	}
	if (EntriesCookie != null) { 
		NamesArray = EntriesCookie.split(';')
		NamesArray.sort()
		if ((nForm == 'BCF') || (nForm == 'RTTC')) {
			if (NamesArray.length > 1) {
				newCookie = GetCookie(nForm + 'entries')
				newArray = newCookie.split(';')
				newArray.sort()
				for (i = 0, j = 0; i < newArray.length; i++) {
					val = GetCookie(nForm +',' + newArray[i])
					if (val != null) { NamesArray[j++] = val }
				}
			}
		}
//alert(NamesArray)
		if (nForm != id) {
			for (i = 0; i < NamesArray.length; i++ ) {
				Names = NamesArray[i].split(',')
				NamesArray[i] = ''
				for (j = 0; j < 12; j++) { NamesArray[i] += Names[j] + ',' }
			}
		}
		if (eform != outputForm) { return }
		selectRider(eform, true)
		return
	} else { 
		if (id == 'BCF') {
			filldata(-1) 			///// added 28/04/03 to avoid run error when no cookie exists
		} else {
			filldata(0) 		//// reverted on 16/09/02
//			filldata(-1) 			///// above line was changed to avoid "Clear Details" message when no names in cookies
		}
		showButton("load", "disabled")
	}
	showField = 'document.Entry.' + focusID + '.focus()'
}

function selectRider(eform, show) {
	var Names, mText, cText, focusID
	mText = ' onfocus="inputFocus(this.name)" onblur="msg()" onmouseover="msg(this.name,1)" onmouseout="killMsg()">'
	focusID = ((eform == 'TTentries') ? 'riderName' : 'surname')
	cText = '<select name="rider" ' + mText
	if (typeof NamesArray != 'object') { NamesArray = NamesArray.join(',') }
	for (var i = 0; i < NamesArray.length; i++) {
		Names = NamesArray[i].split(',')
		cText += '<option value=' + i + ((i == 0) ? ' selected' : '') + '>' + ((eform != 'TTentries') ? Names[1] : '') + ' ' + Names[0] + '</option>'
	}
	cText += '</select><input type="button" class="go" id="go" name="go" value="Go" onclick="filldata(document.Selection.rider.value)"' + mText
	if (NamesArray.length > 1) {
		with (getObj("layer1")) {
			innerHTML = cText
			style.zIndex = "10"
			if ((show != null) && (show != "undefined")) { style.visibility = "visible" }
		}
		showField = 'document.Selection.rider.focus()' 
		showButton("load", "enabled")
		return
	} else { 
		filldata(0) 
		showButton("load", "enabled")
//		showButton("load", "disabled")
		if ((eform == 'RRentries') && (NamesArray.length > 0) && (NamesArray[0] != '')) { focusID = 'raceName' }
	}
	showField = 'document.Entry.' + focusID + '.focus()'
}

function showButton(id, state) {
	with (eval('document.Entry.' + id)) {
		disabled = ((state == "disabled") ? true : false)
		style.color = ((state == "disabled") ? "gray" : "blue")
//alert(state+' '+disabled +' '+ style.color)
	}
}

function cookieUpdate() {
	var entryform, newform, id
	var EntriesCookie, newCookie
	var NamesArray = new Array()
	var Names = new Array()
	var NewArray = new Array()
	var pName = document.location.pathname
	pName = pName.replace('roadraceform.html','')
	pName = pName.replace('audaxform.html','')
	pName = pName.replace('member_form.html','')
	pName = pName.replace('entryformTT.html','')
	pName = pName.replace('timetrialformTT.html','')
	pName = pName.replace('%20',' ')
   var expire = new Date()
   expire.setTime(expire.getTime() + (400 * 24 * 3600000))
	entryform = 'RRentries'
	newform = 'BCFentries'
	id = 'BCF,'
	newCookie = GetCookie(newform)
	EntriesCookie = GetCookie(entryform)
	if ((newCookie == null) && (EntriesCookie != null)) {
		NamesArray = EntriesCookie.split(';')
		NamesArray.sort()
		NewArray = new Array()
		for (i = 0; i < NamesArray.length; i++) {
			NamesArray[i] = getNames(NamesArray[i], entryform)
			if (NamesArray.length > 1) {
				NewArray[i] = Names[0] + ',' + Names[1]
				SetCookie(id + NewArray[i], NamesArray[i], expire, pName)
			}
		}
		var value = ''
		if (NewArray.length > 0) {
			for (i = 0; i < NewArray.length; i++) { value += ((value != '') ? ';' : '') + NewArray[i] }
		} else {
			for (i = 0; i < Names.length; i++) { value += ((value != '') ? ',' : '') + Names[i] }
		}
		SetCookie(newform, value, expire, pName)
		DeleteCookie(entryform)
	}
	entryform = 'Entries'
	newform = 'AUKentries'
	id = 'AUK,'
	newCookie = GetCookie(newform)
	EntriesCookie = GetCookie(entryform)
	if ((newCookie == null) && (EntriesCookie != null)) {
		NamesArray = EntriesCookie.split(';')
		NamesArray.sort()
		NewArray = new Array()
		for (i = 0; i < NamesArray.length; i++) { NamesArray[i] = getNames(NamesArray[i], entryform) }
		value = ''
		for (i = 0; i < NamesArray.length; i++) { value += ((value != '') ? ';' : '') + NamesArray[i] }
		SetCookie(newform, value, expire, pName)
		DeleteCookie(entryform)
	}
}

function getNames(NmArray, eform) {
	var Name = NmArray.split(',')
	var len = Name.length
	var myArray = new Array()
	switch (eform) {
		case 'RRentries':
/*				BCF
				NOTE. The following array is in order of cookie, NOT order on screen
				NEW ORDER
					'surname','forenames','title','addr1','addr2','addr3','addr4','addr5','dob','tele','email','clubname',
					'colours','sponsor1','sponsor2','sponsor3','sponsor4','bcf_no','uci_no','category',
					'points1','points2','premier1','premier2',
					'pos1','placing1','event1','date1','distance1','category1','winner1',
					'pos2','placing2','event2','date2','distance2','category2','winner2',
					'pos3','placing3','event3','date3','distance3','category3','winner3',
					'pos4','placing4','event4','date4','distance4','category4','winner4',
					'pos5','placing5','event5','date5','distance5','category5','winner5',
					'raceName','raceDate','raceCategory','raceFee','reserve'
				ORIGINAL ORDER
					'surname','forenames','title','addr1','addr2','addr3','addr4','addr5','dob','tele','email','bcf_no','uci_no','category',
					'points1','points2','premier1','premier2','clubname','colours','sponsor1','sponsor2','sponsor3','sponsor4',
					'pos1','placing1','event1','date1','distance1','category1','winner1',
					'pos2','placing2','event2','date2','distance2','category2','winner2',
					'pos3','placing3','event3','date3','distance3','category3','winner3',
					'pos4','placing4','event4','date4','distance4','category4','winner4',
					'pos5','placing5','event5','date5','distance5','category5','winner5',
					'raceName','raceDate','raceCategory','raceFee','reserve'
*/
			for (var i = 0; i < len; i++) { 
				if (i < 11) { myArray[i] = Name[i] }
				if ((i > 10) && (i < 17)) { myArray[i] = Name[i + 7] }
				if ((i > 16) && (i < 20)) { myArray[i] = Name[i - 6] }
				if (i > 19) { myArray[i] = Name[i] }
			}
			break
		case 'Entries':
/* 			AUDAX
				NOTE. The following array is in order of cookie, NOT order on screen
				NEW ORDER
					mySurname = Names[0], myForenames = Names[1], myTitle = Names[15],
					myAddr1 = Names[2], 	myAddr2 = Names[3], 	myAddr3 = Names[4], myAddr4 = Names[5], myAddr5 = Names[6],
					myDob = Names[7], myTele = Names[13], 	myEmail = Names[14], myClubname = Names[11], 
					myAuk_no = Names[8], myCtc_no = Names[9], myBcf_no = Names[10], myCTC_DA = Names[12], myMob = Names[16]		** last item added 9/11/10
				ORIGINAL ORDER
					mySurname = Names[0], myForenames = Names[1], 
					myAddr1 = Names[2], 	myAddr2 = Names[3], 	myAddr3 = Names[4], myAddr4 = Names[5], myAddr5 = Names[6]
					myDob = Names[7], myAuk_no = Names[8], myCtc_no = Names[9], myBcf_no = Names[10], myClubname = Names[11]
					myCTC_DA = Names[12], 	myTele = Names[13], 	myEmail = Names[14], if (len == 16) { myTitle = Names[15] }
*/
			for (var i = 0; i < len; i++) { 
				if (i < 2) { myArray[i] = Name[i] }
				if (i == 2) { myArray[i] = 	((len == 16) ? Name[15] : '') }
				if ((i > 2) && (i < 9)) { myArray[i] = Name[i - 1] }
				if ((i > 8) && (i < 11)) { myArray[i] = Name[i + 4] }
				if (i == 11) { myArray[i] = Name[11] }
				if ((i > 11) && (i < 15)) { myArray[i] = Name[i - 4] }
				if (i == 15) { myArray[i] = Name[12] }
			}
			break
	}
	return myArray
}

