//INITIALIZATION
///////////////////////////
var html = document.getElementsByTagName('html')[0];
jscss('add',html,'hasScript');


//alert( document.getElementsByTagName('html')[0].className )
function PageInit() {
	if ( !(document.getElementsByTagName && document.getElementById) ) return;
	
	commMap = document.getElementById("CommunityMap");
	if (!commMap) return;
	CommMapper( commMap.getElementsByTagName("div") );
}
addEvent(window,'load',PageInit);




//ROLLOVER RELATED
///////////////////////////
var over = new Object(); //store rollover state
var out = new Object(); //store  static state
function CommMapper(idArr,func) {
	var imgs, a;

	if (!func) func = getRollSrc; //use default rollover getter
	

	for (i = 0; i < idArr.length; i++) {
		if (idArr[i].className.indexOf('location') >= 0) {
			imgs = idArr[i].getElementsByTagName('img')[0];
			uls = idArr[i].getElementsByTagName('ul')[0];
			if (!imgs) continue;
			imgs.alt='';
			out[ idArr[i].id ] = new Image();
			over[ idArr[i].id ] = new Image();
			out[ idArr[i].id ].src = imgs.src;
			over[ idArr[i].id ].src = func(imgs.src,1);
			a = imgs.parentNode;
			if ((a && a.tagName.toLowerCase() == 'a') ){
				if (uls) {
					uls.activator = a;
					a.activateNode = uls;
					uls.onmouseover = function () { this.activator.onmouseover(); }
					uls.onmouseout = function() { this.activator.onmouseout(); }
				}
				a.onmouseover = function() { this.childNodes[0].src = over[this.parentNode.id].src; jscss('add',this.parentNode,'hover'); if(this.activateNode) { jscss('add',this.activateNode,'active'); } }
				a.onmouseout = function() { this.childNodes[0].src = out[this.parentNode.id].src; jscss('remove',this.parentNode,'hover'); if(this.activateNode) { jscss('remove',this.activateNode,'active'); } }
			}
		}
	}
}
function getRollSrc(src, hover) {
	return (hover) ? src.replace(".gif","_m.gif") : src.replace("_m.gif",".gif");
}



function addEvent(obj,evType,fn){
	if(obj.addEventListener){
		obj.addEventListener(evType,fn,false);
	}
	else if(obj.attachEvent){
		var r=obj.attachEvent("on"+evType,fn);
	}
	else{
		if ( typeof( obj['on'+evType] ) == 'function' ) {
			var last = obj['on'+evType] ;
			obj['on'+evType] = null;
			obj['on'+evType] = function() { last(); fn(); };
		}
		else obj['on'+evType] = fn;
	}
}


function IEVersion() {
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer') {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}


// found at http://www.onlinetools.org/articles/unobtrusivejavascript/cssjsseparation.html
function jscss(a,o,c1,c2) {
  switch (a){
    case 'swap':
      o.className=!jscss('check',o,c1)?o.className.replace(c2,c1): o.className.replace(c1,c2);
    break;
    case 'add':
      if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
    break;
    case 'remove':
      var rep=o.className.match(' '+c1)?' '+c1:c1;
      o.className=o.className.replace(rep,'');
    break;
    case 'check':
      return new RegExp('\\b'+c1+'\\b').test(o.className)
    break;
  }
}



