
   /* * * * * * * * * * * * * * * * * * * * * * * *
    *	zappAnchorList Functions v1.0
    *	by Asa Hardcastle, 4.19.2004
    *
    *	These javascript functions allow for one or more anchor lists on a page to be automatically generated from a call
    *	from a function that generates a headline
    * 

	Example:

    <script language=JavaScript>var t = zappAnchorListRegisterAnchor("HEADLINE", "NAME_OF_MASTER_PAGE_ELEMENT","","",""); document.write("<a name=\""+t+"\"><\/a>");document.write(t);</script>

	Must also include an onload call to generate the anchors:
		
	window.onload = function() { zappAnchorListGenerateAnchors(); }

    *
    *	revisions
    * 	----------------------------
    *	MAY 27, 2004 - Asa 
    *		- zappAnchorListRemoveTrailing now acts as a removeLastOccuranceOf
    *		- z_anchorlist_anchor_link_class_default is now "" by default
    *		- z_anchorlist_anchor_pre_default is now <li>
    *		- z_anchorlist_anchor_pre_default is now ""
    *
    * * * */
    
// default HTML that is rendered around an anchor
var z_anchorlist_anchor_pre_default = "<li>";
var z_anchorlist_anchor_post_default = "";
var z_anchorlist_anchor_link_class_default = "";

// Holds all of the meta information used to render multiple anchor lists
var z_anchorlist_anchors = new Array();

// registers a headline
function zappAnchorListRegisterAnchor(z_anchorlist_anchor_title, z_anchorlist_anchor_master_element, z_anchorlist_anchor_pre, z_anchorlist_anchor_post, z_anchorlist_anchor_link_class)
	{
	if(z_anchorlist_anchor_pre.length==0) z_anchorlist_anchor_pre = z_anchorlist_anchor_pre_default;
	if(z_anchorlist_anchor_post.length==0) z_anchorlist_anchor_post = z_anchorlist_anchor_post_default;
	if(z_anchorlist_anchor_link_class.length==0) z_anchorlist_anchor_link_class = z_anchorlist_anchor_link_class_default;
	var z_anchorlist_anchor_num = -1;
	if(z_anchorlist_anchors.length>0){
		for(var j=0;j<z_anchorlist_anchors.length; j++){
			if(z_anchorlist_anchor_master_element==z_anchorlist_anchors[j][0]){
				z_anchorlist_anchor_num = j;
				break;
				}
			}
		if(z_anchorlist_anchor_num==-1){ 
			z_anchorlist_anchor_num = z_anchorlist_anchors.length;
			z_anchorlist_anchors[z_anchorlist_anchor_num] = new Array();
			z_anchorlist_anchors[z_anchorlist_anchor_num][0] = z_anchorlist_anchor_master_element;
			z_anchorlist_anchors[z_anchorlist_anchor_num][1] = new Array();			
			z_anchorlist_anchors[z_anchorlist_anchor_num][2] = "";
			z_anchorlist_anchors[z_anchorlist_anchor_num][3] = "";
			z_anchorlist_anchors[z_anchorlist_anchor_num][4] = "";
			}
		}
	else 
		{ 
		z_anchorlist_anchor_num = 0;
		z_anchorlist_anchors[z_anchorlist_anchor_num] = new Array();
		z_anchorlist_anchors[z_anchorlist_anchor_num][0] = z_anchorlist_anchor_master_element;
		z_anchorlist_anchors[z_anchorlist_anchor_num][1] = new Array();
		z_anchorlist_anchors[z_anchorlist_anchor_num][2] = "";
		z_anchorlist_anchors[z_anchorlist_anchor_num][3] = "";
		z_anchorlist_anchors[z_anchorlist_anchor_num][4] = "";
		}
     var z_anchorlist_loc = z_anchorlist_anchor_title.indexOf("'");
     while(z_anchorlist_loc!=-1){
         z_anchorlist_anchor_title = z_anchorlist_anchor_title.substring(0,z_anchorlist_loc)+"\'"+z_anchorlist_anchor_title.substring(z_anchorlist_loc+1);
         z_anchorlist_loc = z_anchorlist_anchor_title.indexOf("'",z_anchorlist_loc+2);
         }
	var z_this_anchor = z_anchorlist_anchors[z_anchorlist_anchor_num][1].length;
	z_anchorlist_anchors[z_anchorlist_anchor_num][1][z_this_anchor] = new Array();
	z_anchorlist_anchors[z_anchorlist_anchor_num][1][z_this_anchor][0] = z_anchorlist_anchor_title;
	z_anchorlist_anchors[z_anchorlist_anchor_num][1][z_this_anchor][1] = z_anchorlist_anchor_pre;
	z_anchorlist_anchors[z_anchorlist_anchor_num][1][z_this_anchor][2] = z_anchorlist_anchor_post;
	z_anchorlist_anchors[z_anchorlist_anchor_num][1][z_this_anchor][3] = z_anchorlist_anchor_link_class;	
	return z_anchorlist_anchor_title;
	}


