/* <![CDATA[ */

/*
Function Reference:
	BrowserType()
	OpenWindow()
	OpenWindowSimpleSmall(url)
	HideErrors()
	SelectMenu(s)
	addtoFav()
	makeIEHome(thisObj)
	RedirectVer4()
	HideLayersNS(menuName)
	MultipleSelect(form1,form2)
	setCookieGeneric(name, value, expire) 
	getCookieGeneric(Name)
	setActiveStyleSheet(title)
	LaunchLiveEditWindow(URL)
	fnToggleTable(id)
	addEvent(obj, evType, fn, useCapture)
	newFreeCaptcha()
	ShowImageOnLayer(holderId,itemId,imageURL)
	HideImageOnLayer(holderId)
	TextAreaLimit()
	TextAreaCount(visCnt)
	ShowContentThroughLayerAndIFrame(contentURL, layerId)
	RF_AjaxMessageHandlerCallback(data)
	RF_AjaxUtilityHideMessages()
	RF_ShowModalPopupViaClient(pleaseWaitText)
	RF_HideModalPopupViaClient()
	RF_ShowDropLists()
	RF_HideDropLists()
	RF_CheckGenericPhoneNumber(phNum)
	RF_RedirectToLink(url)
*/

//New Browser Detection
var sAgent = navigator.userAgent.toLowerCase();
var isIE = 0;
var isGecko = 0;
var isNetscape = 0;
isIE = sAgent.indexOf("msie") != -1;
isGecko = !this.isIE;
isNetscape = sAgent.indexOf("netscape") != -1;

//Old Browser Detection
BrowserType();
var theirBrowser = new BrowserType();
var gotlayers = 0;

function BrowserType() { // usage: var bT = new BrowserType(); if (bT.ie4) ...
	var ua = navigator.userAgent;
        var iMSIE = ua.indexOf("MSIE");
        if (iMSIE != -1) {
        	this.ie = true;
                var version = parseInt(ua.charAt(iMSIE + 5),10);
                (version == 2) ? this.ie2 = true : this.ie2 = false;
                (version == 3) ? this.ie3 = true : this.ie3 = false;
                (version == 4) ? this.ie4 = true : this.ie4 = false;
                (version == 5) ? this.ie5 = true : this.ie5 = false;
                (version >= 6) ? this.ie6 = true : this.ie6 = false;
	} else {
        	this.ie = false;
                this.ie2 = false;
                this.ie3 = false;
                this.ie4 = false;
                this.ie5 = false;
                this.ie6 = false;
	}
	if (navigator.appName == "Netscape") {
        	this.ns = true;
                var version = parseInt(navigator.appVersion,10);
                (version == 2) ? this.ns2 = true : this.ns2 = false;
                (version == 3) ? this.ns3 = true : this.ns3 = false;
                (version == 4) ? this.ns4 = true : this.ns4 = false;
                (version == 5) ? this.ns5 = true : this.ns5 = false;
                (version >= 6) ? this.ns6 = true : this.ns6 = false;
   	} else {
   		this.ns = false;
                this.ns2 = false;
                this.ns3 = false;
                this.ns4 = false;
                this.ns5 = false;
                this.ns6 = false;
     	}

        (this.ie4||this.ie5||this.ie6) ? this.ie4plus = true : this.ie4plus = false;
        (this.ns4||this.ns5||this.ns6) ? this.ns4plus = true : this.ns4plus = false;
        (this.ie5||this.ie6) ? this.ie5plus = true : this.ie5plus = false;
        (this.ns5||this.ns6) ? this.ns6plus = true : this.ns6plus = false;
        (this.ie6) ? this.ie6plus = true : this.ie6plus = false;
        (ua.indexOf("Mozilla") != -1 && ua.indexOf("compatible") == -1) ? this.nav = true : this.nav = false;
        (ua.indexOf("Windows NT 5") != -1 || ua.indexOf("Windows NT 6") != -1) ? this.win2K = true : this.win2K = false;
        (ua.indexOf("Windows 95") != -1 ||
        	ua.indexOf("Windows 95") != -1 || ua.indexOf("Win95")!= -1 || ua.indexOf("Win98") != -1 ||
         	ua.indexOf("Windows 98") != -1 || ua.indexOf("Windows NT") != -1) ? this.win32 = true : this.win32 = false;
        (ua.indexOf("Win16") != -1) ? this.win16 = true : this.win16 = false;
       	(ua.indexOf("Mac") != -1) ? this.mac = true : this.mac = false;
        (ua.indexOf("SunOS") != -1 || ua.indexOf("HP-UX") != -1 || ua.indexOf("X11") != -1) ? this.unix = true : this.unix =
                false;
        (ua.indexOf("Windows CE") != -1) ? this.winCE = true : this.winCE = false;
}

