function identity() {
alert("Version 5b of Calculator with support for curtains, blinds, roller blinds and cushions")
}

function  calculate() 
{
// set some constants
var prefix = "C_" // set default cookies prefix
//
// get some initial variables
calc_type=document.forms[2].calc_type.value
//
// evaluate type of calculation
if (document.forms[2].staff.value == "yes") // if staff 
  {staff="yes" 
   prefix = "S_" // set cookies prefix
   fabric_width   = document.forms[2].fabric_width.value  // data should always be in cm.
   fabric_price   = document.forms[2].fabric_price.value
   pattern_repeat = document.forms[2].pattern_repeat.value // data should always be in cm.
   fabric_name    = document.forms[2].fabric_name.value   
  }
else
  {staff="no"
   fabric_price=getCookie(prefix+'PRICE_FABRIC') //   validate if fabric cookies exist 
   // alert(fabric_price)
   if (fabric_price==null)
     {alert("Please choose fabric first."); return;}
   fabric_name    = getCookie(prefix+'NAME_FABRIC')	 // now get rest of data from cookies
   fabric_width   = getCookie(prefix+'WIDTH_FABRIC')
   pattern_repeat = getCookie(prefix+'REPEAT_FABRIC')
  }
//
switch (calc_type) 
{
// if curtain 
   case "Curtain":
//   set constants for curtains
//   validate input for curtain
//   evaluate type of curtain to calculate - curtain, dress curtain, pelmet, reversible - set constants
//   calculate fabric requirement
//   if tiebacks required
//     calculate extra fabric 
//   calculate charge for fabric
//   calculate charge for lining fabric and prepare descriptions
//   calculate charge for lining type
//   calculate Heading charge for makeup_per_width
//   calculate length - additional charge for makeup_per_width
//   calculate final price for curtains including tieback surcharge, handsewn surcharge
//   add surcharge for carriage on m2m to final price
//   pepare description variable
   break;
// if roman blind
   case "Fabric Blind":   
//   set constants for roman blind
//   validate input for roman blind
//   calculate fabric requirement
//   calculate which array to use based on drop 
//   calculate which item in array based on width 
//   calculate charge for lining type - Blackout or Interlining
//   calculate surcharge for handsewn
//   calculate charge for mechanism
//   calculate final price for blinds 
//   add surcharge for carriage on m2m to final price
//   pepare description variable
   break;
// if cushions
   case "Cushion": 
   
//    set constants for cushions
	  carriage = 3  // m2m carriage surcharge
      fabric_required=0
	  makeup_charge=0
	  makeup_price= new Array(11.90, 13.6, 14.45);
      pad_price = new Array;
      synthetic_pad_price =  new Array( 5.22, 5.82, 7.24, 7.88); 
	  feather_pad_price =  new Array( 5.44, 6.40, 8.40, 9.84); 	  
	  
//    validate input for cushions
      cushion_type=document.forms[2].cushion_type.value
	  cushion_size=document.forms[2].cushion_size.value
	  pad_type=document.forms[2].pad_type.value	
      cushion_qty=document.forms[2].cushion_qty.value
	  
//    calculate fabric requirement - repeats not allowed for
      fabric_required = (cushion_size/100)+0.10  //  convert to metres then add 0.1m for hems etc
	  if (cushion_qty*fabric_required<=0.99) // minimum of 100cm for total fabric requirement
	     {fabric_required=1}
		 
//    calculate charge for fabric
	  fabric_charge  = fabric_required*fabric_price
	  fabric_charge  = Math.round(fabric_charge*100)/100
	  
//    calculate makeup charge
	  if (cushion_type=="Plain") {j=0}
	  if (cushion_type=="Self Piped") {j=1}
	  if (cushion_type=="Oxford") {j=2}	  
	  makeup_charge = makeup_price[j]
	  
//    calculate charge for pad type and choose cushion_size_text
      if (pad_type=="Feather")  // Feather or Synthetic pad?
	     {pad_price=feather_pad_price
          i=4
          if (cushion_size == 55)
	         {i = 3
			 cushion_size_text='55cm (20")'		  
			 }
          if (cushion_size == 50)
	         {i = 2
			 cushion_size_text='50cm (20")'
			 }
          if (cushion_size == 45)
	         {i = 1
			 cushion_size_text='45cm (18")'
			 }
          if (cushion_size == 40)
	         {i = 0
			 cushion_size_text='40cm (16")'
			 }	 	 	 	 
	      pad_charge = pad_price[i]
		 }
		 else
		 {pad_price=synthetic_pad_price
          i=4
          if (cushion_size == 55)
	         {i = 3
			 cushion_size_text='55cm (20 inches)'		  
			 }
          if (cushion_size == 50)
	         {i = 2
			 cushion_size_text='50cm (20 inches)'
			 }
          if (cushion_size == 45)
	         {i = 1
			 cushion_size_text='45cm (18 inches)'
			 }
          if (cushion_size == 40)
	         {i = 0
			 cushion_size_text='40cm (16 inches)'
			 }		 	 	 	 
	      pad_charge = pad_price[i]
		 }
//    calculate final price + 10% to support disctount strategy
	  unit_charge = Math.round(1.1*(fabric_charge + pad_charge + makeup_charge + carriage)); 

//    write fields for staff forms
      if (staff=="yes")
	  {
      document.forms[4].fabric_required.value = fabric_required
  	  document.forms[4].fabric_cost.value = fabric_charge
	  document.forms[4].makeup_cost.value = makeup_charge
	  document.forms[4].pad_cost.value = pad_charge	  		  
      document.forms[4].unit_charge.value = unit_charge
      document.forms[4].total_fabric_required.value = Math.round(fabric_required*cushion_qty*10)/10
	  document.forms[4].total_fabric_cost.value=fabric_charge*cushion_qty
	  document.forms[4].total_makeup_cost.value=(makeup_charge)*cushion_qty
	  document.forms[4].total_pad_cost.value = pad_charge*cushion_qty	  
      document.forms[4].total_charge.value = (unit_charge*cushion_qty)	 
	  }
	  
//    prepare description variable
      desc =  cushion_qty+" "+cushion_type+" cushion with "+pad_type+" pad and zip. Size : "+cushion_size_text+" by "+cushion_size_text+". "+fabric_name

//    prepare price variable
      price = unit_charge*cushion_qty

//    to cookies for display
      var today = new Date();
      var expiry = new Date(today.getTime() + 2419200000); // plus 28 days
      setCookie('CUSHION_DESCRIPTION', desc, expiry)
	  setCookie('CUSHION_TOTAL_PRICE', price, expiry)
	  setCookie('CUSHION_UNIT_PRICE', unit_charge, expiry)
      setCookie(prefix+'NAME_FABRIC_OLD', fabric_name, expiry)

//    to fields for Actinic	  
      document.forms[2].Q_Cushion.value=price	 
      document.forms[2].O_Cushion.value=desc
	//  alert(document.forms[2].O_Cushion.value)

//    write fields for email form
      document.forms[3].Name.value="gerald lee "
      document.forms[3].Subject.value="Queenshill Cushion Calc - v5b"
      document.forms[3].EmailAddress.value="service@queenshill.com" // for v8
	  message = desc
      message+="\r"
	  message+="Price: £ "+((unit_charge*cushion_qty))+"\r"
	  message+="fabric_name "+fabric_name+"\r"
	  message+="fabric_price "+fabric_price+"\r"
	  message+="fabric_width "+fabric_width+"\r"
	  message+="pattern_repeat "+pattern_repeat+"\r"
	  message+="fabric_required_per_cushion "+fabric_required+"\r"
  	  message+= "fabric_charge_per_cushion "+fabric_charge+"\r"
	  message+= "makeup_charge_per_cushion "+makeup_charge+"\r"
	  message+= "pad_charge_per_cushion "+pad_charge	+"\r"  		  
      message+= "unit_charge_per_cushion "+unit_charge+"\r"
      message+= "total_fabric_required "+Math.round(fabric_required*cushion_qty*10)/10+"\r"
	  message+= "total_fabric_charge "+fabric_charge*cushion_qty+"\r"
	  message+= "total_makeup_charge "+(makeup_charge)*cushion_qty+"\r"
	  message+= "total_pad_charge "+pad_charge*cushion_qty	  +"\r"
      message+= "total_unit_charge "+(unit_charge*cushion_qty)	+"\r"
	  document.forms[3].Message.value=message
      document.forms[3].ACTION.click()
      history.go()

   break;
   
// if roller blinds   
   case "Roller Blind":  
//    set constants for roller blinds
	  carriage = 3  // m2m carriage surcharge
      fabric_required=0
	  makeup_charge=0
//    validate input for roller blinds
//    calculate fabric requirement - repeats not allowed for
//    calculate charge for fabric
//    calculate makeup charge
//    calculate charge for pad type and choose cushion_size_text
//    calculate final price + 10% to support disctount strategy
//    write fields for staff forms
//    pepare description variable
//    prepare price variable
//    to cookies for display
//    to fields for Actinic	
//    write fields for email form

   break;
   
   default: alert("Calc Type not recognised: "+calc_type) 
} // end of calctype switch
//
//   add surcharge for carriage on m2m to final price
//   write cookies for public page
//   write fields for Actinic
//   write fields for staff forms
//   write fields for email form
}
/**********************
* Writes data to cookies. Begin with C for public and S for staff
*
***********************/
function w_curtain(data, field) {
var staff="no"
if (document.forms[2].staff.value == "yes")
  {staff="yes" }
var prefix = "C_"
if (staff=="yes") 
  {prefix = "S_" }
var today = new Date();
var expiry = new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000); // plus 30 days

