﻿/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//
// VALIDATION/ERROR METHODS
//
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////

function valFields(arFlds)
{
	var ret      = true;
	var cust_msg = false;
	var obj      = docObj(arFlds[0]);
	var objVal   = arFlds[1];
	var isReq    = arFlds[2];

	if (obj && !obj.ReadOnly)
	{    	
	    resetObjErrorFlags(obj);

	    switch (objVal)
	    {
	      case 'phone':

			    PhoneMask(obj);
			    if (isReq || obj.value.length > 0)
			    {
				     var phoneREGEX = /^\(\d\d\d\) \d\d\d-\d\d\d\d$/;
				     if (! obj.value.match(phoneREGEX))
				     {
					      setControlError(obj);					      
					      ret = false;
				     }
			    }
    			
			    break;

	      case 'email':
    			
			    if (isReq || obj.value.length > 0)
			    {
				     var emailREGEX = /^([a-zA-Z0-9_\-]{2,})+([a-zA-Z0-9_\-\.]{1,})+\@([a-zA-Z0-9\-\.]{2,})+(([a-zA-Z0-9_\-]{1,})+\.)+([a-zA-Z0-9]{2,3})$/;
				     if (! obj.value.match(emailREGEX))
				     {
					      setControlError(obj);
					      ret = false;   
				     }
			    }
    	
			    break;

	      case 'name':
    	
			    if (isReq || obj.value.length > 0)
			    {
				    if (obj.value.length < 2 || obj.value.match(/[0-9]/g))
				    {
					    setControlError(obj);
					    ret = false;
				    }
			    }
    	
			    break;
			   
	      case 'job':
    	
			    if (isReq || obj.value.length > 0)
			    {
			        if (obj.value == 'Select A Position')
			        {
			            setControlError(obj);
			            ret = false;
			        }
			    }
    	
			    break;
	      
	      case 'resume':
    	
			    if (isReq || obj.value.length > 0)
			    {
				    
				    if (obj.value.length < 10 || ! obj.value.match(/\.(txt|doc|pdf|wpd)$/i))
				    {
					    setControlError(obj);
					    ret = false;
				    }
			    }
    	
			    break;
		   
		   case 'blog_comment':
		   
			    if (isReq || obj.value.length > 0)
			    {
				    
				    if (obj.value.length < 8 || IsOfProfaneOrDerogatoryNature(obj.value))
				    {
					    setControlError(obj);
					    ret = false;
				    }
			    }
    	
			    break;
			    
		   case 'link':
		   
			    if (isReq || obj.value.length > 0)
			    {
				    parseLink(obj);
				    
				    var linkREGX_match1 = /^((www\.)|([a-z0-9\-\.]{3,}))\.([a-z]{2,6})$/i; //has valid domain www. or xxx.xxx.com or xxx.com
				    //var linkREGX_match2 = /((\.([a-z]{3,4}))|((\&|\?)([a-z0-9]{1,})\=([a-z0-9]){1,}))$/i; //has valid path (if present);
    				
				    if (! obj.value.match(linkREGX_match1))
				    {
					        setControlError(obj);
					        ret = false;
				    }
				    else if (UrlDoesNotExist(obj))
				    {
					    setControlError(obj);
					    ret = false;					 					
				    }
			    }
    	
			    break;
			    
	     default:
    	
			    if (isReq || obj.value.length > 0)
			    {
				     if (obj.value.length < 3)
				     {
					      setControlError(obj);
					      ret = false;
				     }
			    }
    	
			    break;
	    }
    }

    return ret;
}
function throwCustomDialog(obj, objVal)
{
    ErrorPopups.push([obj,fillErrMsg(objVal)]);
    setControlError(obj);
    initSweetErrorDialogs();
}

function setControlError(obj,b)
{
    if (!b)
    {
        obj.style.backgroundImage = 'url('+FormObjAjax.BasePath+'/images/err.png)';
        obj.style.backgroundPosition = 'center right';
        obj.style.backgroundRepeat = 'no-repeat';
        
        FormObjAjax.FieldErrorCollection.push(obj);
    }
    else
    {
        if (obj.id == 'job_title')
            obj.style.backgroundImage = 'url('+FormObjAjax.BasePath+'/images/ddarrow' + SiteSettings.Theme.current.id() + '.gif)';
        else
        {
            obj.style.backgroundImage = '';
            obj.style.backgroundPosition = '';
            obj.style.backgroundRepeat = '';
        }
    }
}

function resetObjErrorFlags(obj)
{
    if (obj)
        setControlError(obj,true);
}

function ResetLastErrorState()
{
    if (FormObjAjax.FieldErrorCollection.length > 0)
    {
        for (var i = 0; i < FormObjAjax.FieldErrorCollection.length; i++)
            resetObjErrorFlags(FormObjAjax.FieldErrorCollection[i]);
    }
}

function IsOfProfaneOrDerogatoryNature(val)
{
    //TODO: textpad of words
    return false
}

function UrlDoesNotExist(obj)
{
	return false;
	
	FormObjAjax.UrlValidation.Checking = true;

    try
    {
	    FormObjAjax.SetActive(true);
	    FormObjAjax.StartClocking(FormObjAjax.CurrentForm);
	    
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

	    httpFormPost.open('HEAD', 'http://'+obj.value);
	    httpFormPost.onreadystatechange = function() {

		    if (httpFormPost.readyState == 3)
		    {
		        alert(this.getAllResponseHeaders());
		    }
		    
		    if (httpFormPost.readyState == 4)
		    {
//		        if (httpResponseIsValid(httpFormPost))
//                {
//                    alert('exists'); //throwFormSubmitSuccess(FormObjAjax.ObjectCollection);
//                    FormObjAjax.UrlValidation.Checking = false;
//                    //throwFormSubmitError(3);
//		        }
//		        else
//		        {
//		           // val = val.replace(/^www\./i);
//		           // UrlDoesNotExist('www.'+val); //throwFormSubmitError(3);
//		           alert('does not exist');
//		           FormObjAjax.UrlValidation.Checking = false;
//		        }
		    }
		        
	    };
	    httpFormPost.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	    httpFormPost.send();
    }
    catch (e)
    {
	    alert(e);
	    FormObjAjax.UrlValidation.Checking = FormObjAjax.UrlValidation.UrlFound = false;
	    throwFormSubmitError(3);
    }
}

function resetFldFocus(id)
{
    if (docObj(id))
        docObj(id).focus();
}

function parseLink(obj)
{
    //replacing none-url specific (or in the case of this site)
	var httpREGEX_rep = /(http\:\/\/)|([\@\#\$\%\^\*\(\)\'\"\:\;\<\>\, ])/gi;
	obj.value = obj.value.replace(httpREGEX_rep,'');
}

function PhoneMask(element)
{
    var NumberChars = "0123456789";
    var phoneString = element.value;
    var cleanPhone = '';
    for(var i = 0; i < phoneString.length && cleanPhone.length <= 10; i++)
    {               
        if(!isNaN(phoneString.charAt(i)) && phoneString.charAt(i) != ' ')
            cleanPhone = cleanPhone + phoneString.charAt(i);
    }
    
    if (cleanPhone.length != 0)
    {
        if(cleanPhone.length <= 3)
            element.value = '(' + cleanPhone;
        else if(cleanPhone.length <= 6)
            element.value = '(' + cleanPhone.substr(0,3) + ') ' + cleanPhone.substr(3,3);
        else
            element.value = '(' + cleanPhone.substr(0,3) + ') ' + cleanPhone.substr(3,3) + '-' + cleanPhone.substr(6,4);
    }
}