// must be called after anchor list has been initialized
// This function removes the last occurrance of z_anchorlist_remove in the block of code associated with z_anchorlist_anchor_master_element
function zappAnchorListRemoveTrailing(z_anchorlist_remove, z_anchorlist_anchor_master_element){
	if(z_anchorlist_anchors.length>0){
		for(var j=0;j<z_anchorlist_anchors.length; j++){
			if(z_anchorlist_anchor_master_element==z_anchorlist_anchors[j][0]){
				z_anchorlist_anchors[j][2] = z_anchorlist_remove;
				break;
				}
			}
		}
	}

// must be called after anchor list has been initialized
function zappAnchorListSetBlockStart(z_anchorlist_block_start, z_anchorlist_anchor_master_element){
	if(z_anchorlist_anchors.length>0){
		for(var j=0;j<z_anchorlist_anchors.length; j++){
			if(z_anchorlist_anchor_master_element==z_anchorlist_anchors[j][0]){
				z_anchorlist_anchors[j][3] = z_anchorlist_block_start;
				break;
				}
			}
		}
	}
// must be called after anchor list has been initialized
function zappAnchorListSetBlockEnd(z_anchorlist_block_end, z_anchorlist_anchor_master_element){
	if(z_anchorlist_anchors.length>0){
		for(var j=0;j<z_anchorlist_anchors.length; j++){
			if(z_anchorlist_anchor_master_element==z_anchorlist_anchors[j][0]){
				z_anchorlist_anchors[j][4] = z_anchorlist_block_end;
				break;
				}
			}
		}
	}



// Generates the anchor list into the master_element 	
function zappAnchorListGenerateAnchors() {
	for(var k=0;k<z_anchorlist_anchors.length;k++){		
		var z_anchorlist_anchor_links = document.getElementById(z_anchorlist_anchors[k][0]);
		if(z_anchorlist_anchor_links){
			var z_anchorlist_content = "";
			for(var i=0;i<z_anchorlist_anchors[k][1].length;i++){
				z_anchorlist_content += z_anchorlist_anchors[k][1][i][1]+"<a href=\"#"+z_anchorlist_anchors[k][1][i][0]+"\" class="+z_anchorlist_anchors[k][1][i][3]+">"+z_anchorlist_anchors[k][1][i][0]+"<\/a>"+z_anchorlist_anchors[k][1][i][2];
				}
			if(z_anchorlist_anchors[k][2].length>0){
				var i_of_remove = z_anchorlist_content.lastIndexOf(z_anchorlist_anchors[k][2]);
				if(i_of_remove!=-1) {
					z_anchorlist_content = z_anchorlist_content.substring(0, i_of_remove)+z_anchorlist_content.substring(i_of_remove+(z_anchorlist_anchors[k][2]).length);
					}
				}
			z_anchorlist_anchor_links.innerHTML = z_anchorlist_anchors[k][3]+z_anchorlist_content+z_anchorlist_anchors[k][4];
			}
		}
	}