var email = true;
var validPassword = true;
var optionalMobileFlag = true;
var registrationEmail = true;
var registrationMobile = true;
var mobile = true;
var optionalMobile = true;
var validConfirmEmail = true;
var validImage = true;
var cvForResponse = true;

function validate(obj, id)
{      
	var parent = obj.parentNode;
	var img = parent.getElementsByTagName('IMG');   
	var status = false;
	var errorMsg = '';
	if((obj.value == 'undefined' || obj.value =='') && hasClass(obj,'required'))
	{
		status = false;                        
	}                 
	else
	{
		status = true;
		
		if(id == 'passwordConfirm')
		{
			if(document.getElementById(id).value == document.getElementById('password').value)
			{
				status = true;
				validPassword = true;				
			}   
			else
			{
				status = false;
				validPassword = false;		
				errorMsg = 'Passwords must match';
			}			
		}
		else if(id == 'confirmEmail')
		{
			if(document.getElementById(id).value == document.getElementById('emailAddress').value)
			{
				status = true;
				validConfirmEmail = true;				
			}   
			else
			{
				status = false;
				validConfirmEmail = false;		
				errorMsg = 'Emails must match';
			}			
		}
		else if(id == 'emailAddress' || id == 'loginEmail' || hasClass(obj, 'validate-email'))
		{
			if(document.getElementById(id).value!='')
			{
				if(validateEmail(document.getElementById(id).value))
				{
					status = true;
					email = true;
				}
				else
				{
					status = false;
					email = false;
					errorMsg = "Incorrect email format";
				}
				if(!registrationEmail)
				{
					status = false;
					email = false;
					errorMsg = "Email already exists";
				}
			}
		}else if(id == 'mobileNumber')
		{
			if(document.getElementById(id).value!='')
			{
				if(validateMobile(document.getElementById(id).value))
				{
					status = true;
					mobile = true;
				}
				else
				{
					status = false;
					mobile = false;
					errorMsg = "Incorrect Mobile No.";
				}
				if(!registrationMobile)
				{
					status = false;
					mobile = false;
					errorMsg = "Mobile already exists";
				}
			}
		}
		else if(hasClass(obj, 'validate-multiple-email'))
		{
			if(document.getElementById(id).value!='')
			{
				var emails = document.getElementById(id).value.split(",");
				for(i=0; i<emails.length; i++)
				{
					if(!validateMultipleEmail(trim(emails[i])))
					{															
						status = false;		
						errorMsg = "Incorrect email format";
					}
				}
			}
		}
		else if(hasClass(obj, 'validate-cv-upload'))
		{
			if(document.getElementById(id).value!='')
			{
				var cvFileName = document.getElementById(id).value;
				if (cvFileName.lastIndexOf('.doc')==-1 && cvFileName.lastIndexOf(".pdf")==-1 && cvFileName.lastIndexOf(".txt") ==-1 && cvFileName.lastIndexOf(".rtf")==-1 && cvFileName.lastIndexOf(".docx")==-1)
                {
                    status = false;		
					errorMsg = ".doc, .docx, .pdf or .txt only";
                }
			}
		}
		else if(hasClass(obj, 'validate-cv-upload-for-response'))
		{
			if(document.getElementById(id).value!='')
			{
				var cvFileName = document.getElementById(id).value;
				if (cvFileName.lastIndexOf('.doc')==-1 && cvFileName.lastIndexOf(".pdf")==-1 && cvFileName.lastIndexOf(".txt") ==-1 && cvFileName.lastIndexOf(".rtf")==-1 && cvFileName.lastIndexOf(".docx")==-1)
                {
                    status = false;		
					cvForResponse = false;
					errorMsg = "Incorrect file type";					
                }
				else
				{
					cvForResponse = true;
				}
				showFileName(cvFileName);
			}
		}
		else if(hasClass(obj, 'validate-mobile'))
		{
			if(document.getElementById(id).value!='')
			{
				if(validateMobile(document.getElementById(id).value))
				{
					status = true;
					if(id=='contactMobile')
					{
						optionalMobile = true;
					}
					else
					{
						mobile = true;
					}
				}
				else
				{
					status = false;					
					errorMsg = "Incorrect mobile no.";
					if(id=='contactMobile')
					{
						optionalMobile = false;
					}
					else
					{
						mobile = false;
					}
				}				
			}
		}
	}                                            
	
	// to validate price and tradeOption fields together
	if(id=='price' || id=='tradeOption')						 
	{
		if(hasClass(document.getElementById('price'),'required'))
		{
			if(document.getElementById('price').value == 'undefined' || document.getElementById('price').value =='')
			{
				status = false;                        
			}
		}
		else
		{
			if(document.getElementById('price').value=='' && document.getElementById('tradeOption').value=='')
			{
				status = false;   
				errorMsg = "Choose price";
			}			
		}
	
	}	
	if(status)
	{
		if(img[0])
		{
			img[0].style.display = 'block';			
		}
		if(img[1])
		{
			img[1].style.display = 'none';			
		}
		hideErrorMsg(obj);
	}
	else
	{
		if(img[0])
		{
			img[0].style.display =  'none'; 			 
		}
		if(img[1])
		{
			img[1].style.display =  'block'; 			 
		}
		showErrorMsg(obj, errorMsg);
	}
	return status;
}                      

