function IsNumeric(sText)
{
    var ValidChars = "0123456789.,";
    var IsNumber=true;
    var Char;
        
    for (i = 0; i < sText.length && IsNumber == true; i++) 
        { 
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
            {
            IsNumber = false;
            }
        }
    return IsNumber;
}

function Trim(TRIM_VALUE){
    if(TRIM_VALUE.length < 1){
        return"";
    }
    TRIM_VALUE = RTrim(TRIM_VALUE);
    TRIM_VALUE = LTrim(TRIM_VALUE);
    if(TRIM_VALUE==""){
        return "";
    }
    else{
        return TRIM_VALUE;
    }
} //End Function

function RTrim(VALUE){
    var w_space = String.fromCharCode(32);
    var v_length = VALUE.length;
    var strTemp = "";
    if(v_length < 0){
        return"";
    }
    var iTemp = v_length -1;

    while(iTemp > -1){
    if(VALUE.charAt(iTemp) == w_space){
    }
    else{
        strTemp = VALUE.substring(0,iTemp +1);
        break;
    }
    iTemp = iTemp-1;

    } //End While
    return strTemp;

} //End Function

function LTrim(VALUE){
    var w_space = String.fromCharCode(32);
    if(v_length < 1){
        return"";
    }
    var v_length = VALUE.length;
    var strTemp = "";

    var iTemp = 0;

    while(iTemp < v_length){
        if(VALUE.charAt(iTemp) == w_space){
        }
        else{
            strTemp = VALUE.substring(iTemp,v_length);
            break;
        }
        iTemp = iTemp + 1;
    } //End While
    return strTemp;
} //End Function

function copyValue(source, destination)
{
  oSource = document.getElementById(source);
  if (oSource != null)
  {
    oDestination = document.getElementById(destination);
    if (oDestination != null)
    {
      if (oSource.value)
        oDestination.value = oSource.value;
      else
        oDestination.value = "";
    }
  }
}

function copyContactAddr2PropertyAddr()
{
  copyValue("SUITE_NO", "PRESENT_SUITE_NO");
  copyValue("HOUSE_NO", "PRESENT_HOUSE_NO");
  copyValue("STREET_NAME", "PRESENT_STREET_NAME");
  copyValue("CITY", "PRESENT_CITY");
  copyValue("ZIP", "PRESENT_ZIP");
  copyValue("STATE", "PRESENT_STATE");
  copyValue("PO_BOX", "PRESENT_PO_BOX");
  copyValue("COUNTRY", "PRESENT_COUNTRY");
}  

function validateMarketSnapshotAccount()
{
  return $.ajax({
    type : "GET",
    url: "getListingStatsClient.asp",
    data: "ajax_code=MarketSnapshotAccountValidation",
    async: false
    }).responseText == "200";
}
function CheckCode()
{
	var code  = document.getElementById("theCode");
	var entry = document.getElementById("theEntry");
	var parenthost = document.styleSheets[0].href.substr(0,document.styleSheets[0].href.indexOf("/templates/"));

	return $.ajax({
	url: 'reverseproxyserver.asp?dest=' + parenthost + '/captcha.asp%3ftoken='+ code.value + '_'+ entry .value,
	type: 'GET',
	timeout: 1000, 
	async: false,  
	error: function(XMLHttpRequest, textStatus, errorThrown){
		return "failed";
	},
	success: function(obj){       
	    if (obj.result=="ok")
		{
		return "ok";
		}
	    else
		{
		return "failed";
		}
    	}
	}
	);
}

