
function submitMpForm(param) {
  var forma = document.getElementById("mpForm"),
  lang = document.getElementById("lang").value;
  
  forma.action = "/" + lang + "/" + param + "/";
  if(forma.car_nr.value.length > 1 && forma.tech_nr.value.length >= 8) {
    forma.submit();
  }
  else {
    return false;
  }
}


var evt = {
  add: function(elem, evt, todo) {
    if(elem.addEventListener) {
      elem.addEventListener(evt, todo, false);
    }
    else if (elem.attachEvent) { // ie
      elem.attachEvent('on' + evt, todo);
    }
  },
  
  remove: function(elem, evt, todo) {
    if(elem.removeEventListener) {
      elem.removeEventListener(evt, todo, false);
    }
    else if (elem.detachEvent) { // ie
      elem.detachEvent('on' + evt, todo);
    }
  }
}




function getElementComputedStyle(elem, prop){  
  if (typeof elem!="object") elem = document.getElementById(elem);    
  // external stylesheet for Mozilla, Opera 7+ and Safari 1.3+  
  if (document.defaultView && document.defaultView.getComputedStyle)  {    
    if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();    
    return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);  
  }    

// external stylesheet for Explorer and Opera 9  
  if (elem.currentStyle)  {    
    var i;    while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);    
    return elem.currentStyle[prop];  
  }    return "";
}




function formChecker(formId) {
  var node = document.getElementById("form_form");
  if(node !== null) {
    var elems = formChecker_getElems(node);
    

    for(var i=0; i<elems.length; i++) {
      
    
      formChecker_checkElementAndModifyDesign(elems[i]);
  
      
      if(elems[i].type == "text" || elems[i].type == "textarea") {
        elems[i].onkeyup = formChecker_keyUpedOnElement;
        
      }
      
      if(elems[i].type == "select-one") {
        elems[i].onchange = formChecker_focusedOnElement;
      }
      
      
      if(elems[i].type == "text" || elems[i].type == "textarea" ) {
        elems[i].onclick = formChecker_focusedOnElement;
      }
      else if(elems[i].type == "radio") {
        elems[i].onclick = formChecker_clickedOnRadioElement;
      }
      else if(elems[i].type == "select-one") {
        elems[i].onclick = formChecker_clickedOnSelElement;
      }
      
      elems[i].onfocus = formChecker_focusedOnElement;
      elems[i].onblur = formChecker_bluredOnElement;
      
    }
    
    formChecker_blockUnblockBtn();
    
  }
  
}






// keyUp input element
function formChecker_keyUpedOnElement(e) {
  var element = defineEventElement(e);
  validateFields(element);
  var resOfChecking = formChecker_checkElement(element);
  var design = formChecker_getDesignForElement(element);

  
  if(resOfChecking == "zero_true") {
    design.className = "field inp";
  }
  else if(resOfChecking == "zero_false") {
    design.className = "field inp";
  }
  else if(resOfChecking == false) {
    design.className = "field inp-err";
  }
  else if(resOfChecking == true) {
    design.className = "field inp-ok";
  }
  
  formChecker_blockUnblockBtn();
  if (element.name == 'date') {
    ShowCalendar();
  }
  
}


// focused input element
function formChecker_focusedOnElement(e) {
  var element = defineEventElement(e);
  var resOfChecking = formChecker_checkElement(element);
  var design = formChecker_getDesignForElement(element);
  
  

  
  if(resOfChecking == "zero_true") {
    design.className = "field inp";
  }
  else if(resOfChecking == "zero_false") {
    design.className = "field inp";
  }
  else if(resOfChecking == false) {
    design.className = "field inp-err";
  }
  else if(resOfChecking == true) {
    design.className = "field inp-ok";
  }
  
  formChecker_blockUnblockBtn();
  if (element.name == 'date') {
    ShowCalendar();
  }
}


// blured input element
function formChecker_bluredOnElement(e) {
  var element = defineEventElement(e);
  var resOfChecking = formChecker_checkElement(element);
  var design = formChecker_getDesignForElement(element);

  //alert(resOfChecking);
  if(resOfChecking == "zero_true") {
    design.className = "field";
  }
  else if(resOfChecking == "zero_false") {
    design.className = "field req";
  }
  else if(resOfChecking == false) {
    design.className = "field err";
  }
  else if(resOfChecking == 'more') {
    design.className = "field inp-ok";
  }
  else if(resOfChecking == true) {
    design.className = "field ok";
  }
  
  formChecker_blockUnblockBtn();
  if (element.name == 'date') {
    ShowCalendar();
  }
}