//Redirect to Frames Page if Using Netscape 4+
function RedirectVer4()
{
	if(theirBrowser.ns4 || theirBrowser.ie4)
	{
		if(top==self)
		{
			var strURL = unescape(window.location.pathname)
			var strDOMAIN = unescape(window.location.host)
			
			top.location.href="http://" + strDOMAIN + "/home/frames.php?page=" + strURL
		}
	}
}

//Hide Layers in Netscape4.7
function HideLayersNS(menuName)
{
	if(theirBrowser.ns4)
	{
		document.layers[menuName].visibility = "hide";
	}
}

//Open New Window
function OpenWindow(url,name,scroll,tool,dir,menu,resize,status,loc,width,height)
{
	newwindow=open(url,name,"scrollbars=" + scroll + ",toolbar=" + tool + ",directories=" + dir + ",menubar=" + menu + ",resizable=" + resize + ",status=" + status + ",location=" + loc + ",width=" + width + ",height=" + height);
	newwindow.focus();
}

//Open New Window Small with just URL
function OpenWindowSimpleSmall(url)
{
	newWin = window.open(url,"imageViewer","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=320,height=240");
}

//Open New Window Medium with just URL
function OpenWindowSimpleMedium(url)
{
	newWin = window.open(url,"imageViewer","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=640,height=480");
}

//Open New Window Large with just URL
function OpenWindowSimpleLarge(url)
{
	newWin = window.open(url,"imageViewer","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=800,height=600");
}


//Redirect to Frames
if(theirBrowser.ns4 || theirBrowser.ie4)
{
	
	//window.onload=RedirectVer4();
}

//Fix for Unorder List on Right Hand Menu
if(theirBrowser.ie5 || (theirBrowser.mac && isGecko == 0))
{
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide UL {margin-left: 16px;}</style>");
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide OL {margin-left: 16px;}</style>");
}
else if(theirBrowser.ie4)
{
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide UL {margin-left: 16px;}</style>");
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide OL {margin-left: 16px;}</style>");
}
else if(theirBrowser.ns5)
{
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide UL {margin-left: -26px;}</style>");
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide OL {margin-left: -26px;}</style>");
}
else if(theirBrowser.ie6)
{
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide UL {margin-left: 16px;}</style>");
	document.write ("<style type=\"text/css\" media=\"screen\">.NavSide OL {margin-left: 16px;}</style>");
}

//Hide Javascript Errors
function HideErrors()
{
	return true;
}

window.onerror = HideErrors;

//Select Navigation
function SelectMenu(s)
{
var url = s.options[s.selectedIndex].value;
if(s.selectedIndex > 0)
	{
	  self.location.href = url;
	}
}

//ADD TO FAVOURITES
function addToFavorite(favTitle){
  if ((navigator.appVersion.indexOf("MSIE") > 0) && (parseInt(navigator.appVersion) >= 4)) {
    window.external.AddFavorite(location.href, unescape(favTitle));
  }
}

function addToFav(url_in,title_in) {

if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {

var url=url_in;
var title=title_in;

window.external.AddFavorite(url,title);
}
else {
var msg = "Don't forget to bookmark us!";
if(navigator.appName == "Netscape") msg += "  (CTRL-D)";
document.write(msg);
}

}

function makeIEHome(thisObj,url_in) {

	msg = "Homepage" & navigator.appName & navigator.appVersion;
if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {

	thisObj.setHomePage=(url_in);
	event.returnValue = false;
} else {
var msg = "Don't forget to make us your Homepage!";
if(navigator.appName == "Netscape") msg += "  (CTRL-D)";
document.write(msg);
}
}

