// JavaScript Document
var browsertype = 1;
var orders = new Array(6);
var genmonths = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var wkday = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
var Dnow, D3day, Dadvance;
	Dnow = new Date();
	//(Dnow = new Date()).setDate(Dnow.getDate()+3);  //3 days in advance
	//(Dnow = new Date()).setDate(Dnow.getDate()+1);  //1 day in advance
	//(D3day = new Date()).setDate(D3day.getDate()+3);  //3 days in advance
	(D3day = new Date()).setDate(D3day.getDate()+3);  //1 days in advance
	(Dadvance = new Date()).setMonth(Dadvance.getMonth()+3);  //3 months in advance only
	
	
for(var i=0;i<6;i++)
{
  orders[i] = new Array('');
} //initialize order details  

function chkbrowser()
{
 if(navigator.appName == "WebTV")
{
  return 1;
}
 if(navigator.appName == "Netscape")
{
  return 2;
}
 if(navigator.appName == "Microsoft Internet Explorer")
{
	  return 0;

}

 //alert("You're using " + navigator.appName);
	  return 9;

 //alert("You're using the Internet Explorer browser.")
}



//---------------------------------------------------------------------------

function dlStrip(objname)
{
document.getElementById(objname).src = "images/nav/" + objname + "-n.gif";
}

function hlStrip(objname) 
{
document.getElementById(objname).src = "images/nav/" + objname + "-hl.gif";
}

//cake order navigation functions
var ordercnt = 0;  //maximum is 5
var cakes = new Array();
cakes[0] = new Array('');
cakes[1] = new Array('cat1cake1','cat1cake2','cat1cake3','cat1cake4','cat1cake5');  
cakes[2] = new Array('cat2cake1','cat2cake2','cat2cake3','cat2cake4','cat2cake5');  
cakes[3] = new Array('cat3cake1','cat3cake2','cat3cake3','cat3cake4','cat3cake5','cat3cake6');  
cakes[4] = new Array('cat4cake1','cat4cake2','cat4cake3','cat4cake4','cat4cake5','cat4cake6','cat4cake7','cat4cake8','cat4cake18','cat4cake19','cat4cake20','cat4cake9','cat4cake11','cat4cake12','cat4cake13','cat4cake14','cat4cake15','cat4cake16','cat4cake21','cat4cake22','cat4cake23','cat4cake24','cat4cake25','cat4cake26','cat4cake27','cat4cake28','cat4cake29','cat4cake30','cat4cake31');//cakes[4] = new Array('cat4cake1','cat4cake2','cat4cake3','cat4cake4','cat4cake5','cat4cake6','cat4cake7','cat4cake8','cat4cake9','cat4cake10','cat4cake11','cat4cake12','cat4cake13','cat4cake14','cat4cake15','cat4cake16');  
var curcat = 4; // that is, cake comes first as default category
var curcake = 0;  //depending on the category

function viewNext()
{
   var frame = document.getElementById('sale');
   var id = eval("javascript:sale.getId('"+cakes[curcat][(curcake+1)]+"');");
   if(cakes[curcat].length == 1){
     alert("There are no more choices.");
     return;
   }
  
   if(id == "1")
   {
	  curcake++;
      var gostr = "cakes/cake"+ (curcat)+ ".html" + "#"+ cakes[curcat][curcake];
	  //var gostr = "#"+ cakes[curcat][curcake+1];
	  //alert(gostr);
	  
	  sale.location = gostr;
	  
   }
   else
   {  //scroll to first 
      //curcat = 0;
	  curcake = 0;
      alert("End of selection, going to the beginning of the choices.");
      var gostr =  "cakes/cake"+ (curcat)+ ".html" + "#"+ cakes[curcat][0];
 	  sale.location = gostr;
	   
   }
}


function viewPrev()
{
   var frame = document.getElementById('sale');
   //var id = eval("javascript:sale.getId('"+cakes[curcat][curcake-1]+"');");
   if(cakes[curcat].length == 1){
     alert("There are no more choices.");
     return;
   }
  
   if(curcake ==0)
   {  //scroll to first 
      //curcat = 0;
	  curcake = cakes[curcat].length;
   }
   var gostr =  "cakes/cake"+ (curcat)+ ".html" + "#"+ cakes[curcat][curcake-1];
   sale.location = gostr;
   curcake--;
      
}


