	
	function MoreDetails(nID)
	{
		$(nID).className = $(nID).className.replace('Hidden','');
	}

	function LessDetails(nID)
	{
		$(nID).className = $(nID).className.replace('','Hidden');
	}
	
	function ShowJobFull(nID)
	{
		if($("Full"+nID).style.display == 'none')
		{
			$("Part"+nID).style.display = '';
			$("Full"+nID).style.display = '';
			$("Link"+nID).innerHTML = "(less)";
			$("Dot"+nID).innerHTML = "";
		}
		else
		{
			$("Part"+nID).style.display = '';
			$("Full"+nID).style.display = 'none';
			$("Link"+nID).innerHTML = '(more)';
			$("Dot"+nID).innerHTML = "...";
		}
	}
	
	function ValidateRegister(eElement, boBasket)
	{
		if(boBasket)var strBasket="Basket";else var strBasket="";
		if(eElement.checked == true)
		{
			$("PasswordContainer"+strBasket).style.display = 'block';
		}
		else
		{
			$("PasswordContainer"+strBasket).style.display = 'none';
		}
	}
	
	function SetCookies()
	{
		var oParam = {"postback":"Apply"};
		if($("Name") != null)		oParam.Name 		= $F("Name");
		if($("Email") != null)		oParam.Email 		= $F("Email");
		if($("Number") != null)		oParam.Number 		= $F("Number");
		if($("VacancyID") != null)	oParam.VacancyID 	= $F("VacancyID");
		if($("Register") != null)	
		{
			oParam.Register 	= $("Register").checked;
			if($("Register").checked == true && $("Password"))oParam.Password = $F("Password");
		}
		
		new Ajax.Request("AjaxCookies.php",
		{
			onComplete: function(oReturn)
			{
				if(oReturn.responseText != '')
				{
					alert(oReturn.responseText);
				}
				$("Form1").submit();
			},
			parameters:oParam
		});
	}

	function SetCookiesBasket()
	{
		var oParam 									= {"postback":"Apply", "Basket":true, "Ajax":true};
		if($("NameBasket"))oParam.Name 				= $F("NameBasket");
		if($("EmailBasket"))oParam.Email 			= $F("EmailBasket");
		if($("NumberBasket"))oParam.Number 			= $F("NumberBasket");
		if($("VacancyIDBasket"))oParam.VacancyID 	= $F("VacancyIDBasket");
		if($("PasswordBasket"))oParam.Password 		= $F("PasswordBasket");
		if($("RegisterBasket"))oParam.Register 		= $F("RegisterBasket");

		new Ajax.Request("AjaxCookies.php",
		{
			onComplete: function(oReturn)
			{
				if(oReturn.responseText != '')
				{
					alert(oReturn.responseText);
				}
				
				/** Show Quick Apply GUI  (without page refresh) **/
				var arDivs = $("BasketAction").getElementsByTagName("div");
				var eDiv = '';
				ApplyToBasket();
				
				$("BasketAction").style.display = 'none';
				$("BasketEmpty").style.display = '';
				$("BasketButton").disabled = true;
				
//				while(arDivs.length > 0)
//				{
//					eDiv = arDivs[0];
////					console.log("Length "+arDivs.length);
//					JS_Utils_GetParent(eDiv).removeChild(eDiv);
//					$("Register").checked = false;
//					$("BasketButton").disabled = true;
//				}
				
			},
			parameters:oParam
		});
	}

	function AjaxClearCookies()
	{
		var strLink = 'AjaxClearCookies';
		if(window.location.href.search("Login") > -1)strLink = '../'+strLink;
		new Ajax.Request(strLink+".php",
		{
			onComplete: function(oReturn)
			{
				if(oReturn.responseText != '')
				{
					alert(oReturn.responseText);
				}
				location.replace("");
//				$("Form1").submit();
			}
		});
	}
	
	function ValidateApplicationBasket()
	{
		/** Using custom validation to allow for register toggling and email/number potential exclusivity **/
		
		var boValid 	= true;
//		console.log("Start");		
		
		/** References **/
		var eEmail				= $('EmailBasket');
		var eNumber				= $('NumberBasket');
		var eName				= $('NameBasket');
		var eState				= $('StateBasket');
		var ePassword			= $('PasswordBasket');
		var eRegister			= $('RegisterBasket');
		
		var eEmailAlert			= $('EmailAlertBasket');
		var eNumberAlert		= $('NumberAlertBasket');
		var eNameAlert			= $('NameAlertBasket');
		var ePasswordAlert		= $('PasswordAlertBasket');
		
		/** Prep **/
		var strEmail			= "";
		var strNumber			= "";
		var strName				= "";
		var strState			= "";

		if(eNameAlert != null) 		{eNameAlert.style.display		= 'none';	eNameAlert.className		= "ValidationError  "; eNameAlert.innerHTML 		= 'Please enter your name';}
		if(eEmailAlert != null) 	{eEmailAlert.style.display		= 'none'; 	eEmailAlert.className		= "ValidationError  "; eEmailAlert.innerHTML 		= 'Please enter your email address or..';}
		if(eNumberAlert != null) 	{eNumberAlert.style.display		= 'none'; 	eNumberAlert.className		= "ValidationError  "; eNumberAlert.innerHTML 		= '..enter your contact number';}
		if(ePasswordAlert != null) 	{ePasswordAlert.style.display	= 'none'; 	ePasswordAlert.className	= "ValidationError  "; ePasswordAlert.innerHTML 	= 'Please choose a password';}
				
		if(eEmail != null) 		strEmail	= $F('EmailBasket');
		if(eNumber != null) 	strNumber	= $F('NumberBasket');
		if(eName != null) 		strName		= $F('NameBasket');
		if(eState != null) 		strState	= $F('StateBasket');
		if(ePassword != null) 	strPassword	= $F('PasswordBasket');
		if(eRegister != null) 	strRegister	= $F('RegisterBasket');
		
		if(strName == '' && eNameAlert != null)
		{
			/** Need name **/
			boValid = false;
			eNameAlert.style.display 	= "";;
		}
		
		if(eRegister != null)
		{
			if(eRegister.checked == true && ((strEmail.search(/[\w-]+@([\w-]+\.)+[\w-]+/) == -1 || strEmail == '')))
			{
				/** Email for registering doesn't validate - Only use on pages WITH emails, duh **/
				boValid 					= false;
				eEmail.style.display 		= "";
				eEmailAlert.style.display 	= "";
				eEmailAlert.innerHTML 		= "Email seems to be incorrect format (required for account creation)";
			}
		
			if(eRegister.checked == true && strPassword.length < 6)
			{
				/** Password not long enough **/
				boValid 					= false;
				ePasswordAlert.style.display 	= "";
				ePasswordAlert.innerHTML 	= "Password needs to be longer (6 or more characters please)";
			}
		}
		
		if(strNumber == '' && strEmail == '' && eNumberAlert != null && eEmailAlert != null )
		{
			/** Need at least one of these **/
			boValid = false;
			eNumberAlert.style.display 	= "";
			eEmailAlert.style.display 	= "";
		}
		else
		{
			if(strNumber != '' && strNumber.length < 6  && eNumberAlert != null)
			{
				/** Number not long enough **/
				boValid 						= false;
				eNumberAlert.style.display 		= "";
				eNumberAlert.innerHTML 			= "Number needs to be longer";
			}
			
			if(strEmail != '' && strEmail.search(/[\w-]+@([\w-]+\.)+[\w-]+/) == -1  && eEmailAlert != null)
			{
				/** Email doesn't validate **/
				boValid 					= false;
				eEmail.style.display 		= "";
				eEmailAlert.style.display 	= "";
				eEmailAlert.innerHTML 		= "Email seems to be incorrect format";
			}
		}
//		console.log("Validation result -> "+boValid);		
		return boValid;
	}
	
	function ValidateApplication()
	{
		/** Using custom validation to allow for register toggling and email/number potential exclusivity **/
//		console.log("Validation (normal) start");
		var boValid 	= true;
		
		/** References **/
		var eEmail				= $('Email');
		var eNumber				= $('Number');
		var eName				= $('Name');
		var ePassword			= $('Password');
		var eRegister			= $('Register');
		var eState				= $('State');
		var eUploadFile			= $('UploadFile');
		
		var eEmailAlert			= $('EmailAlert');
		var eNumberAlert		= $('NumberAlert');
		var eNameAlert			= $('NameAlert');
		var ePasswordAlert		= $('PasswordAlert');
		var eRegisterAlert		= $('RegisterAlert');
		var eUploadFileAlert	= $('UploadFileAlert');
		
		/** Prep **/
		var strEmail			= "";
		var strNumber			= "";
		var strName				= "";
		var strPassword			= "";
		var strRegister			= "";
		var strState			= "";

		/*
		if(eNameAlert != null) 		{eNameAlert.style.display		= 'none';	eNameAlert.className		= "ValidationError  "; eNameAlert.innerHTML 		= 'Please enter your name';}
		if(eEmailAlert != null) 	{eEmailAlert.style.display		= 'none'; 	eEmailAlert.className		= "ValidationError  "; eEmailAlert.innerHTML 		= 'Please enter your email address or..';}
		if(eNumberAlert != null) 	{eNumberAlert.style.display		= 'none'; 	eNumberAlert.className		= "ValidationError  "; eNumberAlert.innerHTML 		= '..enter your contact number';}
		if(ePasswordAlert != null) 	{ePasswordAlert.style.display	= 'none'; 	ePasswordAlert.className	= "ValidationError  "; ePasswordAlert.innerHTML 	= 'Please choose a password';}
		*/
		
		//alert ( eEmailAlert.style.display );
		
		if(eNameAlert != null) 		{eNameAlert.style.display		= "none"; eNameAlert.className		= "ValidationError "; eNameAlert.innerHTML 		= 'Please enter a name';}
		if(eEmailAlert != null) 	{eEmailAlert.style.display		= "none"; eEmailAlert.className		= "ValidationError "; eEmailAlert.innerHTML 		= 'Please enter an email address or..';}
		if(eNumberAlert != null) 	{eNumberAlert.style.display		= "none"; eNumberAlert.className		= "ValidationError "; eNumberAlert.innerHTML 	= '..enter a contact number';}
		if(ePasswordAlert != null) 	{ePasswordAlert.style.display	= "none"; ePasswordAlert.className		= "ValidationError "; ePasswordAlert.innerHTML 	= 'Please enter a password';}
		if(eUploadFileAlert != null){eUploadFileAlert.style.display	= "none"; eUploadFileAlert.className		= "ValidationError "; eUploadFileAlert.innerHTML = 'Please only submit .doc, .rtf and .txt files';}
		
		if(eEmail != null) 		strEmail	= $F('Email');
		if(eNumber != null) 	strNumber	= $F('Number');
		if(eName != null) 		strName		= $F('Name');
		if(ePassword != null) 	strPassword	= $F('Password');
		if(eRegister != null) 	strRegister	= $F('Register');
		if(eState != null) 		strState	= $F('State');

		
		/** Doc type protection **/
		
		if(eUploadFile.files && eUploadFile.files.length > 0)
		{
			if
			(
				eUploadFile.files[0].fileName.search(/\.rtf$/i) == -1 &&
				eUploadFile.files[0].fileName.search(/\.doc$/i) == -1 &&
				eUploadFile.files[0].fileName.search(/\.txt$/i) == -1
			)
			{
				boValid = false;
				//eUploadFileAlert.className 		= eUploadFileAlert.className.replace("Hidden", "");
				eNameAlert.style.display		= "block";
			}
		}
		
		if(eRegister != null && eRegister.checked == true)
		{
			if(eRegister.checked == true && strPassword == '')
			{
				/** Empty password **/
				boValid 					= false;
				//ePasswordAlert.className 	= ePasswordAlert.className.replace("Hidden", "");
				ePasswordAlert.style.display		= "block";
			}
			
			if(eRegister.checked == true && strPassword.length < 6)
			{
				/** Password not long enough **/
				boValid 					= false;
				//ePasswordAlert.className 	= ePasswordAlert.className.replace("Hidden", "");
				ePasswordAlert.innerHTML 	= "Password needs to be longer (6 or more characters please)";
				ePasswordAlert.style.display		= "block";
			}
			
			if(eEmail != null)
			{
				/** If we're requesting an email **/
				if(strEmail.search(/[\w-]+@([\w-]+\.)+[\w-]+/) == -1 || strEmail == '')
				{
					/** Email for registering doesn't validate - Only use on pages WITH emails, duh **/
					boValid 					= false;
					eEmail.style.display 		= "block";
					//eEmailAlert.className 		= eEmailAlert.className.replace("Hidden", "");
					eEmailAlert.innerHTML 		= "Email seems to be incorrect format (required for account creation)";
				}
			}
		}

		/** ! Clean this up ! **/
		if(strState == "Full Entry")
		{
			/** In FullEntry mode **/
			if(strName == '')
			{
				/** Need name **/
				boValid = false;
				eNameAlert.className 		= eNameAlert.className.replace("Hidden", "");
				eNameAlert.style.display		= "block";
			}
			
			if(eRegister.checked == true && (strEmail.search(/[\w-]+@([\w-]+\.)+[\w-]+/) == -1 || strEmail == ''))
			{
				/** Email for registering doesn't validate - Only use on pages WITH emails, duh **/
				boValid 					= false;
				//eEmail.style.display 		= "";
				//eEmailAlert.className 		= eEmailAlert.className.replace("Hidden", "");
				eEmailAlert.innerHTML 		= "Email seems to be incorrect format (required for account creation)";
				eEmailAlert.style.display		= "block";
			}
			
			if(strNumber == '' && strEmail == '')
			{
				/** Need at least one of these **/
				boValid = false;
				//eNumberAlert.className 		= eNumberAlert.className.replace("Hidden", "");
				//eEmailAlert.className 		= eEmailAlert.className.replace("Hidden", "");
				eNumberAlert.style.display		= "block";
				eEmailAlert.style.display		= "block";
			}
			else
			{
				if(strNumber != '' && strNumber.length < 6)
				{
					/** Number not long enough **/
					boValid 					= false;
					//eNumber.style.display 		= "";
					//eNumberAlert.className 		= eNumber.className.replace("Hidden", "");
					eNumberAlert.innerHTML 		= "Number needs to be longer";
					eNumberAlert.style.display		= "block";
				}
				
				if(strEmail != '' && strEmail.search(/[\w-]+@([\w-]+\.)+[\w-]+/) == -1)
				{
					/** Email doesn't validate **/
					boValid 					= false;
					//eEmail.style.display 		= "";
					//eEmailAlert.className 	= eEmailAlert.className.replace("Hidden", "");
					eEmailAlert.innerHTML 		= "Email seems to be incorrect format";
					eEmailAlert.style.display	= "block";
				}
			}
		}
		
//		console.log("Validation (normal) result: "+boValid);
		return boValid;
	}
	
	function DOMRemoveFromBasket(nVID, strReference)
	{
//		console.log("DOM Remove Start");
		var eBasketItem = $("LI"+strReference+nVID);
		if(eBasketItem != 'null' && eBasketItem != undefined)
		{
			JS_Utils_GetParent(eBasketItem).removeChild(eBasketItem);
		}
		
		var eSearchDiv = $("SB"+strReference+nVID)
		if(eSearchDiv != 'null' && eSearchDiv != undefined)
		{
			var eSearchLink = eSearchDiv.getElementsByTagName("a")[0];
			/** Set search results basket button **/
			eSearchLink.innerHTML  	= "Add job to Basket";
			eSearchLink.onclick 	= function(){AjaxAddToBasket(nVID, strReference, this)};
			eSearchDiv.className = "Icon BasketAdd";
		}
		
		var arRemainingBasket = $("BasketPanel").getElementsByTagName("li");
		
		if(arRemainingBasket.length == 0)
		{
			/** Empty Basket, kill button**/
			$("BasketButton").disabled = true;
			$("BasketAction").style.display = 'none';
			$("BasketEmpty").style.display = '';
			$("BasketCountBar").style.display = 'none';
		}
		else
		{
			if($("BasketCount")!= null)$("BasketCount").innerHTML = CountBasketCookie();
			$("JobGrammar").innerHTML = (CountBasketCookie() != 1)?'jobs':'job';
		}
	}
	
	function DOMAddToBasket (nVID, strRef, strTitle)
	{
		//console.log("DOM Add Start");
		
		/** Make elements **/
		var	eTarget			= $("BasketPanel").getElementsByTagName("ul")[0];
		var eNewLI 			= document.createElement("li");
		var eNewSpan1		= document.createElement("span");
		var eNewSpan2		= document.createElement("span");
		var eNewSpan3		= document.createElement("span");
		var eNewLink		= document.createElement("a");
		var eRemoveLink		= document.createElement("a");
		var eNewRef			= document.createElement("input");
		var eNewID			= document.createElement("input");
		var strID			= strRef+''+nVID;
		
		/** Characterise **/
		eNewLI.id			= 'LI'+strID;
		//eNewLI.title		= strTitle+' - '+strRef;
		
		eNewSpan1.className	= 'Text ';
		eNewSpan2.className	= 'Icon';
		
		eNewSpan3.innerHTML	= 'Remove';
		
		eRemoveLink.id			= 'Img'+strID;
		eRemoveLink.className	= 'BasketRemove';
		eRemoveLink.title		= 'Remove this job from your basket';
		eRemoveLink.href		= 'javascript:';
		eRemoveLink.onclick		= function(){AjaxRemoveFromBasket(nVID, strRef, this)};
		
		eNewRef.id			= 'VID'+strID;
		eNewRef.type		= 'hidden';
		eNewRef.value		= nVID;

		eNewID.id			= 'Ref'+strID;
		eNewID.type			= 'hidden';
		eNewID.value		= strRef;
		
		eNewLink.href		= 'VacancyApply.php?id='+nVID;
		eNewLink.innerHTML	= strTitle;
		eNewLink.title	= strTitle;
		
		
		/** Attach **/
		eTarget.appendChild(eNewLI);
		eNewLI.appendChild(eNewSpan1);
		eNewSpan1.appendChild(eNewLink);
		eNewLI.appendChild(eNewSpan2);
		eNewSpan2.appendChild(eRemoveLink);
		eRemoveLink.appendChild(eNewSpan3);
		eNewLI.appendChild(eNewRef);
		eNewLI.appendChild(eNewID);
		
		/** Make sure button is enabled **/
		$("BasketButton").disabled = false;
		$("BasketCount").innerHTML = CountBasketCookie();
		$("JobGrammar").innerHTML = (CountBasketCookie() != 1)?'jobs':'job';
		$("BasketAction").style.display = '';
		$("BasketEmpty").style.display = 'none';
		$("BasketCountBar").style.display = '';
		
		var eSearchDiv = $("SB"+strID)
		if(eSearchDiv != 'null' && eSearchDiv != undefined)
		{
			/** Set search results basket button **/
			var eSearchLink 		= eSearchDiv.getElementsByTagName("a")[0];
			eSearchLink.innerHTML  	= "Remove job from Basket";
			eSearchLink.onclick 	= function(){AjaxRemoveFromBasket(nVID, strRef, this)};
			eSearchDiv.className	= "Icon BasketRemove";
		}
	}
		
	function AjaxAddToBasket(nID, strRef, eCaller)
	{
		//console.log("AjaxAddToBasket w/ "+nID+", "+strRef+", "+eCaller+"");
		new Ajax.Request("AjaxAddToBasket.php",
		{
			method: 'post',
			onComplete:function(oRes)
			{
//				console.log("AjaxAddToBasket onComplete");
				eCaller.className = "Icon BasketRemove"; // swap icon
				eCaller.innerHTML = "Remove job from basket"; // change text
				
				//eCaller.value="Remove from Basket";
				eCaller.onclick = function(){AjaxRemoveFromBasket(nID, strRef, eCaller)};
				//console.log("Pre DOM");
				//console.log("eCaller.title = "+eCaller.title);
				DOMAddToBasket(nID, strRef, eCaller.title);
				//console.log("Post DOM");
				/****************************/
				/** Add to basket DOM here **/
				/****************************/
			},
			parameters:
			{
				"VacancyID":nID,
				"JobRef":strRef
			}
		});
	}

	function AjaxRemoveFromBasket(nID, strRef, eCaller)
	{
//		console.log("AjaxRemoveFromBasket("+nID+", "+strRef+", "+eCaller+")");
		new Ajax.Request("AjaxRemoveFromBasket.php",
		{
			method: 'post',
			onComplete:function(oRes)
			{
//				console.log("AjaxRemoveFromBasket onComplete");
				JS_Utils_GetParent(eCaller).className = "Icon BasketAdd";  // swap icon
				eCaller.innerHTML = "Add job to basket"; // change text
				
				//eCaller.value="Add to Basket";
				eCaller.onclick = function(){AjaxAddToBasket(nID, strRef, eCaller)};
				DOMRemoveFromBasket(nID, strRef);
			},
			parameters:
			{
				"VacancyID":nID,
				"JobRef":strRef
			}
		});
	}

	function AjaxMarkCandidate(nAlertID, nBranchID)
	{
		JS_Utils_ShowModal();
		if(nBranchID <= 0)
		{
			alert("No Branch Selected!");
			JS_Utils_HideModal();
		}
		else
		{
			new Ajax.Request("AjaxMarkCandidate.php",
			{
				onComplete:function(oRes)
				{
					if(oRes.responseText != "")
					{
						var oData = oRes.responseText.evalJSON();
						if(oData.HTML != null)$("SpeculativeContainer").innerHTML = oData.HTML;
					}
					JS_Utils_HideModal();
				},
				parameters:{"Mode":"Mark","AlertID":nAlertID, "BranchID": nBranchID}
			});
		}
	}

	function AjaxSendCandidate(nAlertID, nBranchID)
	{
		JS_Utils_ShowModal();
		if(nBranchID <= 0)
		{
			alert("No Branch Selected!");
			JS_Utils_HideModal();
		}
		else
		{
			new Ajax.Request("AjaxMarkCandidate.php",
			{
				onComplete:function(oRes)
				{
					if(oRes.responseText != "")
					{
						var oData = oRes.responseText.evalJSON();
						if(oData.HTML != null)$("SpeculativeContainer").innerHTML = oData.HTML;
					}
					JS_Utils_HideModal();
				},
				parameters:{"Mode":"Send","AlertID":nAlertID, "BranchID": nBranchID}
			});
		}
	}

	function ApplyToBasket()
	{
		var arIDs = GetBasketCookies();
		
		for(var i=0; i<arIDs.length; i++)
		{
			strValue = arIDs[i];
			
			/** Trim **/
			strValue = strValue.replace(/ /g,"");
//			console.log("Applying to ["+strValue+"] from "+arIDs.length);		

			/** Check it's not been applied to from basket already **/
			if($("Img"+$('Ref'+strValue).value+$('VID'+strValue).value).className != "BasketConfirm")
			{
				AjaxApplyToBasket($('VID'+strValue).value, $('Ref'+strValue).value);
			}
		}
	}
	
	function AjaxApplyToBasket(nVID, strReference)
	{
		/** Called for each basket item individually to allow for detailed status **/
		new Ajax.Request("AjaxApplyToBasket.php",
		{
			method: 'post',
			onComplete:function(oResult)
			{
				/** Remove from basket DOM **/
//				console.log("Done?");
				if($("Img"+strReference+nVID) != null)	
				{
					$("Img"+strReference+nVID).innerHTML = "<img src=\"Images/Icons/Mini/IsOK.gif\" />";
					$("Img"+strReference+nVID).href = "javascript:";
					$("Img"+strReference+nVID).title = "Successfully applied for";
				}
				if($("BasketAction") != null)			$("BasketAction").style.display = 'none';
				if($("BasketEmpty") != null)			$("BasketEmpty").style.display = 'none';
			},
			parameters:
			{
				"VacancyID":nVID,
				"JobRef":strReference
			}
		});		
	}
	
	function AjaxGetFiles(strName, strRef)
	{
		// Check required elements //
		if($("CVName") != null && $("CVDiv") != null)
		{
			new Ajax.Request("AjaxGetFiles.php",
			{
				onComplete:function(oRes)
				{
					var oData = oRes.responseText.evalJSON();
					$("CVName").innerHTML = "CVs for "+strName;
					$("CVDiv").innerHTML = oData.HTML;
					$("CVInfo").style.display = 'none';
				},
				parameters:{"UserRef":strRef}
				
			});
		}
		else alert("Missing elements [CVName: "+$("CVName")+"| CVDiv: "+$("CVDiv")+"]");
	}
	
	function AjaxContactApplicant(nAppID)
	{
		if(nAppID != null)
		{
			new Ajax.Request("AjaxContactApplicant.php",
			{
				onComplete:function(oRes)
				{
					$("CVName").innerHTML = "";
					$("CVDiv").innerHTML = "";
					$("CVInfo").style.display = '';
					
					var eClickRow 	= $("VacApp"+nAppID);
					var ePrevRow 	= $("VacApp"+nAppID).previousSiblings()[0];
					var eNextRow 	= $("VacApp"+nAppID).nextSiblings()[0];
					
					if(ePrevRow.id == '' && eNextRow.id == '')
					{
//						alert("Kill head ID = "+ePrevRow.id);
						// Next and last elements are both headers, so we want to remove the last header too (as it's empty) //
						JS_Utils_GetParent(ePrevRow).removeChild(ePrevRow);
					}
					JS_Utils_GetParent(eClickRow).removeChild(eClickRow);
				},
				parameters:{"AppID":nAppID}
			});
		}
	}
	
	function AjaxLogout(strRoot)
	{
//		alert(strRoot+"Login/AjaxLogout.php");
		new Ajax.Request(strRoot+"Login/AjaxLogout.php",
		{
			onComplete:function(oRes)
			{
				location.reload(true);
			}
		});
	}

	function AjaxAttachUser(nUserID, nRoleID)
	{
		JS_Utils_ShowModal();
		new Ajax.Request("AjaxAttachUser.php",
		{
			onComplete:function(oRes)
			{
				if(oRes.responseText != '')alert(oRes.responseText)
				location.reload(true);
			},
			parameters:
			{
				"RoleID":nRoleID, 
				"UserID":nUserID
			}
		});
	}
	
	function GetBasketCookies()
	{
		arTargetCookies = new Array();
		
		/** Got cookies **/
		if (document.cookie.length > 0)
	    {
	        var arCookies = document.cookie.split(";");
	        if ( arCookies.length > 0 )
	        {
	            for (var nIndex in arCookies ) 
	            {
					if(nIndex > -1)
					{
						if(eval("arCookies["+nIndex+"]").search(/JobAppStafforceBasket/i) > -1)
						{
							/** Strip out gubbins, leaving just the ID for the LI (Reference + ID) **/
							var strDetails = arCookies[nIndex].replace(/(\[|\]|(JobAppStafforceBasket)|\=)/gi, "")
							arTargetCookies.push(strDetails);
						}
					}
	            }
	        }
        }               
        return arTargetCookies;
	}

	function SendCandidateAlert()
	{
		$("TalkFieldset").style.display = 'none';
		//$("TalkIntro").style.display = 'none';
		$("TalkOutput").innerHTML = "<div class=\"AjaxLoaderSmall\"></div>Just saving your details..";
		
		new Ajax.Request("AjaxSendCandidateAlert.php",
		{
			onComplete:function(oRes) 
			{
				if(oRes.responseText.search(/Success/gi) > -1)
				{
					/** PHP say yes **/
					$("TalkOutput").innerHTML = "<div class=\"AjaxFinished\"></div><div class=\"Success\">We'll get back to you as soon as possible, thanks.</div>";
				}
				else
				{
					/** PHP didn't say yes **/
					//$("TalkIntro").style.display = '';
					$("TalkFieldset").style.display = '';
					$("TalkOutput").innerHTML = "<div class=\"AjaxFailed\"></div><span class=\"Bad\">"+oRes.responseText+"</span>";
				}
			},
			onFailure:function(oRes)
			{
				/** PHP didn't say yes **/
				$("TalkIntro").style.display = '';
				$("TalkFieldset").style.display = '';
				$("TalkOutput").innerHTML = "<div class=\"AjaxFailed\"></div><span class=\"Bad\">"+oRes.responseText+"</span>";
			},
			parameters:
			{
				"Name":$F("TalkName"),
				"Number":$F("TalkNumber"),
				"Email":$F("TalkEmail"),
				"Location":$F("TalkLocation"),
				"WorkType":$F("TalkWorkType")
			}
		});
	}

	function ShowTab(nID, eCaller)
	{
		var eTarget = $("SearchResults");
		var eTab = $("Tab"+nID);
		if(eTab == JS_Utils_GetParent(eCaller) && nID == nSelectedSector)
		{
			/** Pressed selected tab, treat as toggling back to default**/
			nID = -1;
			eTab = $("Tab"+nID);
		}

		nSelectedSector = nID;
		
		var arLIs = $("CategoryTabList").getElementsByTagName("LI");
		
		for(var i=0; i<arLIs.length; i++)
		{
			var eElement = arLIs[i];
			eElement.className = '';
		}
		if(eTab != null){eTab.className = 'Selected';}
		
		//$("CategoryDefaultInfo").style.display = 'none';
		eTarget.innerHTML = "<div class=\"AjaxLoader\"><span>Searching</span></div>";
	
		
		var oParams = {"CategoryID":nID};
		if($("MinPay") != null)			oParams.MinPay 			= $F("MinPay");
		if($("CountyID") != null)		oParams.CountyID 		= $F("CountyID");
		if($("VacancyTypeID") != null)	oParams.VacancyTypeID 	= $F("VacancyTypeID");
		
		new Ajax.Request("AjaxCategoryFetchTab.php",
		{
			parameters:oParams,
			onComplete:function(oRes)
			{
				
				if(nSelectedSector == nID)
				{
					if(oRes.responseText.search(/AjaxFail/gi) > -1)
					{
						/** Problem **/
						//$("CategoryDefaultInfo").style.display = '';
						var oData = oRes.responseText.evalJSON();
						eTarget.innerHTML 					= "<div class=\"AjaxFailed\"></div><span class=\"Bad\">"+oRes.responseText+"</span>";
						$("RSSLink").innerHTML 				= oData.RSSLink;
					}
					else
					{
						/** Assume goodness **/
						var oData = oRes.responseText.evalJSON();
						//alert(oData.RSSLink)
						 
						if(oData.ImagePath != null && oData.ImagePath != '')
						{
							JS_API_BannerLoadFile(oData.ImagePath);
						}
						
						eTarget.innerHTML = "</div>"+oData.HTML;
						$("CategoryJobCount").innerHTML 	= oData.Count;
						$("ResultsJobCount").innerHTML 		= oData.Count;
						$("BottomBarAdvLink").innerHTML 	= oData.AdvLink;
						$("RSSLink").innerHTML 				= oData.RSSLink;
						// if category selected
						if ( nID > 0 )
						{
						 	$("CategoryIntro").style.display 	= "none";
							$("ResultsIntro").style.display 	= "block";
						}
						else
						{
							$("CategoryIntro").style.display 	= "block";
							$("ResultsIntro").style.display	 	= "none";
						}
					}
				}
			}
		});
	}
	
	function SelectJobType(nTypeID, eCaller)
	{
		/** Clear values **/
		if(eCaller != false)
		{
			if($("PayPerHourInput") != null)$("PayPerHourInput").getElementsByTagName("input")[0].value = '';
			if($("PayPerHourInput") != null)$("PayPerAnnumInput").getElementsByTagName("input")[0].value = '';
		}
	
		/** Unhide relevent, hide irrelevent **/
		switch(nTypeID)
		{
			case "101": /** Perm **/
				if($("PayPerAnnumInput")!=null)$("PayPerAnnumInput").style.display = '';
				if($("PayPerHourInput")!=null)$("PayPerHourInput").style.display = 'none'; 
			break;
			
			case "102": /** Temp **/
			case "103": /** Contract **/
				if($("PayPerAnnumInput")!=null)$("PayPerAnnumInput").style.display = 'none'; 
				if($("PayPerHourInput")!=null)$("PayPerHourInput").style.display = '';
			break;
			
			case "104": /** T-to-P **/
				if($("PayPerAnnumInput")!=null)$("PayPerAnnumInput").style.display = '';
				if($("PayPerHourInput")!=null)$("PayPerHourInput").style.display = '';
			break;

			default:
				if($("PayPerAnnumInput")!=null)$("PayPerAnnumInput").style.display = 'none';
				if($("PayPerHourInput")!=null)$("PayPerHourInput").style.display = 'none';
			break;
		}
	}
	
	function DurationFilterChange(nTypeID)
	{
		/** Unhide relevent, hide irrelevent **/
		switch(nTypeID)
		{
			case "101": /** Perm **/
			case "104": /** T-to-P **/
				$("FilterPayPerHour").style.display='none';				
				$("FilterPayPerAnnum").style.display='';				
			break;
			
			case "102": /** Temp **/
			case "103": /** Contract **/
				$("FilterPayPerHour").style.display='';				
				$("FilterPayPerAnnum").style.display='none';				
			break;

			default:
				$("FilterPayPerHour").style.display='';				
				$("FilterPayPerAnnum").style.display='';				
			break;
		}		
	}
	
	function CountBasketCookie() 
	{
		var nCount = 0;
		var arCookies = document.cookie.split(';');
		for(var i=0;i < arCookies.length;i++) 
		{
			var strCookie = arCookies[i];
			while (strCookie.charAt(0)==' ') strCookie = strCookie.substring(1,strCookie.length);
			if (strCookie.indexOf("JobAppStafforceBasket") == 0) nCount++;
		}
		return nCount;
	}
	
	function TalkPanelClear(eCaller)
	{
		$('TalkName').value 	= '';
		$('TalkNumber').value 	= '';
		$('TalkEmail').value 	= '';
		$('TalkWorkType').value = '';
		$('TalkLocation').value = '';
		
		var arSpans = $('TalkPanel').getElementsByTagName('div');
		
		for(var i=0; i<arSpans.length; i++)
		{
			if(arSpans[i].className.search("ValidationError") > -1)
			{
			 	arSpans[i].style.display = 'none';
			}
		}
		$('TalkBackButton').click();
		
	}
	
	function AdvSearchWithFilters()
	{
		var strQueryString = '';
		if($("MinPay") != null && $F("MinPay") != '')
		{				
			if($F("MinPay") >= 300)
			{
				strQueryString 	+= "PayPerAnnum="+$F("MinPay");
			}
			else
			{
				strQueryString 	+= "PayPerHour="+$F("MinPay");
			}
		}
		if(strQueryString != '') strQueryString 					+= "&";
		if($("CountyID") != null && $F("CountyID") != '')			strQueryString 	+= "CountyID="+$F("CountyID");
		if(strQueryString != '') strQueryString 					+= "&";
		if($("VacancyTypeID") != null && $F("VacancyTypeID") != '')	strQueryString 	+= "VacancyTypeID="+$F("VacancyTypeID");
		if(strQueryString != '') strQueryString 					+= "&";
		if(nSelectedSector != null && nSelectedSector != '')		strQueryString 	+= "SectorCategoryID="+nSelectedSector;
		
		//location.replace("jobsearch.php?"+strQueryString);
		
		window.open("jobsearch.php?"+strQueryString, "_self"); // use window.open to register in browser history and allow back button to work
		
	}
	
	
	