//Get Values from Multiple Selects
/*INPUTS
- form1 = Name Select Element
- form2 - Name of Input Element to Store Array
*/
function MultipleSelect(form1,form2)
{
	num =  form1.length;
	selstr = 0;
	for (i = 0; i < num; i++)
	{
		if(form1.options[i].selected == true)
		{
			selstr = selstr + "," + form1.options[i].value;

		}
	}
	strlength = selstr.length;
	finalstr = selstr.substring(2,strlength);
	form2.value = finalstr;
}

//Cookie Functions
//Set Cookie to Expire at end of browser session
function setCookieGeneric(name, value, expire) 
{   
	document.cookie = name + "=" + escape(value) + ";path=/" + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()))
}

function getCookieGeneric(Name) 
{
  var search = Name + "=";
  var empty_string = "";
  if (document.cookie.length > 0) 
  { 
  	// if there are any cookies     
  	offset = document.cookie.indexOf(search)       
  	if (offset != -1) 
  	{ // if cookie exists          
  		offset += search.length          
  		// set index of beginning of value         
  		end = document.cookie.indexOf(";", offset)          
  		// set index of end of cookie value         
  		if (end == -1)             
  		end = document.cookie.length         
  		return unescape(document.cookie.substring(offset, end))      
  	}
  	else
  	{
  		return empty_string
  	}  
  }
}

