var isAuthenticated = false;
var bannerImage = new Array();
var bannerIndex = 0;
var bannerLoaded = false;
var fadeTimer = new Array();
var initFade = false;
var P_HREF = new Array();
var rsHook = window.onresize;
var rangeBuffer;
var capsLock;
var bannerEngine;
var ct_Controls = {
	"en":'<a href="javascript:void(0);" class="button" onclick="submitCTForm(\'en\'); return false" style="margin-left:34px; width:36px">TRACK</a><a href="javascript:void(0);" class="button" style="margin-left:82px; width:36px" onclick="openHelp(\'ct\'); return false">HELP</a>',
	"cn":'<input type="image" src="img/btn_cn_track_off.gif" width="48" height="15" alt="" onmouseover="this.src=\'img/btn_cn_track_on.gif\';" onmouseout="this.src=\'img/btn_cn_track_off.gif\';" onclick="submitCTForm(\'cn\'); return false" style="margin-left:34px;cursor:pointer" /><input type="image" src="img/btn_cn_help_off.gif" width="48" height="15" alt="" onmouseover="this.src=\'img/btn_cn_help_on.gif\';" onmouseout="this.src=\'img/btn_cn_help_off.gif\';" style="margin-left:82px;cursor:pointer" onclick="openHelp(\'ct\'); return false" />',
	"ko":'<input type="image" src="img/btn_ko_track_off.gif" width="48" height="15" alt="" onmouseover="this.src=\'img/btn_ko_track_on.gif\';" onmouseout="this.src=\'img/btn_ko_track_off.gif\';" onclick="submitCTForm(\'ko\'); return false" style="margin-left:34px;cursor:pointer" /><input type="image" src="img/btn_ko_help_off.gif" width="48" height="15" alt="" onmouseover="this.src=\'img/btn_ko_help_on.gif\';" onmouseout="this.src=\'img/btn_ko_help_off.gif\';" style="margin-left:82px;cursor:pointer" onclick="openHelp(\'ct\'); return false" />'
};

var ct_Images = [
	"ui_CT_cn","desc_CT_cn","desc_CT_en","desc_CT_ko", "btn_cn_track_off",
	"btn_cn_help_off","btn_cn_track_on","btn_cn_help_on",
	"tab_cn_on","tab_en_off",
	"btn_ko_track_off","btn_ko_track_on","btn_ko_help_off","btn_ko_help_on"
];

window.cities = [];
window.vessels = [];
window.ports = [];

if (window.suggestions) {
	suggestions.getSuggestions(function(a) {
		window.cities = a;
		suggestions.getSuggestions(function(b) {
			window.vessels = b;
			suggestions.getSuggestions(function(c) {
				window.ports = c;
			},"/NYKSuggest/ports.nyk");
		},"/NYKSuggest/vessels.nyk");
	},"/NYKSuggest/locations.nyk");
}

document.onkeyup = function(e) {
	checkCaps(null,true,e);
}
bannerImage.push(["/img/banner_amr_turkey.gif","/help/amr_turkey_01_2012.html"]);
bannerImage.push(["/img/banner_generalrateincrease.gif","/help/gri_notice_01_2012.html"]);
bannerImage.push(["/img/banner_eo_graceperiod.gif","/help/eo_graceperiod.html"]);
bannerImage.push(["/img/banner_bunkerrule.gif","/help/modifiedbunkerapplication.html"]);
bannerImage.push(["/img/banner_edi_invoicing.gif","/help/edi_invoicing.html"]);
bannerImage.push(["/img/banner_apr11_release.gif","/help/apr02_notice.html"]);
bannerImage.push(["/img/banner_eu24_1875_2006.gif","/help/eu24_1875_2006.html"]);
bannerImage.push(["/img/banner_ads_announcement.gif","/help/asia_adriatic_service.html"]);
bannerImage.push(["/img/banner_FIRMS.gif","/help/FIRMS_codes.html"]);
bannerImage.push(["/img/banner_autoseawaybill.gif","/help/automatic_seawaybills.html"]);
bannerImage.push(["/img/banner_internetblproof.gif","/help/internet_bl_proofing.html"]);

bannerInit(10);
deferrals();

