
//
//Panwebtech JavaScript functions include file
// (C) www.panwebtech.co.uk
//

function fBrowserType()
{
// Returns a number representing the make of browser
//Returns 0 if completely unknown.

//0 - Unknown
//1 - MSIE
//2 - Netscape
//3 - AOL
//4 - Opera
//5 - WebTV

var strBrowser;
var bytBrowser = 0;

strBrowser = navigator.userAgent.toLowerCase();
//Internet Explorer
if((strBrowser.indexOf("msie")!=-1))
        {
        return 1;
        }

//Netscape, pure Netscape, Opera and WebTV "Spoof" it
if((strBrowser.indexOf("mozilla")!=-1)  && (strBrowser.indexOf("compatible") == -1) && (strBrowser.indexOf("spoofer") == -1))
        {
        return 2;
        }
//AOL
if((strBrowser.indexOf("aol")!=-1))
        {
        return 3;
        }
//Opera
if((strBrowser.indexOf("opera")!=-1))
        {
        return 4;
        }
//WebTV
if((strBrowser.indexOf("webtv")!=-1))
        {
        return 5;
        }
return 0;
}

function fBrowserVersion()

{
//Returns the browser version number as a floating point number
//sngVersion is returned as zero if non-numeric.

var sngVersion;
var bytStart;
var bytEnd;

if(fBrowserType()==1)
	{
	sngVersion=navigator.userAgent;
	bytStart=sngVersion.indexOf("MSIE")+5
	bytEnd=sngVersion.indexOf(";",bytStart)
	sngVersion=sngVersion.slice(bytStart,bytEnd);
	}
else
	{
	sngVersion = navigator.appVersion;
	}

if (isNaN(parseInt(sngVersion)))
	{
  sngVersion = 0;
  }
else
	{
	sngVersion=parseFloat(sngVersion);
	}
return sngVersion;
}

function fDayTime()
{
//Simply returns Morning/Afternoon/Evening based on local client time
var dtDate;
var nHours;
var strDayTime = "evening";

dtDate = new Date();
nHours = dtDate.getHours();
if (nHours >= 0 && nHours < 12)
	{
	strDayTime = "morning"
	}
if (nHours >= 12 && nHours < 18)
	{
	strDayTime = "afternoon"
	}
return strDayTime;
}

