function jValidateSearchForm(){
	if (jsIsEmpty(document.forms[0]['s'].value) || document.forms[0]['s'].value == 'Enter search term')
		return false;		
	return true;
}

function jValidateContactForm1(jFrmNmbr){
	var jRrrMssg = '';
	if (jsIsEmpty(document.forms[jFrmNmbr]['Email'].value)) jRrrMssg = jRrrMssg + 'Email is required\n\n';
	if (!jsIsEmpty(document.forms[jFrmNmbr]['Email'].value) && !jsIsEmail(document.forms[jFrmNmbr]['Email'].value)) jRrrMssg = jRrrMssg + 'Email must be valid\n\n';
	if (jRrrMssg != ''){alert(jRrrMssg); return false;}
	return true;
}

function jValidateRefreshSearchForm(){
	var jRrrMssg = '';
	if (!jsIsEmpty(document.forms[1]['MinPrice'].value) && !jsIsNumber(document.forms[1]['MinPrice'].value))
		jRrrMssg = jRrrMssg + 'MinPrice should be numeric\n\n';
	if (!jsIsEmpty(document.forms[1]['MaxPrice'].value) && !jsIsNumber(document.forms[1]['MaxPrice'].value))
		jRrrMssg = jRrrMssg + 'MaxPrice should be numeric\n\n';
	if (!jsIsEmpty(document.forms[1]['Bedrooms'].value) && !jsIsNumber(document.forms[1]['Bedrooms'].value))
		jRrrMssg = jRrrMssg + 'Bedrooms should be numeric\n\n';
	if (!jsIsEmpty(document.forms[1]['Bathrooms'].value) && !jsIsNumber(document.forms[1]['Bathrooms'].value))
		jRrrMssg = jRrrMssg + 'Bathrooms should be numeric\n\n';
	if (jRrrMssg != ''){alert(jRrrMssg); return false;}
	return true;
}

function jShowPhotoGalleryLargeImage(jSmllImgD){
	$('#__images a img').each(function(index) {
		jsSetClass($(this).attr('id'), 'photogalleryimg');
	});
	jsGetElement('__largeImg').src = jsGetElement(jSmllImgD).src;
	jsSetClass(jSmllImgD, 'photogalleryimg-selected');
}

// Lib
uc = Date.parse(new Date()) + '_' + Math.round(100*Math.random()) + '_';
var ucIncrement = 0; // a value to be incremented
function jsUC(){  // return the unique value
	++ucIncrement;
	return (uc + (ucIncrement+''));
} // jsUC()

function jsTrim(jVl){ // jVl = value to 'trim'
	return jVl.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, "");
} // jsTrim()

function jsSet(jLmntID, jVl){  // jLmntID = element id | jVl = value
	// Set the 'innerHTML' of an element
	if (document.all)
		document.all[jLmntID].innerHTML = jVl;
	else
		document.getElementById(jLmntID).innerHTML = jVl;
} // jsSet()

function jsSetValue(jLmntID, jVl){  // jLmntID = element id | jVl = value
	// Set the 'value' of an element
	if (document.all)
		document.all[jLmntID].value = jVl;
	else
		document.getElementById(jLmntID).value = jVl;
} // jsSetValue()

function jsSetSelectOption(jFrmFldBjct, jVl){ // jFrmFldBjct = form field object | jVl = value to set with
	// Set the 'selected' option of a select input list
	for (i=0; i < jFrmFldBjct.options.length; i++){
		if (jFrmFldBjct.options[i].value == jVl)
			jFrmFldBjct.options[i].selected = true;
	}
} // jsSetSelectOption()

function jsSetClass(jLmntID, jClssNm){ // jLmntID = element id | jClssNm = class name
	// Set the 'class' of an element
	if (document.all)
		document.all[jLmntID].className = jClssNm;
	else
		document.getElementById(jLmntID).className = jClssNm;
} // jsSetClass()

function jsSetDisabled(jLmntID, jBlnFlg){ // jLmntID = element id | jBlnFlg = boolean flag
	// Set the 'disabled' attribute of an element
	if (document.all)
		document.all[jLmntID].disabled = jBlnFlg;
	else
		document.getElementById(jLmntID).disabled = jBlnFlg;
} // jsSetDisabled()

function jsGetElement(jLmntID){ // jLmntID = element id
	if (document.all)
		return document.all[jLmntID];
	else 
		return document.getElementById(jLmntID);
} // jsGetElement()

function jsGetElementValue(jLmntID){ // jLmntID = element id
	if (document.all)
		return document.all[jLmntID].value;
	else
		return document.getElementById(jLmntID).value;
} // jsGetElementValue()

function jsGetElementInnerHTML(jLmntID){ // jLmntID = element id
	// Get the 'innerHTML' of an element
	if (document.all)
		return document.all[jLmntID].innerHTML;
	else
		return document.getElementById(jLmntID).innerHTML;
} // jsGetElementInnerHTML()

