<!--

function hideAllMessages( msgBoxId )
{
	var box = document.getElementById(msgBoxId);
	if( box )
	{
		var spans = box.getElementsByTagName('span');
		for( i = 0; i < spans.length; i++ )
		{
			spans[i].style.display = 'none';
		}
	}
}
  
function nl2br( str )
{
  while( str.indexOf('\n') != -1 )
  {
    str = str.replace(/\n+/ , '<br />')
  }
  return str;
}

function trim( str )
{
  str = new String( str );
  return str.replace(/(^\s*)|(\s*$)/, '');
}

function checkEmail( str )
{
  str = new String( str );
  return new RegExp( '^([a-zA-Z0-9][a-zA-Z0-9_.-]*|"([^\\\\\x80-\xff\015\012"]|\\\\[^\x80-\xff])+")\@([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}$' ).test(str);
}

function checkInteger( str )
{
  str = new String( str );
  return  str.search(/[^0-9]/) == -1 ;
}

function fieldReplace( valueToReplace, nameOfReplace )
{
  i = 0;
  while( document.forms[i] )
  {
    if( document.forms[i].elements[nameOfReplace] )
    {
      var inputToReplace = document.forms[i].elements[nameOfReplace];
      if( valueToReplace && ! inputToReplace.value )
      {
        inputToReplace.value = valueToReplace;
      }
      break;
    }
  }
}

