I have been adding a price calculator script to my works website, it all works ok currently but, as it stands, it works on daily price, weekly and monthly price.I need it to work on 1 , 2 ,3 ,4, 5 ,6 day, weekly, summer monthly and winter monthly. I am rather new to javascript and most of my script is not my own, can anyone help me ? also ive had to cut some of the code out so it will fit in the char limit
thanks in advanced
Code:
<
<head>
</script>
<SCRIPT LANGUAGE="JavaScript">
function neil(num)
{
document.date.option.value=num
document.date.group.selectedIndex=num
}
image1 = new Image();
image1.src = "image/blanktext.gif";
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";",offset);
if (endstr == -1) endstr=document.cookie.length;
return unescape(document.cookie.substring(offset,endstr));
}
function GetCookie(name) {
var arg=name+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i < clen) {
var j=i+alen;
if (document.cookie.substring(i,j)==arg) return getCookieVal(j);
i=document.cookie.indexOf(" ",i)+1;
if (i==0) break;
}
return null;
}
function SetCookie(name,value) {
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(argc>2) ? argv[2] : null;
var path=(argc>3) ? argv[3] : null;
var domain=(argc>4) ? argv[4] : null;
var secure=(argc>5) ? argv[5] : null;
document.cookie = name + "=" + escape (value) + ((expires ==null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure ==true) ? ";secure" : "");
}
function DeleteCookie(name) {
var exp=new Date();
exp.setTime (exp.GetTime() -1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
// new bit init fields for re-quote
function initialise() {
document.date.difference.value = "";
document.date.amount.value = "£0.00";
}
//
function doitems() {
time = document.date.difference.value;
cost = document.date.amount.value;
option = document.date.type.value;
rdate = document.date.rdate.value;
rtime = document.date.rtime.value;
cdate = document.date.cdate.value;
ctime = document.date.ctime.value;
cfrom = document.date.cfrom.value;
expiryDate=new Date();
expiryDate.setTime(expiryDate.getTime() + (365*24*60*60*1000));
//Added By Ben for Passthrough to payment screen
date.SDate.value = cdate;
date.EDate.value = rdate;
date.STime.value = ctime;
date.ETime.value = rtime;
date.TotTime.value = time;
date.CarOption.value = option;
date.TotCost.value = cost;
date.ColFrom.value = cfrom;
//End of add
SetCookie ("Item1",""+option ,expiryDate);
SetCookie ("Item2",""+cost ,expiryDate);
SetCookie ("Item3",""+time ,expiryDate);
SetCookie ("Item5",""+rdate ,expiryDate);
SetCookie ("Item4",""+cdate ,expiryDate);
SetCookie ("Item6",""+rtime ,expiryDate);
SetCookie ("Item7",""+ctime ,expiryDate);
SetCookie ("Item8",""+cfrom ,expiryDate);
}
function calculate() {
var days = parseInt(document.date.days.value)
if (document.date.cfrom.value == "A") {var grpstring="1,2500,13000,42000"} //this bit is price
if (document.date.cfrom.value == "B") {var grpstring="1,2650,14500,46000"}
if (document.date.cfrom.value == "CD") {var grpstring="1,2800,15500,48000"}
if (document.date.cfrom.value == "E") {var grpstring="1,3000,16500,51000"}
if (document.date.cfrom.value == "F") {var grpstring="1,3200,17500,54000"}
if (document.date.cfrom.value == "G") {var grpstring="1,3500,20000,59000"}
if (document.date.cfrom.value == "H") {var grpstring="1,3800,22500,62000"}
if (document.date.cfrom.value == "I") {var grpstring="1,4500,25000,65000"}
if (document.date.cfrom.value == "J") {var grpstring="1,5000,27000,80000"}
if (document.date.cfrom.value == "K") {var grpstring="1,6500,31000,82500"}
if (document.date.cfrom.value == "L") {var grpstring="1,7000,36000,120000"}
if (document.date.cfrom.value == "M") {var grpstring="1,2650,15000,48000"}
if (document.date.cfrom.value == "O") {var grpstring="1,4100,21000,72500"}
for (var a=1; a <= 4; a++) {
first = (a ==1) ? 0 : last+1;
last = (a == 4) ? grpstring.length : grpstring.indexOf(",",first+1);
if (a == 2) var daily=grpstring.substring(first,last);
if (a == 3) var weekly=grpstring.substring(first,last);
if (a == 4) var monthly=grpstring.substring(first,last);
}
var months=parseInt(days/28);
var weeks=parseInt((days-(months*28))/7);
if (weeks < 0) weeks = 0;
// new bit adds £20 for collect at LGW
var collect = 0;
if (document.date.cfrom.value == "LGW") {
collect = 2500;
}
var days=days-(months*28)-(weeks*7);
if (days < 1) days = 0;
if (days > 5 && weeks < 1) days = 5;
if (months > 0) daily = parseFloat(monthly/28);
else if (weeks > 0) daily = parseFloat(weekly/6);
var cash="£"+((months*monthly)+(weeks*weekly)+(days*daily)+collect)/100;
document.date.amount.value = cash;
doitems();
}
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";",offset);
if (endstr == -1) endstr=document.cookie.length;
return unescape(document.cookie.substring(offset,endstr));
}
function GetCookie(name) {
var arg=name+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i < clen) {
var j=i+alen;
if (document.cookie.substring(i,j)==arg) return getCookieVal(j);
i=document.cookie.indexOf(" ",i)+1;
if (i==0) break;
}
return null;
}
function SetCookie(name,value) {
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(argc>2) ? argv[2] : null;
var path=(argc>3) ? argv[3] : null;
var domain=(argc>4) ? argv[4] : null;
var secure=(argc>5) ? argv[5] : null;
document.cookie = name + "=" + escape (value) + ((expires ==null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure ==true) ? ";secure" : "");
}
function DeleteCookie(name) {
var exp=new Date();
exp.setTime(exp.getTime() -1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
function isValidDate(dateStr) {
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year
var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {
alert(dateStr + " Date is not in a valid format.")
return false;
}
month = matchArray[1]; // parse date into variables
day = matchArray[3];
year = matchArray[4];
if (month < 1 || month > 12) { // check month range
alert("Month must be between 1 and 12.");
return false;
}
if (day < 1 || day > 31) {
alert("Day must be between 1 and 31.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Month "+month+" doesn't have 31 days!")
return false;
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("February " + year + " doesn't have " + day + " days!");
return false;
}
}
return true;
}
function isValidTime(timeStr) {
var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
var matchArray = timeStr.match(timePat);
if (matchArray == null) {
alert("Time is not in a valid format.");
return false;
}
hour = matchArray[1];
minute = matchArray[2];
second = matchArray[4];
ampm = matchArray[6];
if (second=="") { second = null; }
if (ampm=="") { ampm = null }
if (hour < 0 || hour > 23) {
alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
return false;
}
if (hour <= 12 && ampm == null) {
if (confirm("Please indicate which time format you are using. OK = Standard Time, CANCEL = Military Time")) {
alert("You must specify AM or PM.");
return false;
}
}
if (hour > 12 && ampm != null) {
alert("You can't specify AM or PM for military time.");
return false;
}
if (minute < 0 || minute > 59) {
alert ("Minute must be between 0 and 59.");
return false;
}
if (second != null && (second < 0 || second > 59)) {
alert ("Second must be between 0 and 59.");
return false;
}
return true;
}
function dateDiff(dateform) {
date1 = new Date();
date2 = new Date();
diff = new Date();
sysDate = new Date();
firstday = document.date.input1date.value;
firstmonth = document.date.input1date1.value;
firstyear = document.date.input1date2.value;
firsttime = document.date.ctime.value;
secondday1 = document.date.inputdate.value;
secondmonth1 = document.date.inputdate1.value;
secondyear1 = document.date.inputdate2.value;
secondtime1 = document.date.rtime.value;
document.date.firstdate.value = firstmonth + "/" + firstday + "/" + firstyear;
document.date.seconddate.value = secondmonth1 + "/" + secondday1 + "/" + secondyear1;
document.date.cdate.value = firstday + "/" + firstmonth + "/" + firstyear;
document.date.rdate.value = secondday1 + "/" + secondmonth1 + "/" + secondyear1;
if (isValidDate(date.firstdate.value)) { // Validates first date
date1temp = new Date(date.firstdate.value);
date1.setTime(date1temp.getTime());
}
else return false; // otherwise exits
if (isValidDate(date.seconddate.value)) { // Validates second date
date2temp = new Date(date.seconddate.value);
date2.setTime(date2temp.getTime());
}
else return false; // otherwise exits
//new bit
if (date1temp <= sysDate) { // check for start date after today
alert("Collect date must be after today");
return false;
}
//new bit
if (date1temp >= date2temp) { // check for start date before end date
alert("Return date must be after collect date");
return false;
}
//
// sets difference date to difference of first date and second date
diff.setTime(Math.abs(date1.getTime() - date2.getTime()));
timediff = diff.getTime();
timediff = Math.floor(timediff /(1000*60*60));
if (firsttime < secondtime1 - 1)
{
timediff = timediff + 24;
}
weeks = Math.floor(timediff / (24 * 7));
timediff -= weeks * ( 24 * 7);
days = Math.floor(timediff / 24);
timediff -= days * 24;
// new bit validate meet from airport > 6 days hire
if (weeks == "0") {
if ((document.date.cfrom.value == "LGW") || (document.date.cfrom.value == "LHR")) {
alert("Airport collections apply to weekly, or longer rentals only");
return false;
}
}
display()
}
function display(){
weekdays = weeks*7
if (weeks > 0) {
var line = weeks + " weeks, " + days + " days, "
document.date.difference.value = line
calculate()
}
else document.date.difference.value = days + " days"
document.date.days.value = days + weekdays
calculate()
}
function check()
{
var letter = document.date.input1date.value.length+1;
if (letter <=2)
{document.date.input1date.focus()}
else
{document.date.input1date1.focus()}
}
function checkone()
{
var letter2 = document.date.input1date1.value.length+1;
if (letter2 <=2)
{document.date.input1date1.focus()}
else
{document.date.input1date2.focus()}
}
function checktwo()
{
var letter3 = document.date.input1date2.value.length+1;
if (letter3 <=4)
{document.date.input1date2.focus()}
else
{document.date.inputdate.focus()}
}
function checkthre()
{
var letter4 = document.date.inputdate.value.length+1;
if (letter4 <=2)
{document.date.inputdate.focus()}
else
{document.date.inputdate1.focus()}
}
function checkfour()
{
var letter5 = document.date.inputdate1.value.length+1;
if (letter5 <=2)
{document.date.inputdate1.focus()}
else
{document.date.inputdate2.focus()}
}
function checkfive()
{
var letter6 = document.date.inputdate2.value.length+1;
if (letter6 <=4)
{document.date.inputdate2.focus()}
}
</script></head>
<body>
<div id="container">
<!-- header ................................. -->
<div id="header">
<h1><a href="/index.html"><img src="images/pchsmall.gif" /><img src="images/pennylogo.jpg" /></a></h1>
</div> <!-- /header -->
<!-- navigation ................................. -->
<div id="navigation">
<ul>
<li><a href="index.html"> ALL VEHICLES </a></li>
<li><a href="Cars.html"> Car Rental's </a></li>
<li><a href="MPV.html"> Mpv & People Carrier's</a></li>
<li><a href="Vans.html"> Van Rental's </a></li>
<li><a href="deals.html"> Monthly Deals </a></li>
</ul>
</div><!-- /navigation -->
<hr class="low" />
<!-- content ................................. -->
<div id="content">
<div class="entry single">
</div>
<!--form-->
<table align="center" bgcolor="#A3C159" border="2" width="470" cellspacing="0" bordercolor="#000000">
<form method="get" name="date" onsubmit="return dateDiff()" ACTION="https://cwcs16.cwcs.co.uk/~fulcrum/newbookingform.php" target="_blank">
<tr><td><table align="center" border="0" width="470" cellspacing="0" cellpadding="5">
<tr><td align="center" height="25" colspan="4" width="470">
<font size="5" face="arial" color="red"><a name="Calculate Cost">Please type in the dates for a quote.</a></font></td>
</tr>
<tr><td colspan="4" height="7" width="220">
<input type='hidden' name='type' size='34' value='Toyota Aygo GO Group A'></td> </tr>
<!-----new drop down box---------->
<tr>
<TD align="right"><b><font size="2" face="arial" color="black">Select Car :</b></font></TD>
<td colspan="3" height="25" width="220">
<select name="cfrom" style="font: bolder; color: #000000" onChange="initialise()" tabindex="13">
<option value="A">Manual Panda / Auto Smart</option>
<option value="B">Manual Clio 3 3Dr or 5 Dr / Manual Picanto</option>
<option value="CD">Manual Rio / Clio 1.2T / Auto Picanto</option>
<option value="E">Manual Venga / Auto Rio</option>
<option value="F">Auto Focus / Cee'd / Manual Megane</option>
<option value="G">Auto Cee'd Estate / Manual Megane Estate</option>
<option value="H">Auto Mondeo</option>
<option value="I">Manual Sportage 2WD</option>
<option value="J">Auto Sportage 4X4</option>
<option value="K">Auto Galaxy / Manual RCZ</option>
<option value="L">Auto Sorento 4X4</option>
<option value="M">Manual Kangoo Van</option>
<option value="O">Manual LWB LL29 Trafic</option>
</select>
</TD>
</tr>
<!---------end drop down box------>
<tr><td height="25" align="right"><b><font size="2" face="arial" color="black">Collection Date :</b></font></td>
<td height="24" width="220">
<select name="input1date" style="font: bolder; color: #000000" onChange="initialise()" onkeyup="check()" tabindex="2"><option value="00">DD</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
/ <select name="input1date1" style="font: bolder; color: #000000" onChange="initialise()" onkeyup="check()" maxlength="2" tabindex="3"><option value="00">MM</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
/ <select name="input1date2" style="font: bolder; color: #000000" onChange="initialise()" onkeyup="check()" maxlength="2" tabindex="4" >
<option value="00">YYYY</option>
<option value="2012">2012</option>
</select>
<font size="2" face="arial" color="black">(dd/mm/yyyy)</font></td>
<!--------new time box---------------------->
<td height="25" align="right"><b><font size="2" face="arial" color="black">Time:</b></font></td>
<td align="right" width="97"><font size="2">
<select name="ctime" style="font: bolder; color: #000000" onChange="initialise()" tabindex="10">
<option value="00">00:00</option>
<option value="01">01:00</option>
<option value="02">02:00</option>
<option value="03">03:00</option>
<option value="04">04:00</option>
<option value="05">05:00</option>
<option value="06">06:00</option>
<option value="07">07:00</option>
<option value="08">08:00</option>
<option value="09">09:00</option>
<option value="10">10:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="23">23:00</option>
</select></font>
</td>
<!--------new time box---------------------->
</body>
</html>
You need to declare a doc type first. Then run your code through http://validator.w3.org/ to find your errors and then correct them. My editor says you have 64 errors many depreciated tags. many tags missing.
It would be a big help to remove the white spaces (blank lines).