// JavaScript Form Validation

function checkElement(elem){
  
  var errorMsgID = "";
   
  switch (elem.className){  		  
    case "txtfield_num":
      if(elem.value.length < 1 || isNaN(elem.value)){
        errorMsgID = elem.name; 
      }
    break;    
    case "txtfield_alpha":
      if(elem.value.length < 1 || !isNaN(elem.value)){
        errorMsgID = elem.name; 
      }
    break;
    case "txtfield_alphanum":
      if(elem.value.length < 2){
        errorMsgID = elem.name; 
      }
    break;
    
    case "txtfield_alphanum2":
      if(elem.value.length < 1){
        errorMsgID = elem.name; 
      }
    break;
    
    case "txtfield_zip": // Postal Code
      if(elem.value.length < 4 || isNaN(elem.value) || (parseInt(elem.value) < 1011 || parseInt(elem.value) > 9985)){
        errorMsgID = elem.name; 
      }
    break;
    case "txtfield_year":
      if(elem.value.length < 4 || isNaN(elem.value)){
        errorMsgID = elem.name; 
      }
    break;
    case "txtfield_dob": // Day of Birth
      var date = new Date();
      var year = date.getFullYear();
      if (parseInt(elem.value) < 1900 || parseInt(elem.value) > parseInt(year) || isNaN(elem.value)){  
        errorMsgID = elem.name;  				
      }
    break;
    
    case "txtfield_email":
      if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(elem.value))){
        errorMsgID = elem.name;
      }      
    break;
    
    case "list_gen":
      //if(elem.value.length < 1 || elem.value == "" || elem.text == ""){
      if(elem[elem.selectedIndex].text == ""){
        errorMsgID = elem.name; 
      }
    break;
    
    case "txtfield_kupon":
	    if (elem.value.length < 5 || isNaN(elem.value)){  
        errorMsgID = elem.name;		
      }
    break;  
    
    case "txtfield_phone_prefix":
      if ((parseInt(elem.value) == 1 || (parseInt(elem.value) >= 22 && parseInt(elem.value) <= 99)) && !isNaN(elem.value)){
        // ok
      }
      else{
        errorMsgID = "telephone";
      }
      
	  break;
	  case "txtfield_phone":
	    if (elem.value.length<6 || isNaN(elem.value)){ 
        errorMsgID = "telephone";  	        			
      }
	  break;
      
	  case "txtfield_mobile_prefix":
	    if (!(elem.value=="20"||elem.value=="30"||elem.value=="70") || isNaN(elem.value)){  
        errorMsgID = "mobile";  				
      }
	  break;
	  case "txtfield_mobile":
	    if (elem.value.length<7 || isNaN(elem.value)){ 
        errorMsgID = "mobile";  	        			
      }
	  break;
	  
    case "radiogroup_gen":		      
      if (!elem.checked) {
        errorMsgID = elem.name;
      }
    break;
    
    case "checkbox_gen":		      
      if (!elem.checked) {
        errorMsgID = elem.name;
      }
    break;
    
// Ford kérdőív specifikus:
 
	  case "txtfield_proddate":
	    var date = new Date();
      var year = date.getFullYear();
      if (parseInt(elem.value) < 1970 || parseInt(elem.value) > parseInt(year) || isNaN(elem.value)){  
        errorMsgID = elem.name;  				
      }
    break;
	  
    
  }  
  
  mandatoryDivs.push(errorMsgID);
  return errorMsgID;    
}
var whtSpEnds = new RegExp("^\\s*|\\s*$", "g");
var whtSpMult = new RegExp("\\s\\s+", "g");

function normalizeString(s) {

  s = s.replace(whtSpMult, " ");  
  s = s.replace(whtSpEnds, "");   

  return s;
}


var divClsNm = "checkDivCls";
var errorClsNm = "errorStyleCls";

var divTest = new RegExp(divClsNm, "gi");

var errorMsg = new Array();
var oldErrorMsg = new Array();
var mandatoryDivs = new Array();

