function detectBrowser()
{
	isMac 	= (navigator.appVersion.indexOf("Mac")!=-1) ? true : false						 ;
	NS4 	= (document.layers) ? true : false												 ;
	IEmac 	= ((document.all)&&(isMac)) ? true : false										 ;
	IE4plus = (document.all) ? true : false													 ;
	IE4 	= ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false ;
	IE5 	= ((document.all)&&(navigator.appVersion.indexOf("MSIE 5.")!=-1)) ? true : false ;
	IE6 	= ((document.all)&&(navigator.appVersion.indexOf("MSIE 6.")!=-1)) ? true : false ;
	ver4 	= (NS4 || IE4plus) ? true : false												 ;
	NS6 	= (!document.layers) && (navigator.userAgent.indexOf('Netscape')!=-1)?true:false ;
		
	IE5plus = IE5 || IE6 ;
	IEMajor = 0			 ;
		
	if (IE4plus)
	{
		var start = navigator.appVersion.indexOf("MSIE");
		var end = navigator.appVersion.indexOf(".",start);
		IEMajor = parseInt(navigator.appVersion.substring(start+5,end));
		IE5plus = (IEMajor>=5) ? true : false;
	}
		
	if ((IE4plus)||(IEmac)||(IE4)||(IE5)||(IE6))
	{return "IE"}
	else if (NS4)
	{return "NS4"}
	else if (NS6)
	{return "NS6"}
}

currentBrowser = detectBrowser() ;

function doBlockRightClick()
{
	alert('To save this file, please use your left mouse button') ;
	return false ;
}

function checkEmailEnquiryForm()
{
    var errormsg = "" ;
    var thisForm = document.emailEnquiryForm ;
    
    if (trimspaces(thisForm.sendTo_fullName.value)=="")
    {errormsg = errormsg + "Please enter your full name.\n" ;}
    
    if (trimspaces(thisForm.sendTo_emailAddress.value)=="")
    {errormsg = errormsg + "Please enter your email address.\n" ;}
    else if (emailCheck(thisForm.sendTo_emailAddress.value) != true)
    {errormsg = emailCheck(thisForm.sendTo_emailAddress.value) ;}
    
    if (trimspaces(thisForm.sendTo_enquiry.value)=="")
    {errormsg = errormsg + "Please enter your enquiry.\n" ;}
    
    if (errormsg != "")
    {
        errormsg = "The following error(s) have occured:-\n\n" + errormsg ;
        alert(errormsg) ;
    }
    else
    {thisForm.submit() ;}
}


function doBodyHeight(strNavigation)
{
	bodyobj = self.document.body.clientHeight;
	document.getElementById("tblNavigation").height = bodyobj - 30;
}

function doRelocate(whichID, numLevels)
{
    switch(numLevels) 
    {  
        case "1":top.location.href = '../home_frame/default.asp?numID=' + whichID;break; 
        case "2":top.location.href = '../../home_frame/default.asp?numID=' + whichID;break; 
    }  
}

function doRelocateUrlAddOn(whichID, numLevels, strUrlAddOn, strMode)
{
	document.frmDoRelocateAddOn.txtDoRelocateAddOn.value = strUrlAddOn;
	
    switch(numLevels) 
    {  
        case "0":
			document.frmDoRelocateAddOn.action = 'home_frame/default.asp?numID=' + whichID + '&strMode=' + strMode;
			break; 
        case "1":
			document.frmDoRelocateAddOn.action = '../home_frame/default.asp?numID=' + whichID + '&strMode=' + strMode;
			break; 
        case "2":
			document.frmDoRelocateAddOn.action = '../../home_frame/default.asp?numID=' + whichID + '&strMode=' + strMode;
			break;
    } 
    
    document.frmDoRelocateAddOn.submit();
}

function toggleClass(thisObj,targetClass)
{
	if (thisObj.className!=undefined)
	{thisObj.className = targetClass ;}
}

