var strJsNewActionToken = "~~*~~";

var strPrevTmpSaveRepop = "";

var reqPop;

var _seedCity;

function showAnError( aNode, aMsg )
{
	setNiceTitleProps( "/js/lt_pink_ptr2.png", "/js/char_x.gif", "eviltextCell", "nicetable" );
	showNiceError( aNode, aMsg );
	setNiceTitleProps( "/js/lt_blue_ptr2.gif", "/js/char_x.gif", "helptextCell", "nicetable" );
}

function jump( jump_name ) {
	document.location = '#'+jump_name;
}

function processReqChange_repop()
{
	// only if req shows "complete"
	if (reqPop.readyState == 4) {
		// only if "OK"

		if (reqPop.status == 200) {
			// ...processing statements go here...

			var xmlDoc = reqPop.responseXML;
			var state = document.getElementById( "tm_state" );
			var city = document.getElementById( "tm_city" );

			var neighbObj = false;
			try {
				neighbObj = xmlDoc.documentElement.getElementsByTagName("neighborhood");
			} catch(exp1) {
				neighbObj = false;
			}

			if( neighbObj[0] )
			{
				resetNeighborhoodFinish(neighbObj[0]);
			}
			else
			{
				if( state.value && city.value && city.value != strJsNewActionToken )
				{
					try
					{
						var neighbList = xmlDoc.documentElement.getElementsByTagName("neighb");

						clearNeighborhoods();
						populateNeighborhoods( neighbList )
					}
					catch( e ) {}
				}
				else
				{
					try
					{
						var cityList = xmlDoc.documentElement.getElementsByTagName("city");

						clearCities();
						populateCities( cityList );

						if( globCitySet )
						{
							selectHelper( city, globCitySet );
						}
					}
					catch( e ) {}
				}
			}
		}
	}
}

function loadXMLDoc_repop(url)
{
	/*
	try {
	    // branch for native XMLHttpRequest object
	    if (window.XMLHttpRequest) {
		reqPop = new XMLHttpRequest();
		reqPop.onreadystatechange = processReqChange_repop;
		reqPop.open("GET", url, true);
		reqPop.send(null);
	    // branch for IE/Windows ActiveX version
	    } else if (window.ActiveXObject) {
		reqPop = new ActiveXObject("Microsoft.XMLHTTP");
		if (reqPop) {
		    reqPop.onreadystatechange = processReqChange_repop;
		    reqPop.open("GET", url, true);
		    reqPop.send();
		}
	    }
	} catch( e ) { alert( "loadXMLDoc_repop ERROR: '"+e+"'" ) }
	*/
}



function stateChange()
{
	var state = document.getElementById( 'tm_state' );

	hideNewCity();

	try {
		hideNewNeighb();
	} catch(e) {}

	clearCities();

	try {
		clearNeighborhoods();
	} catch(e) {}

	try {
		if( state.selectedIndex > 0 )
		{
			if( state.options[state.selectedIndex].value != "" )
			{
				loadXMLDoc_repop( "../CsnPop?state=" + state.value ) ;
			}
			else
			{

			}
		}
	} catch(ig) {}
}

function cityChange()
{
	var state = document.getElementById( 'tm_state' );
	var city = document.getElementById( 'tm_city' );

	try {
		clearNeighborhoods();
	} catch(e) {}


	if( city.selectedIndex > 0 && city.options[city.selectedIndex].value != strJsNewActionToken )
	{
		loadXMLDoc_repop( "../CsnPop?state=" + state.value + "&city=" + city.value ) ;
	}
	else if( city.selectedIndex > 0 )
	{
		showNewCity();

		try {
			showNewNeighb();
		} catch(e) {}
	}
}

function neighbChange()
{
	var seltag = document.getElementById( 'neighborhood' );
	var fk = document.getElementById( 'neighborhood_fk' );

	if( seltag.options[seltag.selectedIndex].value == strJsNewActionToken )
	{
		fk.value = "-1";
		showNewNeighb();
	}
	else
	{
		fk.value = seltag.options[seltag.selectedIndex].value;
	}
}

function clearCities() {

	try {
		var seltag = document.getElementById( 'tm_city' );

		while( seltag.length > 1 )
			seltag.options[(seltag.length-1)] = null;

		seltag.selectedIndex = 0;

	} catch(ig) {}
}