function addtoOrder(orderstr)
{
   var tmp = orderstr.split(":");
   if(ordercnt ==5)
   {
   		alert("Sorry, you can only make 5 orders at one time.");
		return;
   }
   else if(tmp[4] == "0" || tmp[4].length == 0)
   {
   		alert("Please specify the quantity.");
		return;
   }
   else
   {
   ordercnt = ordercnt + 1;
   orders[ordercnt] = orderstr;
   setPreviewVal(document.getElementById('qtystr'+ordercnt),tmp[4]);
   setPreviewVal(document.getElementById('orderstr'+ordercnt),ordercnt + ". " + tmp[0]+" ("+tmp[1]+"/"+tmp[2]+ " " + tmp[3] + ")");
   setPreviewVal(document.getElementById('amtstr'+ordercnt),formatCurrency(parseCurrency(tmp[4])* parseCurrency(tmp[1])));
   calGrand();
   }
}

function trim(sString)
{
	if(sString == null || sString.length == 0 || sString == " ") return "";
	
while (sString.length >= 2 && sString.charAt(0) == ' ')
{//alert('sString=<'+sString+'>');
if(sString.length < 2) return "";
else sString = sString.substring(1, sString.length);
}
while (sString.length >= 2 && sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
if(sString == "-") return "";
//alert("stringlength after trim:"+sString.length);
return sString;
}


function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
//return (((sign)?'':'-') + '$' + num + '.' + cents);
return (((sign)?'':'-') +  num + '.' + cents);
}

function parseCurrency(sString)
{
	if(sString == null || trim(sString).length == 0 || sString == "&nbsp;") return 0;
	var txt = sString.toString().replace(/\$|\,/g,'');
	return txt;
}

function getPreviewVal(pobj)
{
	//alert("empty is []");
	var val = "";
	if(browsertype ==0)
	{ 
	  //alert("["+ trim(obj.innerHTML) + "]");
	  
	  val =  trim(pobj.innerHTML);
	}
	else 
	{
	  //alert("["+ trim(obj.childNodes[0].nodeValue) + "]");
		val= trim(pobj.childNodes[0].nodeValue);
	}
	if(val =="__" || trim(val)=="&nbsp;" || val == "" || val == null) val = "0";
	//alert("return value of cake:>>"+ val+"<<");
	return val;
}

function setPreviewVal(obj,newvalue)
{
	
	if(!obj) return; //no need to set value
	if(newvalue == null || newvalue == "" || newvalue == 0) newvalue = ' ';
    if(browsertype == 0) obj.innerHTML = newvalue;
	else obj.childNodes[0].nodeValue = newvalue;
}

function setCat(cat)
{
   var oldcat=curcat;
   curcat = cat;
   //set top cat image
   hidesect("catbase"+curcat);
   showsect("catbase"+oldcat);
   
   document.getElementById('topcatname').src = "images/cakes/cattop"+ cat + ".gif";
   sale.location = "cakes/cake"+curcat + ".html";
}

function hidesect(objname)
{
	document.getElementById(objname).style.visibility="hidden";
	document.getElementById(objname).style.display="none";
}

function showsect(objname)
{
	document.getElementById(objname).style.visibility="visible";
	document.getElementById(objname).style.display="block";
}

function chocoMsg(msgid)
{
	var norm = "It's easy to Order our cakes online.";
	var msg = "";
	if(msgid=="1") msg = "Click on one of these categories to browse through our selection.";
	else if(msgid=="p") msg = "Click to browser previous cake";
	else if(msgid=="n") msg = "Click to browser next cake";
	else if(msgid=="a") msg = "Click to add selection to order details below.";
	else if(msgid=="s" && ordercnt > 0) msg = "Click to highlight an order.";
	else if(msgid=="d") msg = "Click to delete selected order detail.";
	else msg = norm;
	setPreviewVal(document.getElementById('subtitle'),msg);
}

