var price = 0;
var total = 0;
var pages = 0;

var prices = new Array();
prices['rollovers'] = 5;
prices['dropdowns'] = 14;
prices['sifr'] = 21;
prices['flexible_layout'] = 29;
prices['stretch'] = 11;
prices['bottom'] = 11;
prices['em'] = 52;
prices['wordpress'] = 299;
prices['myspace'] = 399;

var last_checked = new Array();
last_checked['rollovers'] = 'No';
last_checked['dropdowns'] = 'No';
last_checked['sifr'] = 'No';
last_checked['flexible_layout'] = 'No';
last_checked['stretch'] = 'No';
last_checked['bottom'] = 'No';
last_checked['em'] = 'No';
last_checked['wordpress'] = 'No';
last_checked['myspace'] = 'No';

var c = 0;
var c_all = false;
var comp_price = 30;
var comp_count = 5;
var c_checked = false;

document.observe("dom:loaded", function(){
  $('order_green').observe("click", function(event){
    var error = 0;
    
    if($('input_name').value == "" || !$('input_name')){
      $('name_h4').addClassName('error');
      error++;
    } else {
      $('name_h4').removeClassName('error');
    }
    
    if($('input_email').value == "" || !$('input_email')){
      $('email_h4').addClassName('error');
      error++;
    } else {
      $('email_h4').removeClassName('error');
    }

    if($('link').value == "" && $('file_name').value == "") {
      $('upload_error').show();
      error++;
    } else {
      $('upload_error').hide();
    }
    
    var b_comp = 0;
    $$('[name="compatability[]"]').each(function(v, i) {
      if(v.checked == true) {
        b_comp++;
      }
    });
    
    if(b_comp == 0) {
      alert("Minimum one compatible browser is required.");
      error++;
    }
    
    if(error == 0){
      $('order_form_form').submit();
    } else {
      return false;
    }
  });
  
  checkOption('rollovers');
  checkOption('dropdowns');
  checkOption('sifr');
  checkOption('flexible_layout');
  checkOption('stretch');
  checkOption('bottom');
  checkOption('em');
  checkOption('wordpress');
  checkOption('myspace');
  
  checkCompatibility();

  $('pages_total').observe("keyup", function(e){
    if(parseInt($('pages_total').value) >= 0) {
      updatePages(parseInt($('pages_total').value))
    }
  })

  $('upload').observe("change", function(e) {
    $('file_name').value = $('upload').value
  })
});

function checkOption(elm) {
  $$('[name="' + elm + '"]').each(function(v, i){
    v.observe("click", function(e) {
      if($RF('order_form_form', elm) == "Yes") {
        if(last_checked[elm] == "No") {
          updatePrice(prices[elm]);
          last_checked[elm] = "Yes";
        }
      } else {
        if(last_checked[elm] == "Yes") {
          updatePrice(-prices[elm]);
          last_checked[elm] = "No";
        }
      }
    })
  })
}

function checkCompatibility() {
  $$('[name="compatability[]"]').each(function(v, i) {
    v.observe("click", function(e){
      if(v.checked == true) {
        updatePrice(comp_price);
        c++;
      } else {
        if(c_all) {
          updatePrice((c-1)*comp_price - 99);
          c_all = false;
          c = comp_count - 1;
        } else {
          updatePrice(-(comp_price));
          c--;
        }
      }

      if(c == comp_count) {
        $('compatability_all').checked = true;
        updatePrice(99 - c*comp_price);
        c_all = true;
        c_checked = true;
      } else {
        $('compatability_all').checked = false;
        c_checked = false;
      }
    })
  })
  
  $('compatability_all').observe("click", function(e){
    if(c_checked == false) {
      $('compatability_all').checked = true;
      $$('[name="compatability[]"]').each(function(v, i) {
        v.checked = true;
      })

      updatePrice(99 - c*comp_price);
      c_all = true;
      c = comp_count;
      c_checked = true;
    }
  })
  
  $('add').observe("click", function(e){
    updatePrice(0);
  })
}

function updatePrice(val) {
  if(pages == 0 ) {
    pages = 1;
  }

  price += val;
  total = price * pages;

  $('total_amount').update(total);

  //$('debug').show();//debug only
  //$('debug').update(total);//debug only
  
  if(total < 100) {
    if($('add').checked == true) {
      $('total_amount').update(100);
      //$('debug').update(100);
    }
    
    $('amount').update(100 - total);
    
    $('add_amount').show();
    $('check_amount').hide()
  } else {
    $('add_amount').hide();
    $('check_amount').show()
  }
}

function updatePages(p) {
  pages = p;
  updatePrice(0);
}

/**
* Returns the value of the selected radio button in the radio group, null if
* none are selected, and false if the button group doesn't exist
*
* @param {radio Object} or {radio id} el
* OR
* @param {form Object} or {form id} el
* @param {radio group name} radioGroup
*/
function $RF(el, radioGroup) {
    if($(el).type && $(el).type.toLowerCase() == 'radio') {
        var radioGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }

    var checked = $(el).getInputs('radio', radioGroup).find(
        function(re) {return re.checked;}
    );
    return (checked) ? $F(checked) : null;
}

function onlyDigits(e) {
  var characterCode; // literal character code will be stored in this variable

  if (e && e.which) { //if which property of event object is supported (NN4)
    e = e;
    characterCode = e.which; //character code is contained in NN4's which property
  } else {
    e = event;
    characterCode = e.keyCode; //character code is contained in IE's keyCode property
  }

  if ((characterCode != 8) &&
    (characterCode < 46 || characterCode > 57)) {
    return false;
  }
  return true;
}