function checkCategories(num)
{
	var id = "categoryLevel"+num;
	if(document.getElementById(id))
	{
		var obj = document.getElementById(id);
		var parent = obj.parentNode;
		var img = parent.getElementsByTagName('IMG');                    
		if(document.getElementById(id).value != 'undefined' && document.getElementById(id).value !='')
		{
			img[0].style.display = 'block';			
			removeClass(obj, 'not-valid');
			addClass(obj,'valid');  
		}                           
	}
	if(num<10)
	{
		checkCategories(Math.round(num+1));
	}
}  

function checkLocality(num)
{
	var id = "localityLevel"+num;
	if(document.getElementById(id))
	{
		var obj = document.getElementById(id);
		var parent = obj.parentNode;
		var img = parent.getElementsByTagName('IMG');                    
		if(document.getElementById(id).value != 'undefined' && document.getElementById(id).value !='')
		{
			img[0].style.display = 'block';						
		}                           
	}
	if(num<3)
	{
		checkLocality(Math.round(num+1));
	}
} 

function checkLocation(id)
{	
	if(document.getElementById(id))
	{
		var obj = document.getElementById(id);
		var parent = obj.parentNode;
		var img = parent.getElementsByTagName('IMG');                    
		if(document.getElementById(id).value != 'undefined' && document.getElementById(id).value !='')
		{
			img[0].style.display = 'block';						
		}                           
	}	
} 

function hideFieldStatusImage(num)
{
	var id = "categoryLevel"+num;
	if(document.getElementById(id))
	{
		var obj = document.getElementById(id);
		var parent = obj.parentNode;
		var img = parent.getElementsByTagName('IMG');                    		
		img[0].style.display = 'none';				
	}
}  

function checkAdvertLocation()
{
	var id = 'location';
	if(document.getElementById(id))
	{
		var obj = document.getElementById(id);
		var parent = obj.parentNode;
		var img = parent.getElementsByTagName('IMG');                    
		if(document.getElementById(id).value != 'undefined' && document.getElementById(id).value !='')
		{
			img[0].style.display = 'block';						
		}
		else
		{
			img[0].style.display = 'none';						  
		}
	}
}

