var dtCh= "/";
var minYear=1900;
var maxYear=2010;

function isInteger(s)
	{
	var i;
    for (i = 0; i < s.length; i++)
		{
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
	    }
    	return true;
	}

function stripCharsInBag(s, bag)
	{
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++)
		{   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}

function daysInFebruary (year)
	{
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}
	
function DaysArray(n) 
	{
	for (var i = 1; i <= n; i++) 
		{
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
	   } 
	return this
	}

function isDate(dtStr)
	{
	/*if(dtStr.length==0)
		{
		return true;
		}
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1)
		{
		alert("The date format should be : mm/dd/yyyy");
		return false;
		}
	if (month<1 || month>12)
		{
		alert("Please enter a valid month");
		return false;
		}
	if (day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
		{
		alert("Please enter a valid day");
		return false;
		}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
		{
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear);
		return false;
		}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
		{
		alert("Please enter a valid date");
		return false;
		}*/
	return true;
	}

function ValidateDate(frm)
	{
	//quick check to see if start date preceeds end date
	schedStart = new Date(frm.startdate.value)
	schedEnd = new Date(frm.enddate.value)
	
	//validate against isDate function -- see above
	if (isDate(frm.startdate.value)==false)
		{
		frm.startdate.select();
		frm.startdate.focus();
		return false;
		}
	if (isDate(frm.enddate.value)==false)
		{
		frm.enddate.select();
		frm.enddate.focus();
		return false;
		}
		
	if(schedStart > schedEnd)
		{
		alert("Please make sure the start date is prior to the end date.")
		return false;
		}
	}

function invalidChars(formElement)
	{
	//var invalidChars = '\\/:*?"<>|()!@#$%^&.'
	var invalidChars = ':"*?"<>|@#$%^&'
	
	for (i=0; i<invalidChars.length; i++) 
		{
		badChars = invalidChars.charAt(i)
		if(formElement.indexOf(badChars,0) > -1)
			{
			alert('Please do not enter the following characters:\n\n'+invalidChars+'\n\nPlease revise.')
			return false;
			}
		}
	}