switch (field) {
     case "1":
      setCookie(prefix+'CURTAIN', data, expiry)
     break;
     case "2":
      setCookie(prefix+'QUANTITY', data, expiry)
     break;
     case "3":
      setCookie(prefix+'HEADING', data, expiry)
     break;
     case "4":
      setCookie(prefix+'WIDTH', data, expiry)
     break;
     case "5":
      setCookie(prefix+'WIDTH_U', data, expiry)
     break;
     case "6":
      setCookie(prefix+'LENGTH', data, expiry)
     break;
     case "7":
      setCookie(prefix+'LENGTH_U', data, expiry)
     break;
     case "8":
      setCookie(prefix+'LINED', data, expiry)
     break;
     case "9":
      setCookie(prefix+'TIEBACK', data, expiry)
     break;
     case "10":
      setCookie(prefix+'WIDTHS_PER_CURTAIN', data, expiry)
     break;
     case "11":
      setCookie(prefix+'PRICE', data, expiry)
     break;
     case "12":
      setCookie('Q_CURTAINS', data, expiry)
     break;
     case "13":
      setCookie('O_CURTAINS', data, expiry)
     break;
     case "14":
      setCookie(prefix+'WIDTH_FABRIC', data, expiry)
     break;
     case "15":
      setCookie(prefix+'REPEAT_FABRIC', data, expiry)
     break;
     case "16":
      setCookie(prefix+'PRICE_FABRIC', data, expiry);     
	 break;
     case "17":
      setCookie(prefix+'NAME_FABRIC', data, expiry)
     break;
     case "18":
      setCookie(prefix+'BLINDTYPE', data, expiry)
     break;
     case "19":
      setCookie(prefix+'LOCATION', data, expiry)
     break;
     case "20":
      setCookie(prefix+'PULLSIDE', data, expiry)
     break;
     case "21":
      setCookie(prefix+'SIDEWINDER', data, expiry)
     break;
     case "22":
      setCookie(prefix+'CURTAIN_DESC', data, expiry)
     break;	 
     case "23":
      setCookie(prefix+'BLIND_DESC', data, expiry)
     break;
    }
}