function validateForm(formObj)
{
	if(!email)
	{
        showErrorPanel();
		return false;
	}
	
	if(!validPassword)
	{
		showErrorPanel();
		return false;
	}	
	
	if(!validConfirmEmail)
	{
		showErrorPanel();
		return false;
	}

	if(!mobile)
	{
		showErrorPanel();
		return false;
	}
	
	if(!optionalMobile)
	{
		showErrorPanel();
		return false;
	}	
	if(!validImage)
	{
		showErrorPanel();
		return false;
	}

	if(!cvForResponse)
	{
		showErrorPanel();
		return false;
	}

	var fields = getElementsByClassName(formObj, 'required');
	var status = true;
	for(var i=0; i<fields.length; i++)
	{                        		
		if(!validate(fields[i], fields[i].id))
		{
			showErrorPanel();
			status = false;
		}
	}

	// to validate price and tradeOption fields together
	if(document.getElementById('price'))						 
	{
		if(hasClass(document.getElementById('price'),'required'))
		{
			if(document.getElementById('price').value == 'undefined' || document.getElementById('price').value =='')
			{
				status = false;  
				showErrorPanel();
			}
		}
		else
		{
			if(document.getElementById('price').value=='' && document.getElementById('tradeOption').value=='')
			{
				status = false;   
				errorMsg = "Choose price";
				showErrorPanel();
			}			
		}
	
	}
	if(!validateJobLocation())
	{
		status = false;
	}
	// to set contact mobile value blank when optionalMobileFlag is false
	setoptionalMobile();		
	return status;
}

function setoptionalMobile()
{
	if(!optionalMobileFlag)
	{
		if(document.getElementById('contactMobile'))
		{
			document.getElementById('contactMobile').value='';
		}
	}
}

function showErrorPanel()
{
	var errorPanelElement = document.getElementById('error-panel');
	if(errorPanelElement)
	{
		errorPanelElement.style.display = 'block';
		window.location.href = '#error-panel-anchor';
	}
}

function getElementsByClassName(formObj, clsName){ 
	var fields = new Array(); 
	var elements = formObj.getElementsByTagName("*"); 
	for(var i = 0;i < elements.length;i++)
	{ 
		if(elements[i].className.indexOf(" ") >= 0){ 
			var classes = elements[i].className.split(" "); 
			for(var j = 0;j < classes.length;j++){ 
				if(classes[j] == clsName) 
					fields.push(elements[i]); 
			} 
		} 
		else if(elements[i].className == clsName) 
			fields.push(elements[i]); 
	} 
	return leaveExtraFields(fields); 
}

function validateEmail(value)
{
	var pattern=/^([\w]+)(([-\.][\w]+)?)*@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	return pattern.test(value);
}


/////////////////
function validateMultipleEmail(email)
{
	var pattern=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return pattern.test(email);
}

function trim(str){
	var	str = str.replace(/^\s\s*/,''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

function checkAll(){
	var status = true;
	var i = 0;
	var emails = document.inviteform.emailAddress.value.split(",");
	for(i=0; i<emails.length; i++){
		if(!validateMultipleEmail(trim(emails[i]))){			
			
			showErrorPanel();
			status = false;
			return false;
		}
	}
	if(status)
	{
		return true;	
	}
}
////////////////


function getFormFields(id)
{                 
	var fields = new Array(); 
	var obj = document.getElementById(id);
	var elements = obj.getElementsByTagName("*"); 
	for(var i = 0;i < elements.length;i++){ 
		if(elements[i].tagName == 'INPUT' || elements[i].tagName == 'SELECT' || elements[i].tagName == 'TEXTAREA'){    			
			if(elements[i].name != 'submit' && elements[i].name != 'inputRemaining1' && elements[i].name != 'inputRemaining2' && elements[i].type != 'hidden')
			{				
				fields.push(elements[i]); 
			}
		}                         
	} 
	return leaveExtraFields(fields); 
}


function leaveExtraFields(fields)
{
	var extractedFields = new Array();
	
	if(document.getElementById('userTypeId'))
	{
		
		var userType= document.getElementById('userTypeId').value;
		if(userType != 'register')
		{
			for(var i = 0;i < fields.length;i++)
			{ 
				if(fields[i].id != 'firstName' && fields[i].id != 'surname'&& fields[i].id != 'password'&& fields[i].id != 'passwordConfirm'&& fields[i].id != 'emailAddress'&& fields[i].id != 'userLocation'&& fields[i].id != 'mobileNumber')
				{				
					extractedFields.push(fields[i]); 				
				}                         
			} 
		}
		else
		{
			for(var i = 0;i < fields.length;i++)
			{ 
				if(fields[i].id != 'loginEmail' && fields[i].id != 'loginPassword')
				{				
					extractedFields.push(fields[i]); 				
				}                         
			} 
		}		 
	}
	else
	{
		extractedFields = fields;
	}	
	return extractedFields;
}

function highlightField(parentObjId, name)
{
	var fields = getFormFields(parentObjId);                                            	
	for(var i=0; i<fields.length; i++)
	{         		
		if(fields[i].name == name)
		{                            
		  for(var j=0; j<i; j++)
		  {
			validate(fields[j], fields[j].id);
		  }
		}
	}
}              

function validateNumber(evt) {
evt = (evt) ? evt : window.event
var charCode = (evt.which) ? evt.which : evt.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57)) {        
	return false
}    
return true
}

