// lungimea unui field sa nu depaseasca 1500 de caractere

function verifica_lungimea(form,element,lungime)

{

	if (document.forms[form].elements[element].value.length > lungime) 

	{

		document.forms[form].elements[element].value = document.forms[form].elements[element].value.substr(0,lungime)

		alert("Lungimea maxima e de "+lungime+" de caractere")

	}

}

////////////////////////////











// Variabile globale

acF = new Array()

acF[1] = new Array() // Numele formularului

acF[2] = new Array() // Numele campului in formular



acF[3] = new Array() // notnull - valoarea nu poate fi vida

										 // equals - valoarea trebuie sa fie egala cu valoarea specificata

										 // notequals - valoarea trebuie sa fie diferita de valoarea specificata

										 // format - valoarea trebuie sa aiba formatul specificat

										 // maxsize - numarul maxim de caractere

										 // minsize - numarul minim de caractere

										 // maxsizenull - numarul maxim de caractere sau null

										 // minsizenull - numarul minim de caractere sau null

										 // password - valoarea trebuie sa fie egala cu valoarea campului specificat

                     // checked - trebuie sa fie selectat (in cazul checkbox-urilor)

                     // allchars - string numai cu caractere

										 

acF[4] = new Array() // Functia sau valoarea

acF[5] = new Array() // Numele campului in pagina (ex: Adresa dumneavoastra)



sizeOf_acF = 0



// Functia de adaugare de conditie

// formName - Numele formului care trebuie validat

// fieldName - Numele campului

// fieldCondition - Conditia pe care trebuie sa o indeplineasca campul

// fieldValue - Daca la conditie e nevoie de o valoare, se pune aici

// fieldDescription - O descriere a campului pt mesajul de eroare

function addCond(formName, fieldName, fieldCondition, fieldValue, fieldDescription)

{

  sizeOf_acF = sizeOf_acF + 1

  acF[1][sizeOf_acF] = formName

  acF[2][sizeOf_acF] = fieldName

  acF[3][sizeOf_acF] = fieldCondition

  acF[4][sizeOf_acF] = fieldValue

  acF[5][sizeOf_acF] = fieldDescription

}



// Verifica daca un caracter e cifra

function isNumeric(cValue)

{

  isN = true

	nums = "0123456789"

	if (nums.indexOf(cValue) == -1) isN = false

	return isN

}



// Verifica daca un string e format numai din litere

function isOnlyNumeric(sValue)

{

  isGood = true

  for (i=0; i < sValue.length && isGood == true; i++)

  {

    c = sValue.charAt(i)

    if (! isNumeric(c))

    {

      isGood = false

    }

  }

  return isGood

}



function isEmail(string) 

{

	if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)

		return true;

	else

	{

		return false;

	}

}



// Verifica daca un caracter e litera

function isLiteral(cValue)

{

  isL = true

	lit = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ."

	if (lit.indexOf(cValue) == -1) isL = false

	return isL

}



// Verifica daca un string e format numai din litere

function isOnlyLiteral(sValue)

{

  isGood = true

  for (i=0; i < sValue.length && isGood == true; i++)

  {

    c = sValue.charAt(i)

    if (! isLiteral(c))

    {

      isGood = false

    }

  }

  return isGood

}



// Verifica daca stringul sValue are formatul dat de sFormat

// Valori: % - inlocuieste un caracter din alfabet (a..z, A..Z)

//         # - inlocuieste o cifra (0..9)

//         * - inlocuieste orice caracter 

// Orice alt caracter non-alfanumeric si diferit de cele de mai

// sus se inlocuieste pe el insusi

function cFFormat(sValue, sFormat)

{

  isCorect = true

	if (sValue.length != sFormat.length) isCorect = false

	for (i=0; i < sValue.length && isCorect == true; i++)

	{

	  c = sValue.charAt(i)

		f = sFormat.charAt(i)

		switch(f)

		{

		  case "#":

			{

			  if (! isNumeric(c))

				{

				  isCorect = false

				}

				break

			}

		  case "%":

			{

			  if (! isLiteral(c))

				{

				  isCorect = false

				}

				break

			}

		  case "*":	break

			default:

			{

			  if (c != f) isCorect = false

			}

		}

	}

	return isCorect

}



