var regFail = false;
// Accessability Controls

//v1.0

//v1.7

// Flash Player Version Detection

// Detect Client Browser type

// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;

var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;

var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

var win;

function ControlVersion()

{

	var version;

	var axo;

	var e;



	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry



	try {

		// version will be set for 7.X or greater players

		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");

		version = axo.GetVariable("$version");

	} catch (e) {

	}



	if (!version)

	{

		try {

			// version will be set for 6.X players only

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

			

			// installed player is some revision of 6.0

			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,

			// so we have to be careful. 

			

			// default to the first public version

			version = "WIN 6,0,21,0";



			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		

			axo.AllowScriptAccess = "always";



			// safe to call for 6.0r47 or greater

			version = axo.GetVariable("$version");



		} catch (e) {

		}

	}



	if (!version)

	{

		try {

			// version will be set for 4.X or 5.X player

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");

			version = axo.GetVariable("$version");

		} catch (e) {

		}

	}



	if (!version)

	{

		try {

			// version will be set for 3.X player

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");

			version = "WIN 3,0,18,0";

		} catch (e) {

		}

	}



	if (!version)

	{

		try {

			// version will be set for 2.X player

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");

			version = "WIN 2,0,0,11";

		} catch (e) {

			version = -1;

		}

	}

	

	return version;

}



// JavaScript helper required to detect Flash Player PlugIn version information

function GetSwfVer(){

	// NS/Opera version >= 3 check for Flash plugin in plugin array

	var flashVer = -1;

	

	if (navigator.plugins != null && navigator.plugins.length > 0) {

		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {

			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";

			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;

			var descArray = flashDescription.split(" ");

			var tempArrayMajor = descArray[2].split(".");			

			var versionMajor = tempArrayMajor[0];

			var versionMinor = tempArrayMajor[1];

			var versionRevision = descArray[3];

			if (versionRevision == "") {

				versionRevision = descArray[4];

			}

			if (versionRevision[0] == "d") {

				versionRevision = versionRevision.substring(1);

			} else if (versionRevision[0] == "r") {

				versionRevision = versionRevision.substring(1);

				if (versionRevision.indexOf("d") > 0) {

					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));

				}

			}

			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;

		}

	}

	// MSN/WebTV 2.6 supports Flash 4

	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;

	// WebTV 2.5 supports Flash 3

	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;

	// older WebTV supports Flash 2

	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;

	else if ( isIE && isWin && !isOpera ) {

		flashVer = ControlVersion();

	}	

	return flashVer;

}



// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available

function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)

{

	versionStr = GetSwfVer();

	if (versionStr == -1 ) {

		return false;

	} else if (versionStr != 0) {

		if(isIE && isWin && !isOpera) {

			// Given "WIN 2,0,0,11"

			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]

			tempString        = tempArray[1];			// "2,0,0,11"

			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']

		} else {

			versionArray      = versionStr.split(".");

		}

		var versionMajor      = versionArray[0];

		var versionMinor      = versionArray[1];

		var versionRevision   = versionArray[2];



        	// is the major.revision >= requested major.revision AND the minor version >= requested minor

		if (versionMajor > parseFloat(reqMajorVer)) {

			return true;

		} else if (versionMajor == parseFloat(reqMajorVer)) {

			if (versionMinor > parseFloat(reqMinorVer))

				return true;

			else if (versionMinor == parseFloat(reqMinorVer)) {

				if (versionRevision >= parseFloat(reqRevision))

					return true;

			}

		}

		return false;

	}

}



function AC_AddExtension(src, ext)

{

  if (src.indexOf('?') != -1)

    return src.replace(/\?/, ext+'?'); 

  else

    return src + ext;

}



function AC_Generateobj(objAttrs, params, embedAttrs) 

{ 

  var str = '';

  if (isIE && isWin && !isOpera)

  {

    str += '<object ';

    for (var i in objAttrs)

    {

      str += i + '="' + objAttrs[i] + '" ';

    }

    str += '>';

    for (var i in params)

    {

      str += '<param name="' + i + '" value="' + params[i] + '" /> ';

    }

    str += '</object>';

  }

  else

  {

    str += '<embed ';

    for (var i in embedAttrs)

    {

      str += i + '="' + embedAttrs[i] + '" ';

    }

    str += '> </embed>';

  }



  document.write(str);

}