//Stylesheet Switching Function
function setActiveStyleSheet(title)
{
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

//Toggle Tables on and off
function fnToggleTable(id)
{		
	var rows = document.getElementsByName("subcat_" + id);
			
	for(var i = 0; i < rows.length; i++)
	{
		rows[i].style.display = rows[i].style.display == 'none' ? 'block' : 'none'; 
	}		
	
	var re = /productmodel_data_arrowdown.gif$/i;
	var img = document.getElementById("img_" + id);		
	img.src = re.test(img.src) ? '/images/icons/productmodel_data_arrowright.gif' : '/images/icons/productmodel_data_arrowdown.gif';
}

//Toggle Tables on and off
function fnToggleElement(id)
{		
	var el = document.getElementById(id);
	
	if(el.style.display == 'none')
	{
		el.style.display = 'block';		
	}
	else
	{
		el.style.display = 'none';		
	}
}

// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko
// By Scott Andrew
function addEvent(obj, evType, fn, useCapture) {
  if (obj.addEventListener) {
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent) {
    var r = obj.attachEvent('on' + evType, fn);
    return r;
  } else {
    obj['on' + evType] = fn;
  }
}

function ascendDOM(e, target)
{
  while (e.nodeName.toLowerCase() != target.toLowerCase() && e.nodeName.toLowerCase() != 'html')
    e = e.parentNode;
  
  return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

//Captcha Script
function newFreeCaptcha()
{
	// loads new freeCap image
	if(document.getElementById)
	{
		// extract image name from image source (i.e. cut off ?randomness)
		thesrc = document.getElementById("freecap").src;
		thesrc = thesrc.substring(0,thesrc.lastIndexOf(".")+4);
		// add ?(random) to prevent browser/isp caching
		document.getElementById("freecap").src = thesrc+"?"+Math.round(Math.random()*100000);
	} else {
		alert("Sorry, cannot autoreload freeCap image\nSubmit the form and a new freeCap will be loaded");
	}
}

//Print the Date
function PrintDate()
{
	var months=new Array(13);
	months[1]="Jan";
	months[2]="Feb";
	months[3]="Mar";
	months[4]="Apr";
	months[5]="May";
	months[6]="Jun";
	months[7]="Jul";
	months[8]="Aug";
	months[9]="Sep";
	months[10]="Oct";
	months[11]="Nov";
	months[12]="Dec";
	var daysofweek=new Array(7);
	daysofweek[0]="Sunday";
	daysofweek[1]="Monday";
	daysofweek[2]="Tuesday";
	daysofweek[3]="Wednesday";
	daysofweek[4]="Thursday";
	daysofweek[5]="Friday";
	daysofweek[6]="Saturday";
	
	 
	var time=new Date();
	var lmonth=months[time.getMonth() + 1];
	var day=daysofweek[time.getDay()];
	var date=time.getDate();
	var year=time.getYear();
	var hour=time.getHours();
	var minute=time.getMinutes();
	 
	if(minute < 10)
	{
	minute = "0" + minute;
	}
	 
	if ((navigator.appName == "Microsoft Internet Explorer") && (year < 2000)) 
		year="19" + year;
	if (navigator.appName == "Netscape") year=1900 + year;
	
	document.write(day + ", " + date + "  " + lmonth + " " + year);	
}

//Show Image on layer
function ShowImageOnLayer(holderId,itemId,imageURL)
{
	if(document.getElementById(holderId) && document.getElementById(itemId))
	{
		var holderEl = document.getElementById(holderId);
		var itemId = document.getElementById(holderId);
		
		var allImages = itemId.getElementsByTagName("img");
		
		if(allImages.length == 0)
		{
			var newImage = new Image();
			newImage.src = imageURL;
			newImage.setAttribute("align","center");
			newImage.setAttribute("valign","middle");
			newImage.setAttribute("hspace","0");
			newImage.setAttribute("vspace","0");
			newImage.setAttribute("border","0");
			
			var opacity = 100;
			newImage.style.opacity = (opacity / 100); 
    			newImage.style.MozOpacity = (opacity / 100); 
    			newImage.style.KhtmlOpacity = (opacity / 100); 
    			newImage.style.filter = "alpha(opacity=" + opacity + ")";
			
			itemId.appendChild(newImage);
		}
		else
		{
			var imgEl = allImages[0];
			imgEl.src = imageURL;
		}
		
		//Show the Holding Layer
		holderEl.style.display = '';
	}	
}

function HideImageOnLayer(holderId)
{
	if(document.getElementById(holderId))
	{
		var holderEl = document.getElementById(holderId);
		holderEl.style.display = 'none';
	}
}

function TextAreaLimit()
{
	var taObj=event.srcElement;
	if (taObj.value.length==taObj.maxLength*1) return false;
}

function TextAreaCount(visCnt)
{ 
	var taObj=event.srcElement;
	if (taObj.value.length>taObj.maxLength*1)
		taObj.value=taObj.value.substring(0,taObj.maxLength*1);
	if (visCnt)
		visCnt.innerText=taObj.maxLength-taObj.value.length;
}

function ManageRightClick(e)
{
	TerminateEvent(e);
	return false;	
}

function TerminateEvent(e)
{
	if ( e.stopPropagation != undefined )
		e.stopPropagation();
	else if ( e.cancelBubble != undefined )
	{
		e.cancelBubble = true;
	}
	if ( e.preventDefault != undefined )
		e.preventDefault();
	else
		e.returnValue = false;
		
	return false;
}

function ShowContentThroughLayerAndIFrame(iFrameName,contentURL,layerId)
{
	if(document.getElementsByTagName('body').length > 0)
	{
		//dom = document.getElementById(layerId);
		//state = dom.style.visibility;
		bodyEl = document.getElementsByTagName('body')[0];
		domId = "div" + iFrameName;
		//domId = "divProductReviewLayerDraggable";
		
		var dom = null;
		if(document.getElementById(domId))
		{
			dom=document.getElementById(domId);
			dom.style.visibility = "visible";
			dom.style.display='block';
			//iframe = document.getElementById(iFrameName);
			//iframe.setAttribute("src", location);
			//iframe.innerHTML = "";
			//iframe.document.location.reload(true);
		}
		else
		{
			dom=document.createElement('div');
			dom.id=domId;
			dom.className="ProductReviewLayerDraggable";
			bodyEl.appendChild(dom);
		
			//Insert the close button
			dom.innerHTML+='move';
			//dom.innerHTML+='<img class=\"PopupMoveButtonDraggable\" src=\"/images/icons/icon_move.gif\" align=\"left\" vspace=\"0\" hspace=\"0\" border=\"0\" />';
			
			dom.innerHTML+='<div class=\"PopupCloseButton\">';
			//dom.innerHTML+='<button class=\"PopupCloseButton\" onclick="CloseIFrameLayer(this.parentNode)">Close</button>';
			dom.innerHTML+='<img class=\"PopupCloseButton\" src=\"/images/icons/icon_close.gif\" align=\"right\" vspace=\"0\" hspace=\"0\" border=\"0\" onclick="CloseIFrameLayer(this.parentNode)" />';
			dom.innerHTML+='</div>';
			
			//Holder Div
			iframeHolder=document.createElement('div');
			iframeHolder.id="IFrameHolder_"+iFrameName;
			dom.appendChild(iframeHolder);
			
			//Built the IFrame
			var iFrame = CreateIFrame(iFrameName,iFrameName,contentURL);
			iframeHolder.appendChild(iFrame);
			
			//Show Layer
			dom.style.display='block';
			dom.style.visibility = "visible";
			dom.style.left = "100px";
			dom.style.top = "100px";
			
			//Add Drag Event			
			addEvent(document, 'mousedown', DragHandler, false);
		}
	}
}

function CloseIFrameLayer(el)
{
	el.innerHTML='';
	el.style.display='none';
	el.style.visibility = "hidden";
}


function CreateIFrame(id,name,location)
{
	var iframe;
	if(document.getElementById(id))
	{
		iframe=document.getElementById(id);
	}
	else
	{
		iframe=document.createElement('iframe');
		iframe.id=id;
		iframe.name=name;
		//iframe.src=location;
		//iframe.href=location;
		iframe.setAttribute("width", 640);
		iframe.setAttribute("height", 480);
		iframe.setAttribute("border", 0);
		iframe.setAttribute("src", location);
	}	
	return iframe;
}

var savedTarget=null;
var orgCursor=null;
var dragOK=false;
var dragXoffset=0;
var dragYoffset=0;   

function MoveHandler(e)
{
	var el;
	if (window.event && window.event.srcElement)
		el = window.event.srcElement;
	if (e && e.target)
		el = e.target;
	if (!el)
		return;
	
	if (e == null)
	{
		e = window.event
	}
	
	if (e.button<=1 && dragOK)
	{
		savedTarget.style.left=e.clientX-dragXoffset+'px';
		savedTarget.style.top=e.clientY-dragYoffset+'px';
		return false;
	}
}
function CleanupDrag(e)
{
	var el;
	if (window.event && window.event.srcElement)
		el = window.event.srcElement;
	if (e && e.target)
		el = e.target;
	if (!el)
		return;
		
	document.onmousemove=null;
	document.onmouseup=null;
	savedTarget.style.cursor=orgCursor;
	dragOK=false;
}
function DragHandler(e)
{
	var htype='-moz-grabbing';
	var el;
	if (window.event && window.event.srcElement)
		el = window.event.srcElement;
	if (e && e.target)
		el = e.target;
	if (!el)
		return;
		
	if (e == null)
	{
		e = window.event;
		htype='move';
	}
	
	orgCursor=el.style.cursor;
	if(el.className.indexOf("Draggable") != -1)
	{
		if(el.tagName != "div")
		{
			el = ascendDOM(el,"div");
		}
		savedTarget=el;
		el.style.cursor=htype;
		dragOK=true;
		if(el.style.left != "")
		{
			dragXoffset=e.clientX-parseInt(el.style.left);		
		}
		else
		{
			dragXoffset=e.clientX;		
		}
		if(el.style.top != "")
		{
			dragYoffset=e.clientY-parseInt(el.style.top);
		}
		else
		{
			dragYoffset=e.clientY;
		}
		addEvent(document, 'mousemove', MoveHandler, false);
		addEvent(document, 'mouseup', CleanupDrag, false);	
		return false;
	}
}

//Generic Handle Call Back from AJAX Calls
function RF_AjaxMessageHandlerCallback(data)
{
	//Set the Message	
	RF_ShowModalPopupViaClient(data);
	
	//Hide the Message Window
	setTimeout(function(){RF_AjaxUtilityHideMessages();}, 5000);
}

//Hide Messages
function RF_AjaxUtilityHideMessages()
{
	//Hide the Message Window
	RF_HideModalPopupViaClient();
}

function RF_ShowModalPopupViaClient(pleaseWaitText)
{
  var txtPleaseWaitObj = null;
  if(document.getElementById('RF_PleaseWaitPanel'))
  {
  	txtPleaseWaitObj = document.getElementById('RF_PleaseWaitPanel'); 
  }
  else
  {
  	var bodyEl = document.getElementsByTagName('body')[0];
	//Create the Holder Div
	var dom1=document.createElement('div');
	dom1.id="RF_ContentMessagePanel";
	dom1.className="modalDisablePopup";
	dom1.style.width = '600px';
	dom1.style.height = '100px'; 
	dom1.style.visibility = 'hidden';
	bodyEl.appendChild(dom1);
	
	//Create the Inner HTML
	var table1=document.createElement('table');
	table1.style.height = '100%';
	table1.style.width = '100%';
	var tbody1=document.createElement('tbody');
	var tr1=document.createElement('tr');
	var td1=document.createElement('td');
	td1.setAttribute("align","center");
	td1.setAttribute("valign","middle");
	var span1=document.createElement('span');
	span1.id="RF_PleaseWaitPanel";
	span1.className="modalText";
		
	td1.appendChild(span1);
	tr1.appendChild(td1);
	tbody1.appendChild(tr1);
	table1.appendChild(tbody1);
	dom1.appendChild(table1);
	
	//Create the Dimmer Div
	var dom2=document.createElement('div');
	dom2.id="RF_DimmerPanel";
	dom2.className="modalBackground";
	dom2.style.visibility = 'hidden';
	dom2.style.position = 'absolute';
	bodyEl.appendChild(dom2);
	
	//Get the Please Wait Panel
	txtPleaseWaitObj = document.getElementById('RF_PleaseWaitPanel');
  }
  
  layerShow = false;
  if(txtPleaseWaitObj != null)
  {
  	txtPleaseWaitObj.innerHTML = pleaseWaitText;
  		
	var elem = document.getElementById('RF_DimmerPanel'); 
	if(elem != null)
	{ 
		addEvent(elem,'mousemove', RF_HideDropLists, false);
		elem.style.visibility  = 'visible'; 
		elem.style.width=window.screen.width +'px';
		elem.style.height=window.screen.height +'px';
		elem.style.left=document.body.scrollLeft;
		elem.style.top=document.body.scrollTop; 
	}
	
	var elem2 = document.getElementById('RF_ContentMessagePanel'); 
	
	if(elem2 != null)
	{
		elem2.style.visibility  = 'visible';
		var xPos = ((window.screen.width-parseInt(elem2.style.width))/2); 
		elem2.style.left=document.body.scrollLeft + xPos+'px';
		var yPos = ((window.screen.height-parseInt(elem2.style.height))/2); 
		elem2.style.top=document.body.scrollTop + yPos+'px';		
		layerShow = true;
	}
   }
   
   if(layerShow == false)
   {
   	//Simple Alert
   	alert(data);
   }
}

function RF_HideModalPopupViaClient()
{
  var elem = document.getElementById('RF_DimmerPanel');          
  if(elem != null)
  { 
        elem.style.visibility  = 'hidden';                 
  }

  var elem2 = document.getElementById('RF_ContentMessagePanel');      
  if(elem2 != null)
  {
        elem2.style.visibility  = 'hidden';                
  }
  
  //Show Drop Lists
  RF_ShowDropLists();
}

function RF_ShowDropLists()
{            
    var elementsToToggle = (document.getElementsByTagName) ? document.getElementsByTagName('select') : document.all.tags('select');
    
    for(var j=0; j<elementsToToggle.length; j++)
    {
        var theElement = elementsToToggle[j];
        if(document.getElementById)
            theElement.style.visibility = 'visible';
        else
            theElement.visibility = 'visible';
    }
}

function RF_HideDropLists()
{            
    var elementsToToggle = (document.getElementsByTagName) ? document.getElementsByTagName('select') : document.all.tags('select');
   
    for(var j=0; j<elementsToToggle.length; j++)
    {
        var theElement = elementsToToggle[j];
        if(document.getElementById)
            theElement.style.visibility = 'hidden';
        else
            theElement.visibility = 'hide';
    }
}

function RF_FireEvent(el,event)
{
	//On IE
	if(el.fireEvent)
	{
		el.fireEvent('on' + event);
	}
	
	//On Gecko based browsers
	if(document.createEvent)
	{
		var evt = document.createEvent('HTMLEvents');
		if(evt.initEvent)
		{
			evt.initEvent(event, true, true);
		}
		if(el.dispatchEvent)
		{
			el.dispatchEvent(evt);
		}	
	}
}

function RF_CheckGenericPhoneNumber(phNum)
{
	var checkOK = "0123456789-()+ ";
	var checkStr = phNum;
	var allValid = true;
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
				break;
				
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}
	return allValid;
}

function RF_GetQueryParams()
{
	// get the current URL
	var url = window.location.toString();
	
	//get the parameters
	url.match(/\?(.+)$/);
	var params = RegExp.$1;
	// split up the query string and store in an associative array
	var params = params.split("&");
	var queryStringList = {}; 
	
	for(var i=0;i<params.length;i++)
	{    
		var tmp = params[i].split("=");
		queryStringList[tmp[0]] = unescape(tmp[1]);
	}
	
	return queryStringList;
}

//Return an array of Search Query Params
// item [J*2] is the Jth variable name
// item [(J*2)+1] is the Jth variable value
function RF_GetQueryParams2()
{
    var queryParams = window.location.search.substring(1);

    if ( queryParams == "" ) { return null; }

    var resltArray = new Array;
    var qpSplit = new RegExp('[&=]');

    resltArray = queryParams.split(qpSplit);
    return resltArray;
}

// Removes ending whitespaces
function RF_LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RF_RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function RF_Trim( value ) {
	
	return RF_LTrim(RF_RTrim(value));
	
}

//Redirect to Link
function RF_RedirectToLink(uri)
{
	location.href = uri;	
}

function RF_IsEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function RF_IsDigit (c)
{   return ((c >= "0") && (c <= "9"));
}

function RF_IsInteger (s)
{   var i;

    if (RF_IsEmpty(s))
    {
       if (RF_IsInteger.arguments.length == 1)
       {
       	return false;
       }
       else
       {
        return (RF_IsInteger.arguments[1] == true);
       }
     }

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);

        if (!RF_IsDigit(c))
        {
        	return false;
        }
    }

    // All characters are numbers.
    return true;
}

