var noResizeWindProp="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no";
var stdWindProp="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no";
var printWindProp="toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=no";
var debugWindProp="toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes";

var stdWindDim=",width=600,height=550";
var imgWindDim=",width=400,height=400";
var imgTourWindDim=",width=540,height=550";
var companyWebWindDim=",width=550,height=550";
var mapWindDim=",width=600,height=560";
var feedbackWindDim=",width=460,height=350";
var supportWindDim=",width=680,height=440";

var pop_web="web.cgi?popup=1";
var pageLoaded=0;

// ===============================================

var ie=(navigator.appName.indexOf("Microsoft")!=-1)
var bVer = parseInt(navigator.appVersion); 

// ===============================================
function mort_calc(id){
	window.open('c_mortgage_calc.cgi?id='+id,
		"_blank",stdWindProp+",width=400,height=400");
}

function openVT(link){	window.open(link, "_blank", stdWindProp+companyWebWindDim);	} // virtual tour
function openFP(listing_id, link){	
	var feature = '';
	if(document.pageForm.isFeature!=null) feature = '&isFeature='+document.pageForm.isFeature.value;
	window.open(pop_web+"&task=listing_viewImage&listing_id="+listing_id+feature+"&link="+link, "_blank", stdWindProp+imgTourWindDim);	
} // floor plan
function openPT(listing_id){
	var feature = '';
	if(document.pageForm.isFeature!=null) feature = '&isFeature='+document.pageForm.isFeature.value;
	window.open(pop_web+"&task=listing_viewImage&listing_id="+listing_id+feature, "_blank", stdWindProp+imgTourWindDim);	
} // picture tour
function openMap(link){		window.open(link, "_blank", stdWindProp+mapWindDim);	} 


function email(email,listing_id){	
	window.open(pop_web+"&task=web_email&email="+email+"&listing_id="+listing_id, "_blank", stdWindProp+feedbackWindDim);
} 
function emailFriend(listing_id){	
	window.open(pop_web+"&task=web_emailFriend&listing_id="+listing_id, "_blank", stdWindProp+feedbackWindDim);
} 


// -- validate form ------------------------------------------------
function validId(elt){
	if(elt.value.length==0) {alert('ID is empty.'); return false;}
	var ret=true;
	elt.value = elt.value.replace(/^\s+/, "");
	elt.value = elt.value.replace(/\s+$/, "");
	for(var i=0; i<elt.value.length; i++) if (elt.value.charAt(i)<"0" || elt.value.charAt(i)>"9") ret=false;
	if(!ret) alert('ID must be number.'); 
	return ret;
}

function validateDream(e)    {
	var msg='';
	if(isEmpty(e.email.value))		msg+='Email is required.\n';
	else if (!isEmail(e.email.value))			msg+='Email format incorrect. \n';
	if(!isEmpty(e.price_min.value) && !isMoney(e.price_min.value))		msg+='Min Price format incorrect. (numbers 0-9 only)\n';
	if(!isEmpty(e.price_max.value) && !isMoney(e.price_max.value))		msg+='Max Price format incorrect. (numbers 0-9 only)\n';
	if(e.location[e.location.selectedIndex].value==1)			msg+='Invalid Dream Location.\n';

	if(msg.length!=0){alert(msg); return false;}
	return true;
}

function validateContactUs(e)    {
	var msg='';
	if(isEmpty(e.fname.value))		msg+='First Name is required.\n';
	if(isEmpty(e.lname.value))		msg+='Last Name is required.\n';
	if(isEmpty(e.email.value))		msg+='Email is required.\n';
	else if (!isEmail(e.email.value))			msg+='Email format incorrect. \n';
	if(isEmpty(e.message.value))		msg+='Message is required.\n';

	if(msg.length!=0){alert(msg); return false;}
	return true;
}