function AC_FL_RunContent(){

  var ret = 

    AC_GetArgs

    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

     , "application/x-shockwave-flash"

    );

  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);

}



function AC_SW_RunContent(){

  var ret = 

    AC_GetArgs

    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"

     , null

    );

  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);

}



function AC_GetArgs(args, ext, srcParamName, classid, mimeType){

  var ret = new Object();

  ret.embedAttrs = new Object();

  ret.params = new Object();

  ret.objAttrs = new Object();

  for (var i=0; i < args.length; i=i+2){

    var currArg = args[i].toLowerCase();    



    switch (currArg){	

      case "classid":

        break;

      case "pluginspage":

        ret.embedAttrs[args[i]] = args[i+1];

        break;

      case "src":

      case "movie":	

        args[i+1] = AC_AddExtension(args[i+1], ext);

        ret.embedAttrs["src"] = args[i+1];

        ret.params[srcParamName] = args[i+1];

        break;

      case "onafterupdate":

      case "onbeforeupdate":

      case "onblur":

      case "oncellchange":

      case "onclick":

      case "ondblClick":

      case "ondrag":

      case "ondragend":

      case "ondragenter":

      case "ondragleave":

      case "ondragover":

      case "ondrop":

      case "onfinish":

      case "onfocus":

      case "onhelp":

      case "onmousedown":

      case "onmouseup":

      case "onmouseover":

      case "onmousemove":

      case "onmouseout":

      case "onkeypress":

      case "onkeydown":

      case "onkeyup":

      case "onload":

      case "onlosecapture":

      case "onpropertychange":

      case "onreadystatechange":

      case "onrowsdelete":

      case "onrowenter":

      case "onrowexit":

      case "onrowsinserted":

      case "onstart":

      case "onscroll":

      case "onbeforeeditfocus":

      case "onactivate":

      case "onbeforedeactivate":

      case "ondeactivate":

      case "type":

      case "codebase":

      case "id":

        ret.objAttrs[args[i]] = args[i+1];

        break;

      case "width":

      case "height":

      case "align":

      case "vspace": 

      case "hspace":

      case "class":

      case "title":

      case "accesskey":

      case "name":

      case "tabindex":

        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];

        break;

      default:

        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];

    }

  }

  ret.objAttrs["classid"] = classid;

  if (mimeType) ret.embedAttrs["type"] = mimeType;

  return ret;

}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

function submitForm(name) {
	var name;
	document.forms[name].submit();
}

function createRequestObject() {
	var request_;
	var browser = navigator.appName;

	if(browser == "Microsoft Internet Explorer"){
		request_ = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		request_ = new XMLHttpRequest();
	}

	return request_;
}

var http = createRequestObject();

function verifyDuplicateUser(type) {
	var searchVal = document.getElementById('txtRegUsername').value;

	http.open('get', '/api/verify.php?t='+type+'&v='+searchVal+'&r='+Date(), true);
	http.onreadystatechange = handleVerifyDuplicateUser;
	http.send(null);
}

function handleVerifyDuplicateUser() {
	if(http.readyState == 4){
		var response = http.responseText;
		var backColor = '#C2FFB3';
		var borderColor = '#FFFFE5';
		var message = '';
		var access = false;
		regFail = false;
		
		var result = new Array();
		
		result = response.split("|");
		
		if(result[0] == 'true'){
			backColor = '#FFB3C2';
			borderColor = '#555555';
			message = '<br /><small>This username is already taken.<br />Try one of our suggestions:<br />'+result[1]+'<br />'+result[2]+'<br />'+result[3]+'</small>';
			access = true;
			regFail = true;
		}
		
		document.getElementById('txtRegUsername_row').style.backgroundColor = backColor;
		document.getElementById('regMessages').innerHTML = message;
		document.getElementById('btnSubmit').disabled = access;
	}
}

