﻿// JScript File
   
/***********************************************
* Cool DHTML tooltip script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

var offsetxpoint=-60 //Customize x offset of tooltip
var offsetypoint=20 //Customize y offset of tooltip
var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}


function ddrivetip(thetext, thecolor, thewidth){
if (ns6||ie){
if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
tipobj.innerHTML=thetext
enabletip=true
return false
}
}

function positiontip(e){
if (enabletip){
var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
//Find out how close the mouse is to the corner of the window
var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20

var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000

//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<tipobj.offsetWidth)
//move the horizontal position of the menu to the left by it's width
tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
else if (curX<leftedge)
tipobj.style.left="5px"
else
//position the horizontal position of the menu where the mouse is positioned
tipobj.style.left=curX+offsetxpoint+"px"

//same concept with the vertical position
if (bottomedge<tipobj.offsetHeight)
tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
else
tipobj.style.top=curY+offsetypoint+"px"
tipobj.style.visibility="visible"
}
}

function hideddrivetip(){
if (ns6||ie){
enabletip=false
tipobj.style.visibility="hidden"
tipobj.style.left="-1000px"
tipobj.style.backgroundColor=''
tipobj.style.width=''
}
}

document.onmousemove=positiontip


var min=8;
var max=18;
function increaseFontSize() {
   var p = document.getElementsByTagName('p');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("em",""));
      } else {
         var s = 12;
      }
      if(s!=max) {
         s += 1;
      }
      p[i].style.fontSize = s+"px"
   }
   var p = document.getElementsByTagName('li');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("em",""));
      } else {
         var s = 12;
      }
      if(s!=max) {
         s += 1;
      }
      p[i].style.fontSize = s+"px"
   }
   var p = document.getElementsByTagName('h3');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("em",""));
      } else {
         var s = 12;
      }
      if(s!=max) {
         s += 1;
      }
      p[i].style.fontSize = s+"px"
   }
}
function decreaseFontSize() {
   var p = document.getElementsByTagName('p');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 12;
      }
      if(s!=min) {
         s -= 1;
      }
      p[i].style.fontSize = s+"px"
   }   
   var p = document.getElementsByTagName('li');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 12;
      }
      if(s!=min) {
         s -= 1;
      }
      p[i].style.fontSize = s+"px"
   }   
   var p = document.getElementsByTagName('h3');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 12;
      }
      if(s!=min) {
         s -= 1;
      }
      p[i].style.fontSize = s+"px"
   }   
   
}

function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=377,left = 262,top = 134');");
}

function popUpFullScreen(URL) {
    day = new Date();
    id = day.getTime();
    varwidth = document.body.offsetWidth;
    varheight = document.body.offsetHeight +30;
    
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=" + varwidth + ",height=" + varheight + ",left = 262,top = 134');");
}

function openQuote(URL) { 
var day = new Date();
var id = day.getTime();
var left = screen.width;
var x = 820;
left = left-x;
left = left/2;

var y = screen.height;
var parms = new String("width=" + x + ",height=" + y + ",scrollbars=yes,menubar=visible,statusbar=yes,status=yes,location=no,toolbar=no,history=no,resizable=yes,screenX=0,screenY=0,top=0,left=" + left + "");

window.open(URL, "", parms);

}

function imposeMaxLength(Object, MaxLen) {
    return (Object.value.length <= MaxLen);
}

function instanceView (filename,selected,total,skinid) {
    
    for(i=1;i<=total;i++) {
        document.getElementById('Instance' + i).className='inactiveInstance';
        for(y=1;y<=total;y++) {
            document.getElementById('ImageInstance'+ i + '-' + y).src = 'skins/' + skinid + '/images/' + filename + y + 'inactive.gif'
        }
    }
    
    document.getElementById('Instance' + selected).className='activeInstance';
    document.getElementById('ImageInstance' + selected + '-' + selected).src = 'skins/' + skinid + '/images/' + filename + selected + '.gif'
       
}

function helpBox(fieldid, fieldname, fieldhelptext, fieldrequired) {

    var helptext;
    var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
       
    if(fieldhelptext != '' || fieldrequired == 'Y') {
    
        helptext = '<h2>Information</h2>'
        helptext = helptext + '<h3>' + fieldname + '</h3>'
        helptext = helptext + '<p>' + fieldhelptext + '</p>'
        
        if(fieldrequired == 'Y') {
            helptext = helptext + '<p>This field is mandatory</p>'
        }
        document.getElementById('informationBox').innerHTML = helptext;
        document.getElementById("informationBox").className = 'visableAttribute';
        document.getElementById("informationBox").style.top  = curY;
          
    } else {
        document.getElementById("informationBox").className = 'hiddenAttribute';
        document.getElementById('informationBox').innerHTML = '';        
    }  
}

		var account_code='MJYAT11112';
		var license_code='MG44-RN19-CD13-GK69';
		var machine_id='';
		
		function pcaByPostcodeBegin(strInputId)
		   {
            
			 var postcode = document.getElementById(strInputId).value;
			  var scriptTag = document.getElementById("pcaScriptTag");
		      var headTag = document.getElementsByTagName("head").item(0);
		      var strUrl = "";
		      
		      document.getElementById("divLoading").style.display = '';
		      
		      //Build the url
		      strUrl = "https://services.postcodeanywhere.co.uk/inline.aspx?";
		      strUrl += "&action=lookup";
		      strUrl += "&type=by_postcode";
		      strUrl += "&postcode=" + escape(postcode);
		      strUrl += "&account_code=" + escape(account_code);
		      strUrl += "&license_code=" + escape(license_code);
		      strUrl += "&machine_id=" + escape(machine_id);
		      strUrl += "&callback=pcaByPostcodeEnd";
		      
		      //Make the request
		      if (scriptTag)
		         {
		            //The following 2 lines perform the same function and should be interchangeable
		            headTag.removeChild(scriptTag);
		            //scriptTag.parentNode.removeChild(scriptTag);
		         }
		      scriptTag = document.createElement("script");
		      scriptTag.src = strUrl
		      scriptTag.type = "text/javascript";
		      scriptTag.id = "pcaScriptTag";
		      headTag.appendChild(scriptTag);
		      
		      
		      
		   }

		function pcaByPostcodeEnd()
		   {
			  document.getElementById("divLoading").style.display = 'none';
			  
		      //Test for an error
		      if (pcaIsError)
		         {
		            //Show the error message
		            document.getElementById("selectaddress").style.display = 'none';
		            alert(pcaErrorMessage);
		         }
		      else
		         {
		            //Check if there were any items found
		            if (pcaRecordCount==0)
		               {
		                  document.getElementById("selectaddress").style.display = 'none';
		                  alert("Sorry, no matching items found. Please try another postcode.");
		               }
		            else
		               {
						  document.forms[0]["selectaddress"].style.display = '';
						  
						  for (i=document.forms[0]["selectaddress"].options.length-1; i>=0; i--){
							  document.forms[0]["selectaddress"].options[i] = null;
							}
							document.forms[0]["selectaddress"].options[document.forms[0]["selectaddress"].length] = new Option('Select Address', '');
						  for (i=0; i<pca_id.length; i++){
		                    document.forms[0]["selectaddress"].options[document.forms[0]["selectaddress"].length] = new Option(pca_description[i], pca_id[i]);
		                  }
		               }
		         }
		   }
		
		function pcaFetchBegin()
		   {
			  var address_id = document.forms[0]["selectaddress"].value;
		      var scriptTag = document.getElementById("pcaScriptTag");
		      var headTag = document.getElementsByTagName("head").item(0);
		      var strUrl = "";

		      //Build the url
		      strUrl = "https://services.postcodeanywhere.co.uk/inline.aspx?";
		      strUrl += "&action=fetch";
		      strUrl += "&id=" + escape(address_id);
		      strUrl += "&account_code=" + escape(account_code);
		      strUrl += "&license_code=" + escape(license_code);
		      strUrl += "&machine_id=" + escape(machine_id);
		      strUrl += "&callback=pcaFetchEnd()";

		      //Make the request
		      if (scriptTag)
		         {
		            //The following 2 lines perform the same function and should be interchangeable
		            headTag.removeChild(scriptTag);
		            //scriptTag.parentNode.removeChild(scriptTag);
		         }
		      scriptTag = document.createElement("script");
		      scriptTag.src = strUrl
		      scriptTag.type = "text/javascript";
		      scriptTag.id = "pcaScriptTag";
		      headTag.appendChild(scriptTag);
		      
		      document.forms[0]["selectaddress"].style.display = 'none';
		   }

		function pcaFetchEnd()
		   {
		   var addressfields;
		   var addressfieldssplit;
		   
		      //Test for an error
		      if (pcaIsError)
		         {
		            //Show the error message
		            alert(pcaErrorMessage);
		         }
		      else
		         {
		            //Check if there were any items found
		            if (pcaRecordCount==0)
		               {
		                  alert("Sorry, no matching items found");
		               }
		            else
		               {						  
						  addressfields = document.getElementById("addressfields").innerHTML;
						  addressfieldssplit = addressfields.split(',');
						  						  
						  document.getElementById(addressfieldssplit[0]).value = '' + pca_organisation_name[0];
						  document.getElementById(addressfieldssplit[1]).value = '' + pca_line1[0];
						  document.getElementById(addressfieldssplit[2]).value = '' + pca_line2[0];
	    				  document.getElementById(addressfieldssplit[3]).value = '' + pca_post_town[0];
						  document.getElementById(addressfieldssplit[4]).value = '' + pca_county[0];
						 
		               }
		         }
		   }
		   
function disableEnterKey(e)
{
     var key;

     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox

     if(key == 13)
          return false;
     else
          return true;
  }

  function hideDiv() {

      var option;
      option = document.getElementById("InsName").options[document.getElementById("InsName").selectedIndex].text;

      if (option == 'No Quote') {
          document.getElementById('hidepremium').style.display = 'none';
      } else {
        document.getElementById('hidepremium').style.display = 'block';
      }
      
}
  

  function OpenFAQ(id) {
       
       document.getElementById('FAQ' + id).style.display = 'block';

   }

   function CloseFAQ(id) {

       document.getElementById('FAQ' + id).style.display = 'none';

   }


   if (typeof window.event != 'undefined') // IE
       document.onkeydown = function() // IE
       {
           var t = event.srcElement.type;
           var kc = event.keyCode;
           return ((kc != 8 && kc != 13) || (t == 'text' && kc != 13) ||
             (t == 'textarea') || (t == 'submit' && kc == 13))
       }
   else
       document.onkeypress = function(e)  // FireFox/Others 
       {
           var t = e.target.type;
           var kc = e.keyCode;
           if ((kc != 8 && kc != 13) || (t == 'text' && kc != 13) ||
        (t == 'textarea') || (t == 'submit' && kc == 13))
               return true
           else {
               alert('Sorry Backspace/Enter is not allowed here'); // Demo code
               return false
           }
       }
       function validatePound(fld) {
           var temp_value = fld.value;
           if (temp_value.length == 0) {
               fld.value = '0';
           }
           
           var Chars = "0123456789.,";
           for (var i = 0; i < temp_value.length; i++) {
               if (Chars.indexOf(temp_value.charAt(i)) == -1) {
                   alert("Invalid Character(s)\n\nOnly numbers (0-9), a comma, or a period are allowed in this field. ");
                   fld.focus();
                   fld.value = 0
                   fld.select();
                   return;
               }
           }
       }

       function AutoFill(from, to) {

           document.getElementById(to).value = from.value;
           
       }


       function refreshParent(url) {
           window.opener.location.href = url
           
           if (window.opener.progressWindow) {
               window.opener.progressWindow.close()
           }
           window.close();
       }


       var Spry;
       if (!Spry) Spry = {};
       if (!Spry.Widget) Spry.Widget = {};

       Spry.Widget.CollapsiblePanel = function(element, opts) {
           this.element = this.getElement(element);
           this.focusElement = null;
           this.hoverClass = "CollapsiblePanelTabHover";
           this.openClass = "CollapsiblePanelOpen";
           this.closedClass = "CollapsiblePanelClosed";
           this.focusedClass = "CollapsiblePanelFocused";
           this.enableAnimation = true;
           this.enableKeyboardNavigation = true;
           this.animator = null;
           this.hasFocus = false;
           this.contentIsOpen = true;

           this.openPanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_DOWN;
           this.closePanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_UP;

           Spry.Widget.CollapsiblePanel.setOptions(this, opts);

           this.attachBehaviors();
       };

       Spry.Widget.CollapsiblePanel.prototype.getElement = function(ele) {
           if (ele && typeof ele == "string")
               return document.getElementById(ele);
           return ele;
       };

       Spry.Widget.CollapsiblePanel.prototype.addClassName = function(ele, className) {
           if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
               return;
           ele.className += (ele.className ? " " : "") + className;
       };

       Spry.Widget.CollapsiblePanel.prototype.removeClassName = function(ele, className) {
           if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
               return;
           ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
       };

       Spry.Widget.CollapsiblePanel.prototype.hasClassName = function(ele, className) {
           if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
               return false;
           return true;
       };

       Spry.Widget.CollapsiblePanel.prototype.setDisplay = function(ele, display) {
           if (ele)
               ele.style.display = display;
       };

       Spry.Widget.CollapsiblePanel.setOptions = function(obj, optionsObj, ignoreUndefinedProps) {
           if (!optionsObj)
               return;
           for (var optionName in optionsObj) {
               if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
                   continue;
               obj[optionName] = optionsObj[optionName];
           }
       };

       Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver = function(e) {
           this.addClassName(this.getTab(), this.hoverClass);
           return false;
       };

       Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut = function(e) {
           this.removeClassName(this.getTab(), this.hoverClass);
           return false;
       };

       Spry.Widget.CollapsiblePanel.prototype.open = function() {
           this.contentIsOpen = true;
           if (this.enableAnimation) {
               if (this.animator)
                   this.animator.stop();
               this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, true, { duration: this.duration, fps: this.fps, transition: this.transition });
               this.animator.start();
           }
           else
               this.setDisplay(this.getContent(), "block");

           this.removeClassName(this.element, this.closedClass);
           this.addClassName(this.element, this.openClass);
       };

       Spry.Widget.CollapsiblePanel.prototype.close = function() {
           this.contentIsOpen = false;
           if (this.enableAnimation) {
               if (this.animator)
                   this.animator.stop();
               this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, false, { duration: this.duration, fps: this.fps, transition: this.transition });
               this.animator.start();
           }
           else
               this.setDisplay(this.getContent(), "none");

           this.removeClassName(this.element, this.openClass);
           this.addClassName(this.element, this.closedClass);
       };

       Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e) {
           if (this.isOpen())
               this.close();
           else
               this.open();

           this.focus();

           return this.stopPropagation(e);
       };

       Spry.Widget.CollapsiblePanel.prototype.onFocus = function(e) {
           this.hasFocus = true;
           this.addClassName(this.element, this.focusedClass);
           return false;
       };

       Spry.Widget.CollapsiblePanel.prototype.onBlur = function(e) {
           this.hasFocus = false;
           this.removeClassName(this.element, this.focusedClass);
           return false;
       };

       Spry.Widget.CollapsiblePanel.KEY_UP = 38;
       Spry.Widget.CollapsiblePanel.KEY_DOWN = 40;

       Spry.Widget.CollapsiblePanel.prototype.onKeyDown = function(e) {
           var key = e.keyCode;
           if (!this.hasFocus || (key != this.openPanelKeyCode && key != this.closePanelKeyCode))
               return true;

           if (this.isOpen() && key == this.closePanelKeyCode)
               this.close();
           else if (key == this.openPanelKeyCode)
               this.open();

           return this.stopPropagation(e);
       };

       Spry.Widget.CollapsiblePanel.prototype.stopPropagation = function(e) {
           if (e.preventDefault) e.preventDefault();
           else e.returnValue = false;
           if (e.stopPropagation) e.stopPropagation();
           else e.cancelBubble = true;
           return false;
       };

       Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers = function() {
           var tab = this.getTab();
           if (!tab)
               return;

           var self = this;
           Spry.Widget.CollapsiblePanel.addEventListener(tab, "click", function(e) { return self.onTabClick(e); }, false);
           Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(e); }, false);
           Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(e); }, false);

           if (this.enableKeyboardNavigation) {

               var tabIndexEle = null;
               var tabAnchorEle = null;

               this.preorderTraversal(tab, function(node) {
                   if (node.nodeType == 1 /* NODE.ELEMENT_NODE */) {
                       var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
                       if (tabIndexAttr) {
                           tabIndexEle = node;
                           return true;
                       }
                       if (!tabAnchorEle && node.nodeName.toLowerCase() == "a")
                           tabAnchorEle = node;
                   }
                   return false;
               });

               if (tabIndexEle)
                   this.focusElement = tabIndexEle;
               else if (tabAnchorEle)
                   this.focusElement = tabAnchorEle;

               if (this.focusElement) {
                   Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "focus", function(e) { return self.onFocus(e); }, false);
                   Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "blur", function(e) { return self.onBlur(e); }, false);
                   Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "keydown", function(e) { return self.onKeyDown(e); }, false);
               }
           }
       };

       Spry.Widget.CollapsiblePanel.addEventListener = function(element, eventType, handler, capture) {
           try {
               if (element.addEventListener)
                   element.addEventListener(eventType, handler, capture);
               else if (element.attachEvent)
                   element.attachEvent("on" + eventType, handler);
           }
           catch (e) { }
       };

       Spry.Widget.CollapsiblePanel.prototype.preorderTraversal = function(root, func) {
           var stopTraversal = false;
           if (root) {
               stopTraversal = func(root);
               if (root.hasChildNodes()) {
                   var child = root.firstChild;
                   while (!stopTraversal && child) {
                       stopTraversal = this.preorderTraversal(child, func);
                       try { child = child.nextSibling; } catch (e) { child = null; }
                   }
               }
           }
           return stopTraversal;
       };

       Spry.Widget.CollapsiblePanel.prototype.attachBehaviors = function() {
           var panel = this.element;
           var tab = this.getTab();
           var content = this.getContent();

           if (this.contentIsOpen || this.hasClassName(panel, this.openClass)) {
               this.addClassName(panel, this.openClass);
               this.removeClassName(panel, this.closedClass);
               this.setDisplay(content, "block");
               this.contentIsOpen = true;
           }
           else {
               this.removeClassName(panel, this.openClass);
               this.addClassName(panel, this.closedClass);
               this.setDisplay(content, "none");
               this.contentIsOpen = false;
           }

           this.attachPanelHandlers();
       };

       Spry.Widget.CollapsiblePanel.prototype.getTab = function() {
           return this.getElementChildren(this.element)[0];
       };

       Spry.Widget.CollapsiblePanel.prototype.getContent = function() {
           return this.getElementChildren(this.element)[1];
       };

       Spry.Widget.CollapsiblePanel.prototype.isOpen = function() {
           return this.contentIsOpen;
       };

       Spry.Widget.CollapsiblePanel.prototype.getElementChildren = function(element) {
           var children = [];
           var child = element.firstChild;
           while (child) {
               if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
                   children.push(child);
               child = child.nextSibling;
           }
           return children;
       };

       Spry.Widget.CollapsiblePanel.prototype.focus = function() {
           if (this.focusElement && this.focusElement.focus)
               this.focusElement.focus();
       };

       /////////////////////////////////////////////////////

       Spry.Widget.CollapsiblePanel.PanelAnimator = function(panel, doOpen, opts) {
           this.timer = null;
           this.interval = 0;

           this.fps = 60;
           this.duration = 500;
           this.startTime = 0;

           this.transition = Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition;

           this.onComplete = null;

           this.panel = panel;
           this.content = panel.getContent();
           this.doOpen = doOpen;

           Spry.Widget.CollapsiblePanel.setOptions(this, opts, true);

           this.interval = Math.floor(1000 / this.fps);

           var c = this.content;

           var curHeight = c.offsetHeight ? c.offsetHeight : 0;
           this.fromHeight = (doOpen && c.style.display == "none") ? 0 : curHeight;

           if (!doOpen)
               this.toHeight = 0;
           else {
               if (c.style.display == "none") {
                   // The content area is not displayed so in order to calculate the extent
                   // of the content inside it, we have to set its display to block.

                   c.style.visibility = "hidden";
                   c.style.display = "block";
               }

               // Clear the height property so we can calculate
               // the full height of the content we are going to show.

               c.style.height = "";
               this.toHeight = c.offsetHeight;
           }

           this.distance = this.toHeight - this.fromHeight;
           this.overflow = c.style.overflow;

           c.style.height = this.fromHeight + "px";
           c.style.visibility = "visible";
           c.style.overflow = "hidden";
           c.style.display = "block";
       };

       Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition = function(time, begin, finish, duration) { time /= duration; return begin + ((2 - time) * time * finish); };

       Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start = function() {
           var self = this;
           this.startTime = (new Date).getTime();
           this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
       };

       Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop = function() {
           if (this.timer) {
               clearTimeout(this.timer);

               // If we're killing the timer, restore the overflow property.

               this.content.style.overflow = this.overflow;
           }

           this.timer = null;
       };

       Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation = function() {
           var curTime = (new Date).getTime();
           var elapsedTime = curTime - this.startTime;

           if (elapsedTime >= this.duration) {
               if (!this.doOpen)
                   this.content.style.display = "none";
               this.content.style.overflow = this.overflow;
               this.content.style.height = this.toHeight + "px";
               if (this.onComplete)
                   this.onComplete();
               return;
           }

           var ht = this.transition(elapsedTime, this.fromHeight, this.distance, this.duration);

           this.content.style.height = ((ht < 0) ? 0 : ht) + "px";

           var self = this;
           this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
       };

       Spry.Widget.CollapsiblePanelGroup = function(element, opts) {
           this.element = this.getElement(element);
           this.opts = opts;

           this.attachBehaviors();
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.setOptions = Spry.Widget.CollapsiblePanel.prototype.setOptions;
       Spry.Widget.CollapsiblePanelGroup.prototype.getElement = Spry.Widget.CollapsiblePanel.prototype.getElement;
       Spry.Widget.CollapsiblePanelGroup.prototype.getElementChildren = Spry.Widget.CollapsiblePanel.prototype.getElementChildren;

       Spry.Widget.CollapsiblePanelGroup.prototype.setElementWidget = function(element, widget) {
           if (!element || !widget)
               return;
           if (!element.spry)
               element.spry = new Object;
           element.spry.collapsiblePanel = widget;
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.getElementWidget = function(element) {
           return (element && element.spry && element.spry.collapsiblePanel) ? element.spry.collapsiblePanel : null;
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.getPanels = function() {
           if (!this.element)
               return [];
           return this.getElementChildren(this.element);
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.getPanel = function(panelIndex) {
           return this.getPanels()[panelIndex];
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.attachBehaviors = function() {
           if (!this.element)
               return;

           var cpanels = this.getPanels();
           var numCPanels = cpanels.length;
           for (var i = 0; i < numCPanels; i++) {
               var cpanel = cpanels[i];
               this.setElementWidget(cpanel, new Spry.Widget.CollapsiblePanel(cpanel, this.opts));
           }
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.openPanel = function(panelIndex) {
           var w = this.getElementWidget(this.getPanel(panelIndex));
           if (w && !w.isOpen())
               w.open();
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.closePanel = function(panelIndex) {
           var w = this.getElementWidget(this.getPanel(panelIndex));
           if (w && w.isOpen())
               w.close();
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.openAllPanels = function() {
           var cpanels = this.getPanels();
           var numCPanels = cpanels.length;
           for (var i = 0; i < numCPanels; i++) {
               var w = this.getElementWidget(cpanels[i]);
               if (w && !w.isOpen())
                   w.open();
           }
       };

       Spry.Widget.CollapsiblePanelGroup.prototype.closeAllPanels = function() {
           var cpanels = this.getPanels();
           var numCPanels = cpanels.length;
           for (var i = 0; i < numCPanels; i++) {
               var w = this.getElementWidget(cpanels[i]);
               if (w && w.isOpen())
                   w.close();
           }
       };

       function theChecker(element) {
          
           if (element.checked == false) {
              document.getElementById('submitter').disabled = true;
           }
           else {
              document.getElementById('submitter').disabled = false;
           }
       }



       function addLoadEvent(func) {
           var oldonload = window.onload;
           if (typeof window.onload != 'function') {
               window.onload = func;
           } else {
               window.onload = function() {
                   oldonload();
                   func();
               }
           }
       }

       function prepareInputsForHints() {
           var inputs = document.getElementsByTagName("input");
           for (var i = 0; i < inputs.length; i++) {
               // test to see if the hint span exists first
               if (inputs[i].parentNode.getElementsByTagName("span")[0]) {
                   // the span exists!  on focus, show the hint
                   inputs[i].onfocus = function() {
                       this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
                   }
                   // when the cursor moves away from the field, hide the hint
                   inputs[i].onblur = function() {
                       this.parentNode.getElementsByTagName("span")[0].style.display = "none";
                   }
               }
           }
           // repeat the same tests as above for selects
           var selects = document.getElementsByTagName("select");
           for (var k = 0; k < selects.length; k++) {
               if (selects[k].parentNode.getElementsByTagName("span")[0]) {
                   selects[k].onfocus = function() {
                       this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
                   }
                   selects[k].onblur = function() {
                       this.parentNode.getElementsByTagName("span")[0].style.display = "none";
                   }
               }
           }
       }
       addLoadEvent(prepareInputsForHints);