function doValidateNews()
{
	document.forms['frmKeywordSearch'].btnSubmit.disabled=true;
	if(document.forms['frmKeywordSearch'].txtKeywordSearch.value.length==0)
	{
		alert('Please ensure a search term is supplied');
		document.forms['frmKeywordSearch'].btnSubmit.disabled=false;
		return false;
	}
	else
	{						
		return true;
	}
}

function checkPrivacys()
{
	thisform = document.forms['frmRegister'] ;
	
	if ((!thisform.chkPrivacy01.checked)&&(!thisform.chkPrivacy02.checked))
	{switchEmails("lock") ;}
	else
	{switchEmails("unlock") ;}
}

function switchEmails(targetswitch)
{
	plainemailobj = document.getElementById("PlainEmailTable")
	htmlemailobj  = document.getElementById("HTMLEmailTable")
    
	if (targetswitch == "lock")
	{
		plainemailobj.className = "highlight_box_off" ;
		plainemailobj.readonly  = true ;
		plainemailobj.disabled  = true ;
							
		htmlemailobj.className = "highlight_box_off" ;
		htmlemailobj.readonly  = true ;
		htmlemailobj.disabled  = true ;
        
        document.frmRegister.emailFormat[0].disabled = true ;
        document.frmRegister.emailFormat[1].disabled = true ;
	}
	else
	{
		if (document.forms['frmRegister'].emailFormat[0].checked)
		{plainemailobj.className = "highlight_box_on" ;}
		plainemailobj.readonly  = false ;
		plainemailobj.disabled  = false ;
        
		if (document.forms['frmRegister'].emailFormat[1].checked)
		{htmlemailobj.className = "highlight_box_on" ;}
		htmlemailobj.readonly  = false ;
		htmlemailobj.disabled  = false ;
        
        document.frmRegister.emailFormat[0].disabled = false ;
        document.frmRegister.emailFormat[1].disabled = false ;
	}
}

function toggleHighlight(targetid,ischecked)
{
	if (ischecked)
	{targetclass = "on" ;}
	else
	{targetclass = "off" ;}
						
	changeClass(targetid,"highlight_box_" + targetclass)
}

function changeClass(targetid,targetclass)
{
	document.getElementById(targetid).className = targetclass ;
}

function doSaveAs(pdftodownload)
{
	//alert(document.getElementById("downloadpdf").src)
	document.getElementById("downloadpdf").src = "../../home_frame/main_content/download_pdf.asp?pdftodownload=" + pdftodownload ;
	//alert(document.getElementById("downloadpdf").src)
}

function doCheckFrames(targetURL,targetNavigationType,activeNavigationID,sitePrefixOut)
{
	if (self.location == top.location)
	{
		if (targetURL==undefined)
		{top.location = "/LafargeCementUK/default.asp" ;}
		else
		{doRelocate(targetURL,targetNavigationType,activeNavigationID,sitePrefixOut) ;}
	}
}

function emailCheck(emailStr)
{
	var email_errMsg_Header = "" ;
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)

	if (matchArray==null) 
	{
		return email_errMsg_Header + "The email address supplied seems to be invalid. (check @ and .'s).\n" ;
	}
												
	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null) 
	{
		return email_errMsg_Header + 'The username in the email address is invalid.\n'
	}
											
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) 
	{
		for (var i=1;i<=4;i++) 
		{
			if (IPArray[i]>255) 
			{
				return email_errMsg_Header + 'The destination IP address is invalid.\n'
			}
		}
		return true
	}

	var domainArray=domain.match(domainPat)

	if (domainArray==null) 
	{
		return email_errMsg_Header + 'The email address supplied includes an invalid domain name.\n'
	}
													
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length

	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) 
	{
		return email_errMsg_Header + 'The email address supplied does not have a correct suffix (.co.uk, .com...).\n'
	}
	if (len<2) 
	{
		return email_errMsg_Header + 'The email address supplied is missing a hostname.\n'
	}

	//If we've gotten this far, everything's valid	
	return true;
}