var phoneOk = 1; 
var mobileOk = 1;
var new_usedMandatory = 1;

function validateForm(frm) {
  var frmElements = frm.elements;
    
  var mandatoryDiv = new Array();
  var mandatoryDivID = new Array();

  var mDiv = "";
  mandatoryDivs.length = 0;    
  
  if(errorMsg.length != 0) {
    //alert(errorMsg);
    
    for (var i = 0; i < errorMsg.length; i++) {             
      divEl = document.getElementById(errorMsg[i]);  
      divEl.className = "";                         
      divEl.className = divClsNm;
      divEl.className = normalizeString(divEl.className);                                  
    } 
    
    errorMsg.length = 0;
  }  
  
  for (var i = 0; i < frmElements.length; i++) {    
  	if (frmElements[i].disabled != true){
      
// Mandatory Fields validation
      if (frmElements[i].id == "mandatory"){                        		          
    		if (checkElement(frmElements[i]) != ""){ 
          errorMsg.push(checkElement(frmElements[i]));                    
        }     	        
      }  
      
// Optional Fields validation      
      if (frmElements[i].id == "optional"  && (frmElements[i].className != "radio_gen" && frmElements[i].className != "check_gen" && frmElements[i].className != "list_gen") && (frmElements[i].length > 0 || frmElements[i].value != "")){                        		          
    		if (checkElement(frmElements[i]) != ""){ 
          errorMsg.push(checkElement(frmElements[i]));                    
        }     	        
      }
      
// Special rules validation              
      if (frmElements[i].id == "special"){        
        if (frmElements[i].name == "inmarket"){
          if (checkElement(frmElements[i]) != ""){ 
            errorMsg.push(checkElement(frmElements[i]));                                
          } 
          
          if (frmElements[i].value == "nem tervezem") {
            new_usedMandatory = 0;
          } else{
            new_usedMandatory = 1;
          }
        }
        
        //radio gombok ellenörzése ha kell
    
        if (frmElements[i].name == "new_used" && new_usedMandatory == 1){          
          var radiogroup = frmElements[frmElements[i].name];
      		var itemchecked = false;
      		var uncheckedElements = new Array();
      		
      		for(var j = 0; j < radiogroup.length; j++) {
        		if(radiogroup[j].checked) {        		  
         			itemchecked = true;
          		break;
        		} 
       		}
       		
      		if(!itemchecked) {
            errorMsg.push("new_used");                    		
      		}  
               		
      		new_usedMandatory = 1;      		
        }
     
        
        if (frmElements[i].name == "telephone"){                      		          
    		  if (checkElement(frmElements[i]) != "" || checkElement(frmElements[i-1]) != "" ){             
            phoneOk = 0;                                                       
          } else {
            phoneOk = 1;
          }
        }
        
        if ((frmElements[i].name == "mobile_prefix" || frmElements[i].name == "mobile") && phoneOk == 0){                      		          
    		  if (checkElement(frmElements[i]) != ""){
            mobileOk = 0; 
            errorMsg.push(checkElement(frmElements[i]));                    
          } else {
            mobileOk = 1;
            phoneOk = 1;
          }
        }
        
        if (phoneOk == 0 && mobileOk == 0){
          errorMsg.push("telephone");
          phoneOk = 1;
          mobileOk = 1;
        }
        //alert(phoneOk +" "+ mobileOk);
      }                                     
  	}  	
  }

// Submit form  
  if(errorMsg.length == 0){     
    return true;
  }

// Show error message 
  else{     
    
//error message
    document.getElementById("errorMsg").innerHTML = "Hiba a kitöltés során! Kérem, ellenőrizze a megjelölt mezőket!";
    self.scrollTo(0,100);        
    
//error fields - change style
    for (var i = 0; i < errorMsg.length; i++) {             
      divEl = document.getElementById(errorMsg[i]);                     
      divEl.className += " " + errorClsNm; 
      divEl.className = normalizeString(divEl.className);                            
    }
               
    return false;
  }  
}