function checking( form, toCheck )
{
  i = 0;
  name = '';
  var err = '';

  for( i = 0; i < form.elements.length; i++ )
  {
    form.elements[i].value = trim(form.elements[i].value);
  }

  if( mails[toCheck] )
  {
    for( i = 0; i < mails[toCheck].length; i++ )
    {
      name = mails[toCheck][i];
      if( ! checkEmail(form.elements[name].value) )
      {
        form.elements[name].className += ' error';
        err += name + ';';
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'block';
        }
      }
      else
      {
        form.elements[name].className = form.elements[name].className.replace(/( ?error)+/, '');
        if( document.getElementById( name + '-result' ) )
        {
          document.getElementById( name + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( form.elements[name].value );
        }
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'none';
        }
      }
    }
  }

  if( integers[toCheck] )
  {
    for( i = 0; i < integers[toCheck].length; i++ )
    {
      name = integers[toCheck][i];
      if( ! checkInteger(form.elements[name].value) )
      {
        form.elements[name].value = '';
        form.elements[name].className += ' error';
        err += name + ';';
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'block';
        }
      }
      else
      {
        form.elements[name].className = form.elements[name].className.replace(/( ?error)+/, '');
        if( document.getElementById( name + '-result' ) )
        {
          document.getElementById( name + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( form.elements[name].value );
        }
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'none';
        }
      }
    }
  }

  if( notNull[toCheck] )
  {
    for( i = 0; i < notNull[toCheck].length; i++ )
    {
      name = notNull[toCheck][i];
      if( ! form.elements[name].value )
      {
        form.elements[name].value = '';
        form.elements[name].className += ' error';
        err += name + ';';
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'block';
        }
      }
      else
      {
        form.elements[name].className = form.elements[name].className.replace(/( ?error)+/, '');
        if( document.getElementById( name + '-result' ) )
        {
          document.getElementById( name + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( form.elements[name].value );
        }
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'none';
        }
      }
    }
  }


  if( radioInput[toCheck] )
  {
    ch = 0;
    var radioCheck = false;
    var radioValue = '';

    for( i = 0; i < radioInput[toCheck].length; i++ )
    {
      name = radioInput[toCheck][i];
      for( ch = 0; ch < form.elements[name].length; ch++ )
      {
        if( form.elements[name][ch].checked );
        {
          radioValue = form.elements[name][ch].value;
          break;
        }
      }

      if( ch >= form.elements[name].length )
      {
        for( j = 0; j < form.elements[name].length; j++ )
        {
          form.elements[name][j].className += ' error';
        }
        err += name + ';';
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'block';
        }
      }
      else
      {
        for( j = 0; j < form.elements[name].length; j++ )
        {
          form.elements[name][j].className = form.elements[name][j].className.replace(/( ?error)+/, '');
        }
        if( document.getElementById( name + '-result' ) )
        {
          if( specialRadioValue && specialRadioValue[toCheck] && specialRadioValue[toCheck][radioValue] )
          {
            document.getElementById( name + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br(specialRadioValue[toCheck][radioValue]);
          }
          else
          {
            document.getElementById( name + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br(radioValue);
          }
        }
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'none';
        }
      }
    }
  }

  if( checkBoxInput[toCheck] )
  {
    ch = 0;
    var checkBoxCheck = false;
    var checkBoxValue = new Array();

    for( i = 0; i < checkBoxInput[toCheck].length; i++ )
    {
      name = checkBoxInput[toCheck][i];

      j = 0;
      while( form.elements[name][j] )
      {
        if( form.elements[name][j].checked )
        {
          checkBoxValue[ch] = form.elements[name][j].value;
          ch++;
        }
        j++;
      }

      if( ch == 0 )
      {
        j = 0;
        while( form.elements[name][j] )
        {
          form.elements[name][j].className += ' error';
          j++;
        }
        err += name + ';';
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'block';
        }
      }
      else
      {
        j = 0;
        while( form.elements[name][j] )
        {
          form.elements[name][j].className = form.elements[name][j].className.replace(/( ?error)+/, '');
          j++;
        }
        if( document.getElementById( name + '-result' ) )
        {
          var result = '';
          for( j = 0; j <= ch ; j++ )
          {
            if( specialCheckBoxValue && specialCheckBoxValue[toCheck] && specialCheckBoxValue[toCheck][checkBoxValue[j]] )
            {
              result += specialCheckBoxValue[toCheck][checkBoxValue[j]] + ', ';
            }
            else
            {
              result += checkBoxValue[j] + ', ';
            }
          }
          document.getElementById( name + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( result.replace( /, $/ , '') );
        }
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'none';
        }
      }
    }
  }


  if( maxLength[toCheck] )
  {
    for( i in maxLength[toCheck] )
    {
      if( ( ! form.elements[i].value ) || form.elements[i].value.length > maxLength[toCheck][i] )
      {
        form.elements[i].className += ' error';
        err += i + ';';
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'block';
        }
      }
      else
      {
        form.elements[i].className = form.elements[i].className.replace(/( ?error)+/, '');
        if( document.getElementById( i + '-result' ) )
        {
          document.getElementById( i + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( form.elements[i].value );
        }
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'none';
        }
      }
    }
  }

  if( minLength[toCheck] )
  {
    for( i in minLength[toCheck] )
    {
      if( ( ! form.elements[i].value ) || form.elements[i].value.length < minLength[toCheck][i] )
      {
        form.elements[i].className += ' error';
        err += i + ';';
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'block';
        }
      }
      else
      {
        form.elements[i].className = form.elements[i].className.replace(/( ?error)+/, '');
        if( document.getElementById( i + '-result' ) )
        {
          document.getElementById( i + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( form.elements[i].value );
        }
        if( document.getElementById( name + '-error' ) )
        {
          document.getElementById( name + '-error' ).style.display = 'none';
        }
      }
    }
  }

  if( fieldToReplace[toCheck] )
  {
    for( i in fieldToReplace[toCheck] )
    {
      fieldReplace( form.elements[i].value, fieldToReplace[toCheck][i] );
    }
  }

  if( sameValue[toCheck] )
  {
    for( i in sameValue[toCheck] )
    {
      if( form.elements[i] && form.elements[sameValue[toCheck][i]] )
      {
        if( form.elements[i].value != form.elements[sameValue[toCheck][i]].value )
        {
          form.elements[i].value = '';
          form.elements[sameValue[toCheck][i]].value = '';
          form.elements[i].className += ' error';
          form.elements[sameValue[toCheck][i]].className += ' error';
          err += i + ';';
          if( document.getElementById( name + '-error' ) )
          {
            document.getElementById( name + '-error' ).style.display = 'block';
          }
        }
        else
        {
          form.elements[i].className = form.elements[i].className.replace(/( ?error)+/, '');
          form.elements[sameValue[toCheck][i]].className = form.elements[sameValue[toCheck][i]].className.replace(/ error/, '');
          if( document.getElementById( i + '-result' ) )
          {
            document.getElementById( i + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( form.elements[i].value );
          }
	        if( document.getElementById( name + '-error' ) )
	        {
	          document.getElementById( name + '-error' ).style.display = 'none';
	        }
        }
      }
    }
  }

  if( others[toCheck] )
  {
    for( i = 0; i < others[toCheck].length; i++ )
    {
      name = others[toCheck][i];
      err = err.replace( new RegExp( name + ';' ), '' );
      if( document.getElementById( name + '-result' ) )
      {
        if( ! form.elements[name].value )
        {
          document.getElementById( name + '-result' ).style.display = 'none';
        }
        else
        {
          document.getElementById( name + '-result' ).style.display = 'block';
          if( document.getElementById( name + '-result' ) )
          {
            document.getElementById( name + '-result' ).getElementsByTagName('span')[0].innerHTML = nl2br( form.elements[name].value );
          }
        }
      }
    }
  }

  return err;
}

