// JavaScript Document
//set todays date
function str_replace ( search, replace, subject ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
 
    var result = "";
    var prev_i = 0;
    for (i = subject.indexOf(search); i > -1; i = subject.indexOf(search, i)) {
        result += subject.substring(prev_i, i);
        result += replace;
        i += search.length;
        prev_i = i;
    }
 
    return result + subject.substring(prev_i, subject.length);
}

Now = new Date();
NowDay = Now.getDate();
NowMonth = Now.getMonth();
NowYear = Now.getYear();
if (NowYear < 2000) NowYear += 1900; //for Netscape

//function for returning how many days there are in a month including leap years
function DaysInMonth(WhichMonth, WhichYear)
{
  var DaysInMonth = 31;
  if (WhichMonth == "April" || WhichMonth == "June" || WhichMonth == "September" || WhichMonth == "November") DaysInMonth = 30;
  if (WhichMonth == "February" && (WhichYear/4) != Math.floor(WhichYear/4))	DaysInMonth = 28;
  if (WhichMonth == "February" && (WhichYear/4) == Math.floor(WhichYear/4))	DaysInMonth = 29;
  return DaysInMonth;
}

//function to change the available days in a months
function changeOptionDays(Which) {
  DaysObject = eval("document.forms[0].d" + Which);
  MonthObject = eval("document.forms[0].m" + Which);
  YearObject = eval("document.forms[0].y" + Which);

  Month = MonthObject[MonthObject.selectedIndex].text;
  Year = YearObject[YearObject.selectedIndex].text;

  DaysForThisSelection = DaysInMonth(Month, Year);
  CurrentDaysInSelection = DaysObject.length;
  if (CurrentDaysInSelection > DaysForThisSelection)
  {
    for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
    {
      DaysObject.options[DaysObject.options.length - 1] = null
    }
  }
  if (DaysForThisSelection > CurrentDaysInSelection)
  {
    for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
    {
      NewOption = new Option(DaysObject.options.length + 1);
      addOption(DaysObject,NewOption)
    }
  }
    if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}

// Add a new option to a select element
function addOption(selectElement,newOption) {
  // First try the DOM2 method ...
  try {
    selectElement.add(newOption,null);
  }
  // ... And if that doesn't work use the IE-only method
  catch (e) {
    selectElement.add(newOption,selectElement.length);
  }
}

//function to set options to today
function SetToToday(Which) {
  DaysObject = eval("document.forms[0].d" + Which);
  MonthObject = eval("document.forms[0].m" + Which);
  YearObject = eval("document.forms[0].y" + Which);

  YearObject[0].selected = true;
  MonthObject[NowMonth].selected = true;

  changeOptionDays(Which);

  DaysObject[NowDay].selected = true;
}

function validate() {
  // dates on page?
  if (getObject('startdate')) {
    datesok = checkDates();
    if (datesok)
      return true;
    else
      return false;
  }
  
  // required fields on page?
  if (getObject('firstname')) {
    var fieldsOK = validateRequiredFields();
    var email = getObject('email');
    var emailOK = checkEmail(email.value);
    var dobOK;
    for (i = 1; i <= passengers; i++) {
	    dobOK = dobOK && checkDOB(i);
    }
    
    return fieldsOK && emailOK && dobOK;
  }
}

function checkDOB(passenger) {
  passenger = passenger == 1 ? "" : passenger;
  
  dob = new Date();
  dobD = eval("document.forms[0].bd" + passenger + ".value");
  dobM = eval("document.forms[0].bm" + passenger + ".value");
  dobY = eval("document.forms[0].by" + passenger + ".value");
  
  dob.setFullYear(dobD, dobM, dobY);
  testyear = datefrom.getFullYear();
  
  if (testyearfrom != dobY || dob.getMonth() != dobM || dob.getDate() != dobD) {
    alert('The date of birth you entered is invalid');
    return false;
  }
  else { return true; }
}

