  var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;	
  var numExp = /^[0-9\ \.\-]+$/;
  var alphanumExp = /^[^!\?#%\*;<>=\[\]\^\{\}\|~]+$/;
	
  function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++)  {
        var c = s.charAt(i);
        if (c == " ") continue;
        if (((c < "0") || (c > "9"))) return false;
    }
    
    return true;
  }
  
  function isLogFile(text, file) {
    if(text == '' && file == '') return false;
    else return true;
  }
  
  function isCorrectFile(text, file) {
    var filename = 'PG4UW_LOG_windows_content.txt';
    var filename_len = filename.length;
    
    if(file != '') {
   		    file = file.substring(file.length-filename_len,file.length);
   		    if(file == filename) //ide o zhodny subor
      			return true;
    			else
      			return false;
   	} else {
   	  if(text == '') return false; //nie je zadany subor ani log okno
   	  else return true
   	}
  }

  function checkFormSk(form) {
	  if (form.subject.value=='') { alert("Prosím zadajte vec (názov problému)"); form.subject.focus(); return false;}
	  if (!form.subject.value.match(alphanumExp)) { alert("Prosím nepoužívajte špeciálne znaky v názve problému."); form.subject.focus(); return false;}
	  if (form.subject.value.length > 80) { alert("Prosím zadajte názov problému na max. 80 znakov."); form.subject.focus(); return false; }
	  if (form.country.value=='') { alert("Prosím vyberte štát."); form.country.focus(); return false;}
	  if (form.contact_f.value=='') { alert("Prosím zadajte Vaše meno."); form.contact_f.focus(); return false;}
	  if (!form.contact_f.value.match(alphanumExp)) { alert("Prosím nepoužívajte špeciálne znaky vo Vašom mene."); form.contact_f.focus(); return false;}
	  if (form.contact_f.value.length > 80) { alert("Prosím zadajte Vaše priezvisko na max. 80 znakov."); form.contact_f.focus(); return false;}
	  if (form.contact_l.value=='') { alert("Prosím zadajte Vaše priezvisko."); form.contact_l.focus(); return false;}
	  if (!form.contact_l.value.match(alphanumExp)) { alert("Prosím nepoužívajte špeciálne znaky vo Vašom priezvisku."); form.contact_l.focus(); return false;}
	  if (form.contact_l.value.length > 80) { alert("Prosím zadajte Vaše priezvisko na max. 80 znakov."); form.contact_l.focus(); return false;}
	  if (form.email.value=='') { alert("Prosím zadajte Vašu E-mailovú adresu."); form.email.focus(); return false;}
	  if (!form.email.value.match(emailExp)) { alert("Vaša E-mailová adresa je nesprávna."); form.email.focus(); return false;}
	  if (form.email.value!=form.conf_email.value) { alert("Zadané E-mailové adresy nie sú rovnaké. Prosím skontrolujte Váš E-mail."); form.email.focus(); return false;}
	  if (form.buy_product[0].checked==false && form.buy_product[1].checked==false && form.buy_product[2].checked==false) { alert("Prosím zadajte kde ste zakúpili výrobok."); form.buy_product[0].focus(); form.buy_product[0].checked=false; return false;}
	  if (form.buy_product[0].checked==true && form.purchase.value=='') { alert("Prosím zadajte kde ste zakúpili výrobok."); form.purchase.focus(); return false;}
	  if (form.buy_product[2].checked==true && form.other_specify.value=='') { alert("Prosím zadajte kde ste zakúpili výrobok."); form.other_specify.focus(); return false;}
    if (form.purchdate.value=='') { alert("Prosím zadajte dátum zakúpenia."); form.purchdate.focus(); return false;}
	  if (form.rcarddate_sent[0].checked==false && form.rcarddate_sent[1].checked==false) { alert("Prosím zadajte dátum zaslania registračnej karty."); form.rcarddate_sent[0].focus(); form.rcarddate_sent[0].checked=false; return false;}
	  if (form.rcarddate_sent[0].checked==true && form.rcarddate.value=='') { alert("Prosím zadajte dátum zaslania registračnej karty."); form.rcarddate.focus(); return false;}
	  if (form.prog.value=='') { alert("Prosím vyberte programátor."); form.prog.focus(); return false;}
	  if (form.prog.value=='Iné' && form.other_product.value=='') { alert("Prosím zadajte programátor."); form.other_product.focus(); return false;}
	  if (form.serial.value=='') { alert("Prosím zadajte sériové číslo."); form.serial.focus(); return false;}
	  if (form.powsupp[0].checked==false && form.powsupp[1].checked==false) { alert("Prosím vyberte napájací zdroj."); form.powsupp[0].focus(); form.powsupp[0].checked=false; return false;}
	  if (form.powsupp[1].checked==true && form.powsuppother.value=='') { alert("Prosím zadajte napájací zdroj."); form.powsuppother.focus(); return false;}
	  if (form.version.value=='') { alert("Prosím zadajte verziu ovládacieho programu v tvare x.xx."); form.version.focus(); return false;}
	  if (! /^\ *[0-9]\ *\.\ *[0-9]{1,2}[A-Za-z]?/.test(form.version.value)) { alert("Verzia ovládacieho programu nie je správna."); form.version.focus(); return false; }
	  if (form.manuf.value=='') { alert("Prosím zadajte výrobcu/prevedenie Vášho PC."); form.manuf.focus(); return false;}
	  if (form.pcvariant[0].checked==false && form.pcvariant[1].checked==false) { alert("Prosím vyberte či máte Desktop alebo Notebook."); form.pcvariant[0].focus(); form.pcvariant[0].checked=false; return false;}
	  if (form.processor.value=='') { alert("Prosím zadajte procesor, rýchlosť."); form.processor.focus(); return false;}
	  if (form.os.value=='') { alert("Prosím zadajte operačný systém a jeho verziu."); form.os.focus(); return false;}
	  if (form.lptloc.value=='') { alert("Prosím vyberte umiestnenie LPT portu."); form.lptloc.focus(); return false;}
	  if (form.lpttype.value=='') { alert("Prosím vyberte typ LPT portu."); form.lpttype.focus(); return false;}
	  if (form.lptsetting.value=='') { alert("Prosím vyberte nastavenie LPT portu."); form.lptsetting.focus(); return false;}
	  if (form.device.value=='') { alert("Prosím zadajte typ obvodu."); form.device.focus(); return false;}
	  if (form.vendor.value=='') { alert("Prosím zadajte výrobcu."); form.vendor.focus(); return false;}
	  if (form.packg.value=='') { alert("Prosím zadajte púzdrenie."); form.packg.focus(); return false;}
	  if (form.adaptor.value=='') { alert("Prosím zadajte použitý konvertor."); form.adaptor.focus(); return false;}
	  if (form.adaptor.value.toLowerCase()!='none' && form.adp_serial_number.value=='') { alert("Prosím zadajte sériové číslo konvertora \""+form.adaptor.value+"\"."); form.adp_serial_number.focus(); return false;}
	  if (form.prog_type.value=='') { alert("Prosím vyberte spôsob programovania obvodu."); form.prog_type.focus(); return false;}
	  if (form.designtop.value=='') { alert("Prosím zadajte popis na hornej strane obvodu."); form.designtop.focus(); return false;}
	//  if (form.designbot.value=='') { alert("Prosím zadajte popis na spodnej strane obvodu."); form.designbot.focus(); return false;}
	  if (form.rating.value=='') { alert("Prosím zadajte aktuálnosť problému."); form.rating.focus(); return false;}
	  if (! isInteger(form.rating.value)) { alert( "Aktuálnosť problému musí byť číselná hodnota."); form.rating.focus(); return false;}
	  if (form.rating_dwm.value=='') { alert("Prosím zadajte aktuálnosť problému."); form.rating_dwm.focus(); return false;}
	  if (form.often.value=='') { alert("Prosím vyberte ako často pracujete s týmito obvodmi."); form.often.focus(); return false;}
	  if (form.number.value=='') { alert("Prosím zadajte odhadovaný počet programovaní obvodov."); form.number.focus(); return false;}
	  if (! isInteger(form.number.value)) { alert( "Počet programovaní obvodov musí byť číselná hodnota."); form.number.focus(); return false;}
	  if (form.samples[0].checked==false && form.samples[1].checked==false && form.samples[2].checked==false) { alert("Prosím zadajte či máte vzorku."); form.samples[0].focus(); form.samples[0].checked=false; return false;}
	  Result="Prosím odpovedzte na všetky potrebné doplňujúce otázky.";
	  if (form.lastver[0].checked==false && form.lastver[1].checked==false) { alert(Result); form.lastver[0].focus(); form.lastver[0].checked=false; return false;}
	  if (form.features[0].checked==false && form.features[1].checked==false) { alert(Result); form.features[0].focus(); form.features[0].checked=false; return false;}
	  if (form.read_info[0].checked==false && form.read_info[1].checked==false) { alert(Result); form.read_info[0].focus(); form.read_info[0].checked=false; return false;}
	  if (form.socket[0].checked==false && form.socket[1].checked==false && form.socket_isp[0].checked==false && form.socket_isp[1].checked==false) { alert(Result); form.socket[0].focus(); form.socket[0].checked=false; return false;}
	  if (form.datasheet[0].checked==false && form.datasheet[1].checked==false) { alert(Result); form.datasheet[0].focus(); form.datasheet[0].checked=false; return false;}
	  if (form.features_chip[0].checked==false && form.features_chip[1].checked==false) { alert(Result); form.features_chip[0].focus(); form.features_chip[0].checked=false; return false;}
	  if (form.dev[0].checked==false && form.dev[1].checked==false) { alert(Result); form.dev[0].focus(); form.dev[0].checked=false; return false;}
	  if (form.num_devices.value=='') { alert("Prosím zadajte koľko obvodov ste testovali."); form.num_devices.focus(); return false;}
	  if (! isInteger(form.num_devices.value)) { alert( "Počet testovaných obvodov musí byť číselná hodnota."); form.num_devices.focus(); return false;}
	  if (form.alldev[0].checked==false && form.alldev[1].checked==false && form.alldev[2].checked==false) { alert(Result); form.alldev[0].focus(); form.alldev[0].checked=false; return false;}
	  if (form.datecode[0].checked==false && form.datecode[1].checked==false && form.datecode[2].checked==false) { alert(Result); form.datecode[0].focus(); form.datecode[0].checked=false; return false;}
	  if (form.num_devices_lot.value=='') { alert("Prosím zadajte koľko rôznych sérií ste testovali."); form.num_devices_lot.focus(); return false;}
	  if (! isInteger(form.num_devices_lot.value)) { alert( "Počet testovaných sérií musí byť číselná hodnota."); form.num_devices_lot.focus(); return false;}
	  if (form.device_code.value=='') { alert("Zadajte série testovaných obvodov."); form.device_code.focus(); return false;}
	  if (form.proc[0].checked==false && form.proc[1].checked==false && form.proc[2].checked==false && form.proc[3].checked==false) { alert(Result); form.proc[0].focus(); form.proc[0].checked=false; return false;}
	  if (form.pgsucc[0].checked==false && form.pgsucc[1].checked==false) { alert(Result); form.pgsucc[0].focus(); form.pgsucc[0].checked=false; return false;}
	  if (form.occur[0].checked==false && form.occur[1].checked==false) { alert(Result); form.occur[0].focus(); form.occur[0].checked=false; return false;}
	  if (form.otherpc[0].checked==false && form.otherpc[1].checked==false && form.otherpc[2].checked==false) { alert(Result); form.otherpc[0].focus(); form.otherpc[0].checked=false; return false;}
	  if (form.selftest[0].checked==false && form.selftest[1].checked==false && form.selftest[2].checked==false && form.selftest[3].checked==false) { alert(Result); form.selftest[0].focus(); form.selftest[0].checked=false; return false;}
	  if (form.stepbystep.value=='') { alert("Prosím opíšte Váš problém s obvodom."); form.stepbystep.focus(); return false;}
	  if (!isLogFile(form.logwindowcontent.value, form.logfile.value)) { alert('Prosím priložte LOG súbor, alebo jeho obsah do LOG okna.'); form.logwindowcontent.focus();return false; }
	  if (!isCorrectFile(form.logwindowcontent.value, form.logfile.value)) { alert('Prosím priložte originálny LOG súbor programu PG4UW: PG4UW_LOG_windows_content.txt'); return false;}
	  
	  if (form.security_code.value=='') { alert("Prosím vložte kontrolný kód z obrázka."); form.security_code.focus(); return false;}
	  return true;
  }
  
  function checkForm( form) {
	if (form.subject.value=='') { alert("Please enter a subject (title of problem)."); form.subject.focus(); return false;}
	if (!form.subject.value.match(alphanumExp)) { alert("Please don't use special characters in subject."); form.subject.focus(); return false;}
	if (form.subject.value.length > 80) { alert("Please enter subject at least 80 characters long"); form.subject.focus(); return false;}
	if (form.country.value=='') { alert("Please select country."); form.country.focus(); return false;}
	if (form.contact_f.value=='') { alert("Please enter your first name."); form.contact_f.focus(); return false;}
	if (!form.contact_f.value.match(alphanumExp)) { alert("Please enter only letters in your first name."); form.contact_f.focus(); return false;}
	if (form.contact_f.value.length > 80) { alert("Please enter your first name at least 80 characters long."); form.contact_f.focus(); return false;}
	if (form.contact_l.value=='') { alert("Please enter your last name."); form.contact_l.focus(); return false;}
	if (!form.contact_l.value.match(alphanumExp)) { alert("Please enter only letters in your last name."); form.contact_l.focus(); return false;}
	if (form.contact_l.value.length > 80) { alert("Please enter your last name at least 80 characters long."); form.contact_l.focus(); return false;}
	if (form.email.value=='') { alert("Please enter your E-mail."); form.email.focus(); return false;}
	if (form.email.value!=form.conf_email.value) { alert("Your E-mail addresses don't match. Please, check your E-mail."); form.email.focus(); return false;}
	if (!form.email.value.match(emailExp)) { alert("Your E-mail address is not valid."); form.email.focus(); return false;}
	if (form.buy_product[0].checked==false && form.buy_product[1].checked==false && form.buy_product[2].checked==false) { alert("Please enter where you bought the product."); form.buy_product[0].focus(); form.buy_product[0].checked=false; return false;}
	if (form.buy_product[0].checked==true && form.purchase.value=='') { alert("Please enter where you bought the product."); form.purchase.focus(); return false;}
	if (form.buy_product[2].checked==true && form.other_specify.value=='') { alert("Please enter where you bought the product."); form.other_specify.focus(); return false;}
	if (form.purchdate.value=='') { alert("Please enter date of purchasing."); form.purchdate.focus(); return false;}
	if (form.rcarddate_sent[0].checked==false && form.rcarddate_sent[1].checked==false) { alert("Please enter date of sending registration card."); form.rcarddate_sent[0].focus(); form.rcarddate_sent[0].checked=false; return false;}
	if (form.rcarddate_sent[0].checked==true && form.rcarddate.value=='') { alert("Please enter date of sending registration card."); form.rcarddate.focus(); return false;}
	if (form.prog.value=='') { alert("Please select programmer."); form.prog.focus(); return false;}
	if (form.prog.value=='Other' && form.other_product.value=='') { alert("Please enter programmer."); form.other_product.focus(); return false;}
	if (form.serial.value=='') { alert("Please enter serial number."); form.serial.focus(); return false;}
	if (form.powsupp[0].checked==false && form.powsupp[1].checked==false) { alert("Please select power supply."); form.powsupp[0].focus(); form.powsupp[0].checked=false; return false;}
	if (form.powsupp[1].checked==true && form.powsuppother.value=='') { alert("Please enter power supply."); form.powsuppother.focus(); return false;}
	if (form.version.value=='') { alert("Please enter version of control program."); form.version.focus(); return false;}
	if (! /^\ *[0-9]\ *\.\ *[0-9]{1,2}[A-Za-z]?/.test(form.version.value)) { alert("Version of control program is incorrect, type in x.xx format"); form.version.focus(); return false; }
	if (form.manuf.value=='') { alert("Please enter PC manufacturer/type."); form.manuf.focus(); return false;}
	if (form.pcvariant[0].checked==false && form.pcvariant[1].checked==false) { alert("Please select whether Desktop or Notebook you have."); form.pcvariant[0].focus(); form.pcvariant[0].checked=false; return false;}
	if (form.processor.value=='') { alert("Please enter processor, speed."); form.processor.focus(); return false;}
	if (form.os.value=='') { alert("Please enter operating system and version."); form.os.focus(); return false;}
	if (form.lptloc.value=='') { alert("Please select LPT port location."); form.lptloc.focus(); return false;}
	if (form.lpttype.value=='') { alert("Please select LPT port type."); form.lpttype.focus(); return false;}
	if (form.lptsetting.value=='') { alert("Please select LPT port setting."); form.lptsetting.focus(); return false;}
	if (form.device.value=='') { alert("Please enter device type."); form.device.focus(); return false;}
	if (form.vendor.value=='') { alert("Please enter vendor."); form.vendor.focus(); return false;}
	if (form.packg.value=='') { alert("Please enter package."); form.packg.focus(); return false;}
	if (form.adaptor.value=='') { alert("Please enter type of used adaptor."); form.adaptor.focus(); return false;}
	if (form.adaptor.value.toLowerCase()!='none' && form.adp_serial_number.value=='') { alert("Please enter the serial number of \""+form.adaptor.value+"\" adaptor."); form.adp_serial_number.focus(); return false;}
	if (form.prog_type.value=='') { alert("Please select the way of chip programming."); form.prog_type.focus(); return false;}
	if (form.designtop.value=='') { alert("Please enter all designation on the top of the device."); form.designtop.focus(); return false;}
	if (form.rating.value=='') { alert("Please enter precedence rating."); form.rating.focus(); return false;}
	if (! isInteger(form.rating.value)) { alert( "Precedence rating has to be a number."); form.rating.focus(); return false;}
	if (form.rating_dwm.value=='') { alert("Please enter precedence rating."); form.rating_dwm.focus(); return false;}
	if (form.often.value=='') { alert("Please select how often you work with this devices."); form.often.focus(); return false;}
	if (form.number.value=='') { alert("Please enter number of programmed devices."); form.number.focus(); return false;}
	if (! isInteger(form.number.value)) { alert( "Number of programmed devices has to be a number."); form.number.focus(); return false;}
	if (form.samples[0].checked==false && form.samples[1].checked==false && form.samples[2].checked==false) { alert("Please enter whether samples are available."); form.samples[0].focus(); form.samples[0].checked=false; return false;}
	Result="Please reply to all required questions.";
	if (form.lastver[0].checked==false && form.lastver[1].checked==false) { alert(Result); form.lastver[0].focus(); form.lastver[0].checked=false; return false;}
	if (form.features[0].checked==false && form.features[1].checked==false) { alert(Result); form.features[0].focus(); form.features[0].checked=false; return false;}
	if (form.read_info[0].checked==false && form.read_info[1].checked==false) { alert(Result); form.read_info[0].focus(); form.read_info[0].checked=false; return false;}
	if (form.socket[0].checked==false && form.socket[1].checked==false && form.socket_isp[0].checked==false && form.socket_isp[1].checked==false) { alert(Result); form.socket[0].focus(); form.socket[0].checked=false; return false;}
	if (form.datasheet[0].checked==false && form.datasheet[1].checked==false) { alert(Result); form.datasheet[0].focus(); form.datasheet[0].checked=false; return false;}
	if (form.features_chip[0].checked==false && form.features_chip[1].checked==false) { alert(Result); form.features_chip[0].focus(); form.features_chip[0].checked=false; return false;}
	if (form.dev[0].checked==false && form.dev[1].checked==false) { alert(Result); form.dev[0].focus(); form.dev[0].checked=false; return false;}
	if (form.num_devices.value=='') { alert("Please enter how many devices you have tested."); form.num_devices.focus(); return false;}
	if (! isInteger(form.num_devices.value)) { alert( "Amount of tested devices has to be a number."); form.num_devices.focus(); return false;}
	if (form.alldev[0].checked==false && form.alldev[1].checked==false && form.alldev[2].checked==false) { alert(Result); form.alldev[0].focus(); form.alldev[0].checked=false; return false;}
	if (form.datecode[0].checked==false && form.datecode[1].checked==false && form.datecode[2].checked==false) { alert(Result); form.datecode[0].focus(); form.datecode[0].checked=false; return false;}
	if (form.num_devices_lot.value=='') { alert("Please enter how many devices lot you have tested."); form.num_devices_lot.focus(); return false;}
	if (! isInteger(form.num_devices_lot.value)) { alert( "Lot of devices has to be a number."); form.num_devices_lot.focus(); return false;}
	if (form.device_code.value=='') { alert("Enter device code of tested chips."); form.device_code.focus(); return false;}
	if (form.proc[0].checked==false && form.proc[1].checked==false && form.proc[2].checked==false && form.proc[3].checked==false) { alert(Result); form.proc[0].focus(); form.proc[0].checked=false; return false;}
	if (form.pgsucc[0].checked==false && form.pgsucc[1].checked==false) { alert(Result); form.pgsucc[0].focus(); form.pgsucc[0].checked=false; return false;}
	if (form.occur[0].checked==false && form.occur[1].checked==false) { alert(Result); form.occur[0].focus(); form.occur[0].checked=false; return false;}
	if (form.otherpc[0].checked==false && form.otherpc[1].checked==false && form.otherpc[2].checked==false) { alert(Result); form.otherpc[0].focus(); form.otherpc[0].checked=false; return false;}
	if (form.selftest[0].checked==false && form.selftest[1].checked==false && form.selftest[2].checked==false && form.selftest[3].checked==false) { alert(Result); form.selftest[0].focus(); form.selftest[0].checked=false; return false;}
	if (form.stepbystep.value=='') { alert("Please describe your problem with the device."); form.stepbystep.focus(); return false;}
	if (!isLogFile(form.logwindowcontent.value, form.logfile.value)) { alert('Please attach LOG file or LOG window content'); form.logwindowcontent.focus();return false; }
	if (!isCorrectFile(form.logwindowcontent.value, form.logfile.value)) {alert('Please attach only PG4UW LOG file: PG4UW_LOG_windows_content.txt'); return false;}    
	  
	if (form.security_code.value=='') { alert("Please enter control code from picture."); form.security_code.focus(); return false;}
	return true;
 } 