function jsGetElementClass(jLmntID){ // jLmntID = element id
	// Get the 'class' of an element
	if (document.all)
		return document.all[jLmntID].className;
	else
		return document.getElementById(jLmntID).className;
} // jsGetElementClass()

function jsAdd2Select(jLmntID, jTxt, jVl, MptyFlg){ // jLmntID = element id | jTxt = option text | jVl = option value | MptyFlg = empty flag
	if (MptyFlg){ // Remove all options from select list
		if (document.all)
			for(var k = document.all[jLmntID].options.length - 1; k >= 0; k--)
				document.all[jLmntID].options[k] = null;
		else
			for(var k = document.getElementById(jLmntID).options.length - 1; k >= 0; k--)
				document.getElementById(jLmntID).options[k] = null;	
	} // if
	// Add options to select list
	if (jsTrim(jTxt) == '' && jsTrim(jVl) == '')
		return;
	jNwPtn = new Option(jTxt, jVl);	
	if (document.all)
		document.all[jLmntID].options[document.all[jLmntID].options.length++] = jNwPtn;
	else
        document.getElementById(jLmntID).options[document.getElementById(jLmntID).options.length++] = jNwPtn;
	return;
} // jsAdd2Select()

function jsIsEmpty(jStrng){ // jStrng = string to check if empty
	var jStrng2 = jsTrim(jStrng);
	return ((jStrng2 == null) || (jStrng2.length == 0));
} // jsIsEmpty()

function jsIsEmptyRadio(jFrmFldNm, jFrmNmbr){ // jFrmFldNm = radio form field name | jFrmNmbr = form number
	for (i=document.forms[jFrmNmbr][jFrmFldNm].length-1; i > -1; i--)
		if(document.forms[jFrmNmbr][jFrmFldNm][i].checked) 
			return false;
	return true;
} // jsIsEmptyRadio()

var reEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/i;
function jsIsEmail(jMls){ // jMls = email to validate (empty is Ok)
	return reEmail.test(jMls);
} // jsIsEmail()

var reFloat = /^-?((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
function jsIsNumber(jNmbr) { // jNmbr = number to check
	return reFloat.test(jNmbr);
} // jsIsNumber()

function jsIsInteger(jNmbr, jSgndNtgr) { // jNmbr = number to check | jSgndNtgr = allow signed integer (true/false)
	if (jSgndNtgr)
		return (jNmbr.toString().search(/^-?[0-9]+$/) == 0); // allows negative sign
	else
		return (jNmbr.toString().search(/^[0-9]+$/) == 0); // does not allow negative sign
} // jsIsInteger()

function jsGetToken(jVl, jTknPs, jDlmtr, jDfltVl){ // jVl = string value to extract from | jTknPs = token position to extract, optional {last} | jDlmtr = delimiter | jDfltVl = default value when token not found
	var jTknsRry = jVl.split(jDlmtr); // make an array
	if (jTknPs == 'last'){ //  last token
		if (jTknsRry.length > 0)
			return jTknsRry[(jTknsRry.length-1)];
		else	
			return jDfltVl;	
	}
	if (jTknPs < 1) // token is not numeric
		return jDfltVl;
	if (jTknsRry.length < jTknPs)
		return jDfltVl;
	return jTknsRry[(jTknPs-1)];
} // jsGetToken()

function jsAppendToken(jVl, jPpndVl, jDlmtr){ // jVl = string value to append to | jPpndVl = value to be appended | jDlmtr = delimiter
	if (jVl != '')
		jVl = jVl + jDlmtr + jPpndVl;
	else
		jVl = jPpndVl;
	return jVl;
} // jsAppendToken()

function ctcd(jCtn, jVl){ // jCtn = action | jVl = value
	if (jCtn == 'search'){
		for (var f=0; f<document.forms.length; f++)
			if (typeof(document.forms[f]['citycode']) != "undefined")
				return true;
	} // if
	if (jCtn == 'write'){
		for (var f=0; f<document.forms.length; f++)
			if (typeof(document.forms[f]['citycode']) != "undefined")
				document.forms[f]['citycode'].value = jVl;
	} // if
	return false;
}

function jsCollapseToggle(jLmntID){ // jLmntID = element id
	if (document.all)
		var jTrgt = document.all[jLmntID];
	else
		var jTrgt = document.getElementById(jLmntID);
    if (jTrgt.style.display == 'block')
        jTrgt.style.display = 'none';
    else 
        jTrgt.style.display = 'block';
} // jsCollapseToggle()

function jsSetStyleDisplay(jLmntID, jVl){ // jLmntID = element id | jVl = value {block or none}
	// Set the 'style.display' attribute of an element
	if (document.all)
		document.all[jLmntID].style.display = jVl;
   else
       document.getElementById(jLmntID).style.display = jVl;
} // jsSetStyleDisplay()
