/// Simply compute the amount of VAT from the prices given.
function ajax_request(url)
{
  this.url = url;
  this.xhr = null;

  try {
    // Mozilla-family, Opera, Safari...
    this.xhr = new XMLHttpRequest();
  }
  catch(e) { // MS will always be a catch ;)    
    try {
      this.xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e) {
      this.xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }

  this.fetch = function(target_id)
  {
    // if request is completed
    if (this.xhr.readyState == 4) {
      // if status == 200 return file data
      if (this.xhr.status == 200) {
	// get data
//  if(!document.getElementById('nx_formfields')){
//	  document.getElementById('p'+target_id).innerHTML = this.xhr.responseText;
//  	document.getElementById('p'+target_id).height = matchHeight();
//  }
//  else{
//    alert(target_id);
      if(document.getElementById('nx_formfields')){
        document.getElementById('nx_formfields').innerHTML = this.xhr.responseText;
      }
//  }
      }
      else {
	// Handle this how? 
	alert('Failed to get response :'+ this.xhr.statusText);
      }
    }
  }
  // Assign state handler.
  this.xhr.onreadystatechange=function(){this.fetch};
  // Open socket connection.
  this.xhr.open('GET', this.url, false);
  // Send request.
  this.xhr.send(null);
}

function fix_params(pid, parameter_id){
  var tmp_str = document.getElementById('cart_pchase_params_'+pid+'_'+parameter_id).value;
  tmp_str = tmp_str.replace('}','');
  tmp_str = tmp_str.replace('{','');
  document.getElementById('cart_pchase_params_'+pid+'_'+parameter_id).value = tmp_str;
}

function vat(inc_vat, ex_vat)
{
  var vat = (inc_vat - ex_vat);
  document.write((vat.toFixed(2)).replace('.',','));
}

/// Compute the VAT percent from the prices given.
function vat_percent(inc_vat, ex_vat)
{
  var vp = Math.round(100*(inc_vat - ex_vat)/ex_vat);
  document.write(vp); 
}

// Right trim string
function strrtrim(str) 
{
      return str.replace(' ','');
//  return str.replace(/\s+$/,'');
}

function truncate(str, len)
{
  var str_tr = strrtrim(str);
  var full_len = str_tr.length;
  var r_pad = "";
  if (full_len > len) {
    r_pad = "...";
  }
  document.write(str_tr.substr(0, len) + r_pad);
}

function dot2comma(str)
{
  var rstr = str.replace(/\./, ",");
  document.write(rstr);
}

function avoid_empty(test, content)
{
  if (test != '') {
    document.write(content);
  }
}

function std_price(sale_price)
{
  document.write( ((sale_price / 0.85).toFixed(2)).replace('.',',') );
}

function plural(number, singular, plural)
{
  if (number > 1) {
    document.write(plural);
  }
  else {
    document.write(singular);
  }
}

function check_postalnumber(oObj) {
  oObj.style.backgroundColor="#FFFFFF";
  var isnumerical = new Number(oObj.value);
/*
  if (new String(isnumerical)=="NaN"){
    oObj.style.backgroundColor="#FF0000";
    alert('Du kan bare benytte deg av tall i felt merket med rÃ¸dt');
    oObj.focus();
    return false;
  }
  if (oObj.value.length>5){
    oObj.style.backgroundColor="#FF0000";
    alert('Du har fylt inn for mange siffer i feltet merket med rÃ¸dt');
    oObj.focus();
    return false;
  }
*/
  if (oObj.value.length<4){
    oObj.style.backgroundColor="#FF0000";
    alert('Du har fylt inn for få siffer i feltet merket med rødt');
    oObj.focus();
    return false;
  }
  return true;
}

function check_email(oObj)
{
  var str=oObj.value
  var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
  if (filter.test(str))
    return true;
  else{
    oObj.style.backgroundColor="#FF0000";
    alert('Vennligst fyll inn gyldig E-post i feltet merket med rødt');
    oObj.focus();
    return false;
  }
}

function check_new_customer()
{
  var firstname = document.getElementById("new_customer_firstname");
  var lastname = document.getElementById("new_customer_lastname");
  var email = document.getElementById("new_customer_email");
  
  firstname.style.backgroundColor="#FFFFFF";
  lastname.style.backgroundColor="#FFFFFF";
  document.getElementById("new_customer_email").style.backgroundColor="#FFFFFF";
  if (firstname.value==''){
    firstname.style.backgroundColor="#FF0000";
    alert("Vennligst fyll inn fornavn i felt merket med rødt");
    firstname.focus();
    return false;
  }
  else {
    firstname.value = first_char_to_upper(firstname.value);
  }
  if (lastname.value==''){
    lastname.style.backgroundColor="#FF0000";
    alert("Vennligst fyll inn etternavn i felt merket med rødt");
    lastname.focus();
    return false;
  }
  else {
    lastname.value = first_char_to_upper(lastname.value);
  }
  if (!check_email(email)){
    return false;
  }
  return true;
}
// function to convert the first character of a string to uppercase
function first_char_to_upper(string){
  var nameParts = string.split(" ");
  var strLength = '';
  var firstchar = '';
  var restOfChars = '';
  var returnString = '';
  var delimiter = '';
  for (var loop=0; loop < nameParts.length; loop++) {
    strLength = nameParts[loop].length;
    firstchar = nameParts[loop].substring(0, 1);
    restOfChars = nameParts[loop].substring(1, strLength);
    firstchar = firstchar.toUpperCase();
    if (returnString!=''){
      delimiter = ' ';
    }
    returnString = returnString + ' ' + firstchar + restOfChars;
  }
  strLength = returnString.length;
  if (returnString.substring(0,1)==' '){
    returnString = returnString.substring(1,strLength);
  }
  return returnString;
}

//generic check of certain formfields
function check_form(frm)
{
  if (frm == 1){
    var checkNotEmpty = ' paynet_ccnr,paynet_ccex,paynet_ccode';
    var checkPostalNumber = '';
    var checkEmail = '';
    var firstCharacterToUpper = '';
  }
  else if(frm == 2){
    var checkNotEmpty = document.getElementById('addto_jsCheck').value;
    var checkPostalNumber = '';
    var checkEmail = '';
    var firstCharacterToUpper = '';
  }else{
    var checkNotEmpty = ' customer_company,customer_firstname,customer_lastname,customer_email,customer_address1,customer_postal_code,customer_post_location';
    var checkPostalNumber = ' customer_postal_code';
    var checkEmail = ' customer_email';
    var firstCharacterToUpper = ' customer_company,customer_firstname,customer_lastname';    
  }
  //start of the generic solution

  if(frm==2){
    checkNotEmpty = strrtrim(checkNotEmpty);
    var member_ids = checkNotEmpty.split(",");
  }
  for (var form_loop=0; form_loop<document.forms.length; form_loop++) {
    for (var elems=0; elems<document.forms[form_loop].length;elems++) {
    var oForm = document.forms[form_loop];
    // replacing singlequotes
    if(document.forms[form_loop].elements[elems].value.indexOf("'")>-1){
        document.forms[form_loop].elements[elems].value.replace("'","&rsquo;")
    }
      if (document.forms[form_loop].elements[elems].name != "") {
        var current_object = document.forms[form_loop].elements[elems];
        current_object.style.backgroundColor="";
        if(firstCharacterToUpper!='') {
          //check what fields need to have their first character converted to uppercase and pass them on to the appropriate function
          if (firstCharacterToUpper.indexOf(current_object.name) !='-1' && firstCharacterToUpper.indexOf(current_object.name) !=''){
            if (current_object.value!='') {
              current_object.value = first_char_to_upper(current_object.value);
            }
          }
        }
        //check required fields and make sure they're not empty
//        alert(current_object.id);
        if(checkNotEmpty.indexOf(current_object.name) !='-1' && checkNotEmpty.indexOf(current_object.name) !=''){
          if(current_object.value==''){
            //current_object.style.backgroundColor="#FF0000";
            alert("Vennligst fyll inn alle påkrevede felt");
            current_object.focus();
            if(document.getElementById('fullfor')){
                if(document.getElementById('fullfor').disabled == true){
                    document.getElementById('fullfor').disabled = false;
                }
            }
            return false;
          }
        }
        if (checkPostalNumber!=''){
          //check postal numbers and make sure they contain numbers only and that their length is correct
          if (checkPostalNumber.indexOf(current_object.name) !='-1' && checkNotEmpty.indexOf(current_object.name) !=''){
            var checkedPostalNumber = check_postalnumber(current_object);
            if (checkedPostalNumber==false){
              return false;
            }
          }
        }

      }
    }
  }
  if(frm==2 || frm==1){
    oForm.submit();
    return true;
  }
  if(document.getElementById('fullfor')){
    document.getElementById('fullfor').disabled = true;
  }
  return true;
}

function disable_expired(pidd,qty,status)
{
  if(qty<1){
    if(status=='999' && document.getElementById('kjop_'+pidd)){
      document.getElementById('pl_'+pidd).disabled=true;
      document.getElementById('pl_'+pidd).style.display='none';
      document.getElementById('kjop_'+pidd).disabled=true;
      document.getElementById('kjop_'+pidd).style.display='none';
      document.write('&nbsp;<b style="color:#ff0000;font-size:18px;">Utsolgt</b>');
    }
  }
}

function check_add2cart(pidd,qty,status)
{
  var chkVal = document.getElementById('pchase_quantity'+pidd).value;
//  alert(new Number(chkVal));
  var tmp = new Number(chkVal);
  if (new String(tmp)=="NaN"){
    alert('Ant. felt kan kun inneholde numeriske verdier');
    return false;
  }
  if(chkVal=='' || tmp=='NaN'){
    alert('Du må fylle inn antall');
    return false;
  }
  if (status=='999') {
    if (new Number(chkVal)>new Number(qty)) {
      alert("utsolgt");
//      document.getElementById('pchase_quantity'+pidd).value = qty;
      return false;
    }
  }
  return true;
}

function check_bestillingsvare(status)
{
  if (status=='998') {
    return 'Bestillingsvare<br>';
  }
  else {
    return '';
  }
}

function copy_element(id)
{
  var company_id = "company_" + id;      
  document.getElementById("company_"+ id).value = document.getElementById("customer_company").value;
  
  document.getElementById("firstname_"+ id).value = document.getElementById("customer_firstname").value;
  document.getElementById("lastname_"+ id).value = document.getElementById("customer_lastname").value;
  document.getElementById("email_"+ id).value = document.getElementById("customer_email").value;
  //document.getElementById("_"+ id).value = document.getElementById("customer_").value;
}

function switch_iface()
{
  if(check_form('0')){
    document.getElementById("ei_td").style.display = 'block';
    document.getElementById("ci_td").style.display = 'none';
    document.getElementById('p2').style.display='none';
    document.getElementById('p3').style.display='block';
    createCookie('jb_state','on',1);
  }else{
    document.getElementById("ei_td").style.display = 'none';
    document.getElementById("ci_td").style.display = 'block';
  }
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function check_form2(frm)
{
  if (check_form(frm, false)) {
    switch_iface();
    return true;
  }
  return false;
}
function eraseCookie(name){
  createCookie(name,"off",-1);
}
function LoadImage(imageId,imageFile){
  document.getElementById('anim3').style.display='block';
  document.getElementById('anim4').style.display='block';
  document.getElementById('anim3').src = '/tmpl/javazone/images/jz08_shuttle.gif';
  document.getElementById('anim4').src = '/tmpl/javazone/images/jz08_sparks.gif';
}
function LoadBlink(){
  delay2 = Math.floor(Math.random()*15000);
  if(delay2<5000){
    delay2=5000;
  }
  setTimeout("document.getElementById('anim5').style.display='block';",delay2);
  setTimeout("document.getElementById('anim5').src = '/tmpl/javazone/images/jz08_glow.gif';",delay2);
}

// function used for displaying header animations on a random sequence
function delay_animation(){
  delay = Math.floor(Math.random()*35000);
  if(delay<15000){
      delay=15000;
  }
  LoadImage();
  LoadBlink();
  setTimeout("delay_animation()",delay);
}
function swap_button(img, img_name){
  // exeptions, mainly multiple dynamic buttons that need unique id's
/*
  if(img_name.substring(0,6)=='kjop_6'){
    var tmp_name = 'kjop';
  }
  else{
    if(img_name.substring(0,12)=='handle_mer_6'){
      var tmp_name = 'handle_mer';
    }
    else{
      if(img_name.substring(0,8)=='videre_6'){
        var tmp_name = 'videre';
      }
      else{
        if(img_name.substring(0,7)=='kopier_'){
          var tmp_name = 'kopier';
        }
        else{
          var tmp_name = img_name;
        }
      }
    }
  }
  */
  
 // var oImg = document.getElementById(img_name);
//    alert(img_name+'<-->'+tmp_name);
  if(img.style.background.indexOf('hover.gif')>0){
    img.style.background = 'url(/tmpl/javazone/images/'+img_name+'.gif)';
  }
  else{
    img.style.background = 'url(/tmpl/javazone/images/'+img_name+'_hover.gif)';
  }
}

// preloading buttons
var inames = new Array('bestill','bestill_hover','kopier','kopier_hover','fullfor','fullfor_hover','handle_mer','handle_mer_hover','kjop','kjop_hover','logg_inn','logg_inn_hover','registrer','registrer_hover','bestill2','bestill2_hover','videre','videre_hover','lukk','lukk_hover','send','send_hover','faktura','faktura_hover');
// Preload
if (document.images) {
  var iImage = new Array();
  for(var i=0; i< inames.length; i++) {
    iImage[i] = new Image();
    iImage[i].src = "/tmpl/javazone/images/"+inames[i]+".gif";
  }
}


/***********************************************
* Dynamic Countdown script- Â© Dynamic Drive (http://www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/

function cdtime(container, targetdate){
if (!document.getElementById || !document.getElementById(container)) return
this.container=document.getElementById(container)
this.currentTime=new Date()
this.targetdate=new Date(targetdate)
this.timesup=false
this.updateTime()
}

cdtime.prototype.updateTime=function(){
var thisobj=this
this.currentTime.setSeconds(this.currentTime.getSeconds()+1)
setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second
}

cdtime.prototype.displaycountdown=function(baseunit, functionref){
this.baseunit=baseunit
this.formatresults=functionref
this.showresults()
}

cdtime.prototype.showresults=function(){
var thisobj=this


var timediff=(this.targetdate-this.currentTime)/1000 //difference btw target date and current date, in seconds
if (timediff<0){ //if time is up
this.timesup=true
this.container.innerHTML=this.formatresults()
return
}
var oneMinute=60 //minute unit in seconds
var oneHour=60*60 //hour unit in seconds
var oneDay=60*60*24 //day unit in seconds
var dayfield=Math.floor(timediff/oneDay)
var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
hourfield=dayfield*24+hourfield
dayfield="n/a"
}
else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
minutefield=dayfield*24*60+hourfield*60+minutefield
dayfield=hourfield="n/a"
}
else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level
var secondfield=timediff
dayfield=hourfield=minutefield="n/a"
}
this.container.innerHTML=this.formatresults(dayfield, hourfield, minutefield, secondfield)
setTimeout(function(){thisobj.showresults()}, 1000) //update results every second
}

/////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////

//Create your own custom format function to pass into cdtime.displaycountdown()
//Use arguments[0] to access "Days" left
//Use arguments[1] to access "Hours" left
//Use arguments[2] to access "Minutes" left
//Use arguments[3] to access "Seconds" left

//The values of these arguments may change depending on the "baseunit" parameter of cdtime.displaycountdown()
//For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
//For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc


function formatresults(){
if (this.timesup==false){//if target date/time not yet met
var displaystring='<div class="tt">'+leading_zero(arguments[0])+'D </div><div class="tt">'+leading_zero(arguments[1])+'T </div><div class="tt">'+leading_zero(arguments[2])+'M </div><div class="tt">'+leading_zero(arguments[3])+'S </div>'
}
else{ //else if target date/time met
var displaystring='<div class="tt">00D </div><div class="tt">00T </div><div class="tt">00M </div><div class="tt">00S </div>'
}
return displaystring
}
// added function to add leading zero to 1 character length numbers
function leading_zero(timevar){
  // casting as string in order to measure length
  var tmp = ''+timevar;
//  alert(timevar.length);
  if(tmp.length==1){
    return '0'+timevar;
  }
  else{
    return timevar;
  }
}

function paymentredirect(){
  var url = '';
  if($$('#last_cart div.cart_ln_sessionid')){
    var sessionids = $$('#last_cart div.cart_ln_sessionid');
    url = url + 'sessionid='+sessionids[0].innerHTML;
  }
  if($$('#last_cart div.cart_lnid')){
    var orderids = $$('#last_cart div.cart_lnid');
    url = url + '&orderid='+orderids[0].innerHTML;
  }
  if($$('#last_cart div.sum_num')){
    var sum = $$('#last_cart div.sum_num');
    url = url + '&amount='+sum[0].innerHTML;
  }
  url = '/default/netaxept-soap/transSetup.php?'+url;
//  url = url.replace('?&', '');
  //document.getElementById('paymentlink').href = url;
//  alert(url);
  document.location.href = url;
}

function set_payment_method(rutton){
  if(rutton.id=='amex'){
    rutton.checked=true;
    location.href='/index.cgi?pay_id=23';
  }
  else{
    rutton.checked=true;
    location.href='/index.cgi?pay_id=7';
  }
  return true;
}

function set_cookie(memno){
  return true;
}

function clear_field(oObj_id){
//    oObj_id.focus();
  if(oObj_id.value.substring(0, 13) == 'Medlemsnummer'){
    oObj_id.value='';
    return false;
  }
  if(oObj_id.value=='javaBin medlemsnummer'){
    oObj_id.value='';
    return false;
  }
  if(oObj_id.value=='Ugyldig medlemsnummer'){
    oObj_id.value='';
    return false;
  }
  if(oObj_id.value=='Medlemsnummer finnes ikke'){
    oObj_id.value='';
    return false;
  }
  return false;
}

function htreturn(text){
  var parts = text.split('-');
  var obj_id = parts[0];
  var output = parts[1];
  var cur_obj = document.getElementById(obj_id);
//  alert(text);
  cur_obj.style.border = '1px solid #244556';
  if(output==''){
    cur_obj.style.border = '1px solid #ff0000';
  }
  cur_obj.value = output;
  if(isNaN(output)){
    alert(output);
    cur_obj.focus();
  }
}

function htfail(text){
//  alert('Valideringsfeil');
//  alert(text);
}

// Ajax routine to check member numbers for validity
window.addEvent('load', function() { 
  if($('info')){
    var tmp_elem = $('info').getElements('input[name^=jb_member_number]').addEvents({
      'change': function(){
        var req = new Request({method: 'post', url: 'http://shop.java.no/members/chk_member_number.php',onSuccess:htreturn,onFailure:htfail});
        req.send('id='+this.get('value')+'&domid='+this.get('id'));
      }
    });
  }
});