function ecolink(){
	window.open ("http://www.nyk.com/english/csr/envi/ecoship.htm"); 
}
function init() {
	if (!isAuthenticated) {
		deleteCookie("JSESSIONID", "/", ".nykline.com");
		deleteCookie("errormsg", "/", ".nykline.com");
		deleteCookie("assumedUserId", "/", ".nykline.com");
		deleteCookie("assumedRoles", "/", ".nykline.com");
		deleteCookie("assumedCn", "/", ".nykline.com");
		if (bannerEngine != "manual") cycleBanners(0,2,3);
	}
	var img = [];
	for (var c=0; c<ct_Images.length; c++) {
		img.push(new Image());
		img[img.length-1].src = "img/"+ct_Images[c]+".gif";
	}
}
window.onresize = function() {
var obj = document.getElementById('errBox');
var scroll = 0;
var w,h;
var x,y;
	if (rsHook) rsHook();
	if (obj) {
		if (document.documentElement.offsetWidth) {
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
			scroll = document.documentElement.scrollTop;
		} else if (self.innerHeight) {
			w = self.innerWidth;
			h = self.innerHeight;
			scroll = document.body.scrollTop;
		} else {
			w = document.body.clientWidth;
			h = document.body.clientHeight;
			scroll = document.body.scrollTop;
		}
		x = w / 2;
		y = h / 2;
		x -= parseInt(obj.offsetWidth / 2);
		y -= parseInt(obj.offsetHeight / 2);
		obj.style.left = x + "px";
		obj.style.top = parseInt(scroll+y) + "px";
	}
}

function deferrals() {
	if (document.forms.ctForm && document.forms.ctForm.ctReset) {
		var obj = document.getElementById('ctSearchText');
		if (document.forms.ctForm.ctReset.value == "false") {
			obj.style.background = "url(/img/desc_CT_en.gif) no-repeat top left";
		} else {
			obj.style.background = "#ffffff";
		}
	} else {
		setTimeout("deferrals();",1);
	}
}

var today = new Date();
var tomorrow;
if (window.calendar) {
	tomorrow = calendar.getFutureDate(today.getMonth(),today.getDate(),(today.getYear()>1900)?today.getYear():today.getYear()+1900,21);
} else {
	tomorrow = getFutureDate(today.getMonth(),today.getDate(),(today.getYear()>1900)?today.getYear():today.getYear()+1900,3);
}

