var mapconnect;
mapconnect={
	map:'listMap',
	sections:'targetSections',
	dynamicClass:'dynamic',
	showClass:'show',
	currentShown:null,
	init:function(){
		if(!document.getElementById || !document.createTextNode){return;}
		var m=document.getElementById(mapconnect.map);
		var s=document.getElementById(mapconnect.sections);
		if(!m || !s){return;}
		mapconnect.cssjs('add',s,mapconnect.dynamicClass);
		var areas=m.getElementsByTagName('li');
		for(var i=0;i<areas.length;i++){
			mapconnect.addEvent(areas[i],'click',mapconnect.showSection,false);
			areas[i].onclick=function(){return false;} // Safari fix
		}
		// autoshow first element (or requested one)
		// request sections 1-6 by adding a parameter "secN" where N is 1 to 6
		var urlParams = new Object();
		var rawUrlParams = new String(window.location.search);
		rawUrlParams.replace(
			new RegExp( "([^?=&]+)(=([^&]*))?", "g" ),
			function( $0, $1, $2, $3) {
				urlParams[ $1 ] = $3;
			}
		);
		var selection;
		var selections = new Array(10);
		var key = new String();

		var formElem = document.forms["billQuery"].elements;
		for (key in urlParams){
  			if (key.search("sec") >= 0) {
				selections[i++] = key;
				var el = document.getElementById(key);
				//alert("hey - found selection " + key + ", " +el.id);
				if(el){
					formElem[el.id].value = 2;
					mapconnect.cssjs('add',el,mapconnect.showClass);
					//alert("hey - activated " + el.id + " " + formElem[el.id].value);
				}
			}
		}
//		alert("selections: " + selections);

// show any form portions with nonzero secN values 
 		
		var i = 0;
		var ary = new Array('sec1', 'sec2', 'sec3', 'sec4', 'sec5', 'sec6', 'sec7', 'sec8', 'sec9');
		for (i = 0; i<9; i++) {
			var e = ary[i];
			var el =  document.getElementById(e);
		//	alert("checking " + e + ", " +el.id);
			if(el){
				if(formElem[el.id].value > 0){
					mapconnect.cssjs('add',el,mapconnect.showClass);
				//	alert("hey - activated " + el.id + " " + formElem[el.id].value);
				}
			}
//			el.className += " " + e ;
				
		}
/*
		var el = document.getElementById("sec4");
		mapconnect.cssjs('add',el ,mapconnect.showClass);

		var formElem = document.forms["billQuery"].elements;
		key = "sec4";
		var el =  document.getElementById(key);
		el.className += " " + key ;
		if(formElem[key].value == 1){
			mapconnect.cssjs('add',el,mapconnect.showClass);
		}

*/


		
		// for debugging check statment - if check is good, true should be a classs of the first section
//		var el = document.getElementById("sec0");
//		el.className += " " + mapconnect.cssjs('check',el,mapconnect.showClass);

	},
	showSection:function(e){
		if(mapconnect.currentShown){
		//	mapconnect.cssjs('remove',mapconnect.currentShown,mapconnect.showClass);
		}
		var t=mapconnect.getTarget(e);
		var section=t.href.toString().split('#');
		if(document.getElementById(section[1])){
			mapconnect.currentShown=document.getElementById(section[1]);
			mapconnect.cssjs('toggle',mapconnect.currentShown,mapconnect.showClass);
		}
		mapconnect.cancelClick(e);
	},
/* helper methods */
	getTarget:function(e){
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target){return false;}
		if (target.nodeName.toLowerCase() != 'a'){target = target.parentNode;}
		return target;
	},
	cancelClick:function(e){
		if (window.event){
			window.event.cancelBubble = true;
			window.event.returnValue = false;
			return;
		}
		if (e){
			e.stopPropagation();
			e.preventDefault();
		}
	},
	addEvent: function(elm, evType, fn, useCapture){
		if (elm.addEventListener) 
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
			return true;
		}
	},
	cssjs:function(a,o,c1,c2){
		switch (a){
			case 'swap':
				o.className=!mapconnect.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
			case 'add':
				if(!mapconnect.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
					//var formElem = document.forms["billQuery"].elements;
					//formElem[o.id].value = 1;   // <-- this line didn't work
			break;
			// toggle case must be followed by REMOVE!
			case 'toggle':
				if(!mapconnect.cssjs('check',o,c1)) {
					var formElem = document.forms["billQuery"].elements;
					o.className+=o.className?' '+c1:c1;
					formElem[o.id].value = 1;
				//	alert("toggled new " + o.id + "; val " + o.id + " " + formElem[o.id].value);
					break;
				}
			case 'remove':
				var rep=o.className.match(' '+c1)?' '+c1:c1;
				var formElem = document.forms["billQuery"].elements;
				o.className=o.className.replace(rep,'');
				formElem[o.id].value = 0;
			//  alert("removed " + o.id + "; val " + o.id + " " + formElem[o.id].value);
			break;
			case 'check':
				regex = new RegExp(c1);  // below expression does not work - no class names for these elements can contain the word "show"
//				regex = new RegExp("(^|\s+)" + c1 + "(\s+s|$)");
				return regex.test(o.className);
			break;
		}
		
	}
}
mapconnect.addEvent(window, 'load', mapconnect.init, false);