function fRollover(blnRoll, objThis)
{
var bytIndex;
var strUrl;
if(blnRoll==1)
	{
	objThis.style.color="#222299";window.status="";
	}
else
	{
	objThis.style.color="#666699";window.status="";
	}
}
function fNoPipe(objThis)
{
var intLen=objThis.value.length;
var strString=objThis.value;
var bytReason=0;
var strReason="";
var intChar=0;
var strOutput="";
for(var i=0;i<=intLen;i++)
	{
	intChar=strString.charCodeAt(i);
	if(intChar==124)
		{
		bytReason=1;
		intChar=0;
		}
	if(intChar==38)
		{
		bytReason=3;
		intChar=0;
		}
	if(intChar==34||intChar==39)
		{
		bytReason=2;
		intChar=96;
		}
	if(intChar)
		{
		strOutput+=String.fromCharCode(intChar);
		}
	}
if(bytReason>0)
	{
	switch (bytReason)
		{
		case 1:
			strReason="The pipe character | is not allowed.";
			break;
		case 2:
			strReason="Quotes are not allowed, they will be replaced.";
			break;
		case 3:
			strReason="The ampersand (&) character is not allowed.";
			break;
		}
	alert("Please check the value you just entered.\n\nReason: "+strReason);
	}
objThis.value=strOutput;
if(bytReason>0)
	{
	objThis.focus();
	objThis.select();
	}
return true;
}
function fQueryString(objLocation, strName)
{
//Returns the value for the passed strName (Case insensitive)
var intIndex;
var strQueryLc;
var strQuery;

strQuery=objLocation.search;
strQueryLc=strQuery.toLowerCase();
strName=strName.toLowerCase()+"=";
intIndex=strQueryLc.indexOf(strName);
if(intIndex<0)
	{
	return "";
	}
intIndex=strQueryLc.indexOf("=",intIndex);
intIndex+=1;
strQuery=strQuery.slice(intIndex);
intIndex=strQuery.indexOf("&");
if(intIndex<0)
	{
	return strQuery;
	}
else
	{
	return strQuery.substring(0,strQuery.indexOf("&"));
	}
}
function fQueryStringMinus(blnObj,objLocation,strParm)
{
//Removes strParm from the QS passed if found, blnObj switches location object/text passed
var strQuery
blnObj?strQuery=objLocation.search:strQuery=objLocation;
if(strQuery==""){return strQuery}
strQuery=strQuery.substr(1);
var strBits=strQuery.split("&");
strQuery="";
for(var i=0;i<strBits.length;i++)
	{
	if(strBits[i].indexOf(strParm+"=")<0)
		{
		if(strQuery!=""){strQuery=strQuery+"&"}
		strQuery=strQuery+strBits[i];
		}
	}
strQuery="?"+strQuery;
return strQuery;	
}
function fInputEmailCheck(objThis)
{
var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
var intLen=objThis.value.length;
var strString=objThis.value;
var bytReason=0;
var strReason="";
var intChar=0;
var strOutput="";
if(intLen==0)
	{
	return true;
	}
for(var i=0;i<intLen;i++)
	{
	intChar=strString.charCodeAt(i);
	if((intChar>48 && intChar<58)||(intChar>63 && intChar<91)||(intChar>96 && intChar<123)||(intChar>44 && intChar<47))
		{
		//unused
		}
	else
		{
		bytReason=1;
		intChar=0;
		}
	if(intChar)
		{
		strOutput+=String.fromCharCode(intChar);
		}
	}
if(!reg1.test(strOutput) && reg2.test(strOutput)) 
	{
	//unused
	}
else
	{
	bytReason=2;
	}
if(bytReason>0)
	{
	switch (bytReason)
		{
		case 1:
			strReason="One or more illegal characters have been replaced.";
			break;
		case 2:
			strReason="Not a valid email address fromat";
			break;
		}
	alert("Please check the email address you just entered.\n\nReason: "+strReason);
	}
objThis.value=strOutput;
if(bytReason>0)
	{
	objThis.focus();
	objThis.select();
	}
return true;
}
function fInputNumberCheck(objThis,blnFloat,blnNeg,blnSpace)
{
var intLen=objThis.value.length;
var strString=objThis.value;
var intChar;
var strOutput="";
var bytReason=0;
var strReason;
var blnGotNeg=false;
var blnGotFloat=false;
if(intLen==0)
	{
	return true;
	}
for(var i=0;i<=intLen;i++)
	{
	intChar=strString.charCodeAt(i);
	intNext=strString.charCodeAt(i+1);
	if(intChar==46)
		{
		if(blnFloat)
			{
			if(i==0||((i+1)==intLen)||blnGotFloat||(intNext==46))
				{
				intChar=0;
				bytReason=1;
				}
			blnGotFloat=true;
			}
		else
			{
			intChar=0;
			bytReason=2;
			}
		}
	if(intChar==45)
		{
		if(blnNeg)
			{
			if((i!=0)||blnGotNeg||(intNext==45))
				{
				intChar=0;
				bytReason=3;
				}
			blnGotNeg=true;
			}
		else
			{
			intChar=0;
			bytReason=4;
			}
		}
	if(!blnFloat&&!blnNeg&&((intChar<48)||(intChar>57)))
		{
		if(intChar==32)
			{
			if(!blnSpace)
				{
				intChar=0;
				bytReason=5;
				}
			}
		else
			{
			intChar=0;
			bytReason=6;
			}
		}
	if(intChar)
		{
		strOutput+=String.fromCharCode(intChar);
		}
	}
if(bytReason>0)
	{
	switch (bytReason)
		{
		case 1:
			strReason="Decimal point out of position or duplicated.";
			break;
		case 2:
			strReason="Decimal point is not allowed.";
			break;
		case 3:
			strReason="Minus sign out of position or duplicated.";
			break;
		case 4:
			strReason="Negative values are not allowed.";
			break;
		case 5:
			strReason="The space character is not allowed.";
			break;
		case 6:
			strReason="Non-numeric character found.";
			break;
		}
	alert("Please check the value you just entered.\n\nReason: "+strReason);
	}
objThis.value=strOutput;
if(bytReason>0)
	{
	objThis.focus();
	objThis.select();
	}
return true;
}
function fDayTime()
{
//Simply returns Morning/Afternoon/Evening based on local client time

var dtDate;
var nHours;
var strDayTime = "evening";

dtDate = new Date();
nHours = dtDate.getHours();

if (nHours >= 0 && nHours < 12){strDayTime = "morning"}
if (nHours >= 12 && nHours < 18){strDayTime = "afternoon"}

return strDayTime;

}

function fResize(intX, intY, objWindow)
{
//Resize the browser window to the passed parameters
var intCurrX;
var intCurrY;

objWindow.resizeTo(intX,intY);
if(self.innerWidth)
	{
	intCurrX=objWindow.self.innerWidth;
	intCurrY=objWindow.self.innerHeight;
	}
else
	{
	intCurrX=objWindow.document.body.clientWidth;
	intCurrY=objWindow.document.body.clientHeight;
	}
//Calculate sizing error based on amount of "Chrome"
intX=intX+(intX-intCurrX);
intY=intY+(intY-intCurrY);
//Resize correctly
objWindow.resizeTo(intX,intY);
return true;	
}

