﻿
// this script auto-numbers header tags palced in a div with a class of "autoHTag"
// most new browsers are covered by the counter-increment css in main.css
// IE versions < 8 can't use this CSS so this code does it instead

if(document.all)

// see http://www.quirksmode.org/dom/getElementsByTagNames.html

{

    var h2Id = 0;
    var h3Id = 0;       
    var h4Id = 0;
    var h5Id = 0;	
		
	window.onload = function() 
		{	
            
            if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
            { //test for MSIE x.x;
             var ieversion=new Number(RegExp.$1)              
             if (ieversion>=8)
               {return;}
            }            
            var divList = document.getElementsByClassName('autoHTag');
        	for (var i=0;i<divList.length;i++)
        	    {
		           var thisDiv = document.getElementById(divList[i]); 
	               var formFieldList = getElementsByTagNames('h1,h2,h3,h4',thisDiv);
	               processTagList(formFieldList);
                }    
            
		};    


        function processTagList(array) {

            var sectionNumber;
	        var writestring = '';
	        for (var i=0;i<array.length;i++) {
      		
		        switch (array[i].nodeName)
		                {
					        case 'H2':
					        h2Id += 1;
					        sectionNumber = h2Id;
					            h3Id = 0;       
                                h4Id = 0;
                                h5Id = 0;					
					        break;
					        case 'H3':					
					        h3Id += 1;
					        sectionNumber = h2Id + '.' + h3Id;
                                h4Id = 0;
                                h5Id = 0;					
					        break;						
					        case 'H4':
					        h4Id += 1;
					        sectionNumber = h2Id + '.' + h3Id + '.' + h4Id;	
                                h5Id = 0;								
					        break;
					        case 'H5':
					        h5Id += 1;
					        sectionNumber = h2Id + '.' + h3Id + '.' + h4Id + '.' + h5Id;					
					        break;										
				        }
		        //writestring += i + ': ' + sectionNumber + '\n';
		        array[i].innerText = sectionNumber + ' ' + array[i].innerText;
                //alert(array[i].innerHTML);
	        }
	        //alert(writestring);
        }

        function getElementsByTagNames(list,obj) {
	        if (!obj) var obj = document;
	        var tagNames = list.split(',');
	        var resultArray = new Array();
	        for (var i=0;i<tagNames.length;i++) {
		        var tags = obj.getElementsByTagName(tagNames[i]);
		        for (var j=0;j<tags.length;j++) {
			        resultArray.push(tags[j]);
		        }
	        }
	        var testNode = resultArray[0];
	        if (!testNode) return [];
	        if (testNode.sourceIndex) {
		        resultArray.sort(function (a,b) {
				        return a.sourceIndex - b.sourceIndex;
		        });
	        }
	        else if (testNode.compareDocumentPosition) {
		        resultArray.sort(function (a,b) {
				        return 3 - (a.compareDocumentPosition(b) & 6);
		        });
	        }
	        return resultArray;
        }


        // getElementsByClassName doesn't work in IE yet, so we make our own up
        document.getElementsByClassName = function(cl) {
        var retnode = [];
        var myclass = new RegExp('\\b'+cl+'\\b');
        var elem = this.getElementsByTagName('*');
        for (var x = 0; x < elem.length; x++) {
        var classes = elem[x].className;
        if (elem[x].className == cl)
            {
             retnode.push(elem[x].id)} 
            }
        return retnode;
        }; 


}
    




