var pfp_sob = null;
var pfp_iata = null;
var pfp_cookie_name = "sob_iata";

var pfp_SID = '';
var pfp_PID = '';
var pfp_AID = '';

function initCampaignParameters(url)
{
	url = url.substring(1);
	var parameters = url.split('&');
	for(i = 0;i<parameters.length;i++)
	{
		var parameter = parameters[i];
		if(parameter.indexOf('SID')==0)
		{
			pfp_SID = parameter.split('=')[1];
		}else if(parameter.indexOf('PID')==0)
		{
			pfp_PID = parameter.split('=')[1];
		}else if(parameter.indexOf('AID')==0)
		{
			pfp_AID = parameter.split('=')[1];
		}
	}
}

function setSobIata()
{
	if(!isEmpty(sob))
	{
		//gets the sob variable from the sob variable which is set by Fatwire
		pfp_sob = sob;
	}
	if(!isEmpty(iata))
	{
		//gets the iata variable from the iata variable which is set by Fatwire
		pfp_iata = iata;
	}
	if(isEmpty(sob)||isEmpty(iata))
	{
		//try to read the sob and iata from the parameters in the URL
		getSobIataFromHref();
	}
	if(!isEmpty(pfp_sob)||!isEmpty(pfp_iata)||!isEmpty(pfp_SID)||!isEmpty(pfp_PID)||!isEmpty(pfp_AID))
	{
		//We have data that needs to be stored in a cookie
		writePFPCookie();
	}
}

function getSobIataFromHref()
{
	var url = location.search;
	if(!(url.charAt(0)=='?'))
	{
		//we do not have any parameters...lets break
		return;
	}
	url = url.substring(1);
	getSobIataFromUrl(url);
}

function writePFPCookie(){
	document.getElementById('pfp_frame').src=pfp_server+'/cs/pfp/write_cookie.jsp?businesscode='+pfp_sob+'&travAgnt='+pfp_iata+'&SID='+pfp_SID+'&AID='+pfp_AID+"&PID="+pfp_PID;
}

function getSobIataCookie()
{
	var start = document.cookie.indexOf(pfp_cookie_name+"=");
	var len = start + pfp_cookie_name.length + 1;
	if ((!start)&&(name!=document.cookie.substring(0,name.length)))
	{
		return null;
	}
	if (start==-1)
		return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) 
		end = document.cookie.length;
	getSobIataFromUrl(unescape(document.cookie.substring(len, end)));	
}

function getSobIataFromUrl(url)
{
	var parameters = url.split('&');
	for(i = 0;i<parameters.length;i++)
	{
		var parameter = parameters[i];
		if(parameter.indexOf('businesscode')==0)
		{
			pfp_sob = parameter.split('=')[1];
		}else if(parameter.indexOf('travAgnt')==0)
		{
			pfp_iata = parameter.split('=')[1];
		}
	}
}

function setSobIataOnForm(formName)
{
	if(isEmpty(pfp_iata)&&isEmpty(pfp_sob))
	{
		//try and load the sob and iata from the stored cookie
		getSobIataCookie();
	}
	var form = document.forms[formName];
	if(form!=null&&!isEmpty(pfp_iata)&&!isEmpty(pfp_sob))
	{
		if(form['sob']==null)
		{
			createHiddenField(form,'sob',pfp_sob);			
		}else
		{
			form['sob'].value = pfp_sob;
		}
		if(form['iata']==null)
		{
			createHiddenField(form,'iata',pfp_iata);
		}else
		{
			form['iata'].value = pfp_iata;
		}
	}
}

function createHiddenField(form, name,value)
{
	var element = document.createElement("input");
	element.type = "hidden";
	element.value = value;
	element.name = name;
	form.appendChild(element);
}

function isEmpty(value)
{
	if(value==null||""==value)
	{
		return true;
	}else
	{
		return false;
	}
}

/**
 * Update the href elements in links to include the language parameter
 * IN
 * language - The current language
 * keyword - The keyword to search for in a given link to see if we should add a language parameter
 */
function addLanguageParameter(language,keyword)
{
	addLanguageParameterInHref(document.getElementsByTagName("a"),language,keyword);
    addLanguageParameterInHref(document.getElementsByTagName("area"),language,keyword);
    setLanguageInForms(language);
}
/**
 * Update the href elements in the supplied array. Only links containing the keyword will have the language added
 */
function addLanguageParameterInHref(links, language,keyword)
{
	
	for(var i = 0;i<links.length;i++)
	{
		var link = links[i];
		var org = link.innerHTML;
		if(link.href.indexOf(keyword)>-1 && link.href.indexOf('language')==-1 && link.href.indexOf('javascript:')==-1)
		{
			var href=link.href;
			if(href.substr(href.length-'/'.length)=='/')
			{
				href=href.substring(0,href.length-1);
			}
			if(href.indexOf('?')==-1)
			{
				href=href+'?language='+language;	
			}else
			{
				href=href+'&language='+language;
			}
			link.href=href;
            if(org) link.innerHTML = org;
		}
	}
}

/**
 * Adds langage as a hidden field in all of the Find&Book forms on the page (if the dont have it already)
 */
function setLanguageInForms(language)
{
	var forms = document.forms;
	for(var i = 0;i<forms.length;i++)
	{
		setLanguageInForm(forms[i],language);
	}
}
/**
 * Adds the csref parameter to a form
 */
function setLanguageInForm(currentForm, language)
{
	
	var nextUrl = getElementInForm(currentForm,"next_url");
	if(nextUrl==null)
	{
		//this is not a carlson form
		return;
	}
	var languageElement = getElementInForm(currentForm,"language");
	if(languageElement==null)
	{
		//lets inject a language element in the form
		var doc = currentForm.ownerDocument;
		languageElement = doc.createElement('INPUT');
		languageElement.type='hidden';
		languageElement.name='language';
		languageElement.value=language;
		currentForm.appendChild(languageElement);
	}
}

/**
 * tries to get the language parameter from the form.
 */
function getElementInForm(currentForm,elementName)
{
	var formElements = currentForm.elements;
	for(var i = 0;i<formElements.length;i++)
	{
		var element = formElements[i];
		if(element.name==elementName)
		{
			return element;
		}
	}
}
/**
 * Returns a language supported by Carlson
 **/
function getCarlsonLanguage(language)
{
	if(language==null)
		return "en";
	if(language=="dk")
		return "da";
	else if(language=="se")
		return "sv";
	else
		return language;
}
initCampaignParameters(location.search);
setSobIata();