function trimspaces(thisvalue)
{
    var newvalue = "" ;
    var startpos = 0  ;
    var endpos   = 0  ;
    
    if (thisvalue!="")
    {
        for (startposcounter=0;startposcounter<=thisvalue.length-1;startposcounter++)
        {
            thischar = thisvalue.charAt(startposcounter)
            
            if (thischar!=" ")
            {
                startpos = startposcounter ;
                break ;
            }
        }
        
        for (endposcounter=thisvalue.length-1;endposcounter>=0;endposcounter--)
        {
            thischar = thisvalue.charAt(endposcounter)
            
            if (thischar!=" ")
            {
                endpos = endposcounter + 1 ;
                break ;
            }
        }
        
        newvalue = thisvalue.substring(startpos,endpos) ;
        return newvalue ;
    }
    else
    {return thisvalue ;}
}

//=================================================================================================================================================================================================
//=== BEGIN: POPUP A NEW WINDOW																																									===
//=== ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ===
//=== doPopup(url, windowName, width, height, customparameters)																																	===
//=== pops up a new window with the parsed url loaded																																			===
//===																																															===
//=== example usage:																																											===
//=== doPopup('http://www.adobe.com/products/acrobat/readstep.html','popupAcrobat','600','600','directories=yes,status=yes,resizable=yes,scrollbars=yes,location=1,menubar=yes,left=0,top=0') 	===
//=================================================================================================================================================================================================
	function doPopup(url, windowName, width, height, customparameters)
	{
		//Determine the browser if positioning of pop-up window is supported
		theversion=navigator.appVersion.substring(0,3);
		
		if (navigator.appName == "Netscape" && navigator.appVersion.substring(0,1) == '4')
		{
			X = screenX + myscreen(outerWidth-width)/2;
			myscreenY = screenY + (outerHeight-height)/2;
		}
		else
		{
			//IE & Nav3 don't do positioning, variables just have to exist...
			myscreenX = 0;
			myscreenY = 0;
		}
		
		if (customparameters)
		{
			windowparams = customparameters
		}
		else
		{
			windowparams = "directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no"
		}
		
		//Default window name if not passed to function
		if (!windowName)
		{
			windowName = "popup_window";
		}
		
		var blnPdfPopup = false;
		
		
		wref = window.open (url, windowName, "toolbar=no,width=" + width + ",height=" + height + ",screenX=" + myscreenX + ",screenY=" + myscreenY + "," + windowparams) ;
		
		
		wref.focus();
	}
//=================================================================================================================================================================================================
//=== END: POPUP A NEW WINDOW																																									===
//=================================================================================================================================================================================================


function getLayer(layerId)
{
	if ((currentBrowser == "NS4")||(currentBrowser == "NS6"))
	{
		if (currentBrowser == "NS6")
		{layerobj = document.getElementById(layerId) ;}
		else
		{layerobj = document.layers[layerId] ;}
	}
	else if (currentBrowser == "IE")
	{layerobj = document.getElementById(layerId) ;}
		
	return layerobj ;
}

var toggleLayerCurrentNodeOpen = "" ;

