var ricolaCityStateWindow;
var ricolaCityStateControlAry = new Array();
var ricolaCityStateNum=0;
var ricolaCityState1BoxFormat = new Array(1,2,3,6,7,8,13,14,15);
var ricolaCityState2BoxFormat = new Array(4,5,9,11,16,18);
var ricolaCityState3BoxFormat = new Array(10,12,17,19);
var ricolaCityStateTotalFormats = ricolaCityState1BoxFormat.length + ricolaCityState2BoxFormat.length + ricolaCityState3BoxFormat.length;

var ricolaCityStateControl1;
var ricolaCityStateControl2;
var ricolaCityStateFormat=1;
var ricolaCityState_UsingCustJS = false;

/*
Formats:  
	 1) Detroit, MI
	 2) Detroit, Michigan
	 3) Detroit
	 4) Detroit    	MI				(2 Boxes)
	 5) Detroit	Michigan			(2 Boxes)
	 6) Detroit, MI; US
	 7) Detroit, Michigan; US
	 8) Detroit; US
	 9) Detroit	MI; US				(2 Boxes)
	10) Detroit	MI	US			(3 Boxes)
	11) Detroit	Michigan; US			(2 Boxes)
	12) Detroit	Michigan	US		(3 Boxes)
	13) Detroit, MI; United States
	14) Detroit, Michigan; United States
	15) Detroit; United States
	16) Detroit	MI; United States		(2 Boxes)
	17) Detroit	MI	United States		(3 Boxes)
	18) Detroit	Michigan; United States		(2 Boxes)
	19) Detroit	Michigan	United States	(3 Boxes)	
	
*/

function ricola_lookupcitystate() {
	var outOneStr=new String("");
	ricolaCityState_UsingCustJS = arguments[7];
	outOneStr="/ssi/apps/citystate/citystate.cfm?CountryUse=" + arguments[0] + "&FormatToUse=" + arguments[1] + 
	"&CityStateNum=" + arguments[2] + "&CityStateDelim=" + escape(arguments[3]) + "&StateCountryDelim=" + escape(arguments[4]) + 
	"&numObjUsed=" + arguments[5] + "&NCSC_Countries_Only=" + arguments[6];
	ricolaCityStateWindow = window.open(outOneStr, "RICOLACityStateWindow", "menubar=no,status=yes,location=no,toolbar=no,scrollbars=yes,resizable=yes,width=470,height=390,directories=no,screenX=200,screenY=100,left=200,top=100");
	ricolaCityStateWindow.focus();
}
	
function cityStateComponent() {
	var numObjUsed=0;
	var CountryUse=1;
	var CityStateDelimiter = ",";
	var StateCountryDelimiter = ";"
	var useNCSCOnly = false;
	var UsingCustJS = false;
	var i=0;

	ricolaCityStateControlAry[ricolaCityStateControlAry.length] = new Array();

	if (arguments.length < 1) {
		alert("City/State Lookup Error #3910: There wasn't enough parameters passed in to the cityStateComponent() function.\n you need to at least specify the text field being modified (ex.  cityStateComponent(document.MainForm.CityStateText);\nPlease refer to http://home.www.uprr.com/emp/it/hf/ricola/citystate/ for more information.");
		return false;
	}
	for (i=0; i < arguments.length; i++) {
		if (typeof arguments[i] == "object") {
			ricolaCityStateControlAry[ricolaCityStateNum][numObjUsed] = arguments[i];
			numObjUsed++;
		} else if (arguments[i].toString().toLowerCase().indexOf("format:") != -1) { 
			ricolaCityStateFormat=parseInt(arguments[i].replace(/(\w+)\s*:\s*(\w+)/,"$2"));
		} else if (arguments[i].toString().search(/^\s*us\s*only:\s*\d+\s*$/i) != -1) {   // Depricated
			CountryUse = (arguments[i].toString().indexOf("1") != -1) ? 0 : 1;
		} else if (arguments[i].toString().search(/^\s*country:\s*\d+\s*$/i) != -1) { 
			CountryUse = parseInt(arguments[i].replace(/^\s*country:\s*(\d+)\s*$/i, "$1"), 10);
		} else if (arguments[i].toString().search(/^\s*state\s+delimiter:\s*\S+\s*$/i) != -1) { 
			CityStateDelimiter = arguments[i].toString().replace(/^\s*state\s+delimiter:\s*(\S+)\s*$/i, "$1");
		} else if (arguments[i].toString().search(/^\s*country\s+delimiter:\s*\S+\s*$/i) != -1) { 
			StateCountryDelimiter = arguments[i].toString().replace(/^\s*country\s+delimiter:\s*(\S+)\s*$/i, "$1");
		} else if (arguments[i].toString().search(/^\s*NCSC\s*Countries\s*Only:\s*\d\s*$/i) != -1) {
			if (arguments[i].toString().replace(/^\s*NCSC\s*Countries\s*Only:\s*(\d)\s*$/i, "$1") == "1") {
				useNCSCOnly = true;
				CountryUse = 2;
			}
		} else if (arguments[i].toString().search(/^using custom javascript$/i) != -1) {
			UsingCustJS=true;
		}
	}
	if (useNCSCOnly || (CountryUse == 3)) {
		CountryUse = 2;
		useNCSCOnly = true;
	}
	if ((ricolaCityStateFormat > ricolaCityStateTotalFormats) || (ricolaCityStateFormat < 1)) {
		alert("City/State Lookup Error #3911: The City/State Format of " + ricolaCityStateFormat + " is invalid (It must be a number between 1 and " + ricolaCityStateTotalFormats + ").\n\nPlease refer to http://home.www.uprr.com/emp/it/hf/ricola/citystate/ for valid formats to use.");
		return false;
	} 
	if (numObjUsed > 3) {
		alert("City/State Lookup Error #3912: There were too many form elements passed into the The City/State component (There were " + numObjUsed + "passed in).\n\nPlease refer to the documentation at http://home.www.uprr.com/emp/it/hf/ricola/citystate/ for more information.");
		return false;
	}
	if (numObjUsed < 1) {
		alert("City/State Lookup Error #3913: There were not enough form elements passed into the The City/State component (There were " + numObjUsed + "passed in).\n\nPlease refer to the documentation at http://home.www.uprr.com/emp/it/hf/ricola/citystate/ for more information.");
		return false;
	}
	var currFormatAry = eval("ricolaCityState" + numObjUsed + "BoxFormat");
	var hasCorrectNumOfBoxes = false;
	for (i = 0; i < currFormatAry.length; i++ ) {
		if (currFormatAry[i] == ricolaCityStateFormat) {
			hasCorrectNumOfBoxes = true;
			i = currFormatAry.length;
		}
	}
	if (!hasCorrectNumOfBoxes) {
		alert("City/State Lookup Error #3913: There were not enough form elements passed into the the City/State component for format #" + ricolaCityStateFormat + " (There were " + numObjUsed + " passed in).\n\nPlease refer to the documentation at http://home.www.uprr.com/emp/it/hf/ricola/citystate/ for more information.");
		return false;			
	}

	document.write("<A HREF=\"javascript: void ricola_lookupcitystate(" + CountryUse + "," + ricolaCityStateFormat + "," + ricolaCityStateNum + ",'" + CityStateDelimiter + "','" + StateCountryDelimiter + "'," + numObjUsed + "," + useNCSCOnly + "," + UsingCustJS + ");\" TABINDEX=\"-1\"><IMG SRC=\"/graphics/apps/lookup.gif\" BORDER=\"0\" ALT=\"Browse for City and State\" WIDTH=\"25\" HEIGHT=\"24\" TABINDEX=\"-1\"></A>");
	ricolaCityStateNum++;
}
		