//set globals hashtables for checking
// settings :
// - hashtable of arrays:
// variable = { 'typeOfChecking1' : [ 'fieldName11' , 'fieldName12' ... ],
//              'typeOfChecking2' : [ 'fieldName21' , 'fieldName22' ... ] };
// - hashtable of hashtables:
// variable = { 'typeOfChecking1' : { 'fieldName11' : value11 , 'fieldName12' : value12 ... },
//              'typeOfChecking2' : { 'fieldName21' : value21 , 'fieldName22' : value22 ... } };

//hashtable of arrays
var notNull        = {
  'contact'   : [ 'contact[first_name]', 'contact[last_name]', 'contact[address]', 'contact[zip]', 'contact[town]', 'contact[country]', 'contact[subject]', 'contact[message]' ],
  'client'    : [ 'client[first_name]', 'client[last_name]', 'client[address]', 'client[zip]', 'client[town]', 'client[country]' ],
  'delivery'  : [ 'delivery[first_name]', 'delivery[last_name]', 'delivery[address]', 'delivery[zip]', 'delivery[town]', 'delivery[country]' ]
                     };

//hashtable of arrays
var radioInput     = {
                     };

//hashtable of arrays
var checkBoxInput  = {
                     };

//hashtable of arrays
var integers       = {
  /*'contact'   : [ 'contact[zip]' ],
  'client'    : [ 'client[zip]' ],
  'delivery'  : [ 'delivery[zip]' ]*/
                     };

//hashtable of arrays
var mails          = {
  'contact'    : [ 'contact[e_mail]' ],
  'client'     : [ 'client[e_mail]' ],
  'delivery'   : [ 'delivery[e_mail]' ],
  'newsletter' : [ 'newsletter_e_mail' ]
                     };

//hashtable of hashtables
var sameValue = {
                };
//hashtable of hashtables
var fieldToReplace = {
                     };

//hashtable of hashtables
//useless for inputs (set maxlength attributes)
//usefull for textarea
var maxLength      = {
                     };

//hashtable of hashtables
var minLength      = {
                     };

//hashtable of arrays
var others         = {
	'package'   : [ 'package[text]' ],
  'contact'   : [ 'contact[phone]', 'contact[gsm]', 'contact[fax]' ],
  'client'    : [ 'client[phone]' ],
  'delivery'  : [ 'delivery[phone]', 'delivery[e_mail]' ]
                     };

function checkContactForm()
{
  form = document.forms['contact'];

  var err = checking( form, 'contact' );

  if( err == '' )
  {
  	form.submit();
  	return true;
  }
  else
	{
		document.getElementById('message-box').style.display = 'block';
  	return false;
	}
}

