// general
function addEvent(obj,evType,fn){ 
	if (obj.addEventListener){obj.addEventListener(evType,fn,false);return true;}
 	else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r;}
 	else return false; 
}
function externalLinks(){ 
	if (!document.getElementsByTagName)return;var anchors=document.getElementsByTagName("a"); 
	for (var i=0;i<anchors.length;i++)if(anchors[i].getAttribute("href")&&anchors[i].getAttribute("rel")=="external")anchors[i].target="_blank";
}
function getQueryVar(obj){
	var vars=window.location.search.substring(1).split("&");
	for(var i=0;i<vars.length;i++){var pair=vars[i].split("=");if(pair[0]==obj)return pair[1];}
	return null;
}
function inArr(obj,arr){for(var i=0;i<arr.length;i++)if(obj==arr[i])return true;return false;}
function stripHTML(obj){return obj.replace(/(<([^>]+)>)/gi, "");}
function isEmpty(obj){if(obj.replace(/ /g,"").replace(/\r/g,"").replace(/\n/g,"")=="")return true;return false;}
function genEmail(user,domain,suffix,text){mailto=user+'@'+domain+'.'+suffix;text=(text)?text:mailto;document.write('<a href="mailto:'+mailto+'">'+text+'</a>');}
function getPos(el){for(var lx=0,ly=0;el!=null;lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);return{x:lx,y:ly};}
function copyVal(to,from){document.getElementById(to).value=document.getElementById(from).value;}
function innerHTML(obj,val){obj=(document.getElementById(obj))?document.getElementById(obj):obj;obj.innerHTML=val;}
function txtCt(obj,maxlimit){if(obj.value.length>maxlimit)obj.value=obj.value.substring(0,maxlimit);}
function showObj(obj){obj=(document.getElementById(obj))?document.getElementById(obj):obj;obj.style.display="block";}
function hideObj(obj){obj=(document.getElementById(obj))?document.getElementById(obj):obj;obj.style.display="none";}
function visibleObj(obj){obj=(document.getElementById(obj))?document.getElementById(obj):obj;obj.style.visibility="visible";}
function hiddenObj(obj){obj=(document.getElementById(obj))?document.getElementById(obj):obj;obj.style.visibility="hidden";}
function setzIndex(obj,val){obj=(document.getElementById(obj))?document.getElementById(obj):obj;obj.style.zIndex=val;}
function thisMovie(movieName){
	if(navigator.appName.indexOf("Microsoft")!=-1)return window[movieName];
	else return document[movieName];
}

// nav functions
function setSnavBg(obj) {
	if(obj) {
		var snav_top = document.getElementById('snav_top');
		var snav_btm = document.getElementById('snav_btm');
		var snavPos = getPos(document.getElementById('snav'));
		var objPos = getPos(obj);
		snav_top.style.top = objPos.y-snavPos.y+'px';
		snav_btm.style.top = objPos.y-snavPos.y+obj.offsetHeight+'px';
		if(obj.className.indexOf("first")==-1)visibleObj('snav_top');
		if(obj.className.indexOf("last")!=-1)visibleObj('snav_btm');
	} else { hiddenObj('snav_top'); hiddenObj('snav_btm'); }
}

// home page promos
var TimerID;
var currPromo = 1;
var nextPromo;
var initLoop = false;
var initCt = 1;
var initiated = false;

function startPromo(paused){
	initiated = true;
	if (typeof paused == 'undefined')paused=false;
	var promos = document.getElementById('promo').getElementsByTagName('h1');
	nextPromo = currPromo+1;
	if (nextPromo > promos.length) nextPromo = 1;
	if (initLoop || initCt <= promos.length) TimerID = setTimeout("showPromo("+nextPromo+",0);startPromo();",((paused==true)?0:5000));
	else togglePromo(document.getElementById('promo').getElementsByTagName('a')[promos.length]);
}
function togglePromo(obj){
	if (obj.className=='') {
		clearTimeout(TimerID);
		obj.className='on';
		initLoop = true;
	} else {
		obj.className='';
		startPromo(true);
	}
}
function showPromo(obj,stop) {
	if(!initLoop)initCt++;
	nextPromo = obj;
	
	showObj("home"+nextPromo);
	hideObj("home"+currPromo);
	
	var links = document.getElementById('promo').getElementsByTagName('a');
	if(stop) {
		clearTimeout(TimerID);
		links[links.length-1].className='on';
		initLoop = true;
	}
	links[currPromo-1].className='';
	links[nextPromo-1].className='on';
	currPromo = nextPromo;
}