function prepareOptionsListForMax(obj)
		{
		  var max_Obj;		
		   if(obj.id=='minBudget')
		   {
		    max_Obj=document.getElementById('maxBudget');
		    //max_Obj.disabled=false;
		   }
		   else if(obj.id=='minArea')
		    {
		     max_Obj=document.getElementById('maxArea');
		    
		    }
		   else if(obj.id=='minExperience')
		   {
		    max_Obj=document.getElementById('maxExperience');	
		   }
		   else if(obj.id=='minBedRoom')
		   {
		    max_Obj=document.getElementById('maxBedRoom');	
		   }
		   else if(obj.id=='minAge')
		   {
		    max_Obj=document.getElementById('maxAge');
		   }
		   max_Obj.disabled=false;	   
		   
          var min_selectedIndex=obj.selectedIndex;
         // to make 0th index selected in max dropdown box while changing min dropdown value
          max_Obj.selectedIndex=0;
         
          if(max_Obj.id!='maxBedRoom'&& max_Obj.id!='maxAge' && max_Obj.id!='maxExperience')
          {
           
	          if(min_selectedIndex==1)
	          {
	          	max_Obj.disabled =true;
	          }
	      }
	     
	      
  		  var minOptionList=obj.options;
  		  
		   for(var i=0;i<max_Obj.options.length;i++)
			  {
			   max_Obj.options[i].style.display = 'block';
			  }
		   for(var i=1;i<=min_selectedIndex;i++)
			  {
			   max_Obj.options[i].style.display = 'none';
			  }
		  
			if(min_selectedIndex==obj.options.length-1)
			{
			 max_Obj.disabled =true;
			}
		
		obj.options[obj.options.length-2].style.display='none';
		max_Obj.options[max_Obj.options.length-1].style.display='none';
		}


function setEmailValidationStatusForRegistration(id, flag)
{	
	if(document.getElementById(id))
	{
		var obj = document.getElementById(id);
		var parent = obj.parentNode;
		var img = parent.getElementsByTagName('IMG');                    
		if(flag)
		{			
			img[0].style.display = 'block';						
			helpmsg("helptext-"+id, "");
			validate(document.getElementById(id), id);
			registrationEmail = true;
		}
		else
		{			
			img[0].style.display = 'none';				
			helpmsg("helptext-"+id, "Email already exists");
			email=false;
			registrationEmail = false;
			if(img[1])
			{
				img[1].style.display = 'block';	
			}
		}
			
	}
}

function setMobileValidationStatusForRegistration(id, flag)
{	
	if(document.getElementById(id))
	{
		var obj = document.getElementById(id);
		var parent = obj.parentNode;
		var img = parent.getElementsByTagName('IMG');                    
		if(flag)
		{			
			img[0].style.display = 'block';						
			helpmsg("helptext-"+id, "");
			validate(document.getElementById(id), id);
			registrationMobile = true;
		}
		else
		{			
			img[0].style.display = 'none';				
			helpmsg("helptext-"+id, "Mobile already exists");
			email=false;
			registrationMobile = false;
			if(img[1])
			{
				img[1].style.display = 'block';	
			}
		}
			
	}
}


function helpmsg(fieldId,text)
{
	if(document.getElementById(fieldId))
	{
		if (text!="")
		{
				document.getElementById(fieldId).innerHTML=text;
		}
		else
		{
				document.getElementById(fieldId).innerHTML="";
		}
	}
}

function removeRegistrationValidations()
{	
	// Removing validations from Registration container fields
	registrationEmail = true;
	registrationMobile = true;
	validPassword = true;
	removeValidations('firstName');	
	removeValidations('password');
	removeValidations('passwordConfirm');
	removeValidations('emailAddress');
	removeValidations('mobileNumber');
	removeValidations('userLocation');	
}