var vs = {
	"portFromMonth":today.getMonth(),
	"portFromDay":today.getDate(),
	"portFromYear":(today.getYear()>1900)?today.getYear():today.getYear()+1900,
	"portToMonth":tomorrow.month,
	"portToDay":tomorrow.date,
	"portToYear":tomorrow.year,
	"module":null,
	"content":null,
	"tabs":[],
	"contentPrefix":'<table style="width:245px; height:160px;" border="0" cellpadding="0" cellspacing="0"><tr><td height="55" colspan="2">&nbsp;</td></tr>',
	"setTab":function(n) {
		if (isNaN(n)) return;
		setTimeout(function() {
			for (var c=0; c<vs.tabs.length; c++) {
				vs.tabs[c].src = vs.tabs[c].src.replace(/_on\./i,"_off.");
			}
		}, 50);
		setTimeout(function(){ if (vs.tabs[n]) vs.tabs[n].src = vs.tabs[n].src.replace(/_off\./i,"_on.") },50);
	},
	"addParam":function(obj,name,value) {
		if (!obj || !name) return;
		if (!value) value = "";
		obj.innerHTML += '<input type="hidden" name="'+name+'" value="'+value+'" />\n';
	},
	"setMode":function(mode) {
		if (!mode) return;
		mode = mode.toLowerCase();
		var form = document.forms.searchForm;
		var paramObj = document.getElementById('vsParams');
		if (paramObj) paramObj.innerHTML = "";
		if (mode == "route") {
			vs.setTab(0);
			var buffer = '<tr><td class="formTitles"><span style="margin-left:40px">from city</span></td></tr>';
				buffer += '<tr><td align="center"><input id="fromCity" name="fromCity" type="text" class="formObjects" size="28" maxlength="75" onblur="suggestions.clearResults();" onkeydown="if(event.keyCode==38||event.keyCode==40)suggestions.suggest(event,this,window.cities); if(event.keyCode==13)return false;" onkeyup="if(event.keyCode!=38&&event.keyCode!=40)suggestions.suggest(event,this,window.cities,null,null,null,function(){ schedFormOnSubmit(\'route\') });changePosition(this);" autocomplete="off" /></td></tr>';
				buffer += '<tr><td class="formTitles"><span style="margin-left:40px">to city</span></td></tr>';
				buffer += '<tr><td align="center"><input name="toCity" id="toCity" type="text" class="formObjects" size="28" maxlength="75" onblur="suggestions.clearResults();" onkeydown="if(event.keyCode==38||event.keyCode==40)suggestions.suggest(event,this,window.cities); if(event.keyCode==13)return false;" onkeyup="if(event.keyCode!=38&&event.keyCode!=40)suggestions.suggest(event,this,window.cities,null,null,null,function(){ schedFormOnSubmit(\'route\') });changePosition(this);" autocomplete="off" /></td></tr>';
				buffer += '<tr><td height="24"><a href="javascript:void(0);" onclick="schedFormOnSubmit(\'route\'); return false" name="ViewSchedulesButton" class="button" style="margin-left:38px;">VIEW</a><a href="javascript:void(0);" onclick="schedOnAdvClick(); return false;" class="button" style="margin:0px 0px 0px 12px;">ADVANCED</a><a href="javascript:void(0);" onclick="openHelp(\'vs\');" class="button" style="margin-left:11px">HELP</a></td></tr></table>';
			vs.addParam(paramObj,"fromDateDay","");
			vs.addParam(paramObj,"fromDateMonth","");
			vs.addParam(paramObj,"fromDateYear","");
			vs.addParam(paramObj,"toDateDay","");
			vs.addParam(paramObj,"toDateMonth","");
			vs.addParam(paramObj,"toDateYear","");
			vs.addParam(paramObj,"noOfWeeks","3");
			vs.addParam(paramObj,"sortBy","DEPARTURE_DATE");
			vs.addParam(paramObj,"advancedSearchFromHomepage","");
			vs.content.innerHTML = vs.contentPrefix + buffer;
			if (form) form.action = "vesselschedules/applicationEnableCheck.nyk";
		} else if (mode == "vessel") {
			vs.setTab(1);
			var buffer = '<tr><td class="formTitles"><span style="margin-left:40px">vessel name</span></td></tr>';
				buffer += '<tr valign="top"><td align="center" height="53"><input id="vesselName" name="vesselName" type="text" class="formObjects" size="28" maxlength="75" onblur="suggestions.clearResults();" onkeydown="if(event.keyCode==38||event.keyCode==40)suggestions.suggest(event,this,window.vessels); if(event.keyCode==13)return false;" onkeyup="if(event.keyCode!=38&&event.keyCode!=40)suggestions.suggest(event,this,window.vessels,null,null,null,function(){ schedFormOnSubmit(\'vessel\') });changePosition(this);" autocomplete="off" /></td></tr>';
				buffer += '<tr><td height="24" align="center"><a href="javascript:void(0);" onclick="schedFormOnSubmit(\'vessel\'); return false" class="button">SEARCH</a></td></tr></table>';
			vs.content.innerHTML = vs.contentPrefix + buffer;
			if (form) form.action = "vesselsearch/displaySchedule.nyk";
		} else if (mode == "port") {
			vs.setTab(2);
			var buffer = '<tr><td class="formTitles" colspan="2"><span style="margin-left:40px">port name</span></td></tr>';
				buffer += '<tr><td  align="center" colspan="2"><input id="portName" name="portName" type="text" class="formObjects" size="28" maxlength="75" onblur="suggestions.clearResults();" onkeydown="if(event.keyCode==38||event.keyCode==40)suggestions.suggest(event,this,window.ports); if(event.keyCode==13)return false;" onkeyup="if(event.keyCode!=38&&event.keyCode!=40)suggestions.suggest(event,this,window.ports,null,null,null,function(){ schedFormOnSubmit(\'port\') });changePosition(this);" autocomplete="off" /></td></tr>';
				buffer += '<tr><td width="50%" class="formTitles" style="padding-left:40px">from date</td><td align="left" width="50%" class="formTitles" style="padding-left:5px">to date</td></tr>';
				buffer += '<tr valign="top"><td width="50%"  style="padding-left:40px" class="date"><a href="javascript:void(0);" onclick="calendar.show(this,null,null,vs.portFromMonth,vs.portFromDay,vs.portFromYear,updateFromDate);"><img src="/img/icon_Calendar.gif" width="16" height="15" align="absmiddle" border="0" onabort="this.src=this.src" alt="" /></a> <span id="portFromDate"></span></td><td width="50%" class="date" style="padding-left:5px"><a href="javascript:void(0);" onclick="calendar.show(this,null,null,vs.portToMonth,vs.portToDay,vs.portToYear,updateToDate);"><img src="/img/icon_Calendar.gif" width="16" height="15" align="absmiddle" border="0" onabort="this.src=this.src" alt="" /></a> <span id="portToDate"></span></td></tr>';
				buffer += '<tr><td height="24" align="center" colspan="2"><a href="javascript:void(0);" onclick="schedFormOnSubmit(\'port\'); return false" class="button">SEARCH</a></td></tr></table>';
			vs.addParam(paramObj,"fromDateDay",vs.portFromDay);
			vs.addParam(paramObj,"fromDateMonth",vs.portFromMonth);
			vs.addParam(paramObj,"fromDateYear",vs.portFromYear);
			vs.addParam(paramObj,"toDateDay",vs.portToDay);
			vs.addParam(paramObj,"toDateMonth",vs.portToMonth);
			vs.addParam(paramObj,"toDateYear",vs.portToYear);
			vs.content.innerHTML = vs.contentPrefix + buffer;
			updateFromDate(vs.portFromMonth,vs.portFromDay,vs.portFromYear);
			updateToDate(vs.portToMonth,vs.portToDay,vs.portToYear);
			if (form) form.action = "portschedules/displaySchedule.nyk";
		}
	},
	"init":function() {
		var obj = document.getElementById('vsParams');
		if (!obj) {
			setTimeout("vs.init();",10);
			return;
		}
		obj = document.getElementById('vsObj');
		vs.module = obj;
		var content = document.getElementById('vsContent');
		if (content) vs.content = content;
		var img = obj.getElementsByTagName('img');
		for (var c=0; c<img.length; c++) {
			if (img[c].className == "tab") vs.tabs.push(img[c]);
		}
		var imgs = ["tab_route_off","tab_vessel_on","tab_port_on","icon_Calendar","icon_Close"];
		var cache = [];
		for (var c=0; c<imgs.length; c++) {
			cache[c] = new Image();
			cache[c].src = "/img/" + imgs[c] + ".gif";
		}
	}
};
vs.init();
function loadMyNyk() {
	var myNykRequest = new Ajax();

	myNykRequest.onComplete = function(responseText, responseXML) {
		var leftColumn = document.getElementById("leftColumn");
		if (leftColumn) {
			leftColumn.style.visibility = "visible";
			if ((responseText.length >= 16) && (responseText.substring(0,16).indexOf("id=\"myNyk\"") != -1)) {
				leftColumn.innerHTML = responseText;
				var myNykWelcome = document.getElementById("myNykWelcome");
					if (myNykWelcome) {
						var assumedCN = readCookie("assumedCn");
						var assumedUserId = readCookie("assumedUserId");
						if (((assumedUserId != null) && (assumedUserId != "")) && ((assumedCN != null) && (assumedCN != ""))) {
							myNykWelcome.innerHTML = myNykWelcome.innerHTML.replace("{cn}", unescape(assumedCN));
						} else {
							myNykWelcome.innerHTML = myNykWelcome.innerHTML.replace("{cn}", unescape(readCookie("cn")));
						}
					}
				var nykroles = readCookie("nykroles");
					if ((nykroles != null) && ((nykroles.indexOf("adm") != -1) || (nykroles.indexOf("emp") != -1))) {
						var internalButtons = document.getElementById("internalButtons");
						if (internalButtons) internalButtons.style.visibility = "visible";
					}
				loadMyNykReport();
			} else {
				var request = new Ajax();
				request.onComplete = function(text){ leftColumn.innerHTML = text };
				request.submit("GET","/logon.html",null);
			}
		}
	}
	
	myNykRequest.submit("GET", "/mynyk.html?I1l="+(new Date()).getTime(), null);
}