function CheckRegister()
	{
	var frm = document.register;
	var forgot = "";
	var approval=false;
	
	for (var i=0;i<frm.emailformat.length;i++)
			if(frm.emailformat[i].checked)
				approval=true;	
	
	if(frm.firstname.value==0)	{forgot = forgot + " First Name\n"}
	if(frm.lastname.value==0)	{forgot = forgot + " Last Name\n"}
	if(frm.email.value==0)		{forgot = forgot + " Email\n"}
	if(frm.emailretype.value==0){forgot = forgot + " Retype Email\n"}
	if(!approval) 				{forgot = forgot + " Email Format\n"}
	if(frm.dayphone.value==0)	{forgot = forgot + " Daytime Phone\n"}
	if(frm.co.value==0)			{forgot = forgot + " Company Name\n"}
	if(frm.co_address.value==0)	{forgot = forgot + " Company Address\n"}
	if(frm.co_city.value==0)	{forgot = forgot + " Company City\n"}	
	if((ZipRequiredForCountry(frm.co_country.value))&&(frm.co_state.value==0))	
		{
		forgot = forgot + " Company State\n"
		}
	if((ZipRequiredForCountry(frm.co_country.value))&&(frm.co_zip.value==0))	
		{
		forgot = forgot + " Company ZIP/Postal Code\n"
		}
			
	if(frm.co_country.value==0)	{forgot = forgot + " Company Country\n"}
	if(frm.co_ph.value==0)		{forgot = forgot + " Company Phone\n"}
	if(document.register.terms.checked==false){forgot = forgot + " Accept Terms and Conditions\n"}

	if(forgot != "")
		{
		alert("Please fill in the following field(s) before registering:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	else
		{
		if(frm.email.value != frm.emailretype.value)
			{
			alert("Your e-mail entries do not match. Please check for accuracy and try again.");
			frm.email.select();
			return false;
			}
		else
			{
			document.register.co.disabled = false;
			}
		}
	}
	
function EditUser()
	{
	var frm = document.edituser;
	var forgot = "";
	if(frm.firstname.value==0)	{forgot = forgot + " First Name\n"}
	if(frm.lastname.value==0)	{forgot = forgot + " Last Name\n"}
	if(frm.email.value==0)		{forgot = forgot + " Email\n"}
	if(frm.emailformat.value==0){forgot = forgot + " Email Format\n"}
	if(frm.dayphone.value==0)	{forgot = forgot + " Daytime Phone\n"}
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	}

function AddGeneralUser()
	{
	var frm = document.adduser;
	var forgot = "";
	if(frm.firstname.value==0)		{forgot = forgot + " First Name\n"}
	if(frm.lastname.value==0)		{forgot = forgot + " Last Name\n"}
	if(frm.email.value==0)			{forgot = forgot + " Email\n"}
	if(frm.emailformat.value==0)	{forgot = forgot + " Email Format\n"}
	if(frm.dayphone.value==0)		{forgot = forgot + " Daytime Phone\n"}
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	}
	
function CheckActivity()
	{
	var str = document.schedule.startdate.value
	var end = document.schedule.enddate.value
	var forgot = "";
	
	if(str.length==0)		{forgot = forgot + " Start Date\n"}
	if(end.length==0)		{forgot = forgot + " End Date\n"}
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	else
		{	
	if (isDate(str)==false)
		{
		str="";
		document.schedule.startdate.focus();
		return false;
		}
	if (isDate(end)==false)
		{
		end="";
		document.schedule.enddate.focus();
		return false;
		}
		//convert to date objects so we can compare date difference
		strdate = new Date(str)
		enddate = new Date(end)
	
		if(strdate > enddate)
			{
			alert("Please make sure the start date is prior to the end date.")
			return false;
			}
	
		var dat1 = new Date(str)
		var dat2 = new Date(end)
		
		// The number of milliseconds in one day
	    var ONE_DAY = 1000 * 60 * 60 * 24
	
	    // Convert both dates to milliseconds
	    var date1_ms = dat1.getTime()
	    var date2_ms = dat2.getTime()
	
	    // Calculate the difference in milliseconds
	    var difference_ms = Math.abs(date1_ms - date2_ms)
	    
		var diff = Math.round(difference_ms/ONE_DAY)
		
		/*if(diff > 90)
			{
			alert("Please search by a maximum date range of 90 days.")
			return false;
			}*/
		}
	}

function CheckPassword()
	{
	if(document.pwsub.email.value=="")
		{
		alert("Please enter your email address.")
		document.pwsub.email.focus();
		return false;
		}		
	}

function showSearchTypeAvail(item) 
	{
	if(item=="container")
		{
		document.all["maxcontainer"].innerHTML = "(12 containers max)&nbsp;";
		document.all["cell_bol"].style.display = "none";
		document.all["cell_containers"].style.display = "block";
		document.all["fld_bol"].value="";
		document.all["fld_containers"].focus();
		}
	else 
		{
		document.all["maxcontainer"].innerHTML = "";
		document.all["cell_bol"].style.display = "block";
		document.all["cell_containers"].style.display = "none";
		document.all["fld_containers"].value="";
		document.all["fld_scac"].value="";
		document.all["fld_bol"].focus();
		}
	}
	
function CheckDelete(x)
	{
	if(x=="Delete User")
		{
		msg = "Are you sure you want to delete this user?"
		if(confirm(msg)!=true) 
			{
			return false;
			document.user.submit();
			}
		}	
	}

function ConfirmDelete(id,eml)
	{
	msg = "Are you sure you want to delete this user?"
	if(confirm(msg)==true) 
		{
		document.location.href="edituser.asp?id=" + id + "&em=" + eml + "&del=true";
		}
	}	

function CheckImportData(frm,btn,cncl)
	{
	var xxx = frm.select_search_type.value;
	if(xxx=="container")
		{
		if(frm.fld_containers.value==0)
			{
			alert("Please enter a container number.")
			frm.fld_containers.value="";
			frm.fld_containers.focus();
			return false;
			}
		if(invalidChars(frm.fld_containers.value)==false)
			{
			frm.fld_containers.select();
			return false;
			}
		}
	else
		{
		if(frm.fld_bol.value==0)
			{
			alert("Please enter a bill of lading number.")
			frm.fld_bol.value="";
			frm.fld_bol.focus();
			return false;
			}
		if(invalidChars(frm.fld_bol.value)==false)
			{
			frm.fld_bol.select();
			return false;
			}
		}
	}

function CheckPreArrival(frm)
	{
	if(frm.b_number.value.length==0)
		{
		alert("Please enter a booking number.")
		frm.b_number.focus();
		return false;
		}
	if(invalidChars(frm.b_number.value)==false)
		{
		frm.b_number.select();
		return false;
		}
	if(frm.b_line.value.length==0)
		{
		alert("Please select a Line from the list.")
		frm.b_line.focus();
		return false;
		}	
	}	

function CompanyEdit()
	{
	var frm = document.edit;
	var forgot = "";
	if(frm.co_address.value==0)	{forgot = forgot + " Company Address\n"}
	if(frm.co_city.value==0)	{forgot = forgot + " Company City\n"}
	
	if((ZipRequiredForCountry(frm.co_country.value))&&(frm.co_state.value==0))	
		{
		forgot = forgot + " Company State\n"
		}
	
	if((ZipRequiredForCountry(frm.co_country.value))&&(frm.co_zip.value==0))	
		{
		forgot = forgot + " Company ZIP/Postal Code\n"
		}
	if(frm.co_country.value==0)	{forgot = forgot + " Company Country\n"}
	if(frm.co_ph.value==0)		{forgot = forgot + " Company Phone\n"}
	if(sChecked==true)
		{
		if(frm.bill_address.value==0)						{forgot = forgot + " Billing Address\n"}
		if(frm.bill_city.value==0)							{forgot = forgot + " Billing City\n"}
		if((ZipRequiredForCountry(frm.bill_country.value))&&(frm.bill_state.value==0))
			{
			forgot = forgot + " Billing State\n"
			}
		
		if((ZipRequiredForCountry(frm.bill_country.value))&&(frm.bill_zip.value==0))	
			{
			forgot = forgot + " Billing ZIP/Postal Code\n"
			}
		if(frm.bill_country.value==0)						{forgot = forgot + " Billing Country\n"}
		if(frm.bill_ph.value==0)							{forgot = forgot + " Billing Phone\n"}
		}		
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	}
	
function CheckFeedback()
	{
	var frm = document.sendfeedback;
	var forgot = "";
	if(frm.from.value==0)		{forgot = forgot + " Email\n"}
	if(frm.comments.value==0)	{forgot = forgot + " Comments\n"}
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	if(frm.comments.value.length > 1000)
		{
		alert("Your maximum comment length is limited to 1000 characters.\nYour current length is " + frm.comments.value.length + " characters.\n\nPlease revise.");
		frm.comments.focus();
		return false;
		}
	}

function CheckAddSinglePreArrival(line)
	{
	var frm = document.singleprearrival;
	var forgot = "";
	if(frm.sizetype.value==0)	{forgot = forgot + " Container Size/Type\n"}
	if(frm.container.value==0)	{forgot = forgot + " Container Number\n"}
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	if((line== "MAT")||(line=="MIS"))
		{
		if(frm.container.value.length < 5)
			{
			alert("Matson container number length must be a minimum of 5 characters.\nYour current length is " + frm.container.value.length + " characters.\n\nPlease revise.");
			frm.container.focus();
			return false;
			}	
		}
	else
		{
		if(frm.container.value.length < 5)
			{
			alert("Container number length must be 11 characters.\nYour current length is " + frm.container.value.length + " characters.\n\nPlease revise.");
			frm.container.focus();
			return false;
			}	
		}
	}
	
/*----------------------------------------start dynamic disable button code---------*/
	var theForm;
	var requestSubmitted = false;  
	function disableButton(frmName,btnName,btnCncl) 
		{
		if (!requestSubmitted)
			{
			btnName.style.backgroundColor="#D4D0C8";
			btnName.style.borderLeftColor="#FFFFFF";
			btnName.style.borderTopColor="#FFFFFF";
			btnName.style.borderRightColor="#808080";
			btnName.style.borderBottomColor="#808080";
			btnName.value = "   Please Wait...   ";
			theForm = frmName;
			btnCncl.disabled = true;
			btnName.disabled = true;
			requestSubmitted = true;
			//setTimeout("submitIt()", 250);
			submitIt();
			} 
		else 
			{
			return false;
			}
		}
		
	function submitIt() 
		{
	    theForm.submit();
    	return false;
		}
/*----------------------------------------end dynamic disable button code---------*/

function ConfirmImageDelete()
	{
	msg = "Are you sure you want to delete this photo?"
	if(confirm(msg)==true) 
		{
		document.forms['cargo'].DeleteImage.value = "True";
		document.forms['cargo'].submit();
		}
	else
		{
		return false;
		}
	}	

function EditImageDetails(frm,title)
	{
	if(invalidChars(title.value)==false)
		{
		title.focus();
		return false;
		}
	if(frm.description.value.length > 256)
		{
		alert("Image description must not exceed 256 characters.\nYour current length is " + frm.description.value.length + " characters.\n\nPlease revise.");
		frm.description.focus();
		return false;
		}
	}
	
function EditCargoGroup(frm)
	{
	noShippers = false;
	noConsignees = false;
	if(frm.selected_consignees.length==0)	{noConsignees = true}
	if(frm.selected_shippers.length==0)		{noShippers = true}
	
	if((noConsignees==true)&&(noShippers==true))	
		{
		alert("You must have at least one consignee or shipper in a group.\n\nIf you wish to delete a group you must go back to the cargo groups page.")
		return false;
		}
	else
		{
		for(i = 0;i<frm.selected_consignees.length ; i++)
			{
    	    frm.selected_consignees.options[i].selected=true;
			}
		for(i = 0;i<frm.selected_shippers.length ; i++)
			{
    	    frm.selected_shippers.options[i].selected=true;
			}
		}
	}

function AddNewCargoGroup(frm)
	{
	var forgot = "";
	var approval=false;
	noConsignees = false;
	noShippers = false;
	
	if(frm.groupname.value==0)	{forgot = forgot + " Name\n"}
	if(frm.cargomake.value==0)	{forgot = forgot + " Make\n"}
			
	for (var i=0;i<frm.condition.length;i++)
		if(frm.condition[i].checked)
			approval=true;	

	if(!approval)	{forgot = forgot + " Condition\n"}
	if(frm.selected_consignees.length==0)	{noConsignees = true}
	if(frm.selected_shippers.length==0)	{noShippers = true}
	
	if((noConsignees==true)&&(noShippers==true))	
		{
		forgot = forgot + " Shipper or Consignee\n";
		}
	
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	else
		{
		for(i = 0;i<frm.selected_consignees.length ; i++)
			{
    	    frm.selected_consignees.options[i].selected=true;
			}
			
		for(i = 0;i<frm.selected_shippers.length ; i++)
			{
    	    frm.selected_shippers.options[i].selected=true;
			}
		}		
	}

function CheckApproval()
	{	
	var approval=false;
	for (var i=0;i<document.approve.apptype.length;i++)
			if(document.approve.apptype[i].checked)
				approval=true;	
	if(!approval)
		{
		alert("Please select a registration action.");
		return false;
		}
	if(document.approve.reason)
		{
		if(document.approve.reason.value.length > 100)
			{
			alert("Your maximum reason length is limited to 100 characters. Please revise.");
			document.approve.reason.focus();
			return false;
			}
		}
	}
	
/*if(getCookieLanguage()=="ES")
	{
	errCountry = "El Country"
	}
else
	{
	errCountry = "Country"
	}*/

function CheckPayCharges(frm,btn,cncl,feetotal,maxlimit)
	{
	//check to see if we even allow payment first.
	if(feetotal > maxlimit)
		{
		alert("You have a $" + maxlimit + " limit on daily fees you can pay for. Please adjust your amounts.\n\nIf you have any questions please contact the terminal.")
		return false;
		}
		
	var forgot = "";
	if(frm.billingaddress.value==0) {forgot = forgot + " Address\n"}
	if(frm.billingcity.value==0) 	{forgot = forgot + " City\n"}
	if(frm.billingstate.value==0) 	{forgot = forgot + " State/Province\n"}
	if(frm.billingzip.value==0) 	{forgot = forgot + " ZIP/Postal Code\n"}
	if(frm.billingstate.value==0)	{forgot = forgot + " Company State\n"}
	if(frm.billingzip.value==0)		{forgot = forgot + " Company ZIP/Postal Code\n"}
	if(frm.billingcountry.value==0) {forgot = forgot + " Country\n"}
	if(frm.cardtype.value==0)		{forgot = forgot + " Card Type\n"}
	if(frm.cardnum.value==0)		{forgot = forgot + " Card Number\n"}
	if(frm.expmonth.value==0)		{forgot = forgot + " Expiration Month\n"}
	if(frm.expyear.value==0)		{forgot = forgot + " Expiration Year\n"}
	if(frm.cardseccode.value==0)	{forgot = forgot + " Card Security Code\n"}
	
	if(forgot != "")
		{
		alert("Please fill in the following Billing Information field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	
	if((frm.expmonth.value!=0) && (frm.expyear.value!=0))
		{
		strdate = new Date(); //today
		enteredDate = new Date(frm.expmonth.value + "/1/20" + frm.expyear.value);
		
		if(strdate > enteredDate)
			{
			alert("Your credit card has either expired or you have entered the wrong expiration date.\n\nPlease try again.");
			return false;
			}
		else
			{
			if(checkCreditCard(frm.cardnum.value,frm.cardtype.value)) 
				{
				frm.TransactionType.value='Pay';
				frm.action='confirm.asp';
				frm.PageAction.value='15';
				}
			else 
				{
				alert(ccErrors[ccErrorNo]);
				return false;
				}
			}
		}
	if(CheckPayCharges)
		disableButton(frm,btn,cncl)
	}
	
function CheckGuaranteeCharges(frm,btn,cncl)
	{
	var forgot = "";
	if(frm.billingaddress.value==0) {forgot = forgot + " Billing Address\n"}
	if(frm.billingcity.value==0) 	{forgot = forgot + " Billing City\n"}
	if(frm.billingstate.value==0) 	{forgot = forgot + " Billing State\n"}
	if(frm.billingzip.value==0) 	{forgot = forgot + " Billing Zipcode\n"}
	if(frm.billingcountry.value==0) {forgot = forgot + " Billing Country\n"}
		
	if(forgot != "")
		{
		alert("Please fill in the following field(s) before submitting:\n--------------------------------------------------------------\n" + forgot+"--------------------------------------------------------------");
		return false;
		}
	else
		{
		disableButton(frm,btn,cncl)
		//frm.TransactionType.value='Guarantee';
		//frm.action='complete.asp';
		//frm.PageAction.value=2;
		}
	}
	
function CheckForAllRemoved(maxAmount,type)
	{
	sGrandTotal = document.all["grand_total"].innerHTML

	if(sGrandTotal > maxAmount)
		{
		alert("You have a $" + maxAmount + " limit on daily fees you can " + type + " for. Please adjust your amounts.\n\nIf you have any questions please contact the terminal.")
		return false;
		}

	var numRemoved = 0;
	var numAvail = 0;
	var checkBoxes = document.imports.FeeExclusions;
	var maxCheckboxes = checkBoxes.length;

	if (maxCheckboxes == undefined)
		{
		if(document.imports.FeeExclusions.checked == false)
			{
			numRemoved = 1;
			numAvail = 1;
			}
		else
			{
			numRemoved = 0;
			numAvail = 1;
			}
		}
	else
		{
		for (var idx = 0; idx < maxCheckboxes; idx++) 
			{
			if (document.imports.FeeExclusions[idx].disabled == false) 
				{
				numAvail += 1;
				if (document.imports.FeeExclusions[idx].checked == false) 
					{
				    numRemoved += 1;
					}
				}
			}
		}
	
	//alert("numRemoved: " + numRemoved + "\nnumAvail: " + numAvail)
	
	if(numRemoved == numAvail)
		{
		alert("You have chosen to remove all fees from all containers.\n\nPlease select a charge to pay for before continuing.");
		return false;
		}
	else
		{
		document.imports.action='confirm.asp';
		document.imports.PageAction.value='14';
		}
	}
	
function checkPaging(elem,iPage,iPageCount)
	{
	if(elem.value=="")
		{
		return false;
		}
	else
		{
		if(elem.value == iPage)
			{
			return false;
			}
		else
			{
			if((isNaN(elem.value))||(elem.value > iPageCount))
				{
				alert('Please enter a page number between 1 and ' + iPageCount + '.');
				return false;
				}
			else
				{
				goToPage(elem.value);
				}
			}
		}
	}
	
function checkCompanyCode() {
	if(document.accounts.companytype.value!="CO_CUSTOMS") {
		openWinCal('../list/companylist.asp?type='+document.accounts.companytype.value+'&id='+document.accounts.companyid.value,300,500);
		}
	else {
		alert('Customs Agent do not have a company code.')
		}
	}