function removeLoginValidations()
{
	// Removing validations from login container fields
	removeValidations('loginEmail');
	removeValidations('loginPassword');	
}

function removeValidations(id)
{
	var obj = document.getElementById(id);
	var parent = obj.parentNode;
	var img = parent.getElementsByTagName('IMG');                    
	img[0].style.display = 'none';		
	obj.value='';
	hideErrorMsg(obj);
}

function showErrorMsg(obj, errorMsg)
{	
	var parent = obj.parentNode;
	var divObj = parent.getElementsByTagName('DIV');
	var labelObj = parent.getElementsByTagName('LABEL');
	var label='';
	if(labelObj[0])
	{
		label = labelObj[0].innerHTML;
	}
	if(errorMsg=='')
	{
		errorMsg = label+' required';
		if(label == 'Confirm password')
		{
			errorMsg = label;
		}
		else if(label == 'Meter Reading (Kms)')
		{
			errorMsg = 'Reading required';
		}
		else if(label == 'Mileage(KMS)')
		{
			errorMsg = 'Mileage required';
		}
		
	}
	if(divObj[0])
	{
		divObj[0].innerHTML = errorMsg;
		divObj[0].style.display = 'block';
	}
}

function hideErrorMsg(obj)
{
	var parent = obj.parentNode;
	var divObj = parent.getElementsByTagName('DIV');	
	if(divObj[0])
	{
		divObj[0].innerHTML = '';
		divObj[0].style.display = 'none';
	}
}

function hideValidationStatus(id)
{
	var obj = document.getElementById(id);
	var parent = obj.parentNode;
	var img = parent.getElementsByTagName('IMG');                    
	img[0].style.display = 'none';	
	var divObj = parent.getElementsByTagName('DIV');	
	if(divObj[0])
	{
		divObj[0].innerHTML = '';
	}
	if(img[1])
	{
		img[1].style.display = 'none';	
	}
}

//specially for job profile registration form
function getJobLocationFields()
{
	var fields = new Array(); 
	var obj = document.getElementById('job-location');
	if(obj)
	{
		var elements = obj.getElementsByTagName("INPUT"); 
		for(var i = 0;i < elements.length;i++){ 
			if(elements[i].type == 'checkbox'){    										
				fields.push(elements[i]); 			
			}                         
		} 
	}
	return fields;
}


function validateJobLocation()
{	
	jobLocation= false;
	var fields = getJobLocationFields();
	for(var i = 0;i < fields.length;i++){ 
		if(fields[i].checked)
		{
			jobLocation = true;
		}
	}

	if(document.getElementById('valid') && document.getElementById('not-valid'))
	{
		if(!jobLocation)
		{
			document.getElementById('not-valid').style.display = 'block';
			document.getElementById('valid').style.display = 'none';	
		}
		else
		{
			document.getElementById('not-valid').style.display = 'none';
			document.getElementById('valid').style.display = 'block';
		}
		return jobLocation;
	}
	else
	{
		return true;
	}			
}

function checkJobLocation()
{	
	jobLocation= false;
	var fields = getJobLocationFields();
	for(var i = 0;i < fields.length;i++){ 
		if(fields[i].checked)
		{
			jobLocation = true;
		}
	}

	if(document.getElementById('valid') && document.getElementById('not-valid'))
	{
		if(!jobLocation)
		{
			document.getElementById('not-valid').style.display = 'block';
			document.getElementById('valid').style.display = 'none';	
		}
		else
		{
			document.getElementById('not-valid').style.display = 'none';
			document.getElementById('valid').style.display = 'block';
		}
	}
}

function validateMobile(value)
{	
	var mobilePattern =/^([9]{1})([0-9]{9})$/
	return mobilePattern.test(value);
}

function showFileName(value)
{
	var fileName = value.substring(value.lastIndexOf('/')+1, value.length);
	if(document.getElementById('cvFileName'))
	{
		document.getElementById('cvFileName').innerHTML = fileName;
	}
}