// 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];
}

function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

// this fixes an issue with the old method, ambiguous values
// with this test document.cookie.indexOf( name + "=" );
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}




// 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]);
	}
}

// Get the Card hero image
function setHeroCookie() {
	
	var val = $('#promo h2').attr('id');
	
	// remember, these are the possible parameters for Set_Cookie:
	// name, value, expires, path, domain, secure
	if ($('body#get-card').length !== 1)
	{
		Delete_Cookie('get_card_hero', '/','dev.klein.chase.t-3.com'); //clear this cookie if you go to a new page that is not the get a card page.
		Set_Cookie('get_card_hero', val, '', '/', 'dev.klein.chase.t-3.com', '');//set the cookie for the current page's hero  

		Delete_Cookie('get_card_hero', '/','stg.klein.chase.t-3.com'); //clear this cookie if you go to a new page that is not the get a card page.
		Set_Cookie('get_card_hero', val, '', '/', 'stg.klein.chase.t-3.com', '');//set the cookie for the current page's hero  
		
		Delete_Cookie('get_card_hero', '/','chasesapphire.com'); //clear this cookie if you go to a new page that is not the get a card page.
		Set_Cookie('get_card_hero', val, '', '/', 'chasesapphire.com', '');//set the cookie for the current page's hero 
	}
	else
	{
		//do nothing if you are on the get a card page since you do not want to overwrite the cookie before you can read it and apply it	
	}
	
}

function getHeroCookie() {
	
	if ( Get_Cookie( 'get_card_hero' ) )
	{
		var theHero = Get_Cookie( 'get_card_hero' );
		
		switch(theHero)
		{
			
			case "personalized-service":
				$('#promo h2').replaceWith('<h2 id="personalized-service" title="Just call. You\'ll reach a real, live person every time.">Just call. You\'ll reach a real, live person every time.</h2>');
				break;
			case "card-benefits":
				$('#promo h2').replaceWith('<h2 id="card-benefits" title="A suite of complimentary benefits, built right in.">A suite of complimentary benefits, built right in.</h2>');
				break;
			case "chase-sapphire-preferred":
				$('#promo h2').replaceWith('<h2 title="Get all the benefits of Chase Sapphire with some exceptional additions." id="chase-sapphire-preferred">Get all the benefits of Chase Sapphire with some exceptional additions.</h2>');
				break;					
			case "blueprint":
				$('#promo h2').replaceWith('<h2 id="blueprint" title="Manage your finaces on your terms.">Manage your finaces on your terms.</h2>');
				break;
			//case "":
			//	$('#promo h2').replaceWith('');
			//	break;
			default:
				//leave the promo alone and show the Home1 version
				
		}
	}
	else
	{
		//do nothing
	}
}

// onload events
addEvent(window, "load", externalLinks);
addEvent(window, "load", setHeroCookie);
addEvent(window, "load", getHeroCookie);
