//Global variable for alert on form submit
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;

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

	var regEx = /^[\s\w-"'\(\)\s\*\$\/%\[\]\{}\|\<\>,\?\.#,\-]+$/;

	 if(!regEx.test(field.value)) {
		displayMessage("errorMessage", "Please enter a valid Title");
		field.focus();
		field.select();
		return false;
	}
	else {
		return true;
	}

	
}

function checkTags(obj){

	var field = obj;

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

	var regEx = /^[\s\w-"'\(\)\s\*\$\/%\[\]\{}\|\<\>,\?\.#,\-]+$/;

	if(!regEx.test(field.value)) {
		displayMessage("errorMessage", "Please enter valid Tags");
		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;
	}

	var regEx = /^[\s\w-"'\(\)\s\*\$\/%\[\]\{}\|\<\>,\?\.#,\-]+$/;

	/*if(field.name=='address')
		{

			return codeAddress(obj.value);
			 
		}*/

	if(!regEx.test(field.value)) {
		displayMessage("errorMessage", "Please enter a valid "+fieldName);
		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 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 checkBoxObj=document.getElementById("countryFlag");
		var aStatesObj=document.startForm.state;
		
		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");


		if(checkTitle(title) && checkTags(tags) && checkOptionalField(price,'Price') && checkOptionalField(address,'Property Address') && checkOptionalField(nonAState,'State') && checkOptionalField(zip,'Zip Code') && checkStateField() )
			return true;
		else
			return false;

	}