function checkDates() {
  var retval;
  today = new Date();
  
  var datefrom = new Date();
  var startdate = getObject('startdate');
  df = startdate.value.substring(0,2);
  mf = startdate.value.substring(3,5)-1;
  yf = startdate.value.substring(6,10);
  
  var dateto = new Date();
  var enddate = getObject('enddate');
  dt = enddate.value.substring(0,2);
  mt = enddate.value.substring(3,5)-1;
  yt = enddate.value.substring(6,10);
  
  datefrom.setFullYear(yf, mf, df);
  if (dt == '') {
    dt = df;
    mt = mf;
    yt = parseInt(yf)+1;
  }
  dateto.setFullYear(yt, mt, dt);

  testyearfrom = datefrom.getFullYear();
  testyearto = dateto.getFullYear();

  if (testyearfrom != yf || datefrom.getMonth() != mf || datefrom.getDate() != df) {
    alert('The start date you entered is invalid');
	  datesError(true, false);
    return false;
  }
  if (testyearto != yt || dateto.getMonth() != mt || dateto.getDate() != dt) {
    alert('The end date you entered is invalid');
	  datesError(false, true);
    return false;
  }
  if (datefrom > dateto) {
    alert("Your end date needs to be later than your start date");
    datesError(true, true);
	  return false;
  }
  else
    return true;
}

function checkEmail(email) {
  if ((email==null)||(email=="")){
    emailError(0);
    return false;
  }
  if (email != document.forms[0].emailconf.value){
    emailError(1);
    return false;
  }

  var at="@";
  var dot=".";
  var lat=email.indexOf(at);
  var lstr=email.length;
  var ldot=email.indexOf(dot);
  if (email.indexOf(at)==-1){
    emailError();
	return false;
  }

  if (email.indexOf(at)==-1 || email.indexOf(at)==0 || email.indexOf(at)==lstr){
	emailError();
	return false;
  }

  if (email.indexOf(dot)==-1 || email.indexOf(dot)==0 || email.indexOf(dot)==lstr){
	emailError();
	return false;
  }

  if (email.indexOf(at,(lat+1))!=-1){
	emailError();
	return false;
  }
  
  if (email.substring(lat-1,lat)==dot || email.substring(lat+1,lat+2)==dot){
	emailError();
	return false;
  }

  if (email.indexOf(dot,(lat+2))==-1){
	emailError();
	return false;
  }
		
  if (email.indexOf(" ")!=-1){
	emailError();
	return false;
  }

  return true;
}

function emailError(standard) {
  switch (standard) {
  case 0:
    alert("Please enter an email address");
    break;
  case 1:
    alert("The email addresses you entered did not match. Please check and try again.");
    break;
  default: alert("There appears to be an error in your email address. Please check and try again.");
  }
}

function datesError(from, to) {
  document.getElementById('departureLabel').className = "normalLabel";
  document.getElementById('returnLabel').className = "normalLabel";
  
  if (from) {
    document.getElementById('departureLabel').className = "checkLabel";
  }
  if (to) {
    document.getElementById('returnLabel').className = "checkLabel";
  }
}

function ChangeOptionDaysLoad() {
	changeOptionDays('f');
	changeOptionDays('t');
}