function validateListYourProperty(e)    {
	var msg='';
	if(isEmpty(e.building_address.value))		msg+='Address of property is required.\n';
	if(isEmpty(e.unit.value))		msg+='Unit # is required.\n';
	if(isEmpty(e.num_of_room.value))	msg+='Number of Rooms is required.\n';
	else if (!isNumber(e.num_of_room.value,3))	msg+='Number of Rooms should be a number.\n';
	if(isEmpty(e.num_of_bed.value))		msg+='Number of Bedrooms is required.\n';
	else if (!isNumber(e.num_of_bed.value,3))	msg+='Number of Bedrooms should be a number.\n';
	if(isEmpty(e.num_of_bath.value))	msg+='Number of Bathrooms is required.\n';
	else if (!isNumber(e.num_of_bath.value,3))	msg+='Number of Bathrooms should be a number.\n';
	if(!e.category[0].checked && !e.category[1].checked)	msg+='For Rent or Sale is required.\n';
	if(isEmpty(e.price.value))		msg+='Asking Price is required.\n';
	else if (!isNumber(e.price.value,3))	msg+='Asking Price should be a number.\n';

	if(isEmpty(e.fname.value))		msg+='Owner\'s First Name is required.\n';
	if(isEmpty(e.lname.value))		msg+='Owner\'s Last Name is required.\n';
	if(!isEmpty(e.email.value) && !isEmail(e.email.value))		msg+='Owner\'s Email format incorrect. \n';
	if(isEmpty(e.dphone.value))		msg+='Owner\'s Day Phone is required.\n';

	if(!isEmpty(e.email2.value) && !isEmail(e.email2.value))		msg+='Access\'s Email format incorrect. \n';

	if(msg.length!=0){alert(msg); return false;}
	return true;
}

// -- search form ------------------------------------------------
function selectLocation(e)    {
	for (i=1; i<=15; i++){
		if(e.form.elements['sc_location_'+i]!=null) e.form.elements['sc_location_'+i].checked=e.checked;
		if(e.form.elements['location_'+i]!=null)	e.form.elements['location_'+i].checked=e.checked;
	}
}

function chgColor(e, i){
	if (ie && e!=null)	{
		var color = (e.checked)?'333399':'666699';
		var fontWeight = (e.checked)?'bolder':'normal';
		if (i==0) {	
			for (i=0; i<=15; i++){
				document.getElementById('loc'+i).style.color=color;
				document.getElementById('loc'+i).style.fontWeight=fontWeight;
			}
		}else{
			document.getElementById('loc'+i).style.color=color;
			document.getElementById('loc'+i).style.fontWeight=fontWeight;
		} 
	}
}

function chgCategoryColor(i){
	if (ie)	{
		var color1 = (i==1)?'333399':'666699';
		var color2 = (i==2)?'333399':'666699';
		var fontWeight1 = (i==1)?'bolder':'normal';
		var fontWeight2 = (i==2)?'bolder':'normal';
		document.getElementById('category1').style.color=color1;
		document.getElementById('category1').style.fontWeight=fontWeight1;
		document.getElementById('category2').style.color=color2;
		document.getElementById('category2').style.fontWeight=fontWeight2;
	}
}


function validateListingSearch(e)    {
	var msg='';
	if(!isEmpty(e.sc_price_min.value) && !isNumber(e.sc_price_min.value))		msg+='Min Price format incorrect. (numbers 0-9 only)\n';
	if(!isEmpty(e.sc_price_max.value) && !isNumber(e.sc_price_max.value))		msg+='Max Price format incorrect. (numbers 0-9 only)\n';
	if(!isEmpty(e.sc_bath.value) && !isNumber(e.sc_bath.value,1))			msg+='# of Baths format incorrect. (numbers 0-9 and symbol . only)\n';
	if(!isEmpty(e.sc_sqft.value) && !isNumber(e.sc_sqft.value,1))			msg+='App. Sq. Ft. format incorrect. (numbers 0-9 and symbol . only)\n';

	if(msg.length!=0){alert(msg); return false;}
	return true;
}

// === LISTING SEARCH SECTION =============================================