// redirects browser to search page
function goToURL() { window.location = "http://www.queenshill.com/acatalog/search.html"; }

// returns the amount in the .99 format
function cent(amount) {
    amount -= 0;
    amount = (Math.round(amount*100))/100;
    return (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
}

// combines search parameters into one field for Actinic
function  multisearch() {
// units in cm//
var form = 0
var loop = 0
var nIndex = 0
// Which form is SS in
	 for (nIndex = 0; nIndex < document.forms.length; nIndex++)
		  {
		  if (document.forms[nIndex] && document.forms[nIndex].searchtext)
	     {
           document.forms[nIndex].searchtext.focus()
	      }
	      }
// Which form is dropdown1 in
	 for (loop = 0; loop < document.forms.length; loop++)
		  {
		  if (document.forms[loop] && document.forms[loop].dropdown1)
	     {
           form = loop
	      }
	      }
// Get Inputs 
var d1 = document.forms[form].dropdown1.value
var d2 = document.forms[form].dropdown2.value
var d3 = document.forms[form].dropdown3.value
var d4 = document.forms[form].dropdown4.value
var d5 = document.forms[form].dropdown5.value
var d6 = document.forms[form].searchtext.value
// Calculate
re = d1+" "+d2+" "+d3+" "+d4+" "+d5+" "+d6
// document.write(re)
// Display Results
document.forms[form].SS.value = re
//document.popform.result.value=re
}