function select_image(it, id) {
   id = id + "-img";
   id = getObject(id)
   val = it.options[it.selectedIndex].value;
   if (val == "Yes")
     id.src = "images/tick.gif";
   else
     id.src = "images/cross.gif";
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function decision(message, url){
  if(confirm(message)) location.href = url;
}

function getObject( obj ) {
  if ( document.getElementById ) {
    obj = document.getElementById( obj );
  } else if ( document.all ) {
    obj = document.all.item( obj );
  } else {
    obj = null;
  }
  return obj;
}

function selectQuote(cell) {
	for(i=1; i<5; i++) {
		currentCell = getObject('quote' + i);
		currentCell.style.backgroundColor = "";
	}
	currentCell = getObject('quote' + cell);
	currentCell.style.backgroundColor = "#dddef8";
	
	quoteLevel = getObject('quoteLevel');
	quoteLevel.value = cell;
	
	var quoteDetails = getObject('quoteDetails');
	clearObject(quoteDetails);
	quoteDetails.appendChild(document.createTextNode("You have selected " + quotesArray[cell-1]));
	
	//var restofpage = getObject('showhide');
	//restofpage.style.display = "inherit";
}

function clearObject(obj) {
	// so long as obj has children, remove them
	while(obj.firstChild) obj.removeChild(obj.firstChild);
}

// change the rest of the quote options based on chosen cover level
function chosenCoverLevel(cover) {
  var costEnd = getObject('costEnd');
  var coverLevel = getObject('coverLevel');
  var coverType = getObject('coverType');
  var buttons = new Array(getObject('selectSingle1'), getObject('selectSingle2'), getObject('selectSingle3'), getObject('selectAnnual1'), getObject('selectAnnual2'), getObject('selectAnnual3'));
  var classes = new Array('coverdetails-s1', 'coverdetails-s2', 'coverdetails-s3', 'coverdetails-a1', 'coverdetails-a2', 'coverdetails-a3');
  var selections = new Array('s1', 's2', 's3', 'a1', 'a2', 'a3');
  
  var gc = getObject('gc');
  var ws = getObject('ws');
  var wd = getObject('wd');
  var bs = getObject('bs');
  var ew = getObject('ew');
  var x6 = getObject('x6');
  var x9 = getObject('x9');
  var c2 = getObject('c2');
  var c3 = getObject('c3');
  var nd = getObject('nd');
  
  var gc2 = getObject("gc-" + selections[cover] + "");
  var ws2 = getObject("ws-" + selections[cover] + "");
  var wd2 = getObject("wd-" + selections[cover] + "");
  var bs2 = getObject("bs-" + selections[cover] + "");
  var ew2 = getObject("ew-" + selections[cover] + "");
  var x62 = getObject("x6-" + selections[cover] + "");
  var x92 = getObject("x9-" + selections[cover] + "");
  var c22 = getObject("c2-" + selections[cover] + "");
  var c32 = getObject("c3-" + selections[cover] + "");
  var nd2 = getObject("nd-" + selections[cover] + "");
  
  gc.value = gc2.value;
  ws.value = ws2.value;
  wd.value = wd2.value;
  bs.value = bs2.value;
  ew.value = ew2.value;
  x6.value = x62.value;
  x9.value = x92.value;
  c2.value = c22.value;
  c3.value = c32.value;
  nd.value = nd2.value;
  
  var startat = annualOnly ? 2 : 0;
  for (i = startat; i < 6; i++) {
    if (i == cover) {
      buttons[i].className = 'quoteAmount2';
    }
    else {
      buttons[i].className = 'quoteAmount2';
    }
  }
  costEnd.value = buttons[cover].innerHTML;
  if (cover > 2) {
  	coverLevel.value = cover - 2;
  } else {
    coverLevel.value = cover + 1;
  }
  coverType.value = cover > 2 ? 'annual' : 'single';
}

function chosenExtra(cover, extra, idname2, idname) {
  var buttons = new Array(getObject('selectSingle1'), getObject('selectSingle2'), getObject('selectSingle3'), getObject('selectAnnual1'), getObject('selectAnnual2'), getObject('selectAnnual3'));
  var quotes = new Array(getObject('quoteSingle1'), getObject('quoteSingle2'), getObject('quoteSingle3'), getObject('quoteAnnual1'), getObject('quoteAnnual2'), getObject('quoteAnnual3'));
  var baseAmount = new Array(singleRates[0],singleRates[1],singleRates[2],annualRates[0],annualRates[1],annualRates[2]);
  baseAmount = baseAmount[cover];
  var gc = getObject('gc');
  var ws = getObject('ws');
  var wd = getObject('wd');
  var bs = getObject('bs');
  var ew = getObject('ew');
  var x6 = getObject('x6');
  var x9 = getObject('x9');
  var c2 = getObject('c2');
  var c3 = getObject('c3');
  var nd = getObject('nd');
  
  var extraAmount = 0;
  var extraTotal = 0;
  var quote = 0;
  var coverType = cover > 1 ? 'annual' : 'single';
  var idname = getObject(idname);
  var idname2 = getObject(idname2);
  if (idname2.value == 1) {
  	idname2.value = 0;
  } else {
  	idname2.value = 1;
  }
  
  // wintersports
  // add fixed price to base amount
  if (extra == 'ws' || wsChosen[cover] == 1) {
    // if clicked but already chosen then clear
    if (wsChosen[cover] == 1 && extra == 'ws') {
      wsChosen[cover] = 0;
      ws.value = 0;
      baseAmount += 0;
    }
    else {
      wsChosen[cover] = 1;
      ws.value = 1;
      extraAmount = wsRate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
    }
  }
  
  // Business
  // add fixed price to base amount
  if (extra == 'bs' || bsChosen[cover] == 1) {
    // if clicked but already chosen then clear
    if (bsChosen[cover] == 1 && extra == 'bs') {
      bsChosen[cover] = 0;
      bs.value = 0;
      baseAmount += 0;
    }
    else {
      bsChosen[cover] = 1;
      bs.value = 1;
      extraAmount = bsRate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
    }
  }   
  
  // golf cover
  // add fixed price to base amount
  if (extra == 'gc' || gcChosen[cover] == 1) {
    // if clicked but already chosen, then clear
    if (gcChosen[cover] == 1 && extra == 'gc') {
      gcChosen[cover] = 0;
      gc.value = 0;
      baseAmount += 0;
    }
    else {
      gcChosen[cover] = 1;
      gc.value = 1;
      extraAmount = gcRate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
    }
  }  
  
  // Wedding
  // add fixed price to base amount
  if (extra == 'wd' || wdChosen[cover] == 1) {
    // if clicked but already chosen then clear
    if (wdChosen[cover] == 1 && extra == 'wd') {
      wdChosen[cover] = 0;
      wd.value = 0;
      baseAmount += 0;
    }
    else {
      wdChosen[cover] = 1;
      wd.value = 1;
      extraAmount = wdRate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
    }
  }
  
  // excess waiver
  // add fixed price to base amount
  if (extra == 'ew' || ewChosen[cover] == 1) {
    // if clicked but already chosen, then clear
    if (ewChosen[cover] == 1 && extra == 'ew') {
      ewChosen[cover] = 0;
      ew.value = 0;
      baseAmount += 0;
    }
    else {
      ewChosen[cover] = 1;
      ew.value = 1;
      extraAmount = ewRate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
    }
  }
  
    // children independent
  // multiply new base amount by percentage
  if (extra == 'nd' || ndChosen[cover] == 1) {
    // if clicked but already chosen, then clear
    if (ndChosen[cover] == 1 && extra == 'nd') {
      ndChosen[cover] = 0;
      nd.value = 0;
      baseAmount += 0;
    }
    else {
	  ndChosen[cover] = 1;
	  nd.value = 1;
      extraAmount = ndRate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
      
    }
  } 
  
  // Activities 2
  // multiply new base amount by percentage
  if (extra == 'c2' || c2Chosen[cover] == 1) {
    // if clicked but already chosen, then clear
    if (c2Chosen[cover] == 1 && extra == 'c2') {
	  if (c3Chosen[cover] == 1) {
	    c2Chosen[cover] = 1;
      	c2.value = 0;
      	baseAmount += 0;
	  }
      c2Chosen[cover] = 0;
      c2.value = 0;
      baseAmount += 0;
    }
    else {
		if (c3Chosen[cover] == 1) {
		  c2Chosen[cover] = 1;
      	  c2.value = 0;
      	  baseAmount += 0;
	    } else {
		  c2Chosen[cover] = 1;
		  c2.value = 1;
          extraAmount = c2Rate[cover];
          baseAmount += calcExtra(extraAmount, baseAmount, coverType);
		}
    }
  }
  
  // Activities 3
  // multiply new base amount by percentage
  if (extra == 'c3' || c3Chosen[cover] == 1) {
    // if clicked but already chosen, then clear
    if (c3Chosen[cover] == 1 && extra == 'c3') {
	  if (c2Chosen[cover] == 1) {
	    c2Chosen[cover] = 1;
		c2.value = 1;
		extraAmount = c2Rate[cover];
        baseAmount += calcExtra(extraAmount, baseAmount, coverType);
	  }
	  idname.style.visibility = 'visible';
      c3Chosen[cover] = 0;
      c3.value = 0;
      baseAmount += 0;
    }
    else {
	  if (c2Chosen[cover] == 1 && extra == 'c3') {
	    c2Chosen[cover] = 1;
		c2.value = 1;
		extraAmount = c2Rate[cover];
        baseAmount -= calcExtra(extraAmount, baseAmount, coverType);
	  }
	  if (extra == 'c3') {
	  	idname.style.visibility = 'hidden';
	  }
	  c3Chosen[cover] = 1;
	  c3.value = 1;
      extraAmount = c3Rate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
    }
  }
  
  // extend trip to 60 days
  // multiply new base amount by percentage
  if (extra == 'x6' || x6Chosen[cover] == 1) {
    // if clicked but already chosen, then clear
    if (x6Chosen[cover] == 1 && extra == 'x6') {
	  if (x9Chosen[cover] == 1) {
	    x6Chosen[cover] = 1;
      	x6.value = 0;
      	baseAmount += 0;
	  }
      x6Chosen[cover] = 0;
      x6.value = 0;
      baseAmount += 0;
    }
    else {
	  if (x9Chosen[cover] == 1) {
		  x6Chosen[cover] = 1;
      	  x6.value = 0;
      	  baseAmount += 0;
	    } else {
		  x6Chosen[cover] = 1;
		  x6.value = 1;
		  extraAmount = x6Rate[cover];
          baseAmount += calcExtra(extraAmount, baseAmount, coverType);
		}
    }
  }
  
  // extend trip to 90 days
  // multiply new base amount by percentage
  if (extra == 'x9' || x9Chosen[cover] == 1) {
    // if clicked but already chosen, then clear
    if (x9Chosen[cover] == 1 && extra == 'x9') {
	  if (x6Chosen[cover] == 1) {
	    x6Chosen[cover] = 1;
		x6.value = 1;
		extraAmount = x6Rate[cover];
        baseAmount += calcExtra(extraAmount, baseAmount, coverType);
	  }
	  idname.style.visibility = 'visible';
      x9Chosen[cover] = 0;
      x9.value = 0;
      baseAmount += 0;
    }
    else {
	  if (x6Chosen[cover] == 1 && extra == 'x9') {
	    x6Chosen[cover] = 1;
		x6.value = 1;
		extraAmount = 'mul0.17';
        baseAmount -= calcExtra(extraAmount, baseAmount, coverType);
	  }
	  if (extra == 'x9') {
	  	idname.style.visibility = 'hidden';
	  }
	  x9Chosen[cover] = 1;
	  x9.value = 1;
      extraAmount = x9Rate[cover];
      baseAmount += calcExtra(extraAmount, baseAmount, coverType);
      
    }
  }
  quote = (baseAmount + extraTotal + 0.0049).toFixed(2);
  y = (quote + "").split(".");
  quotes[cover].innerHTML = '\u00a3<span class="large_price">' + y[0] + '</span>.' + y[1];
  buttons[cover].innerHTML = '\u00a3<span class="large_price">' + y[0] + '</span>.' + y[1];
  //chosenCoverLevel(cover);
}

function calcExtra(extra, baseAmount, coverType) {
  var operation = extra.substring(0,3);
  var amount = parseFloat(extra.substring(3));
  return calcExtraTotal(operation, amount, baseAmount, coverType);
}

// calculate the total for the extras
function calcExtraTotal(operation, amount, baseAmount, coverType) {
  var extraTotal = 0;
  if (operation == "add") {
      extraTotal += amount;
  }
  else if (operation == "mul") {
    extraTotal += amount * baseAmount;
  }
  return parseFloat(extraTotal);
}

function changeGroupType() {
  var childrenrow = getObject('childrenrow');
  var studentrow = getObject('studentrow');
  var grouptype = getObject('grouptype');
  
  switch(grouptype.value) {
  case 'ind' :
  	studentrow.style.visibility = 'hidden';
	studentrow.style.width = '150px';
	childrenrow.style.visibility = 'visible';
	childrenrow.style.width = '110px';
  	break;
  case 'cpl' :
  	studentrow.style.visibility = 'hidden';
	childrenrow.style.visibility = 'hidden';
	childrenrow.style.width = '110px';
	studentrow.style.width = '150px';
  	break;
  case 'fam' :
  	studentrow.style.visibility = 'visible';
	childrenrow.style.visibility = 'visible';
	studentrow.style.width = '150px';
	childrenrow.style.width = '110px';
  	break;
  case 'spf' :
  	studentrow.style.visibility = 'visible';
  	childrenrow.style.visibility = 'visible';
	studentrow.style.width = '150px';
	childrenrow.style.width = '110px';
  	break;
  }
}

function changeCoverType(dateendvalue, destinationselected) {
  var obj = getObject('covertype');
  var enddate = getObject('enddate');
  var enddaterow = getObject('enddaterow')
  var enddaterow2 = getObject('enddaterow2')
  var dest = getObject('dest');
  var adultsold = getObject('adultsold');
  var adultsold3 = getObject('adultsold3');
  switch(obj.value) {
  case 'annual' :
  	enddaterow.style.visibility = 'hidden';
	enddaterow2.style.visibility = 'hidden';
	adultsold3.style.visibility = 'hidden';
	adultsold.value = 0;
	adultsold3.style.width = '100px';
  	// add annual destinations
  	dest.options.length = 1;
  	for ( var i=0, len=annual_destinations.length; i<len; i=i+2 ){
		if (annual_destinations[i+1] == destinationselected){
    		var newOption = new Option(annual_destinations[i], annual_destinations[i+1], true);
		} else {
			var newOption = new Option(annual_destinations[i], annual_destinations[i+1], false);
		}
      addOption(dest, newOption);
    }
  	break;
  case 'single' :
  	/*enddate.value = dateendvalue;*/
    enddaterow.style.visibility = 'visible';
	enddaterow2.style.visibility = 'visible';
	adultsold3.style.visibility = 'visible';
	adultsold3.style.width = '100px';
    // add single trip destinations
    dest.options.length = 1;
  	for ( var i=0, len=destinations.length; i<len; i=i+2 ){
		if (destinations[i+1] == destinationselected){
    		var newOption = new Option(destinations[i], destinations[i+1], true);
		} else {
			var newOption = new Option(destinations[i], destinations[i+1], false);
		}
      addOption(dest, newOption);
    }
  	break;
  }
}

function populatePassengerSelect(obj, number) {
  obj.options.length = number;
  for (i = 0; i < number; i++) {
    obj.options[i] = new Option(i,i);
  }
  obj.selectedIndex = 0;
}

// preloads a given array of images
function preloadImages(image_url) {
  if (document.images) {
    preload_image_object = new Image();
  
     var i = 0;
     for(i=0; i<=image_url.length; i++) 
       preload_image_object.src = image_url[i];
  }
}

function validateRequiredFields () {
  var fieldList = requiredFields.split(",");
  var fieldNamesList = fieldNames.split(",");
  var badList = new Array();
  for(var i = 0; i < fieldList.length; i++) {
	var s = eval('document.forms[0].' + fieldList[i] + '.value');
	if(s.length < 1) { badList.push(fieldNamesList[i]); }
  }
  if(badList.length < 1) { return true; }
  var ess = new String();
  if(badList.length > 1) { ess = 's'; }
  var message = new String('\n\nThe following field' + ess + ' are required:\n');
  for(var i = 0; i < badList.length; i++) { message += '\n' + badList[i]; }
  alert(message);
  return false;
}

function enableFields() {
  var adults = getObject('adults');
  var children = getObject('children');
  
  adults.disabled = false;
  children.disabled = false;
}

// setStyleByClass: given an element type and a class selector,
// style property and value, apply the style.
// args:
//  t - type of tag to check for (e.g., SPAN)
//  c - class name
//  p - CSS property
//  v - value
var ie = (document.all) ? true : false;

function setStyleByClass(t,c,p,v){
	var elements;
	if(t == '*') {
		// '*' not supported by IE/Win 5.5 and below
		elements = (ie) ? document.all : document.getElementsByTagName('*');
	} else {
		elements = document.getElementsByTagName(t);
	}
	for(var i = 0; i < elements.length; i++){
		var node = elements.item(i);
		for(var j = 0; j < node.attributes.length; j++) {
			if(node.attributes.item(j).nodeName == 'class') {
				if(node.attributes.item(j).nodeValue == c) {
					eval('node.style.' + p + " = '" +v + "'");
				}
			}
		}
	}
}

// setStyleById: given an element id, style property and 
// value, apply the style.
// args:
//  i - element id
//  p - property
//  v - value
//
function setStyleById(i, p, v) {
	var n = document.getElementById(i);
	n.style[p] = v;
}

// copy details from address to billing details
function copyDetails(checkBox) {
  var firstname = getObject('firstname');
  var lastname = getObject('lastname');
  var addr1 = getObject('addr1');
  var addr2 = getObject('addr2');
  var town = getObject('town');
  var county = getObject('county');
  var postcode = getObject('postcode');
  
  var billing_firstname = getObject('billingfirstname');
  var billing_lastname = getObject('billinglastname');
  var billing_addr1 = getObject('billingaddr1');
  var billing_addr2 = getObject('billingaddr2');
  var billing_town = getObject('billingtown');
  var billing_county = getObject('billingcounty');
  var billing_postcode = getObject('billingpostcode');
  
  if (checkBox.checked) {
    billing_firstname.value = firstname.value;
    billing_lastname.value = lastname.value;
    billing_addr1.value = addr1.value;
    billing_addr2.value = addr2.value;
    billing_town.value = town.value;
    billing_county.value = county.value;
    billing_postcode.value = postcode.value;
  }
  else {
    billing_firstname.value = '';
    billing_lastname.value = '';
    billing_addr1.value = '';
    billing_addr2.value = '';
    billing_town.value = '';
    billing_county.value = '';
    billing_postcode.value = '';
  }
}

function clearAllCheckboxes(theform) {
  theform=getObject(theform);
  len = theform.elements.length;
  for(i=0; i<len; i++) {
    if (theform.elements[i].type == 'checkbox') {
      theform.elements[i].checked=0;
    }
  }
}

function resetExtras () {
  for (var i = 0; i < extras.length; i++) {
    var resetfield = getObject(extras[i]);
    resetfield.value = 0;
  }
  coverType = getObject('coverType');
  coverLevel = getObject('coverLevel');
  coverType.value = "";
  coverLevel.value = "";
}
