String.prototype.startsWith = function(s) {return (s==null)? false : (this.substring(0, s.length)==s);}
String.prototype.endsWith = function(s) {return (s==null)? false : (this.substr(this.length-s.length,s.length)==s);}
/*utils*/
hasClass = function(elm, cls) {
	if (!elm || !elm.className) return null;
	return (' '+elm.className+' ').indexOf(' '+cls+' ')+1;
}
changeClass = function(elm, oldcls, newcls) {
	if (!elm) return null;
	var c = elm.className.split(' ');
	for (var i=0;i<c.length;i++) {
		if (c[i]==oldcls || c[i]==newcls || c[i]=='') c.splice(i,1);
	}
	c.push(newcls);
	elm.className = c.join(' ');
}
toggleClass = function(elm, cls) {
	if (hasClass(elm,cls)) changeClass(elm,cls,'');
	else changeClass(elm,'',cls);
}
__ebi = function(id) {
	var elm = document.getElementById(id);
	if (arguments.length>1) {
		var elms = {};
		elms[id] = elm;
		for (var i=1;i<arguments.length;i++) elms[arguments[i]] = __ebi(arguments[i]);
		return elms;
	}
	return elm;
}
__ebt = function(tag,elm) {
	return (elm? elm : document).getElementsByTagName(tag);
}
/* forms */
submitChecktrip = function(formObject) {
	var alerts = [];
	if (formObject['RECORD_LOCATOR'].value.length!=6) alerts.push(formObject['alerts_record'].value);
	if (formObject['LAST_NAME'].value=="") alerts.push(formObject['alerts_lastname'].value);
	if (alerts.length>0) {
		alert(formObject['alerts'].value+"\n- "+alerts.join("\n- "));
		return false;
  }
	formObject.target = "_blank";
  return true;
}
submitTimetable = function(link, direction, f) {
	var sel = f.options[f.selectedIndex].value;
	if (sel != "all" && sel != "") {
		if (link.indexOf("?") > -1) link += "&";
		else link += "?";
		link += direction + "=" + sel;
	}
	window.location = link;
}

submitPoll = function(f) {
	var form = document.forms[f];
	if (!form) return;
	var v = false;
	var i = form['uid'];
	for (var n = 0; n < form['poll_' + i].length; n++) {
		if (form['poll_' + i][n].checked) {
			v = true;
			break;
		}
	}
	return v;
}

/* enhance */
swaplines = function() {
	var uls = __ebt('ul');
	var cls, div, lis;
	var LIST_CLS = 'swaplines';
	for (var i=0;i<uls.length;i++) {
		cls = uls[i].className;
		if (cls.indexOf(LIST_CLS)>=0) {
			cls =  cls.substr(cls.indexOf(LIST_CLS));
			cls = (cls.indexOf(' ')>=0)? cls.substr(0,cls.indexOf(' ')) : cls;
			div = (cls.length>LIST_CLS.length)? parseInt(cls.substr(LIST_CLS)) : 2;
			if (isNaN(div)) div = 2;
			lis = uls[i].getElementsByTagName('li');
			for (var j=0;j<lis.length;j++) {
				if (lis[j].parentNode==uls[i]) lis[j].className += ' itm'+(j%div);
			}
		}
	}
}

swapimage = function(id, imgid, title, thiselm) {
	var elm = document.getElementById(id);
	elm.href = '/image.sls?uid='  + imgid + '&linkid=image';
	elm.firstChild.src = '/cres?bin.svc=obj&bin.id=' + imgid;
	elm.firstChild.title = title;
	var list = document.getElementById('moreimages').getElementsByTagName('li');
	for (var i = 0; i < list.length; i++) {
		var className = list[i].className;
		if (className.endsWith(' active')) list[i].className = className.substring(0, className.indexOf(' active'))
	}
	thiselm.parentNode.className = thiselm.parentNode.className + ' active';
}
switchframes = function(linkElement) {
	var frame = 'events';
	if (linkElement.href.indexOf('news') >= 0) frame = 'news';
	else if (linkElement.href.indexOf('views') >= 0) frame = 'views';
	var elms = __ebi('events','eventsf','news','newsf','views','viewsf');
	for (var p in elms) {
		if (!elms[p]) continue;
		if (elms[p].id.startsWith(frame)) changeClass(elms[p],'','selected');
		else changeClass(elms[p],'selected','');
	}
	return false;
}
enhanceLinks = function(classNames) {
	var elms = __ebt("a");
	var elm;
	for (var i=0;i<elms.length;i++) {
		elm = elms[i];
		for (var j=0;j<classNames.length;j++) {
			if (hasClass(elm,classNames[j])) {
				fn = eval(classNames[j]);
				if (typeof(fn)=='function') elm.onclick = function() {return fn(this);}
			}
		}
	}
}

jump = function(url) {
	if (url != null && url != "") {
		return !(window.location.href = url);
	} else {
		return false;
	}
}

show = function(id) {
	document.getElementById(id).style.visibility = "visible";
}

hide = function(id) {
	document.getElementById(id).style.visibility = "hidden";
}

var highlightedElement = null;

highlight = function(element) {
	if (highlightedElement != null) highlightedElement.style.backgroundPosition = "left top";
	element.style.backgroundPosition = "right top";
	highlightedElement = element;
}

popupBanner = function() { return !window.open("/popup.sls", 'Popup', 'toolbar=no,directories=no,location=no,status=yes,menubar=no,resizable=no,scrollbar=yes,width=500,height=400');};

/* init & load */
window.oninit = function() {
	if (document.getElementById && document.getElementsByTagName) {
		swaplines();
		enhanceLinks(['switchframes']);
//		popupBanner();
	}
}

launchInit = function() {
	if (document.getElementsByTagName && typeof(window.oninit)=='function') {
		if (document.getElementsByTagName('body').length>0) window.oninit();
		else setTimeout('launchInit()',30);
	}
}
launchInit();