var hlorderid = -1;

function clearAll()
{
	for(i=1;i<6;i++)
	{
		hlorderid = i;
		deleteOrder();
	}
	hlorderid=-1;
	document.sale.formReset();
}

function deleteOrder()
{
	var ordernum= hlorderid;
	if(hlorderid == -1)
	{
		alert("Please select an order item to delete");
		return;
	}
	if(ordercnt == 0) return;
	//alert("to delete "+ordernum + " of "+ ordercnt + " order(s)");
	//alert("orders.selected:"+orders[ordernum]);
	for(var i=ordernum;i<ordercnt; i++)
	{
		var n = eval("1+"+i);
		//alert("n:"+n+ "-->"+ orders[n]);
		orders[i] = orders[n];
		//alert("order"+i+":"+orders[i]);
	}
	
	orders[ordercnt] = " "; //flush out the empty orders
	
 	dhorder();

	ordercnt --;
	for(var i=1;i<6;i++)
	{
		if(trim(orders[i]).length > 3)
		{
		var tmp = (orders[i]).split(':');

	    setPreviewVal(document.getElementById('qtystr'+i),tmp[4]);
		setPreviewVal(document.getElementById('orderstr'+i),i+". " + tmp[0]+" ("+tmp[1]+"/"+tmp[2]+ " " + tmp[3] + ")");
		setPreviewVal(document.getElementById('amtstr'+ i),formatCurrency(parseCurrency(tmp[4])* parseCurrency(tmp[1])));
		}
		else
		{
	    setPreviewVal(document.getElementById('qtystr'+i),' ');
		setPreviewVal(document.getElementById('orderstr'+i),' ');
		setPreviewVal(document.getElementById('amtstr'+i),' ');
		}
	}
	calGrand();
}

function hlorder(sid)
{
	if(ordercnt == 0) return;
	if(hlorderid != sid)
	{
		if(hlorderid != -1) dhorder();
		document.getElementById("qtystr"+ sid).className="orderqtyhl";
		document.getElementById("orderstr"+ sid).className="orderdeschl";
		document.getElementById("amtstr"+ sid).className="orderamthl";
		hlorderid= sid;
	}
	else
	{
		dhorder();
	}
}

function dhorder()
{
	
	var sid = hlorderid;
		document.getElementById("qtystr"+ sid).className="orderqty";
		document.getElementById("orderstr"+ sid).className="orderdesc";
		document.getElementById("amtstr"+ sid).className="orderamt";
	hlorderid=-1;
}

function calGrand()
{
	var grandamt = 0;
	for(var i=1;i<=ordercnt;i++)
	{
		var perval = parseCurrency(trim(getPreviewVal(document.getElementById('amtstr'+i))));
		grandamt = eval(""+ grandamt + "+" + perval); 
	}
	setPreviewVal(document.getElementById('grandamt'),formatCurrency(grandamt));
}

function processComments()
{
	if(echeck(document.getElementById('email').value)==false)
    {
		alert("Please provide a valid email address. Thank you!");
	    return;
	}
	//3.check telephone number
	if(!isTel(document.getElementById('telephone').value))
	{
		alert("Please enter a valid Singapore telephone or mobile number. Thank you.");
		return;
	}
	
	document.getElementById('c1').value = document.getElementById('customer').value;
	document.getElementById('c2').value = document.getElementById('telephone').value;
	document.getElementById('c3').value = document.getElementById('email').value;
	document.getElementById('c4').value = document.getElementById('address').value;
	document.getElementById('c5').value = document.getElementById('age').value;
	document.getElementById('c6').value = document.getElementById('comments').value;
	document.commentform.submit();

alert("We will get back to you shortly. Thank you for your comments.");
}

function showParticulars()
{
   if(ordercnt == 0)
   {
	   alert("You have not made any order yet.");
	   return;
   }
   var obj=document.getElementById('particulars');
   obj.style.visibility = 'visible';

}

function hideParticulars()
{
  var obj= document.getElementById('particulars');
  obj.style.visibility = 'hidden';
}

