// Includes the following functions:
//    setReferrerTrack()
//    getParams()
//    decodePostStr(param)
//    toTwoDigits(strPass)
//    bookNowSrc(srcPass, targetForm)
//    setReferrer(srcPass)
//    redirectURL(url)
//    hideFromBiz(el)
//    showBizOnly(el)
//    addLoadEvent(func)
//    toggleElements(showEl, hideEl)
//    showElement(el)
//    hideElement(el)
//		tabState(activeTab) - content change (based on tabContent) and style change for tab navs
//		tabContent(activeTab) - show 1/hide many for content of tab navs
//		altRows(tblName)
//		getNext(elemStart) - method to traverse the dom
//		getPrev(elemStart) - method to traverse the dom
//    getUrlVars(nameOfParameter) - get value of specific URL parameters

function setReferrerTrack()
{
  return true;
}


// Add the following to the referring script block in the header:
// var params = getParams();
// Then, from within that page, you can refer to known vars in the query string with:
// params.stringName   <-- will return stringValue	
function getParams() {
   var params = new Object();
   var query = location.search.substring(1);
   var pairs = query.split("&");
   for (var i = 0; i < pairs.length; i++) {
      var pos = pairs[i].indexOf('=');
      if (pos == -1)
         return true;
      var paramName = pairs[i].substring(0,pos);
      var value = pairs[i].substring(pos+1);
      params[paramName] = value;
   }
   return params;
}

function decodePostStr(postStr) {
   return decodeURIComponent(postStr.replace(/\+/g,  " "));
}

function toTwoDigits(strPass) {
   if (strPass < 10) {
      strPass = strPass.toString();
      strPass = "0" + strPass;
   } else {
      strPass = strPass.toString();
   }
   return strPass;
}

function bookNowSrc(srcPass, targetForm) {
   setReferrer(srcPass);
   targetForm.submit();
   return true;
}

function setReferrer(srcPass) {
   var srcCode = 0;
   var params = getParams();

   if (!params.src && !srcPass) {
      return true;
   }

   if (srcPass) {
      srcCode = srcPass;
   } else {
      srcCode = params.src;
   }

   var monthArray = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
   
   var expireTime = new Date();
   var theTime = new Date();   
   //var timeStamp = theTime.toGMTString();
   
   var theYear = theTime.getUTCFullYear();
   theYear = theYear.toString();   
   theYear = theYear.substring(2,4);
   var theMonth = theTime.getUTCMonth();
   theMonth = monthArray[theMonth];
   var theDay = theTime.getUTCDate();
   theDay = toTwoDigits(theDay);
   var theHours = theTime.getUTCHours();
   theHours = toTwoDigits(theHours);
   var theMinutes = theTime.getUTCMinutes();
   theMinutes = toTwoDigits(theMinutes);
   var theSeconds = theTime.getUTCSeconds();
   theSeconds = toTwoDigits(theSeconds);
   var timeStamp = theDay + "-" + theMonth + "-" + theYear + " " + theHours + ":" + theMinutes + ":" + theSeconds  
  
   //expireTime.setTime(expireTime.getTime() + 604800000);
   expireTime.setTime(expireTime.getTime() + 2419200000);
   
   var tempReferrer = document.referrer.substr(0,4);
   tempReferrer = tempReferrer.toLowerCase();   
   
   if (tempReferrer == "http") {
      var validReferrer = document.referrer;
   } else {
      var validReferrer = "";
   }
   
   var cookieDomain;
   
   if (document.domain == "www.southwest.com" || document.domain == "southwest.com")
   {
      cookieDomain = "southwest.com";
   }
   else if (document.domain == "www.swabiz.com" || document.domain == "swabiz.com")
   {
      cookieDomain = "swabiz.com";
   }
   else
   {
      cookieDomain = document.domain;
   }
   
   var cookieName = "referrer"
   var cookieValue = "&src=" + srcCode +
                     "&url=" + validReferrer +
                     "&date=" + timeStamp;
   document.cookie = cookieName + "=" + escape(cookieValue)
                                + ";path=/"
                                + ";domain=" + cookieDomain
                                + ";expires=" + expireTime.toGMTString();
   return true;
}

function redirectURL(url) {
   location.replace(url);
   return true;
}

function redirectWithQuery(url) {
   var query = location.search.substring(1);
   var strNewUrl = url.toString();
   var redirectTo = strNewUrl + '?' + query;
   location.replace(redirectTo);         
   return true;
}