function loadMyNykReport() {
var myNykReport = document.getElementById("myNykReport");
if (!myNykReport) return;
var myNykRequest = new Ajax();

	myNykRequest.onComplete = function(responseText, responseXML) {
		myNykReport.style.textAlign = "left";
		myNykReport.innerHTML = responseText;
	}

	myNykReport.style.textAlign = "center";
	myNykReport.innerHTML = "<img src=\"/img/ajax-loader.gif\" width=\"31\" height=\"31\" border=\"0\" alt=\"\" style=\"margin-top:140px\" />";
	myNykRequest.submit("GET", "/myNyk/generateMyNyk.nyk?I1l="+(new Date()).getTime(), null);

	var requestTimer = setTimeout(function() {
		if (myNykRequest.getStatus() != 200) {
			myNykRequest.abort();
			myNykRequest.submit("GET", "/redirect/blank.html", null);
		}
	}, 120000);
}

function validateLogin() {
var obj = document.forms.loginForm;
	obj.userid.value = obj.userid.value.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
	obj.password.value = obj.password.value.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");

	var uid = obj.userid.value;
	var pwd = obj.password.value;

	deleteCookie("appID", "/", ".nykline.com");
	deleteCookie("appID", "/");

	if ((uid == "") || (pwd == "")) {
		if ((uid == "") && (pwd == "")) {
			alert("Please enter your user ID and password.");
			obj.userid.focus();
		} else if (uid == "") {
			alert("Please enter your user ID.");
			obj.userid.focus();
		} else {
			alert("Please enter your password.");
			obj.password.focus();
		}
	} else {
		if (window.enableCache) window.enableCache();
		obj.action = getPrivatePegasusHost() + '/login/backtohome';
		obj.userid.value = obj.userid.value.toUpperCase();
		obj.submit();
	}
}

function btnOnMouseOver(source) {
	source.className = "activeButtonHover";
}

function btnOnMouseOut(source) {
	source.className = "activeButton";
}