function toggleLayer(layerIDList,useLayerIDAsPrefixForAll,showOrHideLayer,throttleLayersShown,useImageLayer,imageSrcWhenShow,imageSrcWhenHide)
{
	var layerIDArray      	 = "" ;
	var imageLayerIDArray 	 = "" ;
	var targetDisplay     	 = "" ;
	var targetImgSrc		 = "" ;
	var i 			      	 = 0  ;
	var currentLayerObj   	 = "" ;
	var currentImageLayerObj = "" ;
	var numOfChildNodesInDoc = 0  ;
		
	layerIDArray = layerIDList.split(",") ;
		
	if (showOrHideLayer=="show")
	{targetDisplay = "block" ;}
	else if (showOrHideLayer=="hide")
	{targetDisplay = "none" ;}
		
		
	if (useLayerIDAsPrefixForAll)
	{
		numOfChildNodesInDocdocument = document.all.length ;
			
		for (i=0;i<numOfChildNodesInDocdocument;i++)
		{
			currentLayerObj = document.all[i] ;
			
			if (currentLayerObj.id.charAt(layerIDList))
			{
				if (currentLayerObj.id.indexOf("_showHideImg")==-1)
				{
					if (currentLayerObj!=undefined)
					{
						if ((showOrHideLayer=="")||(showOrHideLayer==undefined))
						{
							if (currentLayerObj.style.display=="none")
							{targetDisplay = "block" ;}
							else
							{targetDisplay = "none" ;}
						}
						
						currentLayerObj.style.display = targetDisplay ;
					}
				}
				else
				{
					if ((useImageLayer)&&(imageSrcWhenShow!=undefined)&&(imageSrcWhenHide!=undefined))
					{
						if (currentLayerObj!=undefined)
						{
							if (targetDisplay=="block")
							{targetImgSrc = imageSrcWhenShow ;}
							else
							{targetImgSrc = imageSrcWhenHide ;}
							
							currentLayerObj.src = targetImgSrc ;
						}
					}
				}
			}
		}
	}
	else
	{
		for (i=0;i<layerIDArray.length;i++)
		{
			currentLayerObj = getLayer(layerIDArray[i]) ;
				
			if (currentLayerObj!=undefined)
			{
				if ((showOrHideLayer=="")||(showOrHideLayer==undefined))
				{
					if (currentLayerObj.style.display=="none")
					{targetDisplay = "block" ;}
					else
					{targetDisplay = "none" ;}
				}
					
				currentLayerObj.style.display = targetDisplay ;
					
				if ((targetDisplay=="block")&&(throttleLayersShown))
				{
					if (toggleLayerCurrentNodeOpen!="")
					{
						toggleLayerCurrentNodeOpen.style.display = "none" ;
						
						if ((useImageLayer)&&(imageSrcWhenShow!=undefined)&&(imageSrcWhenHide!=undefined))
						{
							currentImageLayerObj 	 = getLayer(toggleLayerCurrentNodeOpen.id + "_showHideImg") ;
							currentImageLayerObj.src = imageSrcWhenHide ;
						}
					}
						
					toggleLayerCurrentNodeOpen = currentLayerObj ;
				}
				else if ((targetDisplay=="none")&&(throttleLayersShown))
				{
					toggleLayerCurrentNodeOpen = "" ;
				}
			}
				
			if ((useImageLayer)&&(imageSrcWhenShow!=undefined)&&(imageSrcWhenHide!=undefined))
			{
				currentImageLayerObj = getLayer(layerIDArray[i] + "_showHideImg") ;
					
				if (currentImageLayerObj!=undefined)
				{
					if (targetDisplay=="block")
					{targetImgSrc = imageSrcWhenShow ;}
					else
					{targetImgSrc = imageSrcWhenHide ;}
						
					currentImageLayerObj.src = targetImgSrc ;
				}
			}
		}
	}
}


var initialWindowHeight = 50   ;
var initialWindowWidth  = 75   ;
var popupObj            = null ;
var step                = 20    ;

function popupWindow(targetUrl,targetName,targetWidth,targetHeight)
{
    if (popupObj)
    {popupObj.close() ;}
    
    if (!document.all)
    {
        if (!document.layers)
        {
            windowParams = "height=" + targetHeight + ",width=" + targetWidth + ",top=10" + ",left=10,scrollbars=no,location=no" + ",directories=no,status=no,menubar=no,toolbar=no,resizable=no" ;
            popupObj     = window.open(targetUrl,targetName,windowParams) ;
            
            if (popupObj.focus)
            {popupObj.focus() ;}
            
            return ;
        }
        else
        {
            initialLeftPosition = (screen.width) ? (screen.width - targetWidth) / 2 : 100 ;
            initialTopPosition  = (screen.height) ? (screen.height - targetHeight) / 2 : 100 ;
            windowParams        = "height=" + targetHeight + ",width=" + targetWidth + ",top=" + initialTopPosition + ",left=" + initialLeftPosition + ",scrollbars=no,location=no" + ",directories=no,status=no,menubar=no,toolbar=no,resizable=no" ;
            popupObj            = window.open(targetUrl,targetName,windowParams) ;
            loadpos             = targetHeight / 2-40
            
            if (popupObj.focus)
            {popupObj.focus() ;}
            
            return ;
        } 
    } 
    
    initialLeftPosition = (screen.width) ? (screen.width - targetWidth) / 2 : 100 ;
    initialTopPosition  = (screen.height) ? (screen.height - targetHeight) / 2 : 100 ;
    windowParams        = "height=" + initialWindowHeight + ",width=" + initialWindowWidth + ",top=" + initialTopPosition + ",left=" + initialLeftPosition + ",scrollbars=no,location=no" + ",directories=no,status=no,menubar=no,toolbar=no,resizable=no" ;
    popupObj            = window.open(targetUrl,targetName,windowParams) ;
    
    var tempCounter = initialWindowWidth ;
    
    while (tempCounter < targetWidth)
    {
        popupObj.resizeBy (step, step) ;
        tempCounter = tempCounter + step ;
    }
    
    if (popupObj.focus)
    {popupObj.focus() ;}
}

