//Global variable for alert on form submit
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
var $optionalContentAlert;
var submitFlag = false;

$(document).ready(function() {
		 $optionalContentAlert = $('#optionalContentAlert')			
			.dialog({
				autoOpen: false,
				title: 'Missing Information',
				modal: true,
				bgiframe: true,
				height: 250,
				width: 500,
				resizable:false,
				close: function(event, ui) { 
							submitFlag=false;
						 	},
				buttons: {
								'Cancel' : function() {
							submitFlag=false;
							$optionalContentAlert.dialog('close');
						 },

						'Continue': function() {
						// $(this).dialog('close');
						document.pressed = 'Next';
						submitFlag=true;
						if(validateStartForm())
							{
						document.startForm.submit();
							}
							else
							{
								$(this).dialog('close');
							}

					}
					
					
				}

			});

	});



function selectNone(){
	document.getElementById("customImageRadio").checked = false;
	document.getElementById("noneRadio").checked = true;

	document.getElementById("noImageMap").style.border = "3px solid #00FF00";
	document.getElementById("uploader").style.border = "3px solid #FFFFFF";

	document.getElementById("imageMapSource").value = "none";
	document.getElementById("imageMapName").value = "none";
}

function setCustom(imageName){

	document.getElementById("customImageRadio").checked = true;
	document.getElementById("noneRadio").checked = false;

	document.getElementById("uploader").style.border = "3px solid #00FF00";
	document.getElementById("noImageMap").style.border = "3px solid #FFFFFF";

	document.getElementById("imageMapSource").value = "customImage";
	document.getElementById("imageMapName").value = imageName;
	document.getElementById("uploadedMapName").value = imageName;
}

function selectCustom(){
	
	if(document.getElementById("uploadedMapName").value != "none"){
		document.getElementById("customImageRadio").checked = true;
		document.getElementById("noneRadio").checked = false;

		document.getElementById("uploader").style.border = "3px solid #00FF00";
		document.getElementById("noImageMap").style.border = "3px solid #FFFFFF";

		document.getElementById("imageMapSource").value = "customImage";
	}
	else {
		selectNone();
	}
}

function MultiPowUpload_onComplete(type, fileIndex, response){
	setCustom(response);
}

function OnSubmitForm(form) {
	if(document.pressed == 'Next') {
		//check all fields
		//alert("checking all fields");

	/*	var tags = document.getElementById("tag");
		var title = document.getElementById("title");
		var price=document.getElementById("price");
		var address=document.getElementById("address");
		var nonAState=document.getElementById("nonAState");
		var zip=document.getElementById("zip");

		
		var lat=document.getElementById("lat");
		var lng=document.getElementById("lng");
		*/
		if(submitFlag)
		{
			return validateStartForm();
		}
		else
		{
			return showOptionalAlert();
		}
		
		
		
	}
	
}

