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;
}

/* 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);
			}
		}
	}
}
switchframes = function(linkElement) {
	var frame = (linkElement.href.indexOf('check')>=0)? 'check' : 'book';
	var elms = __ebi('book','bookf','check','checkf');
	for (var p in elms) {
		if (!elms[p]) continue;
		toggleClass(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;
}

/* init & load */
window.oninit = function() {
	if (document.getElementById && document.getElementsByTagName) {
		swaplines();
		enhanceLinks(['switchframes']);
	}
}

launchInit = function() {
	if (document.getElementsByTagName && typeof(window.oninit)=='function') {
		if (document.getElementsByTagName('body').length>0) window.oninit();
		else setTimeout('launchInit()',30);
	}
}
launchInit();