function setLang(id) {
if (!id) return;
var obj = document.getElementById('ctObj');
if (!obj) return;
var txt = obj.getElementsByTagName('textarea');
var btn = obj.getElementsByTagName('input');
var img = obj.getElementsByTagName('img');
var ctControl = document.getElementById('ctControlsRow');
var tabEN,tabCN;
	id = id.toLowerCase();
	for (var c=0; c<img.length; c++) {
		if (img[c].src.match(/tab_en_/)) {
			tabEN = img[c];
		} else if (img[c].src.match(/tab_cn_/)) {
			tabCN = img[c];
		} else if (img[c].src.match(/tab_ko_/)) {
			tabKO = img[c];
		}
	}
	setTimeout(function() {
		tabEN.src = "img/"+((id=="en")?"tab_en_on.gif":"tab_en_off.gif");
	},50);
	setTimeout(function() {
		tabCN.src = "img/"+((id=="cn")?"tab_cn_on.gif":"tab_cn_off.gif");
	},50);
	setTimeout(function() {
		tabKO.src = "img/"+((id=="ko")?"tab_ko_on.gif":"tab_ko_off.gif");
	},50);
	if (txt[0].form.ctReset.value == "true") {
		txt[0].style.background = "#ffffff";
	} else {
		txt[0].value = "";
		txt[0].style.background = "url(img/desc_CT_"+id+".gif) no-repeat top left";
	}
	setTimeout(function(){ if (ctControl) ctControl.innerHTML=ct_Controls[id] },10);
	setTimeout(function(){ obj.style.background = "url(img/ui_CT"+((id!="en")?"_"+id:"")+".gif) no-repeat top left" },10);
}

function submitCTForm(id) {
var form = document.forms.ctForm;
if (!form) return;
var txt = document.getElementById('ctSearchText');
if (!txt) return;
if (!id) id = "en";
var params = "lang=en&country=USA";
id = id.toLowerCase();
	if (id == "cn") {
		params = "lang=zh&country=CHN";
	}
	else if (id == "ko") {
		params = "lang=ko&country=KOR";
	}

	if (window.enableCache) window.enableCache();
	form.action = "/ct/"+((txt.value=="")?"searchForm.nyk":"containerSearch.nyk")+"?"+params;
	form.submit();
}

function ctOnFocus(source) {
	if (source.form.ctReset.value != "true") {
		source.form.ctReset.value = "true";
		source.value = "";
	}
	source.style.background = "#ffffff";
}

function onChangeTextArea(obj, maxlength) {
	if (obj.value.length > maxlength) {
		obj.value = obj.value.substring(0, maxlength);
		return false;
	}
return true;
}

function onKeyUpTextArea(obj, maxlength, event) {
	if ((event) && ((event.keyCode==0) || (event.keyCode==8) || (event.keyCode>=35 && event.keyCode<=40) || event.keyCode==46)) {
		return true;
	}
	if (obj.value.length > maxlength) {
		obj.value = obj.value.substring(0, maxlength);
		return false;
	}

return true;
}

function getFutureDate(month,day,year,weeks) {
if (isNaN(month) || isNaN(day) || isNaN(year)) return null;
if (isNaN(weeks)) weeks = 0;
var toDate = new Date(year,month,day+(weeks*7));
var year = toDate.getYear();
	var buffer = {
		"month":toDate.getMonth(),
		"date":toDate.getDate(),
		"year":(year<1900)?year+1900:year
	};
return buffer;
}

function updateFromDate(month,day,year) {
var obj = document.getElementById('portFromDate');
if (!obj || isNaN(month) || isNaN(day) || isNaN(year)) return;
	vs.portFromMonth = month;
	vs.portFromDay = day;
	vs.portFromYear = year;
	var form = document.forms.searchForm;
	if (form) {
		form.fromDateMonth.value = month;
		form.fromDateDay.value = day;
		form.fromDateYear.value = year;
	}
	obj.innerHTML = calendar.months[month] + " " + day + ", " + year;
}

function updateToDate(month,day,year) {
var obj = document.getElementById('portToDate');
if (!obj || isNaN(month) || isNaN(day) || isNaN(year)) return;
	vs.portToMonth = month;
	vs.portToDay = day;
	vs.portToYear = year;
	var form = document.forms.searchForm;
	if (form) {
		form.toDateMonth.value = month;
		form.toDateDay.value = day;
		form.toDateYear.value = year;
	}
	obj.innerHTML = calendar.months[month] + " " + day + ", " + year;
}

function schedFormOnSubmit(mode) {
var vsForm = document.forms.searchForm;
var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
	if (mode == "route") {
		var date = new Date();
		var month = date.getMonth();
		var day = date.getDate();
		var year = (date.getYear()<1900)?date.getYear()+1900:date.getYear();
		vsForm.fromDateDay.value = day;
		vsForm.fromDateMonth.value = month;
		vsForm.fromDateYear.value = year;
		var toDate = getFutureDate(month,day,year,3);
		vsForm.toDateDay.value = toDate.date;
		vsForm.toDateMonth.value = toDate.month;
		vsForm.toDateYear.value = toDate.year;
		vsForm.noOfWeeks.value = "3";
		vsForm.sortBy.value = "DEPARTURE_DATE";
		vsForm.advancedSearchFromHomepage.value = "";
	}
	if (window.enableCache) window.enableCache();
	vsForm.submit();
}