function clearNeighborhoods() {

	try {
		var seltag = document.getElementById( 'neighborhood' );

		hideNewNeighb();


		while( seltag.length > 1 )
			seltag.options[(seltag.length-1)] = null;

		seltag.selectedIndex = 0;
	} catch(e) {}
}

function populateCities( arCities )
{
	var seltag = document.getElementById( 'tm_city' );

	seltag.options[0] = new Option();
	seltag.options[0].text =  'Select a city...';
//	seltag.options[0].value = strJsNewActionToken;
	seltag.options[0].value = '';

	for (var i = 0; i < arCities.length; i++)
	{
		seltag.options[i+1] = new Option();
		seltag.options[i+1].text = arCities[i].getAttribute("name");
		seltag.options[i+1].value = arCities[i].getAttribute("name");

		if( _seedCity && _seedCity == seltag.options[i+1].value )
		{
			seltag.options[i+1].selected = true;
			cityChange();
		}
	}

	seltag.options[i+1] = new Option();
	seltag.options[i+1].text =  '[Add a new city...]'
	seltag.options[i+1].value = strJsNewActionToken;

	if( _seedCity )
	{
		_seedCity = false;
	}
}

function populateNeighborhoods( arNeighb )
{
	var seltag = document.getElementById( 'neighborhood' );

	var blankVal = "";

	seltag.options[0] = new Option();
	seltag.options[0].text =  'Select a neighborhood...';
//	seltag.options[0].value = strJsNewActionToken;
	seltag.options[0].value = '';

	for (var i = 0; i < arNeighb.length; i++)
	{
		seltag.options[i+1] = new Option();
		seltag.options[i+1].text = arNeighb[i].getAttribute("name");
		seltag.options[i+1].value = arNeighb[i].getAttribute("id");
	}

	seltag.options[i+1] = new Option();
	seltag.options[i+1].text =  '(any)';
	seltag.options[i+1].value = blankVal;
	i++;

	seltag.options[i+1] = new Option();
	seltag.options[i+1].text =  '[Add a new neighborhood...]'
	seltag.options[i+1].value = strJsNewActionToken;

	try {
		populateNeighborhoods_callback();
	} catch(e) {}
}

function populateStates()
{
	var arStates=["AK","AL","AR","AZ","CA","CO","CT","DC","DE","FL","GA","HI","IA","ID","IL","IN","KS","KY","LA","MA","MD","ME","MI","MN","MO","MS","MT","NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VA","VT","WA","WI","WV","WY"];

	var seltag = document.getElementById( 'tm_state' );

	try
	{
		for( i=0; i<arStates.length; i++ )
		{
			seltag.options[i+1] = new Option();
			seltag.options[i+1].value = arStates[i];
			seltag.options[i+1].text = arStates[i];
		}
	} catch( e ) {
		//alert( "except: '"+e.description+"'" );
	}
}

function selectHelper( elemSelect, myValue )
{
	if( myValue == "~~*~~" )
		myValue = '';

	try {
		var setFlag = false;

		for( i=0; i<elemSelect.options.length; i++ )
		{
			if( elemSelect.options[i].value == myValue )
			{
				elemSelect.selectedIndex = i;
				setFlag = true;
				continue;
			}
		}

		if( !setFlag )
			elemSelect.selectedIndex = 0;
	}
	catch( e )
	{
		//alert( "omg: "+e );
	}
}

function updateDate()
{
	_hidden		= document.getElementById( "hidden_date" );
	_monthSel	= document.getElementById( "month" );
	_daySel		= document.getElementById( "day" );
	_yearSel	= document.getElementById( "year" );

	/// ditch early if there's no hidden date value.
	if( !_hidden.value )
	{
		_monthSel.selectedIndex = 0;
		_yearSel.selectedIndex = 0;
		_daySel.selectedIndex = 0;
		return;
	}

	arSplit = _hidden.value.split("-");

	myYear	= arSplit[0];
	myMonth	= arSplit[1];
	myDay	= arSplit[2];

	selectHelper( _yearSel, myYear );
	selectHelper( _monthSel, myMonth );
	selectHelper( _daySel, myDay );

	try {
		document.getElementById( 'available_no' ).checked = true;

		document.getElementById( 'month' ).disabled = false;
		document.getElementById( 'day' ).disabled = false;
		document.getElementById( 'year' ).disabled = false;

	} catch(ig) {}
}

/**
 * Set the city, state, and neighborhood fields based on a neighb_id.
 */