function processOrder()
{
	//1.to format order content 
	var oqty = new Array(5);
	var oorder = new Array(5);
	var oamt = new Array(5);
	var cname, cemail, caddr, ctel;
	var orderdata, cdate, delivery;

	for(i = 1;i<6;i++)
	{
		var eachorderdetail = document.getElementById('order'+i);
		oqty[i] = getPreviewVal(document.getElementById('qtystr'+i));
		oorder[i] = getPreviewVal(document.getElementById('orderstr'+i));
		oamt[i] = getPreviewVal(document.getElementById('amtstr'+i));
		
		//format

		if(oqty[i] == '0')  eachorderdetail.value = "   \n";
		else
		{
			eachorderdetail.value = "Cake: " + oorder[i] + "\rQuantity: " + oqty[i] + "\rSubtotal: " + oamt[i] + "\n";
		}
	}
	
	//2. grand total
	grandprice = getPreviewVal(document.getElementById('grandamt'));
	document.getElementById("grand").value = grandprice;
	
	//3.check email address	
	if(echeck(document.getElementById('emailpl').value) == false)
        {
	    alert("Please provide a valid email address. Thank you!");
	    return;
	}
	//3.check telephone number
	if(!isTel(document.getElementById('telpl').value))
	{
		alert("Please enter a valid Singapore telephone or mobile number. Thank you.");
		return;
	}
	if(document.getElementById('deliverypl1').checked == false && document.getElementById('deliverypl2').checked==false)
	{
		alert("Please enter if you want delivery. Thank you.");
		return;
	}
	if(document.getElementById('deliverypl1').checked == true)
	{
		delivery = "Yes";
	}
	if(document.getElementById('deliverypl2').checked == true)
	{
		delivery = "No";
	}
        cname = document.getElementById('custname').value;
        cemail = document.getElementById('emailpl').value;
        caddr =  document.getElementById('addresspl').value;
        ctel = document.getElementById('telpl').value;
    orderdata = "Name: " + cname + "\rTelephone: " + ctel + "\rEmail: " + cemail + "\rAddress: " + caddr + "\r";
	
	cdate = getSelectVal(document.getElementById("d-day")) + " " + getSelectVal(document.getElementById("d-mth")) + " " + getSelectVal(document.getElementById("d-yr"));
	
	orderdata = orderdata + "Collection Date: " + cdate + "\rCollection Time: " + getSelectVal(document.getElementById('d-time')) +"\r";
	orderdata = orderdata + "Delivery: " + delivery + "\r";
	orderdata = orderdata + "Special Request: " + document.getElementById('requestpl').value + "\r";
	//alert(orderdata);
	document.getElementById('cinfo').value = orderdata;

//alert(document.getElementById('email').value);
//alert(document.getElementById('customer').value);
	document.orderform.submit();
	//hideParticulars();
}

function isTel(sString)
{
var PHONE = /[\d\x40]/; //defining regular expression;

    if(PHONE.test(sString) && (sString.length>=8)) return true;
	else return false;
}