function schedOnAdvClick() {
var vsForm = document.forms.searchForm;
	vsForm.advancedSearchFromHomepage.value = "ADVANCED";
	vsForm.fromCity.value = "";
	vsForm.toCity.value = "";
	vsForm.action = "/vesselschedules/loadVesselSchedulesSearch.nyk";
	if (window.enableCache) window.enableCache();
	vsForm.submit();
}

function disableLinks(n) {
	for (var c=1; c<=6; c++) {
		var link = document.getElementById("reports_"+c);
		if (link && link.href) {
			P_HREF[c] = link.href;
			link.className = "disabled";
            link.removeAttribute("href");
		}
	}
}

function enableLinks() {
	for (var c=1; c<=6; c++) {
		var link = document.getElementById("reports_"+c);
		if (link) {
			link.setAttribute("href",P_HREF[c]);
			link.className = "myNyk";
		}
	}
}

function downloadCrReport(url,caller) {
	disableLinks();
	var crRequest = new Ajax(caller);
		if (initFade == false) {
			initFade = true;
			fadeElement(caller,0,1,10);
		}
	crRequest.onComplete = function(responseText,responseXML,responseTarget) {
		if (responseText == "READY") {
			initFade = false;
			fadeElement(responseTarget);
			var dlFrame = document.getElementById('dlFrame');
			if (dlFrame) dlFrame.document.location = url + "&action=download";
			enableLinks();
		} else if (responseText == "NOTREADY") {
			setTimeout("downloadCrReport(\""+url+"\",\""+responseTarget+"\")", 5000);
		} else {
			initFade = false;
			fadeElement(responseTarget);
			showErrMsg("An error occurred while downloading the report.\n\nPlease try again shortly.");
			enableLinks();
		}
	}
	crRequest.submit("POST", url, null);
}

function createCookie(name, value, expires, path, domain, secure) {
	document.cookie = name+"="+value+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+path:"")+((domain)?"; domain="+domain : "")+((secure)?"; secure":"");
}

function deleteCookie(name, path, domain) {
	var exp = new Date();
	exp.setTime(exp.getTime() - 1);
	document.cookie = name + "="+((path) ? "; path=" + path : "")+((domain) ? "; domain=" + domain : "")+"; expires="+exp.toGMTString();
}

function setAppID(id) {
var userid = readCookie("nykuid");
	if ((userid == null) || (userid == "") || (userid == "OblixAnonymous")) {
		createCookie("appID",id);
	}
}

function bannerInit(index) {
var img = [];
var obj = document.getElementById('bannerImg');
var lnk = document.getElementById('bannerLink');
	bannerIndex = index;
	for (var c=0; c<bannerImage.length; c++) {
		img.push(new Image());
		img[c].src = bannerImage[c][0];
	}
	if (obj) {
		obj.src = bannerImage[index][0];
		if (lnk) {
			
			lnk.href = bannerImage[index][1];
			if (bannerImage[index].length > 2) {
				lnk.target = bannerImage[index][2];
			} else {
				lnk.target = "_self";
			}
		}
	}
}
function cycleBanners(index,cycle,delay,manual) {
var obj = document.getElementById('bannerImg');
var lnk = document.getElementById('bannerLink');
var IE = (obj && obj.filters) ? true : false;
if (isNaN(delay)) delay = 0;
	if (manual) {
		clearTimeout(bannerEngine);
		bannerEngine = "manual";
		if (IE) {
			obj.filters.alpha.opacity = 100;
		} else {
			obj.style.MozOpacity = 1;
		}
	}
	if (obj && lnk) {
		if (!cycle) {
			if (index < 0) index = bannerImage.length-1;
			if (index > bannerImage.length-1) index = 0;
			bannerLoaded = false;
			obj.src = bannerImage[index][0];
			lnk.href = bannerImage[index][1];
				if (bannerImage[index].length > 2) {
					lnk.target = bannerImage[index][2];
				} else {
					lnk.target = "_self";
				}
			bannerIndex = index;
		} else {
			var IE = (obj.filters) ? true : false;
				if (IE) {
					var bannerAlpha = obj.filters.alpha.opacity;
				} else {
					var bannerAlpha = obj.style.MozOpacity*100;
				}
			if (cycle > 0) {
				if (bannerAlpha == 0) {
					bannerLoaded = false;
					obj.src = bannerImage[index][0];
					lnk.href = bannerImage[index][1];
						if (bannerImage[index].length > 2) {
							lnk.target = bannerImage[index][2];
						} else {
							lnk.target = "_self";
						}
					bannerIndex = index;
					index++;
					if (index >= bannerImage.length) {
						cycle--;
						index = (cycle > 0) ? 0 : index-1;
					}
				}
				if (cycle > 0) {
					if (bannerAlpha == 100) {
						bannerEngine = setTimeout(function(){fadeBanner(0,index,cycle,delay)},delay*1000);
					} else {
						fadeBanner(1,index,cycle,delay);
					}
				} else {
					fadeBanner(1,index,cycle,delay);
				}
			}
		}
	} else {
		bannerEngine = setTimeout(function(){ cycleBanners(index,cycle,delay,manual) },1);
	}
}

