var orderedProducts = Array(999);
var current = 0;

function updatePrice(){
	document.addtocart.number.value = parseInt(document.addtocart.number.value); 
	document.addtocart.totalamount.value = 'CHF '+roundCHF(document.addtocart.price.value * document.addtocart.number.value);
}

function plusOne(){
	document.addtocart.number.value++;
	updatePrice();
}

function minusOne(){
	if(document.addtocart.number.value>1){
		document.addtocart.number.value--;
		updatePrice();
	}
}

function updateOrder(){
	string = '';
	for(i = 0;i < current;i++){
		input = eval('document.order.orderedProduct'+orderedProducts[i]);
		string += '_id:'+orderedProducts[i]+",number:"+(input.value);
	}
	return string;
}

function searchProducts(){
	string = '';
	for(i = 0;i < document.forms[0].elements.length ;i++){
		if (document.forms[0].elements[i].name != '' && document.forms[0].elements[i].value != ''){
			// replace "_" (special thing for attributes like: Body and Shave
			var name = document.forms[0].elements[i].name;
			name = name.replace(/field_/,"");
			name = name.replace(/_/," ");
			name = name.replace(/_/," ");
			name = name.replace(/_/," ");
			string += name +":"+ document.forms[0].elements[i].value+",";
		}
	}
	return (string);
}

function addOrderedProduct(id){
	orderedProducts[current++] = id;
}

function roundCHF(amount){
		return printf("%01.2f", (parseInt(amount*20+0.5))/20);
		//return printf("%01.2f", amount);
}



function isDigit(c)
{
  return "0123456789.".indexOf(c) == -1 ? 0 : 1
}

function print_string(left, w, arg)
{
  var ww, temp
  if (w != 0) {
    ww = my_length(""+arg)
    if (left == 1) {
      if (ww > w) {
        _line += arg
      }
      else {
        _line += arg+string_constant_blank.substring(0, w-ww)
      }
    }
    else {
      if (ww > w) {
        _line += arg
      }
      else {
        _line += string_constant_blank.substring(0, w-ww)+arg //@@
      }
    }
  }
  else {
    _line += arg
  }
}

function print_number(gf, w, d, number)
{
  if (gf == "g") {
    _line += print_number_g(w, d, number)
  }
  else if (gf == "f") {
    _line += print_number_f(w, d, number)
  }
  else if (gf == "i" || gf == "d") {
    _line += print_number_i(w, d, number)
  }
}

function print_number_i(w, d, number)
{
  var s, p, ww
  s = fixed2(number, d)
  ww = (""+s).length
  if (ww < w) {
    s = string_constant_blank.substring(0, w-ww)+s
  }
  return s
}

function print_number_f(w, d, number)
{
  var s, p, ww
  s = fixed2(number, d)
  if ((""+s).charAt(0) == ".") {
    s = "0"+s
  }
  else if ((""+s).indexOf("-.") != -1) {
    s = "-0"+(""+s).substring(1, (""+s).length)

  }
  if ((""+s).indexOf(".") == -1) {
    s += "."
  }
  ww = (""+s).length-1
  p = (""+s).indexOf(".")

  if (ww-p < d) {
    s += string_constant_zero.substring(0, d-(ww-p))
  }

  ww = (""+s).length
  if (ww < w) {
    s = string_constant_blank.substring(0, w-ww)+s
  }
  return s
}

function print_number_g(w, d, number)
{
  var abs = Math.abs(number)
  if (number == 0 || (0.001 <= abs && abs < Math.pow(10, d))) {
    return print_number_g2(w, d, number)
  }
  else {
    return print_number_e(w, d, number)
  }
}

function print_number_g2(w, d, number)
{
  var s, p, ww, abs, temp
  abs = Math.abs(number)
  if (number == 0) {
    temp = 1
  }
  else if (abs >= 1) {
    temp = d-(""+Math.floor(abs)).length
  }
  else {
    temp = d-1
    while (abs < 1) {
      temp++
      abs *= 10
    }
  }
  s = fixed2(number, temp)
  if ((""+s).charAt(0) == ".") {
    s = "0"+s
  }
  else if ((""+s).indexOf("-.") != -1) {
    s = "-0"+(""+s).substring(1, (""+s).length)

  }
  if ((""+s).indexOf(".") == -1) {
    s += "."
  }
  ww = (""+s).length
  ww -= (number < 0 ? 1 : 0)+(Math.abs(number) < 1 ? 1 : 0)+1
  if (ww < d) {
    s += string_constant_zero.substring(0, d-ww)
  }

  ww = (""+s).length
  if (ww < w) {
    s = string_constant_blank.substring(0, w-ww)+s
  }
  return s
}

var string_constant_blank = "                                  ";
var string_constant_zero  = "0000000000000000000000000000000000";
var _line = '';

function print_number_e(w, d, number)
{
  var s, p, ww, exponent, sign, abs, temp
  w -= 4
  exponent = 0
  abs = Math.abs(number)
  while (abs < 1) {
    exponent--
    abs *= 10
  }
  while (abs >= 10) {
    exponent++
    abs /= 10
  }
  temp = (number < 0 ? -1 : 1)*abs
  return print_number_f(w, d-1, temp)+"e"+(exponent < 0 ? "-" : "+")+rec(exponent)
}
function fixed2(x, d)
{
  return Math.round(x*Math.pow(10,d))/Math.pow(10,d)
}

function printf(arg)
{
	_line = '';
  var i, c, c2, c3, ww, pointer = 1, w = 0, d = 0, left, piriod
  var format = printf.arguments[0]
  for (i = 0; i < format.length; i++) {
    c = format.charAt(i)
    if (c == "\n") {
      if (_line == "") _line = " "
      out_one_line()
    }
    else if (c == "%") {
      left = 0
      i++
      c2 = format.charAt(i)
      if (c2 == "%") {
        _line += c2
        continue
      }
      else if (c2 == "-") {
        left = 1
        c2 = format.charAt(++i)
      }
      if (isDigit(c2)) {
        piriod = 0
        w = 0
        d = 0
        while ((c3 = format.charAt(i)) != "s" && c3 != "f" && c3 != "g" && c3 != "i" && c3 != "d") {
          if (c3 == ".") {
            piriod = 1
          }
          else if (isDigit(c3) == 0) {
            err100("non digit after % ("+c3+")")
          }
          else if (piriod == 0) {
            w = w*10+eval(c3)
          }
          else if (piriod == 1) {
            d = d*10+eval(c3)
          }
          i++
        }
        if (c3 == "s") {
          print_string(left, w, printf.arguments[pointer++])
        }
        else if (c3 == "g" || c3 == "f") {
          print_number(c3, w, d, printf.arguments[pointer++])
        }
        else if (c3 == "i" || c3 == "d") {
          print_number(c3, w, 0, printf.arguments[pointer++])
        }
      }
      else if (c2 == "s") {
        print_string(left, 0, printf.arguments[pointer++])
      }
      else if (c2 == "f") {
        print_number(c2, 0, 3, printf.arguments[pointer++])
      }
      else if (c2 == "g") {
        print_number(c2, 0, 6, printf.arguments[pointer++])
      }
      else if (c2 == "i" || c2 == "d") {
        print_number(c2, 0, 0, printf.arguments[pointer++])
      }
    }
    else {
      _line += c
    }
  }
	return _line;
}