/**
 * DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

function echeck(str) {

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   //alert("Invalid E-mail address");
		    alert("Please enter a valid E-mail address");
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   //alert("Invalid E-mail ID");
		    alert("Please enter a valid E-mail address");
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    //alert("Invalid E-mail ID");
		    alert("Please enter a valid E-mail address");
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    //alert("Invalid E-mail ID");
		    alert("Please enter a valid E-mail address");
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    //alert("Invalid E-mail ID");
		    alert("Please enter a valid E-mail address");
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Please enter a valid E-mail address");
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Please enter a valid E-mail address");
		    return false;
		 }

 		 return true;					
	}

function initDateChoice()
{
	sidx = 0;
	//alert("current yr:"+Dnow.getYear());
	//alert("current mth:"+Dnow.getMonth());
document.write('<select class="midtext" name="d-yr" id="d-yr">');
//i = D3day.getFullYear();
document.write('<option value="'+ 2008 + '" selected>' + 2008 + '</option>');  //first object selected
for(i=2009;i<= 2011;i++)
   {
	  document.write('<option value="'+(i) + '">' + i + '</option>');
   }
document.write('</select>&nbsp;');
document.write('<select class="smtext" name="d-mth"  id="d-mth" onChange="javascript:setDay();">');
   //reset sidx
   sidx = 0;
//i = D3day.getMonth();
//alert(mthName(i));
//document.write('<option value="'+ mthName(0) + '" selected>' + mthName(i) + '</option>');  //first object selected
   for(i=0;i< 12;i++)
   {
	  document.write('<option value="'+(mthName(i)) + '"');
	  if(i == Dnow.getMonth()) document.write(' selected ');
	  document.write('>' + mthName(i) + '</option>');
   }
document.write('</select>&nbsp;<select class="smtext" name="d-day"  id="d-day"  >');
   for(i=1;i<= 31;i++)
   {
	  document.write('<option value="'+ i + '"');
	  if(i == Dnow.getDate()) document.write(' selected ');
	  document.write('>' + i + '</option>');
   }

document.write('</select>');

//setDay(mthName(D3day.getMonth()));
}



//to dynamically set date value for delivery date
function setDay(mth)
{
	//alert("in setDay");			
   var Yselect = document.getElementById("d-yr");				
   var Mselect = document.getElementById("d-mth");
   var Dselect = document.getElementById("d-day");
   var y = 2006;
   var m = mth;
   var slength=1;
   var d = 1;
   for(i=0;i<Yselect.length;i++)
  {
    //alert("check select: " + Yselect.options[i].value);
    if(Yselect.options[i].selected){ y=Yselect.options[i].value; break;}
  }
   for(j=0;j<Mselect.length;j++)
  {
    if(Mselect.options[j].selected){ m=Mselect.options[j].value; break;}
  }
  //alert("y="+y);
  //alert("m="+m);
  //check if leap year
  if(m == mthName(D3day.getMonth()) ) d=D3day.getDate();

if(y%4==0 && (y%100>0 || y%400==0))
  {
	  //leap year
	  Dselect.length = 29-d + 1;
  }
  else if(m =="Feb")
  {
	  Dselect.length = 28-d + 1;
  }
  else if(m == "Jan" || m == "Mar" || m == "May" || m == "Jul" || m == "Aug" || m == "Oct" || m == "Dec")
  {
      Dselect.length = 31-d + 1;
  }
  else {Dselect.length = 30-1+1;} //other days only 30
  //Dselect.options[0].value="Day";
  n = 0;
  //alert("date start:"+ d + ", monthdays:" + Dselect.length);
  while(n<Dselect.length)
  {
		  //Dselect.options[d].value=d;
		  Dselect.options[n++]= new Option(d,d);
		  d++;
  }
}


function setDayofwk()
{
   var Dselect = document.getElementById("d-day");
   var Mselect = document.getElementById("d-mth");
   var Yselect = document.getElementById("d-yr");
   var bdate =  new Date();
   for(j=0;j<Mselect.length;j++)
  {
    if(Mselect.options[j].selected){ bdate.setMonth(mthValue(Mselect.options[j].value)); break;}
  }
   for(j=0;j<Yselect.length;j++)
  {
    if(Yselect.options[j].selected){ bdate.setFullYear(Yselect.options[j].value); break;}
  }
   for(j=0;j<Dselect.length;j++)
  {
    if(Dselect.options[j].selected){ bdate.setDate(Dselect.options[j].value); break;}
  }
  //alert("in updatePDate: "+ wkday[bdate.getDay()]);
  setPreviewVal(document.getElementById("d-wkday"),wkday[bdate.getDay()]);
}

function mthName(val)
{
	return genmonths[val];
 }

function mthValue(mth)
{
	for(i =0; i< genmonths.length;i++)
	{
		if(genmonths[i] == mth) return i;
	}
 }

function getSelectVal(sctrl)
{
	var answer = "";
	for(i = 0; i < sctrl.length; i++)
	{
		if(sctrl.options[i].selected){ answer=sctrl.options[i].value; break;}
	}
	return answer;
}