//--------------------------------------------------------------------------
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 readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

//--------------------------------------------------------------------------
function getElementByClass(node, classname) {
  var classElements=new Array();
	var els = node.getElementsByTagName("*");
	var elsLen = els.length;
	var j = 0;
	for (i = 0; i < elsLen; i++) {
		if (els[i].className==classname) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

//--------------------------------------------------------------------------
function changeUnits(units_new) {
  document.getElementById("switch_"+units_current).className='active';
  document.getElementById("switch_"+units_new).className='passive';
  var c1 = getElementByClass(document,"unit_metric");
  var c2 = getElementByClass(document,"unit_uk");
  var c3 = getElementByClass(document,"unit_us");
  for (i=0; i < c1.length; i++) {
    if (units_new=="metric") {
      c1[i].style.display = 'inline';
    }
    else {
      c1[i].style.display = 'none';
    }
  }
  for (i=0; i < c2.length; i++) {
    if (units_new=="uk") {
      c2[i].style.display = 'inline';
    }
    else {
      c2[i].style.display = 'none';
    }
  }
  for (i=0; i < c3.length; i++) {
    if (units_new=="us") {
      c3[i].style.display = 'inline';
    }
    else {
      c3[i].style.display = 'none';
    }
  }
  units_current=units_new;
  createCookie('u',units_current,cookie_expire);
  return false;
}

/*
// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling) {
  bubbling = bubbling || false;
  if(window.addEventListener) { // Standard
    element.addEventListener(type, expression, bubbling);
    return true;
  }
  else if(window.attachEvent) { // IE
    element.attachEvent('on' + type, expression);
    return true;
  }
  else return false;
}
*/
/*
var fleet_info_str;
var element_fleetinfo = document.getElementById('fleet_info'); 
addListener(element_fleetinfo, 'click', fleetInfoModBridge);
function fleetInfoModBridge (e) {
  this.innerHTML = fleet_info_str;
}*/

//--------------------------------------------------------------------------
function setUnits() {
  changeUnits(units_current);
  var c = getElementByClass(document,"nodisplay-js");
  for (i=0; i < c.length; i++) {
    c[i].style.display = 'none';
  }
  return false;
}

//--------------------------------------------------------------------------
function inArray(arr,value) {
	var i;
	for (i=0; i < arr.length; i++) {
		if (arr[i] === value) {
			return true;
		}
	}
	return false;
};

//--------------------------------------------------------------------------
function listUpdate(list_str,action,item_id) {
// general function for updating coma separated list of IDs
  var list_ids=list_str.split(',');
  switch (action) {
    case 'add': {
      if (list_str=='') {
        list_str_new = item_id;
      }
      else {
        if (inArray(list_ids,item_id)) {
          list_str_new = list_str;
        }
        else {
          list_str_new = list_str + ',' + item_id;
        }
      }
    }
    break;
    case 'remove': {
      var list_ids_new = new Array();
      for ($i=0; $i<list_ids.length; $i++) {
        if (list_ids[$i]!=item_id) {
          list_ids_new.push(list_ids[$i]);
        }
      }
      list_str_new = list_ids_new.join(',');
    }
  }
  return list_str_new; 
}

//--------------------------------------------------------------------------
function fleetInfoUpdate(fleet_info_str) {
  var elem1=document.getElementById('fleet_info');
  elem1.innerHTML = fleet_info_str;
}

function fleetMod(action,car_id) {
  var fleet_info_str;
  var fleet_switch_str;
  var fleet_str=readCookie('fleet');
  var fleet_count;
  if ((fleet_str==null) || (fleet_str=='')) {
    fleet_str='';
    var fleet_ids = new Array();
    fleet_count=0;
  }
  else {
    var fleet_ids=fleet_str.split(',');
    fleet_count=fleet_ids.length;
  }
  switch (action) {
    case 'add': {
      if (fleet_str=='') {
        fleet_str = car_id;
      }
      else {
        fleet_str = fleet_str + ',' + car_id;
      }
      fleet_count++;
      fleet_switch_str = '<a href="#" class="fleet_remove" title="Remove this car from your fleet" onclick="return fleetMod(\'remove\',\''+car_id+'\');">'+path_img_fleet_remove+'</a>';
    }
    break;
    case 'remove': {
      var fleet_ids_new = new Array();
      for ($i=0; $i<fleet_count; $i++) {
        if (fleet_ids[$i]!=car_id) {
          fleet_ids_new.push(fleet_ids[$i]);
        }
      }
      fleet_str = fleet_ids_new.join(',');
      fleet_count--;
      fleet_switch_str = '<a href="#" class="fleet_add" title="Add this car to your fleet" onclick="return fleetMod(\'add\',\''+car_id+'\');">'+path_img_fleet_add+'</a>';
      var elem1 = document.getElementById("tr_"+car_id);
      if (elem1) { elem1.style.display='none'; }
    }
  }
  if (fleet_count==0) {
    fleet_info_str = 'No cars selected';
  }
  else {
    if (fleet_count==1) {
      fleet_info_str = '1 car selected';
    }
    else {
      fleet_info_str = fleet_count + ' cars selected';
    }
  }
  var elem2=document.getElementById("fleet_"+car_id);
  //alert(elem2+'\n'+car_id);
  if (elem2) {
    elem2.innerHTML = fleet_switch_str;
  }
  // IE workaround - we have to wait until onload in order to append or change element content (bug in IE implementation)
  // Timeout is zero so it doesn't actually wait. None of the functions initialized using setTimeout start until the dom is complete.
  //setTimeout("document.getElementById('fleet_info').innerHTML = fleet_info_str",0);
  createCookie('fleet',fleet_str,cookie_expire);
  setTimeout("fleetInfoUpdate('"+fleet_info_str+"')",0);
  return false;
}

//--------------------------------------------------------------------------
function updateIds(car_id) {
  var elem1=document.getElementById("comp_id");
  compare_str=elem1.value;
  var elem2=document.getElementById("comp_"+car_id);
  if (elem2.checked) {
    action='add';
    var list_ids=compare_str.split(',');
    if (list_ids.length>=cars_comparison_max_cols) {
      alert ('Maximum of '+cars_comparison_max_cols+' cars allowed for comparison.'+"\n"+'Please remove some other car from your selection before selecting this one.');
      elem2.checked=false;
      return false;
    }
 }
  else {
    action='remove';
  }
  var compare_str_new=listUpdate(compare_str,action,car_id);
  elem1.value=compare_str_new;
  return false;
}