function resetNeighborhood( neighb_id )
{
	loadXMLDoc_repop( "../CsnPop?state=" + neighb_id ) ;
}

function resetNeighborhoodFinish( neighHash )
{
	selectHelper( document.getElementById('tm_state'), neighHash.getAttribute("state") );
	stateChange();

	selectHelper( document.getElementById('tm_city'), neighHash.getAttribute("city") );
	cityChange();

	selectHelper( document.getElementById('tm_city'), neighHash.getAttribute("city") );
	cityChange();
}

function condUpdateDate()
{
	_hidden		= document.getElementById( "hidden_date" );
	_monthSel	= document.getElementById( "month" );
	_daySel		= document.getElementById( "day" );
	_yearSel	= document.getElementById( "year" );

	/// ditch early if there's no hidden date value.
	if(
		_monthSel.options[_monthSel.selectedIndex].value &&
		_daySel.options[_daySel.selectedIndex].value &&
		_yearSel.options[_yearSel.selectedIndex].value
	)
	{
		_hidden.value =
			_yearSel.options[_yearSel.selectedIndex].value + "-" +
			_monthSel.options[_monthSel.selectedIndex].value + "-" +
			_daySel.options[_daySel.selectedIndex].value;

		ajaxer( _hidden );
	}
}

function hideNewCity()
{
	try {
		var h1 = document.getElementById( 'cityhide' );
		var h2 = document.getElementById( 'cityhide2' );
		var old_city = document.getElementById( 'cityhide_old' );
		var myInp = document.getElementById( 'newcity' );

		myInp.value = '';
		h1.style.display = 'none';
		h2.style.display = 'none';
		old_city.style.display = 'block';
	} catch(ig) {}
}

function hideNewNeighb()
{
	try {
		var h1 = document.getElementById( 'neighbhide' );
		var h2 = document.getElementById( 'neighbhide2' );
		var old_neigh = document.getElementById( 'neighbhide_old' );
		var myInp = document.getElementById( 'newneighb' );

		myInp.value = '';
		h1.style.display = 'none';
		h2.style.display = 'none';
		old_neigh.style.display = 'block';
	} catch(ig) {}
}

function showNewCity()
{
	try {

		var h1 = document.getElementById( 'cityhide' );
		var h2 = document.getElementById( 'cityhide2' );
		var old_city = document.getElementById( 'cityhide_old' );


		h1.style.display = 'block';
		h2.style.display = 'block';
		old_city.style.display = 'none';

	} catch( exc ) {}
}