// clicked on radio button
function formChecker_clickedOnRadioElement(e) {
  var element = defineEventElement(e);
  var resOfChecking = formChecker_checkElement(element);
  /*alert("b");
  var design = formChecker_getDesignForElement(element);

  alert(resOfChecking);
  if(resOfChecking == "zero_true") {
    design.className = "field";
  }
  else if(resOfChecking == "zero_false") {
    design.className = "field req";
  }
  else if(resOfChecking == true) {
    design.className = "field ok";
  }*/
  
  
  formChecker_blockUnblockBtn();
  if (element.name == 'date') {
    ShowCalendar();
  }
} 

function formChecker_clickedRadioLabel(e) {
  var resOfChecking = formChecker_checkElement(e);
  var design = formChecker_getDesignForElement(e);
  if (resOfChecking == "zero_false") {
    design.className = "field inp-ok";
    var id = e.id.substring(0, e.id.length-1);
    document.getElementById(id).checked = true;
    document.getElementById(id).focus();
  }
}

function formChecker_clickedOnSelElement(e) {
  var element = defineEventElement(e);
  var resOfChecking = formChecker_checkElement(element);
  var design = formChecker_getDesignForElement(element);

  if(resOfChecking == "zero_true") {
    design.className = "field inp";
  }
  else if(resOfChecking == "zero_false") {
    design.className = "field inp";
  }
  else if(resOfChecking == true) {
    design.className = "field inp-ok";
  }
  
  
  formChecker_blockUnblockBtn();
  if (element.name == 'date') {
    ShowCalendar();
  }
}



// check element from any point of script and modify design
function formChecker_checkElementAndModifyDesign(element) {
  var resOfChecking = formChecker_checkElement(element);
  var design = formChecker_getDesignForElement(element);

  
  if(resOfChecking == "zero_true") {
    design.className = "field";
  }
  else if(resOfChecking == "zero_false") {
    design.className = "field req";
  }
  else if(resOfChecking == false) {
    design.className = "field err";
  }
  else if(resOfChecking == true) {
    design.className = "field ok";
  }

  
}





// block / unblock submit button
function formChecker_blockUnblockBtn() {

  var node = document.getElementById("form_form");
  var elems = formChecker_getElems(node);
  
  var checker = false;
   
  for(var i=0; i<elems.length; i++) {
    
    var resOfChecking = formChecker_checkElement(elems[i]);
    
    if(resOfChecking == "zero_false" || resOfChecking == false ) {
      var checker = true;
    }
  }
  
  var submitBtn = document.getElementById("submit_btn"); 
  if(checker) {
    submitBtn.disabled = true;
  }
  else {
    submitBtn.disabled = false;
  }
  
  
  var calendarRadio = document.getElementById("date2");
  
  if(calendarRadio.checked == true) {
    document.getElementById("insuranceCompanies").style.display = "block";
    document.getElementById("insuranceCompaniesSel").className = "require";    
  }
  else {
    document.getElementById("insuranceCompanies").style.display = "none";
    document.getElementById("insuranceCompaniesSel").className = "skip";
  }
}

