// JavaScript Document

/*
Object.prototype.isArray = function() 
{   
	return this.constructor == Array;
}
*/

function ajaxObject(url, callbackFunction) {  
	var that=this;        
	this.updating = false;  
	this.abort = function() {    
		if (that.updating) {      
			that.updating=false;      
			that.AJAX.abort();      
			that.AJAX=null;    
		}  
	}  
	this.update = function(passData,postMethod) {     
		if (that.updating) { 
			return false; 
		}    
		that.AJAX = null;                              
		if (window.XMLHttpRequest) {                    
			that.AJAX=new XMLHttpRequest();                  
		} else {                                        
			that.AJAX=new ActiveXObject("Microsoft.XMLHTTP");    
		}                                                 
		if (that.AJAX==null) {                                   
			return false;                                   
		} else {      
			that.AJAX.onreadystatechange = function() {          
				if (that.AJAX.readyState==4) {                       
					that.updating=false;                          
					that.callback(that.AJAX.responseText,that.AJAX.status,that.AJAX.responseXML);                  
					that.AJAX=null;                                                 
				}                                                            
			}                                                              
			that.updating = new Date();                                    
			if (/post/i.test(postMethod)) {        
				var uri=urlCall+'?'+that.updating.getTime();        
				that.AJAX.open("POST", uri, true);        
				that.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");        
				that.AJAX.send(passData);      
			} else {        
				var uri=urlCall+'?'+passData+'&timestamp='+(that.updating.getTime());         
				that.AJAX.open("GET", uri, true);                                     
				that.AJAX.send(null);                                               
			}                    
			return true;                                                 
		}                                                                             
	}  
	var urlCall = url;          
	this.callback = callbackFunction || function () { };
}

function getElement(id)
{
	return document.getElementById(id);	
}

function getRadioValue(formName, objName)
{
	var obj = eval ('document.' + formName + "." + objName);
for (var i=0; i < obj.length; i++)
   {
   if (obj[i].checked)
      {
      	return obj[i].value;
      }
   }
   return "";
}



function isUndefinedOrNull(){
	for(var i=0;i<arguments.length;i++){
		var o=arguments[i];
		if(!(typeof (o)=="undefined"||o===null))
		{
			return false;
		}
	}
	return true;
}

function toggleField(objId, show, hide) {
	if (isUndefinedOrNull(show)) {
		show = "";	
	}
	if (isUndefinedOrNull(hide)) {
		hide = "none";	
	}
	if (getElement(objId).style.display == show) {
		getElement(objId).style.display = hide;
	} else {
		getElement(objId).style.display = show;
	}
}