function fadeBanner(dir,index,cycle,delay) {
var obj = document.getElementById('bannerImg');
var IE = (obj.filters) ? true : false;
var opacity;
	if (IE) {
		opacity = obj.filters.alpha.opacity;
	} else {
		opacity = obj.style.MozOpacity*100;
	}
	if (obj) {
		if (dir == 1) {
			if (opacity < 100) {
				if (bannerLoaded == true) {
					opacity++;
					if (IE) {
						obj.filters.alpha.opacity = opacity;
					} else {
						obj.style.MozOpacity = opacity/100;
					}
				}
				if (bannerEngine != "manual") setTimeout(function(){fadeBanner(dir,index,cycle,delay)},10);
			} else {
				if (bannerEngine != "manual") cycleBanners(index,cycle,delay);
			}
		} else {
			if (opacity > 0) {
				opacity--;
				if (IE) {
					obj.filters.alpha.opacity = opacity;
				} else {
					obj.style.MozOpacity = opacity/100;
				}
				if (bannerEngine != "manual") setTimeout(function(){fadeBanner(dir,index,cycle,delay)},10);
			} else {
				if (bannerEngine != "manual") cycleBanners(index,cycle,delay);
			}
		}
	}
}

function fadeElement(obj,step,dir,delay) {
var target = document.getElementById(obj);
	if (target) {
		if (isNaN(step) || initFade==false) {
			clearTimeout(fadeTimer[obj]);
			target.style.visibility = "hidden";
		} else {
			if (target.style.visibility != "visible") target.style.visibility = "visible";
			if (dir == 0 && step <= 0) dir = 1;
			if (dir == 1 && step >= 100) dir = 0;
			target.style.filter = "alpha(opacity="+step+");";
			if (!target.filters) target.style.MozOpacity = step/100;
			(dir == 0) ? step-- : step++;
			clearTimeout(fadeTimer[obj]);
			fadeTimer[obj] = setTimeout("fadeElement('"+obj+"',"+step+","+dir+","+delay+");",delay);
		}
	}
}

function showErrMsg(msg,title) {
var obj = document.getElementById('errBox');
var lens = document.getElementById('errLens');
var scroll = 0;
var w,h;
var x,y;
	if (obj && lens) {
		if (!obj.style.background) obj.style.background = "url(/img/ui_Error.gif) no-repeat";
			if (document.documentElement.offsetWidth) {
				document.documentElement.style.overflow = "hidden";
				w = document.documentElement.clientWidth;
				h = document.documentElement.clientHeight;
				scroll = document.documentElement.scrollTop;
			} else if (self.innerHeight) {
				w = self.innerWidth;
				h = self.innerHeight;
				scroll = document.body.scrollTop;
			} else {
				w = document.body.clientWidth;
				h = document.body.clientHeight;
				scroll = document.body.scrollTop;
			}
		x = w / 2;
		y = h / 2;
		x -= parseInt(obj.offsetWidth / 2);
		y -= parseInt(obj.offsetHeight / 2);
		if (!title) title = "Error";
		document.getElementById('errHandle').innerHTML = title;
		if (msg.length > 390) msg = msg.substr(0,390) + "...";
		msg = msg.replace(/\n/g,"<br/>");
		document.getElementById('errMessage').innerHTML = msg;
		obj.style.left = x + "px";
		obj.style.top = parseInt(scroll+y) + "px";
		lens.style.width = parseInt(screen.availWidth) + "px";
		lens.style.height = parseInt(screen.availHeight) + "px";
		lens.style.visibility = "visible";
		obj.style.visibility = "visible";
	} else {
		alert(msg);
	}
}

function closeErrMsg() {
var obj = document.getElementById('errBox');
var lens = document.getElementById('errLens');
	if (document.documentElement) {
		document.documentElement.style.overflow = "auto";
	} else {
		document.body.style.overflow = "auto";
	}
	if (obj) obj.style.visibility = "hidden";
	if (lens) {
		lens.style.visibility = "hidden";
		lens.style.height = "0px";
		lens.style.width = "0px";
		if (parseInt(screen.availWidth) <= 1024) {
			document.body.style.width = parseInt(screen.availWidth-21) + "px";
		} else {
			document.body.style.width = "auto";
		}
	}
}