function RICOLAcityStatePullBack(inCountryUse, inFormatToUse, inCityStateNum, inCityStateDelim, inStateCountryDelim, inNumObjUsed, inCountryName, inCountryAbrv, inStateName, inStateAbrv, inCityName) {

	switch(parseInt(inFormatToUse, 10)) {
	case 1:		// City, ST
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inCityStateDelim + " " + inStateAbrv;
		break;
	case 2:		// City, State
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inCityStateDelim + " " + inStateName;
		break;
	case 3:		// City
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		break;
	case 4:		// City ST	[2 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateAbrv;
		break;
	case 5:		// City State [2 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateName;
		break;
	case 6:		// City, ST; CT
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inCityStateDelim + " " + inStateAbrv + inStateCountryDelim + " " + inCountryAbrv;
		break;
	case 7:		// City, State; CT
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inCityStateDelim + " " + inStateName + inStateCountryDelim + " " + inCountryAbrv;
		break;
	case 8:		// City; CT
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inStateCountryDelim + " " + inCountryAbrv;
		break;
	case 9:		// City ST; CT	[2 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateAbrv + inStateCountryDelim + " " + inCountryAbrv;
		break;
	case 10:	// City ST CT [3 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateAbrv;
		ricolaCityStateControlAry[inCityStateNum][2].value = inCountryAbrv;
		break;
	case 11:	// City State; CT [2 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateName + inStateCountryDelim + " " + inCountryAbrv;
		break;
	case 12:	// City State CT [3 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateName;
		ricolaCityStateControlAry[inCityStateNum][2].value = inCountryAbrv;
		break;
	case 13:		// City, ST; Country
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inCityStateDelim + " " + inStateAbrv + inStateCountryDelim + " " + inCountryName;
		break;
	case 14:		// City, State; Country
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inCityStateDelim + " " + inStateName + inStateCountryDelim + " " + inCountryName;
		break;
	case 15:		// City; Country
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inStateCountryDelim + " " + inCountryName;
		break;
	case 16:		// City ST; Country	[2 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateAbrv + inStateCountryDelim + " " + inCountryName;
		break;
	case 17:	// City ST Country [3 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateAbrv;
		ricolaCityStateControlAry[inCityStateNum][2].value = inCountryName;
		break;
	case 18:	// City State; Country [2 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateName + inStateCountryDelim + " " + inCountryName;
		break;
	case 19:	// City State Country [3 Boxes]
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName;
		ricolaCityStateControlAry[inCityStateNum][1].value = inStateName;
		ricolaCityStateControlAry[inCityStateNum][2].value = inCountryName;
		break;
	default: 	// City, ST
		ricolaCityStateControlAry[inCityStateNum][0].value = inCityName + inCityStateDelim + " " + inStateAbrv;				
		break;
	}
	if (ricolaCityState_UsingCustJS) {
		CityStateHasReturned();
	}
	return true;
}
	