var _RM_ = {

	cache: {},
	curPage:1,
	
	showModalMask: function() {
		var bObj = document.getElementsByTagName('body')[0];	
		var div = document.createElement('div');
		div.className = 'modalMask';
		div.style.height = bObj.scrollHeight;
		if (typeof document.height== 'undefined'|| document.height ==  null) { 
			div.style.height = bObj.scrollHeight + "px";
		} else {
			div.style.height = document.height + "px";
		}
		
		/*
		var iframe = document.createElement('iframe');
		iframe.width = "100%";
		iframe.height = "100%";
		iframe.src = "loading.html";
		div.appendChild(iframe);
		*/
		div.innerHTML = "<p align=\"center\">&nbsp;</p>";
		div.innerHTML += "<p align=\"center\"><br /><br /><br /><br /><br />  ";
    	div.innerHTML += " <img src=\"images/loading-1.gif\" width=\"235\" height=\"235\" /></p>";
		div.innerHTML += "<p align=\"center\" class=\"promotion\">Loading ... </p>";
		
		bObj.appendChild(div);
		
	}, 
	
	/* Flow Layer */
	defaultFlowId:'roommates_flowlayer_1',
	defaultFlowClassName:'flowlayer_1',
	createFlowLayer: function(id, className) {
		if (isUndefinedOrNull(id)) {
			id = _RM_.defaultFlowId;
		}
		var obj = document.getElementById(id);
		if (isUndefinedOrNull(obj)) {
			var bodyObj= document.getElementsByTagName('body')[0];
			var node = document.createElement("div");
			node.setAttribute("id", id);
			if (isUndefinedOrNull(className)) {
				className = _RM_.defaultFlowClassName;
			}
			node.className = className;
			node.onclick = _RM_.hideFlowLayer;
			bodyObj.appendChild(node);	
		} 
	},
	removeFlowLayer: function (id) {
		if (isUndefinedOrNull(id)) {
			id = _RM_.defaultFlowId;
		}
		var obj = document.getElementById(id);
		var pNode = obj.parentNode;
		pNode.removeChild(obj);
	}, 
	getFlowLayer: function (e, id) {
		if (isUndefinedOrNull(id)) {
			id = _RM_.defaultFlowId;
		}
		_RM_.createFlowLayer(id);
		return document.getElementById(id);
	},
	showFlowLayer: function (e, id) {
		if (isUndefinedOrNull(id)) {
			id = _RM_.defaultFlowId;
		}
		document.getElementById(id).style.display = "block";
	}, 
	hideFlowLayer: function (e, id) {
		if (isUndefinedOrNull(id)) {
			id = _RM_.defaultFlowId;
		}
		document.getElementById(id).style.display = "none";
	}, 
	loadFlowLayer: function (e, id, content) {
		var obj = _RM_.getFlowLayer(e, id);
		obj.innerHTML = content;
		// position it.
		var x=e.clientX + 5;
		var y=e.clientY - 10;
		obj.style.left = x+"px";
		obj.style.top = y+"px";
		_RM_.showFlowLayer(e, id);
	}, 
	
	/* Search Function */
	urlPrefix: "http://www.roommates.us/",
	
	generateQuery: function () {
		var query = "";
		var isPhoto = (getElement('photo').checked ==true)? "true":"false";
		query += "gender=" + getElement('gender').value;
		query += "&agefrom=" + getElement('agefrom').value;
		query += "&ageto=" + getElement('ageto').value;
		query += "&photo=" + isPhoto;
		query += "&table=" + getRadioValue('frmord', 'table');
		query += "&state4=" + getElement('state4').value;
		query += "&country4=1";
		query += "&city4=" + getElement('city4').value;
		query += "&filtercity4=" + getElement('filtercity4').value;
		if (getRadioValue('frmord', 'table') == "need") {
			query += "&order=" + getElement('order_need').value;
		} else {
			query += "&order=" + getElement('order_have').value;
		}
		query += "&resultperpage=" + getElement('resultperpage').value;

		return query;
	},

	getData: function (pageNum) {
		var query = _RM_.generateQuery();
		if (isUndefinedOrNull(pageNum)) {
			query += "&pagenumber=" + 1;
			_RM_.curPage = 1;
			getElement('pagenumber').value = 1;
		} else {
			query += "&pagenumber=" + pageNum;
			_RM_.curPage = pageNum;
			getElement('pagenumber').value = pageNum;
		}

		var url = _RM_.urlPrefix + "get_search_data.php";

		var aObj = new ajaxObject(url, _RM_.loadData);    
		aObj.update(query);
		
		setTimeout( _RM_.getTotalPageAndNearby, 500);
	},
	
	getNewCityData: function(state, city) {
		
		var query = "";
		var isPhoto = (getElement('photo').checked ==true)? "true":"false";
		query += "gender=" + getElement('gender').value;
		query += "&agefrom=" + getElement('agefrom').value;
		query += "&ageto=" + getElement('ageto').value;
		query += "&photo=" + isPhoto;
		query += "&table=" + getRadioValue('frmord', 'table');
		query += "&state4=" + state;
		query += "&country4=1";
		query += "&city4=" + city;
		query += "&filtercity4=" + getElement('filtercity4').value;
		if (getRadioValue('frmord', 'table') == "need") {
			query += "&order=" + getElement('order_need').value;
		} else {
			query += "&order=" + getElement('order_have').value;
		}
		query += "&pagenumber=" + 1;
		query += "&resultperpage=" + getElement('resultperpage').value;
		
		getElement('state4').value = state;
		getElement('city4').value = city;
		
		var url = _RM_.urlPrefix + "get_search_data.php";
	
		var aObj = new ajaxObject(url, _RM_.loadData);    
		aObj.update(query);
		
		setTimeout( _RM_.getTotalPageAndNearby, 500);
	},
	
	getTotalPageAndNearby: function () {
		var query = _RM_.generateQuery();
		var url = _RM_.urlPrefix + "get_total_data.php";

		var aObj = new ajaxObject(url, _RM_.loadTotalData);    
		aObj.update(query);
	},
	
	loadData: function (rText, rStatus) {
		/*
		alert(rText);
		getElement('debug').innerHTML = rText;
		return;
		*/
		
		var result = eval(rText);
		
		
		if (result.data.length > 0) {
			getElement('searchResult').style.display = "block";
			getElement('noResult').style.display = "none";
			
			var target = getElement('searchResult');
			// clear all HTML in target
			target.innerHTML = "";
			// clear cache for maps
			_RM_.cache.maps = [];
			for (var i=0; i<result.data.length; i++) {
				_RM_.addResult(target, result.setText,  result.data[i]);
			}
			// defer call to load the map
			setTimeout( function() {
							_RM_.generateMaps(_RM_.cache.maps);
								 }, 500);
		} else {
			
			getElement('searchResult').style.display = "none";
			getElement('noResult').style.display = "block";	
		}
		
	},
	
	addResult: function (obj, setText, data) {
		var div = document.createElement('div');
		div.title = data.table;
		if (data.upgraded == "yes") {
			div.className = "rWrapperPremium";
			var header = document.createElement('div');
			header.className = "premiumHeader";
			var span = document.createElement('span');
			span.className = "userTitle";
			span.innerHTML = data.nickName;
			if (data.table == "need") {
				span.onclick = function () {detail(data.id); }
			} else {
				span.onclick = function () {detail1(data.id); }
			}
			header.appendChild(span);
			var div2 = document.createElement('div');
			div2.className = "premiumIconHolder";
			var img = document.createElement('img');
			img.src = "images/premium-user.jpg";
			img.border = "0";
			img.width = "95";
			div2.appendChild(img);
			header.appendChild(div2);
			div.appendChild(header);
		} else {
			div.className = "rWrapperNormal";
			var header = document.createElement('div');
			header.className = "normalHeader";
			var span = document.createElement('span');
			span.className = "userTitle";
			span.innerHTML = data.nickName;
			if (data.table == "need") {
				span.onclick = function () {detail(data.id); }
			} else {
				span.onclick = function () {detail1(data.id); }
			}
			header.appendChild(span);
			div.appendChild(header);
		}
		
		// now generate the body.
		var rBody = document.createElement('div');
		rBody.className = "rBody";
		
		// now Image
		var photoHolder = document.createElement('div');
		photoHolder.className = "rPhotoHolder";
		var img = document.createElement('img');
		img.className = "memberphoto";
		img.border = 0;
		img.width = '65px';

		if (data.photo == "") {
			img.src = "photo/nophoto.jpg";	
		} else {
			img.src = "photo/" + data.photo;
		}
	
		if (data.table == "need") {
			img.onclick = function () {detail(data.id); }
		} else {
			img.onclick = function () {detail1(data.id); }
		}
		photoHolder.appendChild(img);
		rBody.appendChild(photoHolder);
		
		//  Now Information
		var infoHolder = document.createElement('div');
		infoHolder.className = "rInfoHolder";
		
		// about me
		var rInnerRow = document.createElement('div');
		rInnerRow.className = "rInnerRow";
		var rInnerLeft = document.createElement('div');
		rInnerLeft.className = "rInnerLeft";
		if (data.table == "need") {
			rInnerLeft.innerHTML = setText.aboutMe + ":";
		} else {
			rInnerLeft.innerHTML = setText.aboutMe + ":";
		}
		rInnerRow.appendChild(rInnerLeft);
		var rInnerRight = document.createElement('div');
		rInnerRight.className = "rInnerRight";
		rInnerRight.innerHTML = data.aboutMe;
		rInnerRow.appendChild(rInnerRight);
		infoHolder.appendChild(rInnerRow);
		
		// payment
		var rInnerRow = document.createElement('div');
		rInnerRow.className = "rInnerRow";
		var rInnerLeft = document.createElement('div');
		rInnerLeft.className = "rInnerLeft";
		rInnerLeft.innerHTML = setText.mPayment + ":";
		rInnerRow.appendChild(rInnerLeft);
		var rInnerRight = document.createElement('div');
		rInnerRight.className = "rInnerRight";
		rInnerRight.innerHTML = data.mPayment;
		rInnerRow.appendChild(rInnerRight);
		infoHolder.appendChild(rInnerRow);
		
		//  move in
		var rInnerRow = document.createElement('div');
		rInnerRow.className = "rInnerRow";
		var rInnerLeft = document.createElement('div');
		rInnerLeft.className = "rInnerLeft";
		rInnerLeft.innerHTML = setText.moveIn + ":";
		rInnerRow.appendChild(rInnerLeft);
		var rInnerRight = document.createElement('div');
		rInnerRight.className = "rInnerRight";
		rInnerRight.innerHTML = data.moveIn;
		rInnerRow.appendChild(rInnerRight);
		infoHolder.appendChild(rInnerRow);
		
		// location 
		var rInnerRow = document.createElement('div');
		rInnerRow.className = "rInnerRow";
		var rInnerLeft = document.createElement('div');
		rInnerLeft.className = "rInnerLeft";
		rInnerLeft.innerHTML = setText.location + ":";
		rInnerRow.appendChild(rInnerLeft);
		var rInnerRight = document.createElement('div');
		rInnerRight.className = "rInnerRight";
		rInnerRight.innerHTML = data.location;
		rInnerRow.appendChild(rInnerRight);
		infoHolder.appendChild(rInnerRow);
		
		rBody.appendChild(infoHolder);
		// now map.  
		if (data.upgraded == "yes" && data.table == "have") {
			var mapHolder = document.createElement('div');
			mapHolder.className = "rMapHolder";	
			mapHolder.id = "map_canvas_" + data.id;
			//alert(data.lat + " : " + data.lng);
			_RM_.cache.maps.push(	{
								 		id:data.id,
								 		domid:mapHolder.id,
										lat:data.lat,
										lng:data.lng
								 	}
								 );
			
			rBody.appendChild(mapHolder);
			mapHolder.onclick = function () {detail1(data.id); }
		}

		div.appendChild(rBody);
		
		// footer
		var rFooter = document.createElement('div');
		rFooter.className = "rFooter";

		if (setText.isAddFavor == true) {
			var footerIcon = document.createElement('div');
			footerIcon.className =  "footerIcon";
			var img = document.createElement('img');
			img.src = "images/add-favor.jpg";
			img.alt = setText.addToFavor;
			img.title = setText.addToFavor;
			img.onclick = function () {dofavourite(data.id,data.table ); }
			footerIcon.appendChild(img);
			rFooter.appendChild(footerIcon);
		}
		
		if (setText.isDeleteFavor == true) {
			var footerIcon = document.createElement('div');
			footerIcon.className =  "footerIcon";
			var img = document.createElement('img');
			img.src = "images/delete-favor.jpg";
			img.alt = setText.removeFavor;
			img.title = setText.removeFavor;

			img.onclick = function () {doremovefavourite(data.id, data.table); }
			footerIcon.appendChild(img);
			rFooter.appendChild(footerIcon);
		}
		
		var footerIcon = document.createElement('div');
		footerIcon.className =  "footerIcon";
		var img = document.createElement('img');
		img.src = "images/send-interest.jpg";
		img.alt = setText.sendInter;
		img.title = setText.sendInter;
		img.onclick = function () {popdetail(data.id, data.table);}
		footerIcon.appendChild(img);
		rFooter.appendChild(footerIcon);
		
		var footerIcon = document.createElement('div');
		footerIcon.className =  "footerIcon";
		var span = document.createElement('span');
		span.className = "underLine";
		span.innerHTML = setText.moreInfo;
		span.title = setText.moreInfo;
		if (data.table == "need") {
			span.onclick = function () {detail(data.id); }
		} else {
			span.onclick = function () {detail1(data.id); }
		}
		footerIcon.appendChild(span);
		rFooter.appendChild(footerIcon);
		
		var footerIcon = document.createElement('div');
		footerIcon.className =  "footerIcon";
		var img = document.createElement('img');
		img.src = "images/easytext.jpg";
		img.alt = "Easy Text Copy";
		img.title = "Easy Text Copy";
		img.onclick = function () {
						toggleField("easytext_" + data.id, "inline", "none");
					}
		footerIcon.appendChild(img);
		rFooter.appendChild(footerIcon);
		
		var span = document.createElement('span');
		span.id = "easytext_" + data.id;
		span.className = "rEasyText";
		span.innerHTML = data.nickName + ", " + data.mPayment + ", " + data.moveIn + ", " + data.location;
		
		rFooter.appendChild(span);
		div.appendChild(rFooter);
		/*
		div.innerHTML += "" + data.photo + "<br />";
		div.innerHTML += setText.aboutMe + " : "+ data.aboutMe + "<br />";
		div.innerHTML += setText.mPaymment + " : " + data.mPayment + "<br />";
		div.innerHTML += setText.moveIne + " : "+ data.moveIn + "<br />";
		div.innerHTML += setText.location + " : "+ data.location + "<br />";
		div.innerHTML += "upgraded " + data.upgraded;
		*/
		obj.appendChild(div);
		
	},
	
	loadTotalData: function (rText, rStatus) {
		/*
		alert(rText);
		getElement('debug').innerHTML = rText;
		return;
		*/
		var result = eval(rText);
		
		var target = getElement('searchResult');
		_RM_.getPaging(target, result.total);
		var target = getElement('cityGroupData');
		_RM_.getNearBy(target, result.data);
	},
	
	getPaging: function (target, total) {
		
		var rpp = parseInt(getElement('resultperpage').value);
		var tempStr = "";
		tempStr = "<span><strong>Page No: </strong></span>";
		
		var pages = Math.ceil(total / rpp);

		for (var i=1; i<=pages; i++) {
			if (_RM_.curPage == i) {
				tempStr += " <span class=\"redPage\">"+i+"</span>";	
			} else {
				tempStr += " <span class=\"bluePage\" onClick=\"_RM_.getData("+i+")\">"+i+"</span>";	
			}
		}
		var div = getElement('pagingWrapper');
		if (isUndefinedOrNull(div)){
			div = document.createElement('div');
			div.id = "pagingWrapper";
			div.className = "pagingWrapper";
			div.innerHTML = tempStr;
			target.appendChild(div);
		} else {
			div.innerHTML = tempStr;	
		}
	},
	
	getNearBy: function (target, data) {
		target.innerHTML = "";	
		
		var div;
		var span;
		for (var i=0; i < data.length; i++) {
			if (data[i].subTotal > 0) {
				var stateCode = data[i].stateCode;
				var cityId = data[i].cityId;
				div = document.createElement('div');
				div.className = "font11";
				div.innerHTML = "<span style=\"cursor:pointer;\" onclick=\"_RM_.getNewCityData("+stateCode+", "+cityId+" );\">"+data[i].cityName + " ("+data[i].subTotal+") "+"</span>";
			
				target.appendChild(div);
			}
		}
	},
	
	generateMaps: function(data) {
		for (var i=0; i<data.length; i++)
		{
			if (! isUndefinedOrNull(document.getElementById(data[i].domid) ))
			{
				_RM_.renderSmallMap(data[i]);	
			}
		}
	},
	
	renderSmallMap: function (mapData) {
		var eleId = mapData.domid;
		var lat = mapData.lat;
		var lng = mapData.lng;
		if (GBrowserIsCompatible()) { 
			var map = new GMap2(document.getElementById(eleId)); 
			map.setCenter(new GLatLng(lat, lng), 13); 
			map.addControl(new GSmallZoomControl());
			map.disableDragging();
			//map.setUIToDefault(); 
			//map.removeMapType(G_HYBRID_MAP);
			//map.removeMapType(G_SATELLITE_MAP);
			//var mapControl = new GMapTypeControl();
			//map.addControl(mapControl);
			//map.addControl(new GSmallMapControl());
			
			//var point = new GLatLng(37.4419, -122.1419);
			//map.addOverlay(new GMarker(point));
			
			var bounds = map.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			var lngDelta = (northEast.lng() - southWest.lng()) / 3;
			var latDelta = (northEast.lat() - southWest.lat()) / 3;
			var rectBounds = new GLatLngBounds(
			new GLatLng(southWest.lat() + latDelta, southWest.lng() + lngDelta),
			new GLatLng(northEast.lat() - latDelta, northEast.lng() - lngDelta));
			map.addOverlay(new Rectangle(rectBounds));		
		}
	},
	
	renderLargeMap: function (mapData) {
		var eleId = mapData.domid;
		var lat = mapData.lat;
		var lng = mapData.lng;
		if (GBrowserIsCompatible()) { 
			var map = new GMap2(document.getElementById(eleId)); 
			map.setCenter(new GLatLng(lat, lng), 13); 
			
			map.setUIToDefault(); 
			//map.removeMapType(G_HYBRID_MAP);
			//map.removeMapType(G_SATELLITE_MAP);
			//var mapControl = new GMapTypeControl();
			//map.addControl(mapControl);
			//map.addControl(new GSmallMapControl());
			
			//var point = new GLatLng(37.4419, -122.1419);
			//map.addOverlay(new GMarker(point));
			
			var bounds = map.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			var lngDelta = (northEast.lng() - southWest.lng()) / 3;
			var latDelta = (northEast.lat() - southWest.lat()) / 3;
			var rectBounds = new GLatLngBounds(
			new GLatLng(southWest.lat() + latDelta, southWest.lng() + lngDelta),
			new GLatLng(northEast.lat() - latDelta, northEast.lng() - lngDelta));
			map.addOverlay(new Rectangle(rectBounds));		
		}
	},
	
	
	searchResultInit: function() {
		_RM_.getData();
	}, 
	
	/* Get favourite */
	getFavoriteData: function (userName, tableType) {
		var query = "username=" + userName;
		query += "&table=" + tableType;

		var url = _RM_.urlPrefix + "get_favorite_data.php";
	
	
		var aObj = new ajaxObject(url, _RM_.loadData);    
		aObj.update(query);
		
	},
	
	favoriteResultInit: function(userName, tableType) {
		_RM_.getFavoriteData(userName, tableType);
	},
	
	/* -------- Get cities list based on State --------------*/
	getCityData: function (stateSrc, src, target, srcValeNotErase) {

		if (typeof stateSrc == "object") {
			var obj = stateSrc;
		} else {
			var obj = document.getElementById(stateSrc);	
		}
		var sId = obj.selectedIndex;
		var state = obj.options[sId].text;
		var stateVal = obj.options[sId].value;
		if (isUndefinedOrNull(stateVal) || stateVal == "") return;
		var query = "state=" + stateVal;
		var url = _RM_.urlPrefix + "get_cities_json.php";
		if (typeof src == "object") {
			var sObj = src;
		} else {
			var sObj = document.getElementById(src);
		}
		if (srcValeNotErase == true) {
			//
		} else {
			sObj.value = "";
		}
		var aObj = new ajaxObject(url, function (rText, rStatus) {
											_RM_.loadCityData(rText, rStatus, src, target);    
										} );
		aObj.update(query);
	},
	
	loadCityData: function(rText, rStatus, src, target) {
		_RM_.cache['cityData'] = eval(rText);
		
		_RM_.cache['selInnerHTML'] = "";
		_RM_.loadDefaultCity(src, target);
		if(navigator.appName == "Netscape") {
			_RM_.cache['selInnerHTML'] = document.getElementById(target).innerHTML;
		} else {
			_RM_.cache['selInnerHTML'] = document.getElementById(target).options.outerHTML;
		}
	
	}, 
	
	loadDefaultCity: function(src, target) {
	
		var mydata = _RM_.cache['cityData'];
		if (isUndefinedOrNull(mydata)) return;
		var tObj = document.getElementById(target);
		if(navigator.appName == "Netscape") {
			tObj.innerHTML = mydata.defaultStr;
		} else {
			tObj.innerHTML = "";
			var tempStr = tObj.outerHTML.replace(/<\/SELECT>/i, "");
			tempStr += mydata.defaultStr + "</SELECT>";
			tObj.outerHTML = tempStr;
		}
		if (tObj.options.length >0) {
			tObj.selectedIndex = 0;
		}
	}, 
	
	updateAvailCities: function (e, stateSrc, src, target) {
		if (isUndefinedOrNull(_RM_.cache['cityData'])) {
			//debugger;
			if (typeof stateSrc == "object") {
				var obj = stateSrc;
			} else {
				var obj = document.getElementById(stateSrc);	
			}
			var sId = obj.selectedIndex;
			var stateVal = obj.options[sId].value;
			if (isUndefinedOrNull(stateVal) || stateVal == "") return;
			_RM_.getCityData(stateSrc, src, target, true);
			setTimeout(function() {
							_RM_.updateAvailCitiesInteral(null, src, target);
								}, 350);
		} else {
			_RM_.updateAvailCitiesInteral(e, src, target);
		}
	},
	updateAvailCitiesInteral: function (e, src, target) {

		var mydata = _RM_.cache['cityData'];
		if (isUndefinedOrNull(mydata)) return;
		if (typeof src == "object") {
			var sObj = src;
		} else {
			var sObj = document.getElementById(src);
		}
		var tObj = document.getElementById(target);
		var text = (sObj.value).toUpperCase();
		var temp = "";
		var id = 0;
		var tempStr = "";
		
		if (e != null && e.keyCode == 40) {
			// down
			var length = tObj.options.length;
			var sIndex = tObj.selectedIndex;
			sIndex ++;
			if (sIndex > length -1) sIndex = 0;
			tObj.selectedIndex = sIndex;
		} else if (e != null &&e.keyCode == 38) {
			//up
			var length = tObj.options.length;
			var sIndex = tObj.selectedIndex;
			sIndex --;
			if (sIndex < 0) sIndex = length-1;
			tObj.selectedIndex = sIndex;
		} else {	
			//_RM_.clearAllOptionsObj(tObj);
			tObj.innerHTML = "";
			var start = 0;
			var end = mydata.data.length-1;
			var run = true;
			if (text == "") {
				
				
				if (_RM_.cache['selInnerHTML'] != "") {
					// if already cache, then put into the tObj.innerHTML
					if(navigator.appName == "Netscape") {
						tObj.innerHTML = _RM_.cache['selInnerHTML'];
					} else {
						tObj.outerHTML = _RM_.cache['selInnerHTML'];
					}
					run = false;
				} 
				//start = 0;
				//end = mydata.data.length;
			} else {
				var fLetter = text.substr(0,1).toUpperCase();
				var index = eval("mydata.index._"+fLetter);
				if (index == null || index == "") {
					//start = 0;
					//end = mydata.data.length;
				} else {
					start = index[0];
					end = index[1];
				}
			}
			
			if (run) {
				var tempStr = "";
				
				if(navigator.appName == "Netscape") {
					for (var i=start; i<=end; i++) {
						temp = mydata.data[i][0].toUpperCase();
						id = mydata.data[i][1];
						
						if (temp.indexOf(text) == 0) {
							_RM_.addOption(tObj, temp, id, true);
						}
					} // end for
					
				} else {
					var isSelected = "selected";
					for (var i=start; i<=end; i++) {
						temp = mydata.data[i][0].toUpperCase();
						id = mydata.data[i][1];
						
						if (temp.indexOf(text) == 0) {
							//_RM_.addOption(tObj, temp, id, true);
							tempStr += _RM_.getOptionHTML(temp, id, isSelected);
							if (isSelected != "") {
								isSelected = "";	
							}
						}
					} // end for
					tObj.innerHTML = "";
					var outStr = tObj.outerHTML.replace(/<\/SELECT>/i, "");
					outStr += tempStr + "</SELECT>";
					tObj.outerHTML = outStr;
				}
			}
			
			if (tObj.options.length >0) {
				tObj.selectedIndex = 0;
			}
		}
		//document.getElementById('debug').innerHTML = tObj.value;
	}, 

	clearAllOptionsObj: function(selObj){
		while(selObj.length > 0)
		{
			selObj.remove(0);
		}
	},

	addOption: function(selObj, OptParam1, OptParam2) {
		try {
			selObj.add(new Option(OptParam1, OptParam2), null);
		} catch (ex) {
			// IE
			selObj.add(new Option(OptParam1, OptParam2));
		}
	},
	
	getOptionHTML: function(OptParam1, OptParam2, extra) {
		return "<OPTION value="+OptParam2+" "+extra+">"+OptParam1+"</OPTION>";
	},
	/* Current user info*/
	member: {
		upgraded:'no',
		init: function() {}
	}, 
	/* display member photo  */
	memberphoto: {
		
		setPrimaryPhoto: function(divId, id, mid, mtype, umode) {
			var query = "id=" + id;
			query += "&mid=" + mid;
			query += "&mtype=" + mtype;

			var url = _RM_.urlPrefix + "set_member_primphoto.php";
		
			var aObj = new ajaxObject(url, function(rText,rStatus) {
												var input = eval(rText);
												if (input.status == "success") {	
													_RM_.memberphoto.getPhotos(divId, mid, mtype, umode);
												}
											});
			aObj.update(query);
		}, 
		deletePhoto: function(divId, id, mid, mtype) {
			var query = "id=" + id;
			query += "&mid=" + mid;
			query += "&mtype=" + mtype;

			var url = _RM_.urlPrefix + "delete_member_photo.php";
			
			var aObj = new ajaxObject(url, function(rText,rStatus) {
												var input = eval(rText);
												if (input.status == "success") {
													_RM_.memberphoto.clearPhoto(divId, id);		
												}
											});    
			aObj.update(query);
		},
		
		getPhotos: function(divId, mid, mtype, umode) {

			var query = "mid=" + mid;
			query += "&mtype=" + mtype;

			var url = _RM_.urlPrefix + "get_member_photo.php";
			var aObj = new ajaxObject(url, function(rText,rStatus) {
												_RM_.memberphoto.clearAllPhotos(divId);		
												var input = eval(rText);
												_RM_.memberphoto.loadPhotos(divId, input, umode);
											});    
			aObj.update(query);
		}, 
		
		clearPhoto: function (divId, id) {
			var photoId = divId + "_" + id;
			var obj = getElement(photoId);
			var pNode = obj.parentNode;
			pNode.removeChild(obj);
		},
		
		clearAllPhotos: function (divId) {
			getElement(divId).innerHTML = "";
		},
		
		loadPhotos: function (divId, input, umode) {
			var div = getElement(divId);
			if (input.status == "success") {
				var data = ""; 
				var user = input.user;
				
				for (var i=0; i<input.data.length; i++) {
					data = input.data[i];
					// place holder
					var pDiv = document.createElement('div');
					pDiv.id = divId + "_" + data.id;
					
					if (umode == "medit") {
						pDiv.className = "photoBoxEdit";	
					} else {
						pDiv.className = "photoBox";	
					}
					
					// photo & photo holder
					var iDiv = document.createElement('div');
					iDiv.className = "thumbHolder";
					if (umode == "medit") {
						iDiv.rmval_1 = data.photo_name_large;
						iDiv.onclick = function() {
											imgview(this.rmval_1);
										};
					} else if (umode == "normal")  {
						iDiv.rmval_1 = data.photo_name_large;
						
						iDiv.onclick = function() {
							
											imgview(_RM_.member.upgraded, iDiv.rmval_1);
										};	
					}
					var img = document.createElement('img');
					img.id = "photo_" + data.id;
					img.className = "thumbPhoto";
					img.src = "photo/" + data.photo_name_small;
					img.border = 0;
					img.width = 100;
					iDiv.appendChild(img);
					pDiv.appendChild(iDiv);
					
					// for edit only
					if (umode == "medit"){
						
						// add teh delete text plus action. 
						var span = document.createElement('span');
						span.className = "photodeletetext";
						span.innerHTML = "Delete<br />";
						span.rmval_1 = data.id;
						span.onclick = function () {
											_RM_.memberphoto.deletePhoto(divId, this.rmval_1, user.userid, user.usertype);
										}
						pDiv.appendChild(span);
						
						// set text for prim photo
						if (user.primphoto == data.photo_name_small) {
							span = 	document.createElement('span');
							span.className = "primephototext";
							span.innerHTML = input.setText.primarytext;
							pDiv.appendChild(span);
						} else {
							span = 	document.createElement('span');
							span.className = "setphototext";
							span.innerHTML = input.setText.setastext;
							span.rmval_1 = data.id;
							span.onclick = function () {
											_RM_.memberphoto.setPrimaryPhoto(divId, this.rmval_1, user.userid, user.usertype, umode);
												}
							pDiv.appendChild(span);
						}
					}
					div.appendChild(pDiv);
				}
				
				
			} else {
				// do nothing	
			}
		}, 

		
		
		init: function() {
			
		}
	},
	
	// init
	init: function()  {
		_RM_.urlPrefix = "http://" + location.host + "/";	
		
	}
}
_RM_.init();