function validate(form_type_id, page_type)
{
  if (page_type == "msform") {
    if (!validateMarketSnapshotAccount()) {
      alert("The service is currently unavailable.  Please contact me to request a Market Snapshot.");
      return false;
    }
  }

  if (!checkMandatory(form_type_id)) return false;
  
  var obj = document.getElementById("EMAIL");
  if (obj != null)
  {
    if (!checkMail(obj.value))
    {
	      alert("Invalid email address format.");
	      obj.focus();
	      return false;
    }
  }
    
    if (page_type == "msform")
    {
      var objPhone =   $("#HOME_PHONE");
      if (!checkPhoneNumber(objPhone.val()))
      {
          alert("Invalid phone number format.");
          objPhone[0].focus();
          return false;
      }
    
      var id = "ZIP";
      if (form_type_id == 1) id = "PRESENT_ZIP";
        var objZip =   $("#"+id+"");
      if (!checkZipPostalCode(objZip.val()))
      {
          alert("Invalid Zip/Postal Code format.");
          objZip[0].focus();
          return false;
      }
    }

    var min_price = "MINIMUM_PRICE";
    var max_price = "MAXIMUM_PRICE";
    var features = "FEATURES";
    var header = "";
    if (form_type_id == 1) header = "PRESENT_";
	
    if (form_type_id != 2)
    {
	    var objMin = document.getElementById(header+min_price);
	    if (objMin != null)
	    {
		    if (!IsNumeric(objMin.value))
		    {
			    alert("Invalid minimum price format.");
			    objMin.focus();
			    return false;
		    }
	    }

	    var objMax = document.getElementById(header+max_price);
	    if (objMax != null)
	    {
		    if (!IsNumeric(objMax.value))
		    {
			    alert("Invalid maximum price format.");
			    objMax.focus();
			    return false;
		    }
	    }
    }

		var objFeatures = document.getElementById(header+features);
		if (objFeatures)
		{
      objFeatures.value = Array2StringByDelimiter(String2Array(objFeatures.value), ", ");
    }

	if (!document.getElementById("theCode")) {
		return true;
	} else {
		var isvalid = CheckCode();

		if (isvalid.responseText == "ok")   
		{
			return true;
		}
		else		
		{
			alert("The verification code was not entered correctly. Please try again.");
			var entry = document.getElementById("theEntry");
			entry.value="";
			entry.focus();
			return false;
		}
	}
  }
  
  function checkMandatory(form_type_id)
  {
      var header = "";
      if (form_type_id == 1) header = "PRESENT_";

      var obj = document.getElementsByName("mandatory_field");
      if (obj == null) return false;
      for (var i = 0; i < obj.length; i++ )
      {
        controlName = obj[i].value;
          var obj1 = document.getElementById(controlName);
          if (Trim(obj1.value) == "")
          {
              alert("Please enter the following required fields: "+createMandatoryMessage(obj)+".");
              
              if (obj[i].value == header+"FEATURES") {
                var obj2 = document.getElementById("feature_input");
                obj2.focus();
              }
              else
                obj1.focus();
              return false;
          }
      }
      return true;
  }
  
  function createMandatoryMessage(obj)
  {
	var s = "";
      for (var i = 0; i < obj.length; i++ )
      {
        controlName = obj[i].value;
          var obj1 = document.getElementById(controlName);
          if (Trim(obj1.value) == "")
          {
			if ( s != "")
				s = s + ", ";
		    var displayName = NamePair[controlName];
			s = s + displayName;
          }
      }
      return s;
  }
  
function ismaxlength(obj)
{
	var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
	if (obj.getAttribute && obj.value.length>mlength)
		obj.value=obj.value.substring(0,mlength)
}

function getArraySize(a)
{
  var counter = 0;
  for ( var i = 0; i < a.length; i++ )
  {
    if (Trim(a[i]) != "") counter += 1;
  }
  return counter;
}

function Array2StringByDelimiter(a, delimiter)
{
  var result = "";
  for ( var i = 0; i < a.length; i++ ) {
    if (Trim(a[i]) != "") {
      if (result == "")
        result = Trim(a[i]);
      else
        result += delimiter + Trim(a[i]);
    }
  }
  return result;
}

function Array2String(a)
{
  return Array2StringByDelimiter(a, seperator4Feature);
}

function String2Array(vFeatures)
{
  var result = "";
  var aFeatures = vFeatures.split(seperator4Feature);
  // clean up all empty items.
  for (var i = 0; i < aFeatures.length; i++ )
  {
    if (Trim(aFeatures[i]).length != 0)
    {
      if (result == "")
        result += Trim(aFeatures[i]);
      else
        result += seperator4Feature + Trim(aFeatures[i]); 
    }
  }
  return result.split(seperator4Feature);
}

var seperator4Feature = "[[']]";