// check element values
function formChecker_checkElement(element) {
  var res = false;
  
  if(element.type == "text") {
    
    if(element.className.indexOf('age') != -1) {
      var re = /^[0-9]+$/;
      if(re.test(element.value)) {
        if(element.value < 18) {
          res = false;
        }
        else {
          res = true;
        }
        
      }
    }
    else if(element.className.indexOf('digits') != -1) {
      var re = /^[0-9]+$/;
      if(re.test(element.value)) {
        var age = document.getElementById('age').value;
        if(age < parseInt(element.value) + 18) {
          res = false;
        }
        else {
          res = true;
        }
      }
    }
    else if(element.className.indexOf('email') != -1) {
      if (/^[A-Za-z0-9\.-]+@[A-Za-z0-9\.-]+(\.\w{2,4})+$/.test(element.value)){ 
        res = true; 
      } 
    }
    else if(element.className.indexOf('price') != -1) {
      if (/^[0-9\.\,]+$/.test(element.value)){ 
        res = true; 
      } 
    }
    else if(element.className.indexOf('phone') != -1) {
      if ((/^[0-9\-\+\,\s]+$/.test(element.value)) && element.value.length>7){ 
        res = true; 
      }

    }
    else {
      if (element.value.length > 1){ 
        res = true; 
      } 
    }
    
    
    
    if(res !== true) {
      if(element.value.length == 0) {
        if(element.className.indexOf('require') != -1) {
          res = "zero_false";
        }
        else {
          res = "zero_true";
        }
      }
    }    
    
    
  }
  else if(element.type == "radio") {
    res = formChecker_checkSisterRadios(element);
  }
  else if(element.type == "select-one") {

      var sind = element.selectedIndex;
      var sindval = element.options[sind].value;
      
      if(sindval.length>0 && sindval !== null) {
        res = true;
      }
      else {
        if(element.className.indexOf('require') != -1) { 
          res = "zero_false";
        }
        else {
          res = "zero_true";
        }
      }

    
  }
  else if(element.type == "text" || element.type == "textarea") {
    if(element.value.length > 1) {
      res = true;
    }
    
    if(res !== true) {
      if(element.value.length == 0) {
        if(element.className.indexOf('require') != -1) {
          res = "zero_false";
        }
        else {
          res = "zero_true";
        }
      }
    }  
    
    
  }
  else if(element.type == "hidden") {
    res = true;
  }
  else if(element.className == 'label') {
    res = "zero_false";
  }
  
  
  return res;
  
  
}



function formChecker_checkSisterRadios(radio) {
  if(radio.className.indexOf('require') != -1) {
    var res = "zero_false";
  }
  else {
    var res = "zero_true";
  }
   
  var sisters = radio.parentNode.getElementsByTagName("input");
  for(var i=0; i<sisters.length; i++) {
    if(sisters[i].name == radio.name) {
      if(sisters[i].checked == true) {
        res = true;
      }
    }
  }
  
  return res;
  
}



// function return Element which made action
function defineEventElement(e) {
  var element;
	if (!e) var e = window.event;
	if (e.target) element = e.target;
	else if (e.srcElement) element = e.srcElement;
	if (element.nodeType == 3) // defeat Safari bug
		element = element.parentNode; 
		
	return element;
}


function formChecker_getDesignForElement(elem) {
  return elem.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
}



// Get All elements (input, textarea etc.) of parent Element - "node"
function formChecker_getElems(node) {
  var elems3 = node.getElementsByTagName("input");
  var elems2 = node.getElementsByTagName("textarea");
  var elems = node.getElementsByTagName("select");

  var result = addArrayToArray(elems, elems2);
  result = addArrayToArray(result, elems3);
  
  var result2 = new Array;
  
  for(var i=0; i<result.length; i++) {
    if(result[i].type !== "button" && result[i].type !== "submit") {
      result2[result2.length] = result[i];
    }
  }

  return result2;
}


// union of the two Arrays
function addArrayToArray(a1, a2) {
  var tmp = new Array;
  
  for(var i=0; i<a1.length; i++) {
    tmp[i] = a1[i];
  }
  
  for(var i=0; i < a2.length; i++) {
    tmp[tmp.length] = a2[i];
  }
  
  return tmp;
}





function hints(formId) {
  var node = document.getElementById(formId);
  if(node !== null) {
    var elems = formChecker_getElems(node);
    
    var elems = node.getElementsByTagName("a");
    var lastElement = false;
    
    var isButtonClicked = false;
    var timer = false;
    
    for(var i=0; i<elems.length; i++) {
      if(elems[i].className == "hint") {
      
        elems[i].onclick = function (e) {
        
          if(lastElement !== false) {
            //alert(lastElement.innerHTML);
            var childs = lastElement.childNodes;
            for(var i=0; i<childs.length; i++) {
              if(childs[i].className == "place") {
                             
               childs[i].innerHTML = "";
               
              }
            }
          }
          
          var element = defineEventElement(e);
          
          
          if(element.className !== "txt" && element.className !== "") {
          
            isButtonClicked = true;
            timer = (new Date).getTime();
          
            
            lastElement = element;
            
            var childs = element.childNodes;
            for(var i=0; i<childs.length; i++) {
              if(childs[i].className == "place") {
                
                var place = childs[i];
              }
              if(childs[i].className == "cont") {
                var content = childs[i];
              }
            }
            
            if(place !== null && content !== null) {
              
              //place.innerHTML = '<div class="hint-body" id="hintEl"><div class="callout"><div></div></div><div class="txt">'+ content.innerHTML +'</div></div>';
              
              var el1 = document.createElement("div");
              el1.className = 'hint-body';
              el1.id = 'hintEl'
              
              var el2 = document.createElement("div");
              el2.className = 'callout';
              var el3 = document.createElement("div");
              el2.appendChild(el3);
              
              el1.appendChild(el2);
              
              var el4 = document.createElement("div");
              el4.className = 'txt';
              
              tx1 = document.createTextNode(content.innerHTML);
              el4.appendChild(tx1);
              
              el1.appendChild(el4);
                          
              place.appendChild(el1);
              
              
            
            }
          
          }
          else {
            //document.getElementById("hintEl").style.display = "none";
          }
          
        }
        
        
      }
    }
    
    node.onclick = function () {
      if(isButtonClicked) {
        if(timer !== false) {
          if(((new Date).getTime() - timer) >= 5) {
            if(document.getElementById("hintEl")) {
              document.getElementById("hintEl").style.display = "none";
            }
            
          }
        }
      }
    }
           
  }
}