//=============================================================================================================================================
//=== BEGIN: TOGGLE LAYER																													===
//=== ------------------------------------------------------------------------------------------------------------------------------------- ===
//=== Requires: detectBrowser() & getLayer()																								===
//=== ------------------------------------------------------------------------------------------------------------------------------------- ===
//=== toggleLayer(layerIDList,useLayerIDAsPrefixForAll,showOrHideLayer,throttleLayersShown,useImageLayer,imageSrcWhenShow,imageSrcWhenHide) ===
//=== 																																		===
//=== #REQUIRED#																															===
//===   [layerIDList]: Options (---)																										===
//===        - the id of the layer you want to toggle																						===
//===        - a list of all layer ids you want to toggle																					===
//===        - a prefix for all layers you wish to toggle e.g: prefix="myLayer"  layers="myLayer_1,myLayer2"								===
//=== 																																		===
//=== #NON-REQUIRED#																														===
//===   [useLayerIDAsPrefixForAll]: Options (true, false)																					===
//===        - toggles all layers in the page with the prefix of the parsed [layerIDList]													===
//===																																		===
//===	[showOrHideLayer]: Options ("", "show", "hide")																						===
//===        - if [showOrHideLayer] is parsed blank then the layer(s) toggled will inverse it's current display state						===
//===																																		===
//===   [throttleLayersShown]: Options (true, false)																						===
//===        - will only allow one layer to be displayed at a time																			===
//===																																		===
//===   [useImageLayer]: Options (true, false)																								===
//===        - if parsed true then an image layer with an id of "[layerID]_showHideImg"	will switch images according to 					===
//===          the target display state																										===
//===        - REQUIRES [imageSrcWhenShow], [imageSrcWhenHide]  																			===
//===																																		===
//===   [imageSrcWhenShow], [imageSrcWhenHide]: Options (---)																			    ===
//===        - the image files when the display state changes																				===
//=============================================================================================================================================
	var toggleLayerCurrentNodeOpen = "" ;
    
	function toggleLayer(layerIDList,useLayerIDAsPrefixForAll,showOrHideLayer,throttleLayersShown,useImageLayer,imageSrcWhenShow,imageSrcWhenHide)
	{
		var layerIDArray      	 = "" ;
		var imageLayerIDArray 	 = "" ;
		var targetDisplay     	 = "" ;
		var targetImgSrc		 = "" ;
		var currentLayerObj   	 = "" ;
		var currentImageLayerObj = "" ;
		var numOfChildNodesInDoc = 0  ;
		var i 			      	 = 0  ;
		
		//create an Array of the parsed layer id's
		layerIDArray = layerIDList.split(",") ;
		
		//set the target display state (if parsed)
		if (showOrHideLayer=="show")
		{targetDisplay = "block" ;}
		else if (showOrHideLayer=="hide")
		{targetDisplay = "none" ;}
		
		//if the layer id parsed will be used as a prefix for all layers then find all 'prefixed' layers and toggle them (including the image layer if used)
		if (useLayerIDAsPrefixForAll)
		{
			numOfChildNodesInDocdocument = document.all.length ;
			
			//loop through all of the document's child layers
			for (i=0;i<numOfChildNodesInDocdocument;i++)
			{
				currentLayerObj = document.all[i] ;
				
				//if the current layer has a prefix of the parsed id then toggle it (including the image layer if used)
				if (currentLayerObj.id.indexOf(layerIDList)==0)
				{
					//if the current layer IS NOT the image layer then toggle it's display state
					if (currentLayerObj.id.indexOf("_showHideImg")==-1)
					{
						if (currentLayerObj!=undefined)
						{
							if ((showOrHideLayer=="")||(showOrHideLayer==undefined))
							{
								if (currentLayerObj.style.display=="none")
								{targetDisplay = "block" ;}
								else
								{targetDisplay = "none" ;}
							}
							
							currentLayerObj.style.display = targetDisplay ;
						}
					}
					//if the current layer IS the image layer then toggle it's source using the parsed images (if used)
					else
					{
						if ((useImageLayer)&&(imageSrcWhenShow!=undefined)&&(imageSrcWhenHide!=undefined))
						{
							if (currentLayerObj!=undefined)
							{
								if (targetDisplay=="block")
								{targetImgSrc = imageSrcWhenShow ;}
								else
								{targetImgSrc = imageSrcWhenHide ;}
								
								currentLayerObj.src = targetImgSrc ;
							}
						}
					}
				}
			}
		}
		//if the parsed layer id(s) was not used as a prefix then loop through all of the parsed layer ids
		else
		{
			for (i=0;i<layerIDArray.length;i++)
			{
				//user getLayer() to return the layer object depending on what browser is used
				currentLayerObj = getLayer(layerIDArray[i]) ;
				
				if (currentLayerObj!=undefined)
				{
					//set the target display state
					if ((showOrHideLayer=="")||(showOrHideLayer==undefined))
					{
						if (currentLayerObj.style.display=="none")
						{targetDisplay = "block" ;}
						else
						{targetDisplay = "none" ;}
					}
						
					currentLayerObj.style.display = targetDisplay ;
					
					//if only one layer is allowed to be displayed at a time then hide any displayed layers before showing this one
					//(if the target display state of this layer is "show")
					if ((targetDisplay=="block")&&(throttleLayersShown))
					{
						if (toggleLayerCurrentNodeOpen!="")
						{
							toggleLayerCurrentNodeOpen.style.display = "none" ;
							
							if ((useImageLayer)&&(imageSrcWhenShow!=undefined)&&(imageSrcWhenHide!=undefined))
							{
								currentImageLayerObj 	 = getLayer(toggleLayerCurrentNodeOpen.id + "_showHideImg") ;
								currentImageLayerObj.src = imageSrcWhenHide ;
							}
						}
							
						toggleLayerCurrentNodeOpen = currentLayerObj ;
					}
					else if ((targetDisplay=="none")&&(throttleLayersShown))
					{toggleLayerCurrentNodeOpen = "" ;}
				}
					
				//if used, toggle the source of the image layer using the parsed images
				if ((useImageLayer)&&(imageSrcWhenShow!=undefined)&&(imageSrcWhenHide!=undefined))
				{
					currentImageLayerObj = getLayer(layerIDArray[i] + "_showHideImg") ;
						
					if (currentImageLayerObj!=undefined)
					{
						if (targetDisplay=="block")
						{targetImgSrc = imageSrcWhenShow ;}
						else
						{targetImgSrc = imageSrcWhenHide ;}
							
						currentImageLayerObj.src = targetImgSrc ;
					}
				}
			}
		}
	}
//=========================================================================
//=== END: TOGGLE LAYER													===
//=========================================================================

function searchTheSite(searchFor)
{
    searchFor = trimspaces(searchFor)
    
    if (searchFor != "")
    {doRelocateUrlAddOn("32","2","searchTerm=" + searchFor,"") ;}
}