function verifyFieldMatch(field) {
	var field;
	var fieldConfirm = field
	
	var index = fieldConfirm.indexOf('Confirm');
	
	field = fieldConfirm.substring(0, index);
	
	var searchVal1 = document.getElementById(fieldConfirm).value;
	var searchVal2 = document.getElementById(field).value;
	
	http.open('get', '/api/verify.php?t='+fieldConfirm+'&f1='+searchVal1+'&f2='+searchVal2+'&r='+Date(), true);
	http.onreadystatechange = handleVerifyFieldMatch;
	http.send(null);
}

function handleVerifyFieldMatch() {
	if(http.readyState == 4){
		var response = http.responseText;
		var backColor = '#C2FFB3';
		var borderColor = '#FFFFE5';
		var message = '';
		var access = false;
		regFail = false;
		
		var result = new Array();
		
		result = response.split("|");
		
		if(result[0] == 'false'){
			backColor = '#FFB3C2';
			borderColor = '#555555';
			switch(result[1]){
				case "txtRegEmailConfirm":
					message = '<br /><small>Your emails are blank or did not match</small>';
				break;
				case "txtRegPasswordConfirm":
					message = '<br /><small>Your passwords are blank or did not match</small>';
				break;
			}
			access = true;
			regFail = true;
		}

		document.getElementById(result[1]+'_row').style.backgroundColor = backColor;
		document.getElementById(result[2]+'_row').style.backgroundColor = backColor;
		document.getElementById('regMessages').innerHTML = message;
		document.getElementById('btnSubmit').disabled = access;
	}
}

function verifyEmail(type) {
	var searchVal = document.getElementById(type).value;
	
	http.open('get', '/api/verify.php?t='+type+'&v='+searchVal+'&r='+Date(), true);
	http.onreadystatechange = handleVerifyEmail;
	http.send(null);
}

function handleVerifyEmail() {
	if(http.readyState == 4){
		var response = http.responseText;
		var backColor = '#C2FFB3';
		var borderColor = '#FFFFE5';
		var message = '';
		var access = false;
		regFail = false;
		
		var result = new Array();
		
		result = response.split("|");
		
		if(result[0] == 'false'){
			backColor = '#FFB3C2';
			borderColor = '#555555';
			message = '<br /><small>You have not entered a real email address</small>';
			access = true;
		}
		if(result[0] == 'found'){
			backColor = '#FFB3C2';
                        borderColor = '#555555';
                        message = '<br /><small>The email address you have entered is already in use. You can <a href="/password-reminder.html">retrieve your login details here.</a>';
                        access = true;
		}

		document.getElementById(result[1]+'_row').style.backgroundColor = backColor;
		document.getElementById('regMessages').innerHTML = message;
		document.getElementById('btnSubmit').disabled = access;
	}
}

function swapArchiveId(id) {
	document.forms['frmEdit'].txtID.value = id;
	document.forms['frmDelete'].txtID.value = id;
}

function hideOverlay() {
	document.getElementById('overlay').style.visibility = 'hidden';
	document.getElementById('overlay_content').style.visibility = 'hidden';
	document.getElementById('overlay').style.display = 'none';
	document.getElementById('overlay_content').style.display = 'none';
}