function gotoPage(num){ 
	document.pageForm.sc_offset.value=num; 
	document.pageForm.listing_id.value=0; 
	document.pageForm.submit(); 
}
function chgOrder(order){
	document.pageForm.sc_listing_id_list.value=''; 
	document.pageForm.sc_offset.value=0; 
	document.pageForm.sc_order.value=order; 
	document.pageForm.listing_id.value=0; 
	document.pageForm.submit(); 
}
function viewDetail(id){ 
	document.pageForm.listing_id.value=id; 
	if(document.pageForm.isFeature!=null)document.pageForm.isFeature.value=0; 
	document.pageForm.submit(); 
}
function viewFeature(id){ 
	document.pageForm.listing_id.value=id; 
	if(document.pageForm.isFeature!=null)document.pageForm.isFeature.value=1; 
	document.pageForm.submit(); 
}
	
function viewResult(){
	if(pageLoaded==1){
		document.forms[1].submit();
	}
}

function prevUnit(){
	if(pageLoaded==1){
		var f = document.forms[1];
		var arr = f.sc_listing_id_list.value.split(",");
		var i = f.listing_id_index.value;
		i = i?i:0;	i--;
		f.listing_id_index.value=i;
		if( arr.length>i){
			f.listing_id.value=arr[i];
		}
		f.submit();
	}
}
function nextUnit(){
	if(pageLoaded==1){
		var f = document.forms[1];
		var arr = f.sc_listing_id_list.value.split(",");
		var i = f.listing_id_index.value;
		i = i?i:0;	i++;
		f.listing_id_index.value=i;
		if( arr.length>i){
			f.listing_id.value=arr[i];
		}
		f.submit();
	}
}

//----------------------------------------------------------

function isDate(str) { //m-d-y or mm/dd/yyyy format
	str=new String(str);	// make string
	var separator = 0;
	var num = 0;
	var d='',m='',y='';
	for (var i=0; i<str.length; i++){
		var t = str.charAt(i);
		if (isDigit(t)) {
			if(separator==0){
				m=m+t;
			}else if(separator==1){
				d=d+t;
			}else if(separator==2){
				y=y+t;
			}
		}else if (t=="-" || t=="/") {
			separator++;
		}else {
			return false;
		}
	}
	return (m.length>0 && m>=1 && m<=12 && 
			d.length>0 && d>=1 && d<=31 && 
			y.length>0 && y>=1900 && y<=2200);
}
function isMoney(str) {
	for (var i=0; i<str.length; i++){ if (!isMoneyChar(str.charAt(i))) return false;}
	return true;
}
function isMoneyChar(c){ return (((c>="0")&&(c<="9")) || (c=="$") || (c==",") || (c==".")); }

// type (0=int, 1=float, 2=comma int, 3=comma float)
function isNumber(str, type) {
	type=(type==null)?0:type;
	for (var i=0; i<str.length; i++){ 
		var c = str.charAt(i); 
		if ((type==0 && !isDigit(c)) || (type==1 && !isDigit(c) && (c!=".")) || 
			(type==2 && !isDigit(c) && (c!=",")) || (type==3 && !isDigit(c) && (c!=",") && (c!="."))){
				return false;
		}
	}
	return true;
}

//function isNumber(str) {	for (var i=0; i<str.length; i++){ if (!isDigit(str.charAt(i))) return false;} return true;}
function isDigit(c){ return ((c>="0")&&(c<="9")); }
function isEmpty(str) {	return (str.length<1); }
function dropdownSelect(dropdown, value) { 
	for (var i=0; i<dropdown.length; i++)	{
		if(dropdown.options[i].value==value){	dropdown.selectedIndex=i;	break;	}
	}	
}
// -------------------------------------------------------------------------------------------------------------------------------------
// for valid email: see http://www.ietf.org/rfc/rfc0822.txt
var specials    =  '()<>@,;:\\"[] ';      
function isEmail(str){
	var filter=/^.+@.+\..+$/
	if (filter.test(str)){
		var tempstring = str.split("@")
		if(tempstring.length!=2)return false;
		var usr = tempstring[0].split(".")
		var domain = tempstring[1].split(".")
		for (var i=0; i<specials.length; i++){ 
			var c = specials.charAt(i);
			for (var j=0; j<usr.length; j++){ 
				if(usr[j].indexOf(c)>=0)	return false;
			}
			for (var j=0; j<domain.length; j++){ 
				if(domain[j].indexOf(c)>=0) return false;
			}
		}
		return true;
	}
	return false;
}