function showContent(obj){
	var callout = document.getElementById('callout');
	var hdrs = callout.getElementsByTagName('h3');
	var text = callout.getElementsByTagName('p');
	for (var i=0;i<hdrs.length;i++)hdrs[i].className='';
	for (var i=0;i<text.length;i++)hideObj(text[i]);
	if(!obj)return;
	obj.parentNode.className='open';
	text = obj.parentNode.parentNode.getElementsByTagName('p');
	for (var i=0;i<text.length;i++)showObj(text[i]);
}
function showCallout() {
	showContent(document.getElementById('callout').getElementsByTagName('a')[0]);
	setTimeout("showContent()",3000);
}

// overlays
var swfsLoaded = false;
var overlaysArr = new Array();
overlaysArr[0] = "compare-cards";
overlaysArr[1] = "ultimate-rewards";
overlaysArr[2] = "view-benefits";
overlaysArr[3] = "view-benefits-preferred";
overlaysArr[4] = "get-the-card";
overlaysArr[5] = "get-the-card-preferred";

function toggleOverlay(obj) {
	// close overlays
	var objBlock;
	for (var i=0;i<overlaysArr.length;i++) {
		objBlock=(document.getElementById(overlaysArr[i])&&document.getElementById(overlaysArr[i]).style.display=='block')?1:0;
		if(objBlock&&(!obj||obj!=overlaysArr[i]))toggleOverlay(overlaysArr[i]);
	}
	if(!obj)return;
	var disp = (document.getElementById(obj).style.display=='block')?1:0;
	var footer = document.getElementById('footer');
	footer.style.top = '-40px';  /* IE 5.x-6.x Only */
	var footerPos = getPos(footer).y;
	// ultimate-rewards
	if(obj=='ultimate-rewards') {
		toggleRules();
		loadSec('ur-overview',0);
		if(!swfsLoaded)loadSwfs();
	}
	// common
	if (disp) {
		hideObj('overlay');
		hideObj(obj);
	} else {
		showObj('overlay');
		showObj(obj);
	}
	// specific
	switch (obj) {
		case 'ultimate-rewards':
		case 'compare-cards':
			// kill the flash intro
			if(!initiated&&document.getElementById('intro'))introComplete();
			if(disp) {
				document.getElementById('hdr_shadow').style.top = '74px';
				footer.style.position = 'relative';
				footer.style.top = '-40px';
				setzIndex('nav',30);
			} else {
				document.getElementById('hdr_shadow').style.top = '49px';
				setzIndex('nav',-10);
				var objHeight = document.getElementById(obj).offsetHeight+10;
				if (objHeight > footerPos) {
					footer.style.position = 'absolute';
					footer.style.top = (objHeight-74)+'px';
				}
			}
			scrollTo(0,0);
		break;
		case 'view-benefits':
		case 'view-benefits-preferred':
			if(disp) {
				hideObj('overlays_wide_top_fade');
				footer.style.position = 'relative';
				footer.style.top = '-40px';
			} else {
				showObj('overlays_wide_top_fade');
				var objHeight = document.getElementById(obj).offsetHeight+10;
				if (objHeight > footerPos) {
					footer.style.position = 'absolute';
					footer.style.top = (objHeight-74)+'px';
				}
			}
			scrollTo(0,0);
		break;
		case 'get-the-card':
		case 'get-the-card-preferred':
			if(disp) {
				setzIndex('top',30);
				setzIndex('nav',30);
				setzIndex('hdr_shadow',30);
			} else {
				setzIndex('top',-10);
				setzIndex('nav',-10);
				setzIndex('hdr_shadow',-10);
			}
		break;
	}
}
function toggleOfferOverlay(obj) {
	// close overlays
	if (!obj) {
		if(document.getElementById('offer-details_300'))hideObj('offer-details_300');
		if(document.getElementById('offer-details_500'))hideObj('offer-details_500');
		hideObj('overlay-offers');
		return;
	}	
	
	var disp = (document.getElementById(obj).style.display=='block')?1:0;
	if (disp) {
		hideObj('overlay-offers');
		hideObj(obj);
	} else {
		showObj('overlay-offers');
		showObj(obj);
	}
}