function checkNewsletter()
{
	hideAllMessages('newsletter-message-box');
	form = document.forms['newsletter'];
	
	var err = checking( form, 'newsletter' );
	
  if( err == '' )
  {
		document.getElementById('newsletter-message-box').style.display = 'none';
  	return true;
  }
  else
	{
		document.getElementById('newsletter-message-box').style.display = 'block';
  	return false;
	}
}

function checkStep1()
{
	var total = refreshBasket();
	setToResult()
	
	form = document.forms['order'];
	checking( form, 'package' );
	
	if( form.elements['code'].value != '' )
	{
		document.forms['discount-code'].elements['code'].value = form.elements['code'].value;
		document.forms['discount-code'].submit();
	}
	else
	{
		document.getElementById('delivery-charge-form-total').value = total;
		document.getElementById('code-result').style.display = 'none';
		document.getElementById('code-discount').style.display = 'none';
		document.getElementById('code-amount').style.display = 'none';
		document.getElementById('code-total').style.display = 'none';
		document.getElementById('code-error').style.display = 'none';
	}
	
	if( form.elements['package[flag]'].checked )
	{
		document.getElementById('without-package').style.display = 'none';
		document.getElementById('with-package').style.display = 'block';
	}
	else
	{
		document.getElementById('without-package').style.display = 'block';
		document.getElementById('with-package').style.display = 'none';
		document.getElementById('package[text]-result').style.display = 'none';
	}
	
	displayStep( 2 );
}

function checkStep2()
{
	hideAllMessages('message-box-step-2');
	form = document.forms['order'];
	
	var err = checking( form, 'client' );
	
  if( err == '' )
  {
		document.getElementById('message-box-step-2').style.display = 'none';
  	displayStep( 3 );
  }
  else
	{
		document.getElementById('message-box-step-2').style.display = 'block';
	}
}

function checkStep3()
{
	hideAllMessages('message-box-step-3');
	form = document.forms['order'];
	
	var err = checking( form, 'delivery' );
	
	document.forms['delivery-charge'].elements['country'].value = form.elements['delivery[country]'].value;
	document.forms['delivery-charge'].submit();
	
  if( err == '' )
  {
		document.getElementById('message-box-step-3').style.display = 'none';
  	displayStep( 4 );
  }
  else
	{
		document.getElementById('message-box-step-3').style.display = 'block';
	}
}

function checkStep4()
{
	hideAllMessages('message-box-step-4');
	form = document.forms['order'];
	
	if( form.elements['agp'].checked )
	{
		document.getElementById('message-box-step-4').style.display = 'none';
  	form.submit();
  }
  else
	{
		document.getElementById('message-box-step-4').style.display = 'block';
		document.getElementById('agp-error').style.display = 'block';
	}
}

function invoiceToDelivery()
{
	var names = [ 'first_name', 'last_name', 'address', 'zip', 'town', 'phone', 'e_mail' ];
	form = document.forms['order'];
	for( i = 0; i < names.length; i++ )
	{
		form.elements['delivery[' + names[i] + ']'].value = form.elements['client[' + names[i] + ']'].value 
	}
	var country = form.elements['client[country]'].value.substr( 0, 2 ).toLowerCase();
	for( i = 0; i < form.elements['delivery[country]'].options.length; i++ )
	{
		if( form.elements['delivery[country]'].options[i].value == country )
		{
			form.elements['delivery[country]'].options[i].selected = 'selected';
			break;
		}
	}
}

/*function setUserInfoFields()
{
  document.getElementById("pcbrowser").value=navigator.userAgent;
  document.getElementById("pcscreen").value=screen.width + "x" + screen.height;
  var OSName="Unknown OS";
  if (navigator.appVersion.indexOf("Win")!=-1)
    OSName="Windows";
  if (navigator.appVersion.indexOf("Mac")!=-1)
    OSName="MacOS";
  if (navigator.appVersion.indexOf("X11")!=-1)
    OSName="UNIX";
  if (navigator.appVersion.indexOf("Linux")!=-1)
    OSName="Linux";
  document.getElementById("pcos").value=OSName;
}

window.onload = function()
{
  if( document.forms['contact_form'] )
  {
    setUserInfoFields();
  }
}*/

-->