function checkTitle(obj){

	var field = obj;
	field.value=field.value.trim();
	 if(field.value.length <= 0){
		displayMessage("errorMessage", "Title is required");
		return false;
	} 

	var regEx = /^([a-zA-Z0-9._\- #,:!@$()\"\'%?|]+)$/;

	 if(!regEx.test(field.value)) {
		//displayMessage("errorMessage", "Title accepts the following characters (a-z, A-Z ,0-9,-, : , / , ( , ) ,#,_,$,@,! \"\') only.");
		displayWideMessage('errorMessage', 'Title accepts the following characters (a-z, A-Z ,0-9,-, :\" , / , ( , ) ,#,_,$,@,!,%,?,| ) only.', '450px', '35px');
		field.focus();
		field.select();
		return false;
	}
	else {
		return true;
	}

	
}

function checkTags(obj){

	var field = obj;

	if(field.value.length == 0){
		return true;
	}

	var regEx = /^([a-zA-Z0-9._\- #,:!@$()\"\';\*?%| \n \r \t]*)$/;

	if(!regEx.test(field.value)) {
		//displayMessage("errorMessage", "Please enter valid Tags");
		displayWideMessage('errorMessage', 'Tags/Keywords accepts the following characters (a-z, A-Z ,0-9,-, :\" , / , ( , ) ,#,_,$,@,!, ;,*,?,%,|) only.', '450px', '35px');
		field.focus();
		field.select();
		return false;
	}
	else {
		return true;
	}
}

function checkOptionalField(obj,fieldName){
	
	var field = obj;

	if(field.value.length == 0){
		// displayMessage("errorMessage", fieldName+" is required");
		return true;
	}

	if(field.name=='price')
	{

	var regEx = /^(([0-9,]+)[.]*([0-9]{2})*){0,1}$/;
	if(!regEx.test(field.value)) {
		displayWideMessage('errorMessage', 'Price accepts the following characters (0-9 , . ) only.', '450px', '35px');
		field.focus();
		field.select();
		return false;
	}
	else {
		return true;
	}

	}
	else if(field.name=='zip')
{
	var regEx = /^([0-9]{0,5})$/;
	if(!regEx.test(field.value)) {
		displayWideMessage('errorMessage', 'Zip Code should contain numeric values only and maximum 5 digits only.', '450px', '35px');
		field.focus();
		field.select();
		return false;
	}
	else {
		return true;
	}
}
else
{
	var regEx = /^[\s\w-"'\(\)\s\*\$\/%\|,\?\.#,\-@!]+$/;
	if(!regEx.test(field.value)) {
		//displayMessage("errorMessage", "Please enter a valid "+fieldName);
		displayWideMessage('errorMessage', fieldName+' accepts the following characters (a-z, A-Z ,0-9,-, :, | , / , ( , ) ,#,_,$,@,!, \",\',%,?) only.', '450px', '35px');
		field.focus();
		field.select();
		return false;
	}
	else {
		return true;
	}
}
}

  function toggleStatesField(checkObj)
    {
	    if(checkObj.checked)
	    {
	    document.getElementById("americanStates").style.display="block";
	     document.getElementById("nonAmerica").style.display="none";
		 document.getElementById("statesLabel").innerHTML="Please select your state:";
	    }
	    else
	    {
	    document.getElementById("americanStates").style.display="none";
	     document.getElementById("nonAmerica").style.display="block";
		  document.getElementById("statesLabel").innerHTML="Please enter your state:";
	    }
      
    }

	function initializeStatesField()
	{
	var checkObj=document.getElementById("countryFlag");
	 if(checkObj.checked)
		{
		document.getElementById("americanStates").style.display="block";
		 document.getElementById("nonAmerica").style.display="none";
		 document.getElementById("statesLabel").innerHTML="Please select your state:";
		}
		else
		{
		document.getElementById("americanStates").style.display="none";
		 document.getElementById("nonAmerica").style.display="block";
		   document.getElementById("statesLabel").innerHTML="Please enter your state:";
		}
		
	
	}

	function checkStateField(){
	
	var checkBoxObj=document.getElementById("countryFlag");
	var aStatesObj=document.startForm.state;

	
	if((checkBoxObj.checked) && aStatesObj.options[aStatesObj.selectedIndex].value=='null')
	{
	
	displayMessage("errorMessage", " Please select your state");
	return false;
	}
	else
	{
	return true;
	}
	
	}


	function showOptionalAlert()
	{
		var title = document.getElementById("title");
		var idx=document.getElementById("idx");
		var tags = document.getElementById("tag");
		var price=document.getElementById("price");
		var address=document.getElementById("address");
		var nonAState=document.getElementById("nonAState");
		var zip=document.getElementById("zip");

		var checkBoxObj=document.getElementById("countryFlag");
		var aStatesObj=document.startForm.state;

		if(idx.checked)
		{
			if(!checkTitle(title) )
			{
				return false;
			}
			else
			{
				return validateStartForm();
			}
		
		}
		else
		{
							
			if(!checkTitle(title) )
			{
					return false;
			}
			else if( price.value.length==0 || address.value.length==0 ||  ((checkBoxObj.checked) && aStatesObj.options[aStatesObj.selectedIndex].value=='null') || ((checkBoxObj.checked ==false) && nonAState.value.length==0 ) || zip.value.length==0)
			{
						var emptyOptionalFieldsString=new Array();
						var emptyOptionalFieldsMessagePart=new String(' ');
						var emptyOptionalFieldsMessageString=new String();
						 emptyOptionalFieldsMessageString="<p> Are you sure you want to submit this form without  entering details of <strong>_dynamic_data_ ?</strong> </p><br/><p>These details are necessary for using the  <strong>Loan Calculator, Property Map and School Info</strong> features.</p>";

						if(price.value.length==0)
						{
							emptyOptionalFieldsString[emptyOptionalFieldsString.length]="Price";
						}

						if(address.value.length==0)
						{
							emptyOptionalFieldsString[emptyOptionalFieldsString.length]="Property Address";
						}

						if(((checkBoxObj.checked) && aStatesObj.options[aStatesObj.selectedIndex].value=='null') || ((checkBoxObj.checked ==false) && nonAState.value.length==0 ))
						{
							emptyOptionalFieldsString[emptyOptionalFieldsString.length]="State";
						}

						if(zip.value.length==0)
						{
							emptyOptionalFieldsString[emptyOptionalFieldsString.length]="Zip Code";
						}
						// alert(emptyOptionalFieldsString.toString());
						
						if(emptyOptionalFieldsString.length>1)
					{
						
						for(i=0;i<emptyOptionalFieldsString.length;i++)
						{
							
							if(i==(emptyOptionalFieldsString.length-1))
							{
								
							emptyOptionalFieldsMessagePart=emptyOptionalFieldsMessagePart+" and "+emptyOptionalFieldsString[i];
							}
							else if(i==(emptyOptionalFieldsString.length-2))
							{
								
							emptyOptionalFieldsMessagePart=emptyOptionalFieldsMessagePart+emptyOptionalFieldsString[i];
							}
							else
							{
								
								emptyOptionalFieldsMessagePart=emptyOptionalFieldsMessagePart+emptyOptionalFieldsString[i]+", ";
							}
						}

					}
					else
					{
						emptyOptionalFieldsMessagePart=emptyOptionalFieldsString[0];
					}
						// alert(emptyOptionalFieldsMessagePart);
						// alert("before - "+emptyOptionalFieldsMessageString);
						emptyOptionalFieldsMessageString=emptyOptionalFieldsMessageString.replace("_dynamic_data_", emptyOptionalFieldsMessagePart);
						// alert("after - "+emptyOptionalFieldsMessageString);

						document.getElementById("optionalContentAlert").innerHTML=emptyOptionalFieldsMessageString;

						$optionalContentAlert.dialog('open');
						return false;
			}
			else
			{
				return validateStartForm();
			}

		}
						
	}


	function validateStartForm()
	{
		var tags = document.getElementById("tag");
		var title = document.getElementById("title");
		var price=document.getElementById("price");
		var address=document.getElementById("address");
		var nonAState=document.getElementById("nonAState");
		var zip=document.getElementById("zip");
		var idxCheckObj=document.getElementById("idx");
		var irpCheckObj=document.getElementById("irp");
		var countryFlag=document.getElementById("countryFlag");

		if(idxCheckObj.checked)
		{
			if(checkTitle(title))
			{
				try
				{
					price.value="";
					address.value="";
					nonAState.value="";
					zip.value="";
					tags.value="";
					irpCheckObj.checked=false;
					document.startForm.rentalType.selectedIndex=0;
					countryFlag.checked=false;
				   document.startForm.state.selectedIndex=0;
				}
				catch (e)
				{
				}
				
				return true;
			}
			else
			{
				return false;
			}
				
		}
		else
		{
			if(checkTitle(title) && checkIRPField() && checkTags(tags) && checkOptionalField(price,'Price') && checkOptionalField(address,'Property Address') && checkOptionalField(nonAState,'State') && checkOptionalField(zip,'Zip Code') && checkStateField() )
				return true;
			else
				return false;
		}


	}

	function checkIRPField(){
	
	var idxCheckObj=document.getElementById("idx");
	var checkBoxObj=document.getElementById("irp");
	var aRentalTypeObj=document.startForm.rentalType;
	
	if(idxCheckObj.checked==false)
	{
		if((checkBoxObj.checked) && aRentalTypeObj.options[aRentalTypeObj.selectedIndex].value=='null')
		{
		
		displayMessage("errorMessage", " Please select a Rental Type.");
		aRentalTypeObj.focus();
		return false;
		}
		else
		{
		return true;
		}

	}
	else
	{
		return true;
	}
	
	}



	function toggleIRPField(checkObj)
    {
	    if(checkObj.checked)
	    {
	    document.getElementById("rentalTypeTr").style.display="block";
	     }
	    else
	    {
	    document.getElementById("rentalTypeTr").style.display="none";
	    }
      
    }

	function initializeIRPField()
	{
	var checkObj=document.getElementById("irp");
	 if(checkObj.checked)
		{
		document.getElementById("rentalTypeTr").style.display="block";
		 }
		else
		{
		document.getElementById("rentalTypeTr").style.display="none";
		}
		
	
	}


	function toggleIDXContent(checkObj)
    {
		var checkObj=document.getElementById("idx");
	    if(checkObj.checked)
	    {
	    document.getElementById("nonIdxContent").style.display="none";
	     }
	    else
	    {
	    document.getElementById("nonIdxContent").style.display="block";
	    }
      
    }


	