function showNewNeighb()
{
	try {

		var h1 = document.getElementById( 'neighbhide' );
		var h2 = document.getElementById( 'neighbhide2' );
		var old_neigh = document.getElementById( 'neighbhide_old' );

		h1.style.display = 'block';
		h2.style.display = 'block';
		old_neigh.style.display = 'none';
	} catch( exc ) {

	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// START OF VERIFICATION SECTION
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////


function checkCustomFields()
{
	var newC = document.getElementById( 'newcity' );
	var newN = document.getElementById( 'newneighb' );
	var hidC = document.getElementById( 'cityhide' );
	var hidN = document.getElementById( 'neighbhide' );

	var city = document.getElementById( 'tm_city' );
	var neig = document.getElementById( 'neighborhood' );

	var errorTxt = "";

	try {
		if( hidC.style.display == 'block' )
		{
			if( newC.value == '' )
			{
				//errorTxt += "<li>Please enter your custom city information.</li>";

				showAnError( newC, "Please enter your custom city information." );
				jump( "locationTarget" );
				return false;
			}
		}
		else
		{
			if( city.value == '' || city.value == '~~*~~' )
			{
				//errorTxt += "<li>Please select a valid city.</li>";
				showAnError( city, "Please select a valid city." );
				jump( "locationTarget" );
				return false;
			}
		}
	} catch(ig) {}


	try {
		if( hidN.style.display == 'block' )
		{
			if( newN.value == '' )
			{
				//errorTxt += "<li>Please enter your custom neighborhood information.</li>";
			}
		}
		else
		{
			if( neig.value == '~~*~~' )
			{
				//errorTxt += "<li>Please select a valid neighborhood.</li>";
				showAnError( neig, "Please select a valid city." );
				jump( "locationTarget" );
				return false;
			}
		}
	} catch(ig) {}


	if( errorTxt != "" )
	{
		er = document.getElementById( 'error' );

		er.innerHTML = errorTxt;

		return false;
	}

	return true;
}

function checkMundaneFields()
{
	try {
		objName = document.getElementById( 'tm_name' );
		if( !objName.value )
		{
			showAnError( objName, "Please enter your name." );
			jump( "aboutyouTarget" );
			return false;
		}
	} catch( e0 ) {}

	try {
		email = document.getElementById( 'email' );
		if( !Validate_Email_Address(email.value) )
		{
			showAnError( email, "Please enter a valid email." );
			jump( "aboutyouTarget" );
			return false;
		}
	} catch( e1 ) {}

	try {
		h1 = document.getElementById( 'opt_renttype_apart' );
		h2 = document.getElementById( 'opt_renttype_house' );
		h3 = document.getElementById( 'opt_renttype_condo' );
		h4 = document.getElementById( 'opt_renttype_duplx' );
		h5 = document.getElementById( 'opt_renttype_cottg' );
		h6 = document.getElementById( 'opt_renttype_roomt' );

		if(
			!h1.checked && !h2.checked && !h3.checked &&
			!h4.checked && !h5.checked && !h6.checked
		)
		{
					var housingError = document.getElementById( 'housing_error' );

			showAnError( housingError, "Please choose at least one type of housing you'd like." );

			jump( "locationTarget" );
			return false;
		}
	} catch( e1 ) {}

	try {
		credit = document.getElementById( 'credit' );
		if( !credit.value )
		{
			showAnError( credit, "Please enter your estimated credit rating.  It's fine to guess." );
			jump( "aboutyouTarget" );
			return false;
		}
	} catch( e2 ) {}

	try {
		max_lease_term = document.getElementById( 'max_lease_term' );
		if( !max_lease_term.value )
		{
			showAnError( max_lease_term, "Please enter the maximum amount of time you'd like to live in your next apartment." );
			jump( "locationTarget" );
			return false;
		}
	} catch( e3 ) {}

	try {
		state = document.getElementById( 'tm_state' );
		if( !state.value )
		{
			showAnError( state, "Please choose a valid state." );
			jump( "locationTarget" );
			return false;
		}
	} catch( e3 ) {}

	try {
		month = document.getElementById( 'month' );
		day   = document.getElementById( 'day' );
		year  = document.getElementById( 'year' );
		if( !month.value || !day.value || !year.value )
		{
			showAnError(
				document.getElementById( 'trigger' ),
				"Please enter the date you want to move into your next apartment."
			);
			jump( "locationTarget" );
			return false;
		}
	} catch( e4 ) {}

	return true;
}

function checkDescStuff()
{

try {
	var desc = document.getElementById( 'description' );
	if( desc.value == descText )
	{
		showAnError( desc, "You need to enter a short description (at least 10 words) of your situation for prospective landlords." );
		jump( "descriptionTarget" );
		return false;
	}

	wcount = document.getElementById( 'wcount' );
	if( !wcount.value || wcount.value < 10 )
	{
		showAnError( wcount, "You must enter at least 10 words explaining your needs and situation to prospective landlords." );
		jump( "descriptionTarget" );
		return false;
	}
} catch(ig) {}

}

function descOnKeyUp()
{
	wcount = document.getElementById( 'wcount' );
	if( wcount.value >= 10 )
	{
		closeAllOpenHelps();
	}
}

function checkContactMe()
{

try {
	var own = document.getElementById( 'opt_con_owners' );
	var age = document.getElementById( 'opt_con_agents' );
	var pro = document.getElementById( 'opt_con_propman' );
	var err = document.getElementById( 'opt_con_error' );

	if( !own.checked && !age.checked && !pro.checked )
	{
		showAnError( err, "How can we help you if nobody can contact you?" );
		jump( "employmentTarget" );

		return false;
	}
} catch( ig ) {}

	return true;
}

function checkSubmit()
{
	closeAllOpenHelps();

	if( !checkMundaneFields() )
		return false;

	if( !checkCustomFields() )
		return false;

	if( !checkContactMe() )
		return false;

	if( !checkBBP() )
		return false;

	return checkDescStuff();
}

function checkBBP()
{
	var be = document.getElementById( 'adv_beds' );
	var ba = document.getElementById( 'adv_baths' );
	var pb = document.getElementById( 'price_bottom' );
	var pt = document.getElementById( 'price_top' );

	if( !be || !ba || !pb || !pt )
	{
		return true;
	}
	else
	{
		if( be.selectedIndex == 0 )
		{
			showAnError( be, "Please select how many beds you are looking for in a rental." );
			return false;
		}

		if( ba.selectedIndex == 0 )
		{
			showAnError( ba, "Please select how many baths you are looking for in a rental." );
			return false;
		}

		if( pb.selectedIndex == 0 )
		{
			return true;
		}
		else
		{
			if( pb.selectedIndex-2 > pt.selectedIndex )
			{
				showAnError( pt, "You can't have a high price higher than your low price." );
				return false;
			}
		}


		return true;
	}
}


var descText = "Tell us about your situation! (10 words or more, please)";
var descCountMode;
function descSetup()
{

try {
	var desc = document.getElementById( 'description' );

	if( !desc.value || desc.value == descText )
	{
		desc.value = descText;
		descCountMode = false;

		var cnt  = document.getElementById( "wcount" );
		var cntDiv  = document.getElementById( "wcountArea" );

		cnt.value = "0";
		cntDiv.style.display = 'none';
	}
	else
	{
		descCountMode = true;
		updateDescCount();
	}
} catch(ig) {}

}

function descOnclick()
{
	var desc = document.getElementById( 'description' );

	if( desc.value == descText )
	{
		desc.value = "";
	}

	var cntDiv  = document.getElementById( "wcountArea" );

	if( cntDiv.style.display != 'block' )
	{
		descCountMode = true;

		cntDiv.style.display = 'block';
	}
}

function wordcount(string)
{
	var a = string.split(/\s+/g); // split the sentence into an array of words
	return a.length;
}

function updateDescCount()
{
	if( descCountMode )
	{
		var desc = document.getElementById( "description" );
		var cnt  = document.getElementById( "wcount" );

		myval = wordcount( desc.value );
		if( !myval ) myval = 0;

		cnt.value = ""+myval;
	}
}

function chopen()
{
	descOnclick();
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// END OF VERIFICATION SECTION
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function updateStub()
{
}

function loadXMLDoc(url)
{
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = updateStub;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = updateStub;
            req.open("GET", url, true);
            req.send();
        }
    }
}

var strPrevTmpSave;
function ajaxer( node )
{
	if( "opt_" == node.name.substring(0,4) || node.name == "felony_conviction" || node.name == "previous_eviction" )
	{
		if( node.checked )
		{
			if( strPrevTmpSave != "../tmpsave/?field="+node.name+"&value=1" )
			{
				strPrevTmpSave = "../tmpsave/?field="+node.name+"&value=1";
				loadXMLDoc( strPrevTmpSave );
			}
		}
		else
		{
			if( strPrevTmpSave != "../tmpsave/?field="+node.name+"&value=0" )
			{
				strPrevTmpSave = "../tmpsave/?field="+node.name+"&value=0";
				loadXMLDoc( strPrevTmpSave );
			}
		}
	}
	else if( node.name == "neighborhood" )
	{
		try
		{
			tm_state = document.getElementById( 'tm_state' );
			tm_city = document.getElementById( 'tm_city' );

			neighborhood_fk = document.getElementById( 'neighborhood_fk' ).value;

			//var nId = arNeighId[tm_state.value+";"+tm_city.value+";"+node.value];
			if( neighborhood_fk )
			{
				if( strPrevTmpSave != "../tmpsave/?field=neighborhood&value=" + neighborhood_fk )
				{
					strPrevTmpSave = "../tmpsave/?field=neighborhood&value=" + neighborhood_fk;
					loadXMLDoc( strPrevTmpSave );
				}
			}
			else
			{
				if( strPrevTmpSave != "../tmpsave/?field=neighborhood&value=&lookup_state=" + tm_state.value + "&lookup_city=" + tm_city.value )
				{
					strPrevTmpSave = "../tmpsave/?field=neighborhood&value=&lookup_state=" + tm_state.value + "&lookup_city=" + tm_city.value;
					loadXMLDoc( strPrevTmpSave );
				}
			}
		}
		catch( e )
		{
			//alert( "exception: '"+e+"'" );
		}
	}
	else
	{
		if( strPrevTmpSave != "../tmpsave/?field="+node.name+"&value="+node.value )
		{
			strPrevTmpSave = "../tmpsave/?field="+node.name+"&value="+node.value;
			loadXMLDoc( strPrevTmpSave );
		}
	}
}