function RF_IsSignedInteger (s)

{   if (isEmpty(s))
       if (RF_IsSignedInteger.arguments.length == 1) return false;
       else return (RF_IsSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = false;

        if (RF_IsSignedInteger.arguments.length > 1)
            secondArg = RF_IsSignedInteger.arguments[1];

        // skip leading + or -
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;
        return (RF_IsInteger(s.substring(startPos, s.length), secondArg))
    }
}

function RF_IsNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (RF_IsNonnegativeInteger.arguments.length > 1)
        secondArg = RF_IsNonnegativeInteger.arguments[1];

    // The next line is a bit byzantine.  What it means is:
    // a) s must be a signed integer, AND
    // b) one of the following must be true:
    //    i)  s is empty and we are supposed to return true for
    //        empty strings
    //    ii) this is a number >= 0

    return (isSignedInteger(s, secondArg)
         && ( (RF_IsEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}

function RF_IsIntegerInRange (s, a, b)
{   if (RF_IsEmpty(s))
       if (RF_IsIntegerInRange.arguments.length == 1) return false;
       else return (RF_IsIntegerInRange.arguments[1] == true);

    // Catch non-integer strings to avoid creating a NaN below,
    // which isn't available on JavaScript 1.0 for Windows.
    if (!RF_IsInteger(s, false)) return false;

    // Now, explicitly change the type to integer via parseInt
    // so that the comparison code below will work both on
    // JavaScript 1.2 (which typechecks in equality comparisons)
    // and JavaScript 1.1 and before (which doesn't).
    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}

function RF_IsLeapYear(year)
{
	return ((year%4 == 0) && (year%100 != 0 || year%400 == 0));
}

function RF_IsYear (s)
{   if (RF_IsEmpty(s))
       if (RF_IsYear.arguments.length == 1) return false;
       else return (RF_IsYear.arguments[1] == true);
    if (!RF_IsNonnegativeInteger(s)) return false;
    //return ((s.length == 2) || (s.length == 4));
    return (s.length == 4);
}

// isMonth (STRING s [, BOOLEAN emptyOK])
function RF_IsMonth (s)
{   if (RF_IsEmpty(s))
       if (RF_IsMonth.arguments.length == 1) return false;
       else return (RF_IsMonth.arguments[1] == true);
    return RF_IsIntegerInRange (Number(s), 1, 12);
}

// isDay (STRING s [, BOOLEAN emptyOK])
function RF_IsDay (s)
{   if (RF_IsEmpty(s))
       if (RF_IsDay.arguments.length == 1) return false;
       else return (RF_IsDay.arguments[1] == true);       
    return RF_IsIntegerInRange (Number(s), 1, 31);
}

/* ]]> */