function fCentre(objWindow)
{
//Centre the browser
var intWidth=objWindow.self.screen.availWidth;
var intHeight=objWindow.self.screen.availHeight;
var intBWidth;
var intBHeight;
if(self.outerWidth)
	{
	intBWidth=objWindow.self.outerWidth;
	intBHeight=objWindow.self.outerHeight;
	}
else
	{
	intBWidth=objWindow.document.body.clientWidth;
	intBHeight=objWindow.document.body.clientHeight;
	}
objWindow.moveTo((intWidth-intBWidth)/2,(intHeight-intBHeight)/2);
return false;
}

function fToProper(strString)
{
//Return the passed string with all first leters capitalised
//only works on space delimited strings
var strSentence=new Array;
var i;
var bytChar;

strString=strString.toLowerCase();
strSentence=strString.split(" ");
for(i=0;i<strSentence.length;i++)
	{
	bytChar=strSentence[i].charCodeAt(0);
	if((bytChar>96)&&(bytChar<123))
		{
		bytChar-=32;
		strSentence[i]=String.fromCharCode(bytChar)+strSentence[i].substr(1,(strSentence[i].length)-1);
		}
	}
return strSentence.join(" ");
}

function fAlphaNumOnly(strString)
{
//Return the passed string stripped of all symbols and any double spaces
var i;
var bytChar;
var blnSpace=false;
var strNewString="";
strString=strString.toLowerCase();
for(i=0;i<strString.length;i++)
	{
	bytChar=strString.charCodeAt(i);
	if(bytChar!=32)
		{
		blnSpace=false;
		}
	if(((bytChar==32)&&(blnSpace==false))||(bytChar!=32))
		{
		if((bytChar==32)||((bytChar>47)&&(bytChar<58))||((bytChar>96)&&(bytChar<123)))
			{
			if(bytChar==32)
				{
				blnSpace=true;
				}
			strNewString=strNewString+String.fromCharCode(bytChar);
			}
		else
			{
			blnSpace=true;
			}
		}
	}
var strSentence=strNewString.split(" ");
strNewString="";
for(i=0;i<strSentence.length;i++)
	{
	if(strSentence[i]!==" ")
		{
		strNewString=strNewString+strSentence[i];
		}
	if((i+1)<strNewString.length)
		{
		strNewString=strNewString+" ";
		}
	}
return strNewString;
}

function fCreateBookmark() 
{
if ((navigator.appVersion.indexOf("MSIE") > 0)&&(parseInt(navigator.appVersion)>= 4))
  { 
  window.external.AddFavorite("http:/www.teacherslittlehelper.co.uk","Teachers Little Helper");
  }
else
  {
  alert('Sorry, your browser does not\nsupport automatic bookmarking.\n \n' + 
  'For Netscape Navigator, press Ctrl-D\n(or Command-D on the Mac).');
  location.href = location.href;
  }
}
function fFormatCurrency(intVal)
{
//Returns a string for display as a currency value i.e 12.70 or 0.01 or 0.10
var strVal=intVal+"";
var intOffset=strVal.indexOf(".");
var strDecimal="0";
var strNumber;
if(intOffset>-1)
	{
	strDecimal=strVal.slice(intOffset+1,strVal.length);
	strNumber=strVal.slice(0,intOffset)
	switch(strDecimal.length)
		{
		case 1:
			strDecimal+="0";
			break;
		case 2:
			break;
		default:
			strDecimal=strDecimal.slice(0,2)+"."+strDecimal.slice(2,strDecimal.length-2);
			strDecimal=parseFloat(strDecimal);
			strDecimal=Math.ceil(strDecimal);
			strDecimal+="";
			if(strDecimal.length==1)
				{
				strDecimal="0"+strDecimal;
				}
		}
	}
else
	{
	strNumber=intVal+"";
	strDecimal="00"
	}
return strNumber+"."+strDecimal;
}

function fGetTarget(bytTab, strHref)
{
var strPage;
var strAdditional="";
var strUrl;
switch(bytTab)
	{
	case 1 :
		strPage="saleshistory";
		break;
	case 2 :
		strPage="productcreate";
		strAdditional="mode=1";
		break;
	case 3 :
		strPage="productedit";
		strAdditional="mode=1";
		break;
	case 4 :
		strPage="productdelete";
		strAdditional="mode=1";
		break;
	}
strUrl=strPage+".asp?"+strAdditional;
return strUrl;
}