function checkCaps(obj,silent,e) {

	var passObj  = document.getElementById('password');
	if(passObj != null){
		document.getElementById('errBalloon').style.left = findPosX(passObj)-10 +'px';
	}
	
	if (navigator.userAgent.indexOf('Firefox')>-1) event = e;
	if (!obj) {
		if (!event.ctrlKey && event.keyCode==20 && capsLock!=null) {
			if (capsLock == true) {
				setCaps(silent,false);
			} else {
				setCaps(silent,true);
			}
		}
	return;
	}
	obj.onpaste = function() {
		setTimeout(function(){rangeBuffer=obj.value},100);
	}
	event.cancelBubble = true;
	var buffer;
	if (rangeBuffer) {
		for (var c=0; c<obj.value.length; c++) {
			if (obj.value.substr(c,1) != rangeBuffer.substr(c,1)) {
				buffer = obj.value.substr(c,1);
				break;
			}
		}
	} else if (obj.value.length == 1) {
		buffer = obj.value;
	}
	rangeBuffer = obj.value;
	if (event.ctrlKey) return;
	if (event.keyCode >= 65 && event.keyCode <= 90) {
		if (!buffer) return;
		if (!event.shiftKey) {
			if (buffer.match(/[A-Z]/)) {
				setCaps(silent,true);
			} else {
				setCaps(silent,false);
			}
		} else {
			if (buffer.match(/[a-z]/)) {
				setCaps(silent,true);
			} else {
				setCaps(silent,false);
			}		
		}
	} else if (event.keyCode == 20) {
		if (capsLock == true) {
			setCaps(silent,false);
		} else if (capsLock == false) {
			setCaps(silent,true);
		}
	} else {
		setCaps(silent,capsLock);
	}
}

function setCaps(silent,state) {
var balloon = document.getElementById('errBalloon');
var oState = capsLock;
capsLock = state;
if (!balloon) return;
	if (capsLock) {
		if (balloon.style.visibility!="visible" && !silent) {
			if (balloon.filters) balloon.filters.alpha.opacity = 0;
			balloon.style.MozOpacity = 0;
			balloon.style.visibility = "visible";
			fade(balloon,0,100,3.5);
		}
	} else {
		closeBalloon();
	}
}

function closeBalloon() {
var balloon = document.getElementById('errBalloon');
if (balloon) if (balloon.style.visibility != "hidden") balloon.style.visibility = "hidden";
}

function fade(obj,startOpacity,endOpacity,speed) {
if (!obj || isNaN(startOpacity) || isNaN(endOpacity)) return;
if (!speed) speed = 4;
	if (startOpacity == endOpacity) {
		if (obj.filters) {
			obj.filters.alpha.opacity = endOpacity;
		} else {
			obj.style.MozOpacity = endOpacity/100;
		}
		return;
	}
		if (obj.filters) {
			obj.filters.alpha.opacity = startOpacity;
		} else {
			obj.style.MozOpacity = startOpacity/100;
		}
		if (startOpacity < endOpacity) {
			startOpacity += speed;
			if (startOpacity > endOpacity) startOpacity = endOpacity;
		} else if (startOpacity > endOpacity) {
			startOpacity -= speed;
			if (startOpacity < endOpacity) startOpacity = endOpacity;
		}
	setTimeout(function(){fade(obj,startOpacity,endOpacity,speed)},1);
}
function openHelp(app) {
if (!app) return;
var width = 800;
var height = 575;
var chromeWidth = 10;
var chromeHeight = 50;
var x = (screen.width/2) - ((width+chromeWidth)/2);
var y = (screen.height/2) - ((height+chromeHeight)/2);
var url = "";
	app = app.toLowerCase();
		if (app == "ct") {
			url = "/help/cont_track/about.html";
		} else if (app == "vs") {
			url = "/help/vessel_schedules/highlights.html";
		}
	window.helpHWND = window.open(url,'Help','menubar=no,location=no,resizable=no,scrollbars=yes,status=yes,top='+y+',left='+x+',width='+width+',height='+height);
	window.helpHWND.focus();
}
window.enableCache = function() {
	try { document.execCommand("BackgroundImageCache", false, true) } catch(e) {}
}

function findPosX(obj){
  var curleft = 0;
  if(obj.offsetParent)
      while(1) 
      {
        curleft += obj.offsetLeft;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.x)
      curleft += obj.x;
  return curleft;
}

window.onresize = function() {
	var passObj  = document.getElementById('password');
	if(passObj != null ){
		document.getElementById('errBalloon').style.left = findPosX(passObj)-10 +'px';
	}
	changePostionLoop();
}

function changePostionLoop(){
	var toCityObj = document.getElementById('toCity');
	var vesselNameObj = document.getElementById('vesselName');
	var portNameObj = document.getElementById('portName');
	var passObj  = document.getElementById('password');
	if(toCityObj !=null){
		changePosition(toCityObj);
	}
	else if(vesselNameObj !=null){
		changePosition(vesselNameObj);
	}
	else if(portNameObj !=null){
		changePosition(portNameObj);
	}
}

function changePosition(obj){
	 if(obj!= null){
		var newLeft=findPosX(obj);
	 	document.getElementById('suggestions').style.left =newLeft+'px';
		document.getElementById('suggestCrutch').style.left = newLeft+'px';
	 }
}