// ultimate rewards
function loadSec(obj,val) {
	toggleRules();
	var ur_nav = document.getElementById('ur-nav').getElementsByTagName('li');
	for (var i=0;i<ur_nav.length;i++) {
		if (ur_nav[i].className.indexOf("last")!=-1) ur_nav[i].className='last off';
		else ur_nav[i].className='off';
	}
	if (ur_nav[val].className.indexOf("last")!=-1) ur_nav[val].className='last on';
	else ur_nav[val].className='on';
	
	var sections = document.getElementById('ultimate-rewards').getElementsByTagName('div');
	for (var i=0;i<sections.length;i++)if(sections[i].className.indexOf("ur-content-v1")!=-1||sections[i].className.indexOf("ur-content-v2")!=-1) {
		hideObj(sections[i]);
		
	}
	showObj(obj);
	scrollTo(0,0);
}
function toggleRules(state) {
	var ur_rules = document.getElementById('ur-rules');
	var ur_rules_content = document.getElementById('ur-rules-content');
	if (state) {
		showObj(ur_rules_content);
		ur_rules.className = 'open';
	} else {
		hideObj(ur_rules_content);
		ur_rules.className = '';
	}
}

//html backup
function showSec(obj,id,limit) { //3 slides = 205, 5 slides = 95 - defined in overlay.css
	var el=document.getElementById(obj),st=el.scrollLeft,divWidth=534,goal=(id-1)*divWidth;
	var slider=document.getElementById(obj+'-swf').getElementsByTagName('div')[1];
	slider.style.left=(16+(id-1)*(16+(limit==3?205:95)))+'px';
	var clicks=slider.getElementsByTagName('a');
	clicks[0].onclick = function(){showSec(obj,(id>1)?id-1:1,limit);};
	clicks[1].onclick = function(){showSec(obj,(id<limit)?id+1:limit,limit);};
	go();
	function go() {
		if(st>goal){st=st-20;if(st>goal){el.scrollLeft=st;setTimeout(go,20);}else el.scrollLeft=goal;
		}else{st=st+20;if(st<goal){el.scrollLeft=st; setTimeout(go,20);}else el.scrollLeft=goal;}
	}
}

// ultimate rewards airfare
var airSlide = 1;
function setAirfareSlide(val) {
	var slides = document.getElementById('airfare_booking').getElementsByTagName('ul')[0].getElementsByTagName('li');
	for (var i=0;i<slides.length;i++)slides[i].className = slides[i].className.replace("on","off");
	airSlide = airSlide+val;
	slides[airSlide-1].className = slides[airSlide-1].className.replace("off","on");
	if (airSlide>1)showObj('airfare_previous');else hideObj('airfare_previous');
	if (airSlide<slides.length)showObj('airfare_next');else hideObj('airfare_next');
	document.getElementById('airfare_col_right').className="airfare_"+airSlide;
}

// ultimate rewards partners
function togglePartners(obj){
	if (obj) showObj(obj);
	else {
		var div=document.getElementById('ultimate-rewards').getElementsByTagName('div');
		for(var i=0;i<div.length;i++)if(div[i].className.indexOf("partners")!=-1)hideObj(div[i]);
	}
}

// onload events
addEvent(window, "load", externalLinks);