function checkRedirectMode(url) {
   // to set redirect site to maintenance mode,
   //  set maintenanceMode = true; and
   //  Feature Unavailable page will be displayed
   var maintenanceMode = false;   
   if (!maintenanceMode) {
      redirectWithQuery(url);
   } else {
      location.replace('http://www.southwest.com/feature_unavailable.html');
      return;
   }
}

function hideFromBiz(el) {   
	//wrap section to be hidden with div named el_1, el_2, etc. 
	//first div should be labeled with "_1"   
	var view;
   var name = document.domain; 
   if (name != "") { 
      var regExp = new RegExp(/biz/);
      if (regExp.test(name)) { 
   		view = "none"; 
   	} else { 
   		view = "block"; 
   	}
      var i=1;
      while (document.getElementById(el + '_' + i)) {
      	document.getElementById(el + '_' + i).style.display = view;
         i++;
      }
   }
   return;
}

function showBizOnly(ele) {      
	//wrap section to be hidden with div named ele_1, ele_2, etc. 
	//first div should be labeled with "_1"
   var view;
   var name = document.domain; 
   if (name != "") { 
      var regExp = new RegExp(/(biz)/);
      if (regExp.test(name)) { 
   		view = "block"; 
   	} else { 
   		view = "none";
   	}
      var i=1;
      while (document.getElementById(ele + '_' + i)) {
         document.getElementById(ele + '_' + i).style.display = view;
         i++;      
      }
   }   
   return;
}


// addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
function addLoadEvent(func) { 
   var oldonload = window.onload; 
   if (typeof window.onload != 'function') { 
     window.onload = func; 
   } else { 
     window.onload = function() { 
       oldonload(); 
       func(); 
     } 
   } 
}

// Display hidden elements by css class name
function displayClass(clsName, tag) {
   var elements = document.getElementsByTagName(tag);
   for (var i = (elements.length -1); i >= 0; i --) {
      if (elements[i].className == clsName) {
         elements[i].style.display = "block";
      }
   }
}

function toggleElements(showEl, hideEl) {
   var showElement = document.getElementById(showEl);
   var hideElement = document.getElementById(hideEl);
   if (showElement && hideElement) {
      showElement.style.display = 'block';
      hideElement.style.display = 'none';
   }
   return;   
}

function showElement(el) {
   if (document.getElementById(el)) {
      document.getElementById(el).style.display = 'block';
   }
   return;     
}

function hideElement(el) {
   if (document.getElementById(el)) {
      document.getElementById(el).style.display = 'none';
   }
   return;   
}


// Will show/hide ID sections according to what is listed on the array
// Must have arSections defined on page before using script
// var arSections = new Array("id1","id2","id3",..."idn");
//	tabState(activeTab): 	Changes tab state based on setting or clearing of "current" class
// 								Will need to define default and "current" styles in your CSS specs
// tabContent(activeTab):	Changes section display based on what is defined in arSections
function tabState(activeTab) {
	tabContent(activeTab);
	for ( var i=0, len=arSections.length; i<len; ++i ){
		sectionName = "nav_" + arSections[i];
		if (activeTab != arSections[i]) {
			document.getElementById(sectionName).parentNode.className = "";
		} else {
			document.getElementById(sectionName).parentNode.className = "current";
		}
	}
}
function tabContent(activeTab) {
	showElement(activeTab);
	for ( var i=0, len=arSections.length; i<len; ++i ){
		sectionName = arSections[i];
		if (activeTab != arSections[i]) {
			hideElement(sectionName);
		}
	}
}



// Will alternate row colors on data tables that are not autogenerated
function altRows(tblName) {
	var tblAlternating = document.getElementById(tblName);
	if (tblAlternating) {
		var tblRowSearch = tblAlternating.getElementsByTagName('TR');
		for (var i=0; i<tblRowSearch.length; i++) {
         var myMod = i/2;
			var testMod =  myMod%1;
         if (testMod==0) {
				tblRowSearch[i].className = "tableRowEven"
         } else {
				tblRowSearch[i].className = "tableRowOdd"
			}
		}
	}
}

// Retrieve next sibling in DOM relative to location 
function getNext(elemStart){
	elem = elemStart.nextSibling; 
	while (elem && elem.nodeType != 1) {
		elem = elem.nextSibling;
	}
	return elem;
} 

// Retrieve prev sibling in DOM relative to location 
function getPrev(elemStart){
	elem = elemStart.previousSibling; 
	while (elem && elem.nodeType != 1) {
		elem = elem.previousSibling;
	}
	return elem;
} 


// Gets value of specific URL parameters
// getUrlVars(name_of_parameter)
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}