function shadowPopup(src) {
	var overlay = document.getElementById('overlay');
	var src;
	
	if(IE6){
	}else{
		overlay.style.visibility = 'visible';
		overlay.style.display = 'block';
	}
	
	http.open('get', '/api/link.php?t='+src+'&r='+Date(), true);
	http.onreadystatechange = handleLink;
	http.send(null);
}
function closeShadowPopup() {
	var overlay = document.getElementById('overlay');
	var overlay_content = document.getElementById('overlay_content');
	
	if(IE6){
		win.close();
		return false;
   }
	
	overlay.style.visibility = 'hidden';
	overlay.style.innerHTML = '';
	overlay.style.display = 'none';
	
	overlay_content.style.visibility = 'hidden';
	overlay_content.style.innerHTML = '';
	overlay_content.style.display = 'none';
	hideOverlay();
}
function handleLink() {
	if(http.readyState == 4){
		var response = http.responseText;
		
		var temp = response.split("|");
		
		var overlayContent = document.getElementById('overlay_content');
		
		overlayContent.style.left = ((alertSize('width') / 2) - (temp[1] / 2))+"px";
		var height=eval(temp[2]+" + 20");
		var width=temp[1];
		if(height > alertSize('height')){
			height = eval(alertSize('height')+" - 20");
			width = eval(width+" + 20");
		}
		var top = ((alertSize('height') / 2) - (temp[2] / 2));
		if(top < 10){
			top = 10;
		}
		
		if(IE6){
			height = eval(height+" + 40");
			win = window.open("", "Window1", "width="+width+",height="+height+",scrollbars=yes");
		}else{
			overlayContent.style.top = top+"px";
			overlayContent.style.width = width+"px";
			overlayContent.style.height = height+"px";
			overlayContent.style.visibility = 'visible';
			overlayContent.style.display = 'block';
		}
		
		height = eval(height+" - 20");
		
		var content = '<div style="height:20px; width:100%; background:#5f89b5; text-align:center; font-weight:bold; cursor:pointer; color:#ffffff; text-align:right;"><a href="#" onclick="closeShadowPopup(); return false;" style="color:#ffffff;">CLOSE [X]</a>&nbsp;&nbsp;</div><div style="overflow:auto;height:'+height+'px;">'+temp[0]+'</div><div style="height:20px; width:100%; background:#5f89b5; text-align:center; font-weight:bold; cursor:pointer; color:#ffffff; text-align:right;"><a href="#" onclick="closeShadowPopup(); return false;" style="color:#ffffff;">CLOSE [X]</a>&nbsp;&nbsp;</div>';
		
		
		if(IE6){
			win.document.writeln('<html><head><style>html,body{margin:0;width:100%;height:100%;}</style></head><body>'+temp[0]+'</body></html>');
			return false;
		}else{
			overlayContent.innerHTML = content;
		}
	}
}
function alertSize(type) {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  
  if(type == "height"){
	  return myHeight;
  }else{
	  return myWidth;
  }
}

function checkRegForm(form) {
	var empty = 0;

	switch(form) {
		case "frmRegisterStepOne":
			if(document.forms[form].txtRegUsername.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].txtRegPassword.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].txtRegPasswordConfirm.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].txtRegEmail.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].txtRegEmailConfirm.value.length < 1){showRegAlert();return false;}
			if(regFail == true){showRegAlert();return false;}
			if(document.forms[form].txtRegFirstName.value.length < 1){showRegAlert();return false;}
                        if(document.forms[form].txtRegLastName.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].chkTerms.checked != 1){showRegAlert();return false;}
			if(document.forms[form].chkAge.checked != 1){showRegAlert();return false;}
                        if(document.forms[form].txtRegCode.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].selRegCounty.value == "null"){showRegAlert();return false}
		break;
		case "frmAddEvent":
			if(document.forms[form].txtTitle.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].txtContact.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].txtDescription.value.length < 1){showRegAlert();return false;}
			if(document.forms[form].chkTerms.checked != 1){showRegAlert();return false;}
			if(document.forms[form].selEndYear.value < document.forms[form].selStartYear.value){showDateAlert(); return false;}
			if((document.forms[form].selEndYear.value == document.forms[form].selStartYear.value) && (document.forms[form].selEndMonth.value < document.forms[form].selStartMonth.value)){showDateAlert(); return false;}
		break;
	}
	
	submitForm(form);
}

function showRegAlert() {
	alert("You must fill in all required fields!\r\n\r\nPlease make sure you have entered all fields correctly and try again");
}

function showDateAlert() {
	alert("Please ensure your end date is AFTER your start date!");
}

function checkEnter(e){
	var characterCode;
	
	if(e && e.which){
		e = e;
		characterCode = e.which;
	}else{
		e = event;
		characterCode = e.keyCode;
	}
	
	if(characterCode == 13){
		return false;
	}else{
		return true;
	}

}
