function checkData(form) {
  var e = false;
  if(form.company.value == '') {
    e = true;
    document.getElementById('company').style.color = 'red';
  } else {
    document.getElementById('company').style.color = '';
  }
  if((form.phone.value == '') || (!checkPhoneFormat(form.phone.value)) ) {
    e = true; 
    document.getElementById('phone').style.color = 'red';
  } else {
    document.getElementById('phone').style.color = '';
  }
  if(form.contp.value == '') {
    e = true; 
    document.getElementById('contp').style.color = 'red';
  } else {
    document.getElementById('contp').style.color = '';
  }
  if( (form.email.value != '') && (!emailCheck(form.email.value)) ) {
    e = true; 
    document.getElementById('email').style.color = 'red';
  } else {
    document.getElementById('email').style.color = '';
  }
  
  if(e) {
    return false;
  } else {
    return true;
  }
}

function checkUserData(form) {
  var e = false;
  if(form.loginname.value == '') {
    e = true;
    document.getElementById('loginname').style.color = 'red';
  } else {
    document.getElementById('loginname').style.color = '';
  }
  if((form.company_phone.value != '') && (!checkPhoneFormat(form.company_phone.value)) ) {
    e = true; 
    document.getElementById('company_phone').style.color = 'red';
  } else {
    document.getElementById('company_phone').style.color = '';
  }
  if((form.cellphone.value != '') && (!checkPhoneFormat(form.cellphone.value)) ) {
    e = true; 
    document.getElementById('cellphone').style.color = 'red';
  } else {
    document.getElementById('cellphone').style.color = '';
  }
  if((form.fax.value != '') && (!checkPhoneFormat(form.fax.value)) ) {
    e = true; 
    document.getElementById('fax').style.color = 'red';
  } else {
    document.getElementById('fax').style.color = '';
  }
  /*
  if(form.password.value.length < 6) {
    e = true; 
    document.getElementById('password').style.color = 'red';
  } else {
    document.getElementById('password').style.color = '';
  } */
  if( ((form.new_password.value != '') || (form.new_password_again.value != '')) && ( (form.new_password.value != form.new_password_again.value) || (form.new_password.value.length < 6) || (form.password.value.length < 6) ) ) {
    e = true; 
    document.getElementById('new_password').style.color = 'red';
    document.getElementById('new_password_again').style.color = 'red';
    document.getElementById('password').style.color = 'red'; 
  } else {
    document.getElementById('new_password').style.color = '';
    document.getElementById('new_password_again').style.color = '';
    document.getElementById('password').style.color = ''; 
  }
  
  if(e) {
    return false;
  } else {
    return true;
  }
}

function checkPhoneFormat(phone_nr) {
  var l = phone_nr.length;
  var opening_scope = false;
  var closing_scope = false;
  
  for(i=0;  i<l; i++) {
    if( (!is_numeric(phone_nr.charAt(i))) && (phone_nr.charAt(i) != ' ') && (phone_nr.charAt(i) != '+') && (phone_nr.charAt(i) != '(') && (phone_nr.charAt(i) != ')') || (l < 3) ) { 
      return false;
    } else {
      if(!is_numeric(phone_nr.charAt(i))) {
        if((phone_nr.charAt(i) == '+') && (i != 0)) {  //if it is plus, it must go first
          return false;
        }                              
        if(phone_nr.charAt(i) == '(') {
          if(opening_scope) {
            return false;
          } else {
            opening_scope = true;
          }  
        }
        if(phone_nr.charAt(i) == ')') {
          if((!opening_scope) || (closing_scope)) {
            return false;
          } else {
            closing_scope = true;
          } 
        }
      }
    }
  }
  return true;
}

function is_numeric(strString)
   //  check for valid numeric strings  
   {
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;
   //  test strString consists of valid characters listed above
   for (j = 0; j < strString.length && blnResult == true; j++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }


function emailCheck (emailStr) {
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
  //alert("Email address seems incorrect (check @ and .'s)")
  return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    //alert("The username doesn't seem to be valid.")
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
    for (var i=1;i<=4;i++) {
      if (IPArray[i]>255) {
          //alert("Destination IP address is invalid!")
    return false
      }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
  //alert("The domain name doesn't seem to be valid.")
    return false;
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   //alert("The address must end in a three-letter domain, or two letter country.")
   return false;
}

if (len<2) {
   //var errStr="This address is missing a hostname!"
   return false;
}
return true;
}

function format_float(number)
{
	var str = new String();
	str = number + "";
	arr = str.split(/\./);
	if(arr.length>1)
	{
		if((arr[1]).length<2)
			str = str + "0";
		if((arr[1]).length>2)
			str = Math.round(str*100)/100;
	}
	else
	{
		str = str + ".00";
	}
	return str;
}

function change_item_count(input_id, price, number){
	var allValid = /^[0-9]*$/;
	if(allValid.test(number))
	{
    //var old_total = parseFloat(document.getElementById('total_sum').value);
    var old_value = parseFloat(document.getElementById('price_sum_' + input_id).value); 
		var new_value = Math.round((price * number)*100)/100;
		var pokytis = new_value - old_value;

		document.getElementById('price_sum_' + input_id).value = format_float(new_value);
		document.getElementById('amount_' + input_id).value = number;
		/*var all_sum = Math.round((parseFloat(document.getElementById('total_sum').value))*100)/100;
		all_sum += pokytis;
		document.getElementById('total_sum').value = format_float(Math.round((all_sum)*100)/100); */
	} else {
    var old = document.getElementById('amount_' + input_id).value;
    old=old.substr(0, (old.length)-1);
    document.getElementById('amount_' + input_id).value = old; 
    change_item_count(input_id, price, old);   
  }
}

function add_to_cart(id)
{
	document.shopform.product_id.value = id;
	document.shopform.submit();
}

function add_my_item(id)
{
	document.shopform.add_item_id.value = id;
	document.shopform.submit();	
}

function calculate_price(obj, tr_price, all_sum)
{
	var transport_price = tr_price;
	var sum_without_transport = all_sum;
	var free = obj.options[obj.selectedIndex].value
	arr = free.split('-');
	free = arr[1];
	if(free==1)
 	{	
 		document.order_form.sum.value = format_float(sum_without_transport);
 		document.order_form.transport_price.value = '0.00';
 	}
 	if(free==0)
 	{
		document.order_form.sum.value = format_float(sum_without_transport + transport_price);
		document.order_form.transport_price.value = transport_price;
 	}
}