function subway(elBody) {
  var bodyEl = document.getElementById(elBody);
  
  
  if(bodyEl) {
    var elems = bodyEl.getElementsByTagName("div");
    for(var i=0; i<elems.length; i++) {
      if(elems[i].className == "subway") {
        var childs = elems[i].childNodes;
        for(var j=0; j<childs.length; j++) {
          if(childs[j].className == "link" || childs[j].className == "link act") {
            childs[j].onclick = function(e) {
              var element = defineEventElement(e);
              
              if(element.tagName == "SPAN") {
                  var par = element.parentNode.parentNode;
                  var btn = element.parentNode;
                
                /*else if(element.tagName == "DIV") {
                  var par = element.parentNode;
                  var btn = element;
                }*/
                
                for(var m=0; m<par.childNodes.length; m++) {
                  
                  if(par.childNodes[m].className == "content") {
                    if(getElementComputedStyle(par.childNodes[m], "display") == "none") { 
                      par.childNodes[m].style.display= "block";
                      btn.className = "link act";
                    }
                    else {
                      par.childNodes[m].style.display= "none";
                      btn.className = "link";
                    }
                  }
                }
              }
              
            }
          }
        }
      }
    }
  }
  
}

function WritePolicyEndDate(type) {
  var enddate = document.getElementById('enddate');
  if (type == 1) {
    enddate.value = document.getElementById('calendar').innerHTML;
  }
  else {
    enddate.value = "NULL";
  }
}

function validateFields(elem) {
  var Numbers = valo = "", field = elem, chars = field.value.split(""), charsL = chars.length, TextTypeArr = [], i = 0;
  TextTypeArr[0] = [['Type', 'Default'], ['Numbers', '0123456789']];
	TextTypeArr[1] = [['Type', 'name'], ['Numbers', 'AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽžQqWwYyXx ']];
  TextTypeArr[2] = [['Type', 'surname'], ['Numbers', 'AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽžQqWwYyXx -']];
  TextTypeArr[3] = [['Type', 'phone'], ['Numbers', '0123456789, ']];
  TextTypeArr[4] = [['Type', 'email'], ['Numbers', '0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvZzQqWwYyXx .@_!#$%&\'*+-/=?^_`{|}~']];
  TextTypeArr[5] = [['Type', 'comments'], ['Numbers', '0123456789AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽžQqWwYyXx .,:/"']];
  var Len = TextTypeArr.length;
  for (i; i < Len; i++) {
    if (elem.name == TextTypeArr[i][0][1]) {
      Numbers = TextTypeArr[i][1][1];
    }
  }
	if (Numbers == "") {
    Numbers = TextTypeArr[0][1][1];
  }
  
	for (i = 0; i < charsL; i++) {
		if (Numbers.indexOf(chars[i]) != -1) {
		  valo += chars[i];
		}
	}
	if (elem.value != valo) {
    elem.value = valo;
  }
}

function ShowCalendar() {
  var calendarRadio = document.getElementById("date2");
  if(calendarRadio.checked == true) {
    WritePolicyEndDate(1);Calendar('calendar');
  }
  else {
    WritePolicyEndDate(0);hideCalendarControl();
  }
}

function run() {
  formChecker("mpForm");
  hints("form_form");
  subway("subway_container");
}


evt.add(window, 'load', run);  

