﻿// JavaScript Document
// helper for verify common form content
// code by Azer Manafov (azerman[at]hotmail[dot]com)

var CHK_NUMBER    = 1;
var CHK_LETTER    = 2;
var CHK_ALPHANUM  = 3;
var CHK_TELEPHONE = 4;
var CHK_EMAIL     = 5;
var CHK_DATE      = 6;
var CHK_NOEMPTY   = 7;

var TELEPHONE_CODES = new Array( '050','052','054','057','059','072','073','074','076','077','078','02','03','04','08','09');

function syntaxCheck ( value, chk )
{   var regex = null;
	
    if ( value == undefined || value.length == 0 ) return "Empty value";//GETSTRINGRES( WRN_EMPTY );
	value = value.replace(/\r/g,"");
	value = value.replace(/\n/g,"");
	
		
/*
// mail 
var pattern1 = /^(([a-zA-Z0-9]|[!#$%\*\/\?\|^\{\}`~&'\+=-_])+\.)*
               ([a-zA-Z0-9]|[!#$%\*\/\?\|^\{\}`~&'\+=-_])+@
               ([a-zA-Z0-9-]+\.)+[a-zA-Z0-9-]+$/;
var pattern2 = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
^[_.0-9a-zA-Z-] +@ ([0-9a-zA-Z] [0-9a-zA-Z-] * .) + [a-zA-Z] {2, 4} $ 
*/
    switch( chk )
	{
	    case CHK_LETTER:    regex = /^[\'\-a-zA-Zא-ת\s]+$/; break;
		case CHK_NUMBER:    regex = /^[0-9]+$/; break;
		case CHK_ALPHANUM:  regex = /^[0-9A-Za-zא-תА-Яа-я\s]+$/; break;
		case CHK_TELEPHONE: return checkPhone  ( value ); break;//regex = /\(?\d{3}\)?([-\/\.])\d{3}\1\d{4}/; 
		case CHK_EMAIL:     
        regex =  /\w+((-\w+)|(\.\w+)|(\_\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]{2,5}/;
		break;
		case CHK_DATE:      return validateDate( value );
		case CHK_NOEMPTY: 
		
		    var stripped = value.replace(/[\(\)\.\-\ ]/g, '');
//		    return ( stripped.length == 0 )?GETSTRINGRES( ERR_SYNTAX ):GETSTRINGRES( HLP_SUCCESS );
            return ( stripped.length == 0 )?"Syntax error":"";
		default: return "Syntax error";//GETSTRINGRES( ERR_SYNTAX );
	}
    return ( regex.test( value) == true)?"":"Syntax error";//GETSTRINGRES( ERR_SYNTAX );
}
function checkPhone( str )
{   var c;
    var stripped = str.replace(/[\(\)\.\-\ ]/g, '');     
    if ( stripped == "")
    {   return "Phone syntax";//GETSTRINGRES( WRN_NOPHONE );
    }
    else
    {   for ( var i = 0; i < stripped.length; i++)
        {   c = stripped.charAt(i);
    	    if  ( c < '0' || c > '9')
                  return "Phone syntax";//GETSTRINGRES( WRN_BADPHONE1 );
        }
        if ( stripped.charAt(0) != '0')
        	 return "Phone syntax";//GETSTRINGRES( WRN_BADPHONE2);
        if ( typeof TELEPHONE_CODES != "undefined" && TELEPHONE_CODES.length > 0 )
        {   var i = 0;
        	for ( i = 0; i < TELEPHONE_CODES.length; i++)
        	{   if ( stripped.indexOf(TELEPHONE_CODES[i]) == 0 ) break;
        	}
        	if ( i == TELEPHONE_CODES.length )
        	     return "Phone syntax";//GETSTRINGRES( WRN_BADPHONE3 );
        	stripped = stripped.substr( TELEPHONE_CODES[i].length);
    	    if ( stripped.length != 7 )
   		         return "Phone syntax";//GETSTRINGRES( WRN_BADPHONE4 );
        	
        }
        else
        {   if ( stripped.length < 9 || stripped.length > 10)
		         return "Phone syntax";//GETSTRINGRES( WRN_BADPHONE4 );
        }
    }
    return "";//GETSTRINGRES(HLP_SUCCESS);
}

//http://regexadvice.com/blogs/mash/archive/2004/06/17/309.aspx Michael Ash dd/mm/yyyy
function validateDate( value )
{   var RegExPattern = /^(?=\d)(?:(?!(?:(?:0?[5-9]|1[0-4])(?:\.|-|\/)10(?:\.|-|\/)(?:1582))|(?:(?:0?[3-9]|1[0-3])(?:\.|-|\/)0?9(?:\.|-|\/)(?:1752)))(31(?!(?:\.|-|\/)(?:0?[2469]|11))|30(?!(?:\.|-|\/)0?2)|(?:29(?:(?!(?:\.|-|\/)0?2(?:\.|-|\/))|(?=\D0?2\D(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|2[0-8]|1\d|0?[1-9])([-.\/])(1[012]|(?:0?[1-9]))\2((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?:$|(?=\x20\d)\x20)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/;
//    return ( (value.match(RegExPattern)) && ( value != ''))?GETSTRINGRES(HLP_SUCCESS):GETSTRINGRES(WRN_BADDATE2);
    return ( (value.match(RegExPattern)) && ( value != ''))?"":"Date syntax";
}