function buildFeaturesTR(control_name, vFeatures, file_path)
{
  var result = "<table cellspacing=\"0\" cellpadding=\"2\" >";
  var aFeatures = vFeatures.split(seperator4Feature);
  for (var i = 0; i < getArraySize(aFeatures); i++ )
  {
  result += "<tr>" + "\r";
  result += "<td style=\"border-bottom:1px solid #7F9DB9;\" width=\"100%\">"  + "\r";
  result += aFeatures[i] + "\r";
  result += "</td>" + "\r";
  result += "<td style=\"border-bottom:1px solid #7F9DB9;\">" + "\r";
  result += "<a style=\"vertical-align:middle\" href=\"javascript:onFeatureRemoved("+i+", '"+control_name+"', '"+file_path+"')\"><img src=\""+file_path+"/templates/_IMAGES/common/bt_remove.gif\" border=\"0\"></a>" + "\r";
  result += "</td>" + "\r";
  result += "</tr>" + "\r";
  }

  var vFeatureInput = Trim(document.getElementById("feature_input").value);

var objFeatureAdd = document.getElementById("feature_add");
  if (getArraySize(aFeatures) >= 15 || (vFeatureInput.length == 0))
  {
	objFeatureAdd.disabled = true;
  }
  else
	objFeatureAdd.disabled = false;

  if (getArraySize(aFeatures) >= 15) 
	document.getElementById("feature_input").disabled = true;
  else
	document.getElementById("feature_input").disabled = false;
  
  if (objFeatureAdd.disabled)
	objFeatureAdd.src = file_path + "/templates/_IMAGES/common/bt_feature_ds.gif";
  else
	objFeatureAdd.src = file_path + "/templates/_IMAGES/common/bt_feature_dn.gif";
	
  return result + "</table>";
}

function refreshFeatures(control_name, file_path)
{
  var objFeatureInputed = document.getElementById(control_name);
  return refreshFeaturesByValue(control_name, objFeatureInputed.value, file_path)
}

function refreshFeaturesByValue(control_name, value, file_path)
{
  var objFeatures = document.getElementById("div_" + control_name);
  objFeatures.innerHTML = buildFeaturesTR(control_name, value, file_path);
}

function onFeatureAdd(control_name, file_path)
{
  var objFeatureInput = document.getElementById("feature_input");
  var vFeatureInput = Trim(objFeatureInput.value);
  if (vFeatureInput.length == 0) return;
  
  var objFeatureInputed = document.getElementById(control_name);
  //now check whether it reach 15 overall
  var aFeatures = objFeatureInputed.value.split(seperator4Feature);
  var aFeaturesInput = String2Array(vFeatureInput);
  var validNumberInput = 15 - getArraySize(aFeatures);
  var validInput = "";
  if (getArraySize(aFeatures) == 0)
    validInput = Array2String(aFeaturesInput);
  else  
    validInput = seperator4Feature + Array2String(aFeaturesInput);
  if (getArraySize(aFeaturesInput)> validNumberInput )
  {
    validInput = "";
    for (var i = 0; i < validNumberInput; i++ ) {
      validInput += seperator4Feature + aFeaturesInput[i]; 
    }
  }

  objFeatureInput.value = "";
  objFeatureInputed.value = objFeatureInputed.value + validInput;
  refreshFeatures(control_name, file_path);
  var objFeatures = document.getElementById("div_" + control_name);
  objFeatures.scrollTop = 999;	  
  
}

function onFeatureRemoved(remove_idx, control_name, file_path)
{
  var objFeatureInputed = document.getElementById(control_name);
  vFeatures = objFeatureInputed.value;

  var result = "";
  aFeatures = String2Array(vFeatures);
  
  for (var i = 0; i < aFeatures.length; i++ )
  {
    if (i != remove_idx)
    {
      if (Trim(result).length == 0)
        result += Trim(aFeatures[i]);
      else
        result += seperator4Feature + aFeatures[i];
    }
  }

  objFeatureInputed.value = result;
  refreshFeatures(control_name, file_path);
}

function onFeatureTyped(control_name, file_path)
{
  var objFeatureAdd = document.getElementById("feature_add");

  var vFeatureInput = Trim(document.getElementById("feature_input").value);
  if (vFeatureInput.length == 0) 
	objFeatureAdd.disabled = true;
  else
	objFeatureAdd.disabled = false;

  var objFeatureInputed = document.getElementById(control_name);
  var aFeatures = String2Array(objFeatureInputed.value);    

if (getArraySize(aFeatures) >= 15) objFeatureAdd.disabled = true;

  if (getArraySize(aFeatures) >= 15) 
	document.getElementById("feature_input").disabled = true;
  else
	document.getElementById("feature_input").disabled = false;

  if (objFeatureAdd.disabled)
	objFeatureAdd.src = file_path + "/templates/_IMAGES/common/bt_feature_ds.gif";
  else
	objFeatureAdd.src = file_path + "/templates/_IMAGES/common/bt_feature_dn.gif";
	
}