function checkForm(formName)

{

  isOK = true

	sMsg = ""

	CrLf = "\r\n"

  for (cFCount=1;cFCount<=acF[1].length;cFCount++)

	{

	  if (acF[1][cFCount] == formName)

		{

		  switch(acF[3][cFCount])

			{

			  case "notnull":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value == "")

					{

					  isOK = false

						sMsg = sMsg + "Please enter a " + acF[5][cFCount] + "." + CrLf;

					}

					break

				}

			  case "checked":

				{

				  if (!document.forms[formName].elements[acF[2][cFCount]].checked)

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' must be selected." + CrLf;

					}

					break

				}

			  case "radio":

				{

					isSelected = false;

					for (i=0;i<document.forms[formName].elements[acF[2][cFCount]].length;i++)

					{

						if (document.forms[formName].elements[acF[2][cFCount]][i].checked)

						{

							isSelected = true;

						}

					}

				  if (!isSelected)

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' must be selected." + CrLf;

					}

					break

				}

			  case "selected_radio":

				{

				  if (!document.forms[formName].elements[acF[2][cFCount]][acF[4][cFCount]].checked)

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' must be set to " + document.forms[formName].elements[acF[2][cFCount]][acF[4][cFCount]].value + "." + CrLf;

					}

					break

				}

			  case "equals":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value != acF[4][cFCount])

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' does not match" + acF[4][cFCount] + "." + CrLf;

					}

					break

				}

			  case "notequals":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value == acF[4][cFCount])

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' must differ from '" + acF[4][cFCount] + "'." + CrLf;

					}

					break

				}

			  case "email":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value != '' && isEmail(document.forms[formName].elements[acF[2][cFCount]].value) != true)

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' is not a valid email address." + CrLf;

					}

					break

				}

			  case "password":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value != document.forms[formName].elements[acF[4][cFCount]].value)

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' does not match with the the verification." + CrLf;

					}

					break

				}

			  case "maxsize":

				{

  		    if (document.forms[formName].elements[acF[2][cFCount]].value.length > parseInt(acF[4][cFCount]))

  				{

  				  isOK = false

  					sMsg = sMsg + "'" + acF[5][cFCount] + "' is too long. (Max length = " + parseInt(acF[4][cFCount]) + ")" + CrLf;

  				}

				break

        }

			  case "maxvalue":

				{

  		    if (parseInt(document.forms[formName].elements[acF[2][cFCount]].value) > parseInt(acF[4][cFCount]))

  				{

  				  isOK = false

  					sMsg = sMsg + "'" + acF[5][cFCount] + "' is too large. (Max value = " + parseInt(acF[4][cFCount]) + ")" + CrLf;

  				}

				break

        }

			  case "maxsizenull":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value != "")

          {

  				  if (document.forms[formName].elements[acF[2][cFCount]].value.length > parseInt(acF[4][cFCount]))

  					{

  					  isOK = false

  						sMsg = sMsg + "'" + acF[5][cFCount] + "' is too long. (Max length = " + parseInt(acF[4][cFCount]) + ")" + CrLf;

  					}

          }

					break

				}

			  case "minsize":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value.length < parseInt(acF[4][cFCount]))

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' is too short. (Min length = " + parseInt(acF[4][cFCount]) + ")" + CrLf;

					}

					break

				}

			  case "minvalue":

				{

				  if (parseInt(document.forms[formName].elements[acF[2][cFCount]].value) < parseInt(acF[4][cFCount]))

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' is too small. (Min value = " + parseInt(acF[4][cFCount]) + ")" + CrLf;

					}

					break

				}

			  case "minsizenull":

				{

				  if (document.forms[formName].elements[acF[2][cFCount]].value != "")

          {

  				  if (document.forms[formName].elements[acF[2][cFCount]].value.length < parseInt(acF[4][cFCount]))

  					{

  					  isOK = false

  						sMsg = sMsg + "'" + acF[5][cFCount] + "' is too short. (Min length = " + parseInt(acF[4][cFCount]) + ")" + CrLf;

  					}

          }

					break

				}

			  case "format":

				{

				  if (! cFFormat(document.forms[formName].elements[acF[2][cFCount]].value, acF[4][cFCount]))

					{

					  isOK = false

						sMsg = sMsg + "Campul '" + acF[5][cFCount] + "' nu are formatul corect: '" + acF[4][cFCount] + "'." + CrLf;

					}

					break

				}

			  case "allchars":

				{

				  if (! isOnlyLiteral(document.forms[formName].elements[acF[2][cFCount]].value))

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' must contain only chars a-z, A-Z sau '.'" + CrLf;

					}

					break

				}

			  case "allnums":

				{

				  if (! isOnlyNumeric(document.forms[formName].elements[acF[2][cFCount]].value))

					{

					  isOK = false

						sMsg = sMsg + "'" + acF[5][cFCount] + "' must be a number." + CrLf;

					}

					break

				}





			case "list_empty":

				{

					if (document.forms[formName].elements[acF[2]].length > 0)

					{

						for (i=0;i<document.forms[formName].elements[acF[2]].length;i++)

						{

							document.forms[formName].elements[acF[2]].options[i].selected = true;

						}

						isOK = true;

					}

					else

					{

						isOK = false;

						sMsg = sMsg + "The " + acF[5][cFCount] + " list must contain at least one " + acF[5][cFCount] + "." + CrLf;

					}

					break;

				}





			  case "dateformat":

				{

				if (document.forms[acF[1][cFCount]].elements[acF[4][cFCount]].checked)

					{

					isOK = true

					}

				else

					{

					ceva = document.forms[acF[1][cFCount]].elements[acF[2][cFCount]].value.split('-')

					an=ceva[0]

					luna=ceva[1]

					zi=ceva[2]

					if (!((an>0000) && (an<4000)))

						{

						isOK = false

						sMsg = sMsg + "Campul '" + acF[5][cFCount] + "' nu este in formatul yyyy-mm-dd " + CrLf;

						break

						}

					if (!((luna>00) && (luna<13)))

						{

						isOK = false

						sMsg = sMsg + "Campul '" + acF[5][cFCount] + "' nu este in formatul yyyy-mm-dd " + CrLf;

						break

						}

					if (!((zi>00) && (zi<32)))

						{

						isOK = false

						sMsg = sMsg + "Campul '" + acF[5][cFCount] + "' nu este in formatul yyyy-mm-dd " + CrLf;

						break

						}

					}

				}

			case "dateformat_simple":

				{

					if (document.forms[acF[1][cFCount]].elements[acF[2][cFCount]].value == "" || document.forms[acF[1][cFCount]].elements[acF[2][cFCount]].value == "yyyy-mm-dd")

					{

						break

					}

					ceva = document.forms[acF[1][cFCount]].elements[acF[2][cFCount]].value.split('-')

					an=ceva[0]

					luna=ceva[1]

					zi=ceva[2]

					if (!((an>0000) && (an<4000)))

					{

						isOK = false

						sMsg = sMsg + "Campul '" + acF[5][cFCount] + "' nu este in formatul yyyy-mm-dd " + CrLf;

						break

					}

					if (!((luna>00) && (luna<13)))

					{

						isOK = false

						sMsg = sMsg + "Campul '" + acF[5][cFCount] + "' nu este in formatul yyyy-mm-dd " + CrLf;

						break

					}

					if (!((zi>00) && (zi<32)))

					{

						isOK = false

						sMsg = sMsg + "Campul '" + acF[5][cFCount] + "' nu este in formatul yyyy-mm-dd " + CrLf;

						break

					}

				}

			}

		}

	}

  	if (sMsg != "") 

		alert("Errors:" + CrLf + CrLf + sMsg);

	return isOK;

}



// Inverseaza selectia pe campul "fieldName" din formularul "formName"

function OnOff(formName, fieldName)

{

  document.forms[formName].elements[fieldName].checked = !document.forms[formName].elements[fieldName].checked

}



function checkDate(formularName,fieldDate,fieldActive)

{

	if (document.forms[formularName].elements[fieldActive].checked) return true

	an = document.forms[formularName].elements[fieldDate].value.substring(0,3)

	alert(an);

}

