var validityDates= {
	
	"04/04/2010":null,
	"02/04/2010":null,
	"05/04/2010":null,
	"27/12/2010":null,
	"31/05/2010":null,
	"01/06/2010":new Array("ffr001","ffr003","fbi001","fbi003","ffr012","fwl013","fbi001","fbi002","fbi003","fbi004","fbi005","fbi006","fbi007","fbi008","fbi009","fbi010","fbi011","fbi012","ffr001","ffr002","ffr003","ffr004","ffr005","ffr006","ffr007","ffr008","ffr009","ffr010","ffr011","ffr012","fwl013","fwl014","fwl015","fwl016","fwl017","fwl018","fwl019","fwl020","fwl021","fwl022","fwl023","fwl024","fvp001","fvp002","fvp003","fvp004","fvp005","fvp006","fvp007","fvp008","fvp009","fvp010","fvp011","fvp012","fbc015","fbc016","fbc017","fbc018","fbc019","fbc020","fbc021","fbc022","fbc023","fbc024","fbc025","fbc026","fsy013","fsy020","fsy018","fsy016","fbi003","fsy017","fsy019","fsy021","fsy014","fsy022","fsy023","fsy024","fsp013","fsp014","fsp015","fsp016","fsp017","fsp018","fsp019","fsp020","fsp021","fsp022","fsp023","fsp024","fsu013","fsu014","fsu015","fsu016","fsu017","fsu018","fsu019","fsu020","fsu021","fsu022","fsu023","fsu024")
	};

var pricingChanges = {
	"bulkhampers" :'',
	"2workingdays" :'',
	"7daydelivery" :'',
	"nextday" : '',
	"sameday" : '',
	"hampers" : ''
}

/* corphampers start */
function BulkHampersCheck(deliveryType, txtdate) {
	if ((txtdate=="13/3/2010") || (txtdate=="14/3/2010")){
		Venda.Ebiz.EnableDeliveryOption("li.bulkhampers");
		Venda.Ebiz.DisableDeliveryOption("li.hampers");
		Venda.Ebiz.DisableDeliveryOption("li.nextday");
		Venda.Ebiz.DisableDeliveryOption("li.sameday");
		Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
		Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
	} else {
		Venda.Ebiz.DisableDeliveryOption("li.bulkhampers");
	}
}

$(document).ready(function() {
	BulkHampersCheck('bulkhampers', $('input[name="orxorderdate"]').val());

	if (pricingChanges != null) {
		for (var pricingChange in pricingChanges) {
			if (pricingChanges[pricingChange] != null) {

				var pinky = String(($("li." + String(pricingChange)).html()))
				var myregex = new RegExp('<[^/].+?>.+?</.+?>', 'gmi');
				var tempOut = '';
				var tempTotal = new Array();
				while (tempOut != null) {
					 tempOut = myregex.exec(pinky)
					 if (tempOut != null) {
						  tempTotal[tempTotal.length] = tempOut[0];
					 }
				}
				tempTotal[tempTotal.length] = tempTotal[tempTotal.length - 1];
				tempTotal[tempTotal.length - 2] = pricingChanges[pricingChange];
				$("li." + String(pricingChange)).html(tempTotal.join(' '));

			}
		}
	}
});
/* corphampers END */
function SwapJsonKeyValues(input) {
    var one, output = {};
    for (one in input) {
        if (input.hasOwnProperty(one)) {
            output[input[one]] = one;
        }
    }
    return output;
}
var flippedDates = SwapJsonKeyValues(validityDates);

function parseToDate(ukDateString) {
	return new Date(Number(ukDateString.substring(6, 10)), (Number(ukDateString.substring(3, 5)) - 1), Number(ukDateString.substring(0, 2)), 12, 0, 0, 0);
}

function kindaInArray(elem, array) {
	if (array != null) {
		for (var i = 0, length = array.length; i < length; i++) {
			if (String(elem).indexOf(String(array[i])) == 0) {
				return i;
			}
		}
	}

	return -1;
}

function SkusOnPageAreValid(skuArray) {
	var hasValidSkus = true;
	if (skuArray != null) {
		var skusOnPage = $('input.pdxtdelivery[type="hidden"]');
		hasValidSkus = (skusOnPage.length > 0);
		skusOnPage.each(function() {
			var pageSku = String($(this).attr('name')).replace('pdxtdelivery', '');
			if (kindaInArray(pageSku, skuArray) < 0) {
				hasValidSkus = false;
				return false;
			}
		});
	}
	return hasValidSkus;
}

function TestForValidity(workingDate) {
	if (validityDates != null) {
		for (var validityDate in validityDates) {
			if (validityDates[validityDate] != null) {
				var tempDate = parseToDate(validityDate);
				if (tempDate.toUTCString() == workingDate.toUTCString()) {
					if (SkusOnPageAreValid(validityDates[validityDate])) {
						return YAHOO.widget.Calendar.DISPLAY_DAYS;
					}
				}
			}
		}
	}
	return null;
}

function ApplyInvalidity(Calendar, CalendarCustomRenderer) {
	if (validityDates != null) {
		for (var validityDate in validityDates) {
			var tempDate = parseToDate(validityDate);
			if ((validityDates[validityDate] == null) || (TestForValidity(tempDate) == null)) {
				Calendar.addRenderer(String(Number(tempDate.getMonth()) + 1) + '/' + String(tempDate.getDate()) + '/' + String(tempDate.getFullYear()), CalendarCustomRenderer);
			}
		}
	}
}


function IsExplicitlyInvalid(workingDate, cell, calendar) {
	if (validityDates != null) {
		for (var validityDate in validityDates) {
			var tempDate = parseToDate(validityDate);
			if (workingDate.toUTCString() == tempDate.toUTCString()) {
				if ((validityDates[validityDate] == null) || (TestForValidity(tempDate) == null)) {
					cell.innerHTML = calendar.buildDayLabel(workingDate);
					return "S";
				}
			}
		}
	}
	return null;
}

/**
* @fileoverview ebiz.js: A module used for client specific functionality
*
* This module defines a single symbol named "Venda.Ebiz"
* all ebiz utility functions are stored as properties of this namespace
* functions that are spacific this site shoudl be added to this file only.
*/

//Declare namespace for ebiz
Venda.namespace("Ebiz");

 /**
 * The following global variables (directly below) are NEEDED to support legacy javascript functions - DO NOT REMOVE! see RT#113376 for more details.
 * 1. shown
 * 2. hidden
 */

var shown = new Image();
shown.src = "/venda-support/images/bulleton.gif";
var hidden = new Image();
hidden.src = "/venda-support/images/bulletoff.gif";

 /**
 * Split a string so it can be displayed on multiple lines so it does not break display layout - used on order confirmation and order receipt page
 * @param {string} strToSplit string that needs to be split 
 * @param {Integer} rowLen length of row which will hold the string
 * @param {string} displayElem the html container which will display the splitted string
 */
Venda.Ebiz.splitString = function(strToSplit, rowLen, dispElem) {
    if(document.getElementById(dispElem)){
        var stringlist = new Array();
        while (strToSplit.length > rowLen) {
           stringlist.push( strToSplit.slice(0,rowLen));
           strToSplit=strToSplit.substr(rowLen);
        }
        if (strToSplit.length) {
            stringlist.push(strToSplit);
        }
        document.getElementById(dispElem).innerHTML = stringlist.join('<br>');
    }
};

 /**
 * A skeleton function for validating user extened fields - needs to be amended by the build team
 * @param {object} frmObj HTML form containing user extended field elements
 */
Venda.Ebiz.validateUserExtendedFields = function(frmObj) {
	if(frmObj) {
		return true;		
	}
};
Venda.Ebiz.GetPaddingDay = function(option){
	if(option=="sameday"){
		return new Array(1,0,0,0,0,0,0);
	}else if(option=="nextday"){
		return new Array(2,1,1,1,1,1,3);
	}else if(option=="hampers"){
		return new Array(2,2,2,2,5,4,3);
	}else if(option=="7daydelivery"){
		return new Array(8,7,7,7,7,7,7);
	}else if(option=="bulkhampers"){
		return new Array(0,0,0,0,0,0,0);
	}else{ /*default 2 working day */
		return new Array(2,2,2,2,2,4,3);
	}
};

/**
* A GetDeliverydate fucntion for generate delivery rate from FWDIILOG-8
* @param {string} todaydate ::: set server time - get value from (venda_time time=now,format=dd/mm/yyyy hh:mm)
* @param {boolean} isNextdateDelivery ::: true = Next Day Flower Delivery , false = Same Day Flower Delivery 
* @returns {Object} return object(Full month name, Full Week name,Date())
*/
Venda.Ebiz.GetDeliverydate = function(todaydate,deliveryoption){
  var DateTimeArray=todaydate.match( /^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{1,2})$/);
  var notovermsg ='';
  var DeliveryDate=new Date();
    var generatedDate={strMonth:"",strDay:"",strMessage:"",strTodayFulldate: todaydate,strTodayShortdate:"",strDeliveryShortdate:"",FullDate:DeliveryDate};
  if(DateTimeArray){        
      var Day = DateTimeArray[1];
      var Month = DateTimeArray[2]; 
      var Year = DateTimeArray[3]; 
      var Hour = DateTimeArray[4];
      var Minute = DateTimeArray[5];
      var TodayFulldate = Day+'/'+parseInt(Month)+'/'+Year;
      var weekdayString=new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
      var monthString=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
      var SameDayPadding=Venda.Ebiz.GetPaddingDay("sameday");
      var NextDayPadding=Venda.Ebiz.GetPaddingDay("nextday");
      var Next2DayPadding=Venda.Ebiz.GetPaddingDay("2workingdays");
	  var Next7DayPadding=Venda.Ebiz.GetPaddingDay("7daydelivery");
	  var HampersPadding=Venda.Ebiz.GetPaddingDay("hampers");
	  var BulkHampersPadding=Venda.Ebiz.GetPaddingDay("bulkhampers");
      DeliveryDate.setFullYear(Year,Month-1,Day);
      DeliveryDate.setHours(Hour,Minute,0);
      var Weekday = DeliveryDate.getDay();
      Hour=parseInt(Hour);
      Minute=parseInt(Minute);
      generatedDate.strTodayShortdate=TodayFulldate;
      var todaysTempDate = new Date(DeliveryDate.toUTCString());
      switch(deliveryoption){
        case "sameday":          
          /* Same Day Flower Delivery */
          if((Hour==14 && Minute>=30) || (Hour>15)){ /* not deliver on saturday over 15:30 :: set order to nextday */
            DeliveryDate.setDate(DeliveryDate.getDate()+1);              
          }else{
			notovermsg='(if you order by 3.00pm today) ';
		  }
		  DeliveryDate.setDate(DeliveryDate.getDate()+SameDayPadding[DeliveryDate.getDay()]);
          generatedDate.strMessage=notovermsg+"Or any day after this between Monday and Saturday.";
        break;
        case "nextday":
          /* Next Day Flower Delivery */
          if((Hour==16 && Minute>= 0) || Hour>16){  /* not deliver on satureday over 16:00 :: set order to nextday */
			DeliveryDate.setDate(DeliveryDate.getDate()+1);
          }else{
			notovermsg='(if you order by 4pm today) ';
		  }
          DeliveryDate.setDate(DeliveryDate.getDate()+NextDayPadding[DeliveryDate.getDay()]);
          generatedDate.strMessage=notovermsg+"Or any day after this between Tuesday and Saturday.";
        break;
		case "7daydelivery":
          /* 7 Day Flower Delivery */
		  if((Hour==16 && Minute>= 0) || Hour>16){  /* not deliver on satureday over 16:00 :: set order to nextday */
			DeliveryDate.setDate(DeliveryDate.getDate()+1);
          } else if (DeliveryDate.getDay()!=0) {
          	notovermsg='(if you order by 4pm today) ';
			}
          DeliveryDate.setDate(DeliveryDate.getDate()+Next7DayPadding[DeliveryDate.getDay()]);
          generatedDate.strMessage=notovermsg+"Or any day after this between Monday and Saturday.";
        break;
		case "hampers":
			if((Hour==16 && Minute>= 0) || Hour>16){/* not deliver on satureday over 16:00 :: set order to nextday */
				if(Weekday!=6 && Weekday !=0){DeliveryDate.setDate(DeliveryDate.getDate()+1);}
          }else{
			notovermsg='(if you order by 4pm today) ';
		  }
          DeliveryDate.setDate(DeliveryDate.getDate()+HampersPadding[DeliveryDate.getDay()]);
          generatedDate.strMessage= notovermsg+" Or any day after this between Tuesday and Friday.";
		break;
		case "bulkhampers":
			if((Hour==16 && Minute>= 0) || Hour>16){/* not deliver on satureday over 16:00 :: set order to nextday */
				if(Weekday!=6 && Weekday !=0){DeliveryDate.setDate(DeliveryDate.getDate()+1);}
          }else{
				if (Weekday == 0) {
			notovermsg='(if you order by 10am today) ';
				} else {
			notovermsg='(if you order by 4pm today) ';
			}
		  }
		  if (Weekday == 0 && Hour >= 10) {
          DeliveryDate.setDate(DeliveryDate.getDate()+BulkHampersPadding[DeliveryDate.getDay()]+1);
		  } else {
          DeliveryDate.setDate(DeliveryDate.getDate()+BulkHampersPadding[DeliveryDate.getDay()]);
        }				
          generatedDate.strMessage= notovermsg+" Or any day after this between Monday and Saturday.";
		break;
        default:
          /* 2 Working Days Flower Delivery */
          if((Hour==16 && Minute>= 0) || Hour>16){/* not deliver on satureday over 16:00 :: set order to nextday */
            if(Weekday!=6 && Weekday !=0){DeliveryDate.setDate(DeliveryDate.getDate()+1);}
          }else{
			notovermsg='(if you order by 4pm today) ';
		  }
          DeliveryDate.setDate(DeliveryDate.getDate()+Next2DayPadding[DeliveryDate.getDay()]);
          generatedDate.strMessage= notovermsg+"Or any day after this between Tuesday and Saturday.";
      }
	  var lowerBound = todaysTempDate.getDate();
	  var upperBound = DeliveryDate.getDate();
	  for (var dayWalker = lowerBound ; dayWalker < upperBound ; dayWalker++) {
			var formattedDate = (new Date(todaysTempDate.toUTCString()));
			formattedDate.setDate(dayWalker);
			var tmonth = ((formattedDate).getMonth() + 1);
			var tyear = (formattedDate).getFullYear();
			var tday = (formattedDate).getDate();
         var tformat = (tday < 10 ? '0' : '') + String(tday) + '/' + (tmonth < 10 ? '0' : '') + String(tmonth) + '/' + String(tyear);
         var skuArray = validityDates[tformat];
         if (skuArray != null && SkusOnPageAreValid(skuArray)) {
             if ((Weekday == 0) && (Hour >= 10) && (tformat == (Day + '/' + Month + '/' + Year))) {
                 Venda.Ebiz.DisableDeliveryOption("li.bulkhampers");
             } else {
                 DeliveryDate = formattedDate;
             }
             break;
		  }
	  }

      generatedDate.strDeliveryShortdate=DeliveryDate.getDate()+"/"+(DeliveryDate.getMonth()+1)+"/"+DeliveryDate.getFullYear();
      //disableSameday=(generatedDate.strDeliveryShortdate==generatedDate.strTodayShortdate)? false:true;
      generatedDate.strMonth=monthString[DeliveryDate.getMonth()];
      generatedDate.strDay=weekdayString[DeliveryDate.getDay()];
      generatedDate.FullDate=DeliveryDate;
      return generatedDate;
  }else{/*invalid date format */
    return null;
  }
};

/**
* Validate date format only DD/MM/YY and day not over 29, 30 and 31
* @param {string} Orxfuneraldate ::: date format DD/MM/YY
*/
Venda.Ebiz.validateDateformat=function(Orxfuneraldate){
    if(Orxfuneraldate){
        var month = Orxfuneraldate[2];
        var day = [Orxfuneraldate[1],31,29,31,30,31,30,31,31,30,31,30,31];
        if ((month>=1 && month<=12) && (day[0]>=1 && day[0]<=day[eval(month)])) {
            return true;
        }
    }
    return false;
};

/**
* Validate time format only HH:MM (Hour:Minute), HH = 00-23, MM = 00-59
* @param {string} Orxfuneraldate ::: date format DD/MM/YY
*/
Venda.Ebiz.validateTimeformat=function(Orxfuneraltime){
    if(Orxfuneraltime){
        var hour=parseInt(Orxfuneraltime[1]);
        var minute=parseInt(Orxfuneraltime[2]);
        if((hour>=0 && hour<=23) && (minute>=0 && minute<=59)){
            return true;
        }
    }
    return false;
};

Venda.Ebiz.InitOrxfuneralorder=function(){
	if(jQuery("input[@name='orxfuneralorder']").attr("checked")){
		jQuery("#orderconfirmation #orxfields_313, #orderconfirmation #orxfields_314,#orderconfirmation #orxfields_315,#orderconfirmation #orxfields_316").show();
	}
    jQuery("input[@name='orxfuneralorder']").click(function(){        
        if(jQuery(this).attr("checked")){
            jQuery("#orderconfirmation #orxfields_313, #orderconfirmation #orxfields_314,#orderconfirmation #orxfields_315,#orderconfirmation #orxfields_316").show();
        }else{
            jQuery("#orderconfirmation #orxfields_313, #orderconfirmation #orxfields_314,#orderconfirmation #orxfields_315,#orderconfirmation #orxfields_316").hide();
        }
        jQuery("#orderconfirmation #orxfields_313 input, #orderconfirmation #orxfields_314 input,#orderconfirmation #orxfields_315 input,#orderconfirmation #orxfields_316 input").attr("value","");
    });
    jQuery("#orderconfirmation #orxfields_313 label,#orderconfirmation #orxfields_314 label,#orderconfirmation #orxfields_315 label").append('<span class="require">*</span>');
};

Venda.Ebiz.InitOrxweddingorder=function(){
	if(jQuery("input[@name='orxweddingorder']").attr("checked")){
		jQuery("#orderconfirmation #orxfields_318").show();
	}
    jQuery("input[@name='orxweddingorder']").click(function(){        
        if(jQuery(this).attr("checked")){
            jQuery("#orderconfirmation #orxfields_318").show();
        }else{
            jQuery("#orderconfirmation #orxfields_318").hide();
        }
        jQuery("#orderconfirmation #orxfields_318").attr("value","");
    });
    jQuery("#orderconfirmation #orxfields_318 label").append('<span class="require">*</span>');
};

$(document).ready(function(){
	jQuery(".Lcattree a:last").addClass("last");
	jQuery("table.orderdetails tbody tr:last").addClass("last");	
}); 

Venda.Ebiz.EnableDeliveryOption = function(jQueryClass){
	jQuery(jQueryClass+" input[type=radio]").removeAttr("disabled");
	jQuery(jQueryClass).show();
};
Venda.Ebiz.DisableDeliveryOption = function(jQueryClass){
	jQuery(jQueryClass+" input[type=radio]").attr("disabled", "disabled");
	jQuery(jQueryClass+" input[type=radio]").removeAttr("checked");
	jQuery(jQueryClass).hide();
};
Venda.Ebiz.setCookie = function(Cookiename,Cookievalue){
	var jar = new CookieJar({
          expires: 10*24*60*60,   // seconds
          path: '/',
		  secure:'secure'
   });
   jar.put(Cookiename, Cookievalue);
};
Venda.Ebiz.readCookie = function(name){
	var jar = new CookieJar();
	var Cookievalue = jar.get(name);
	if(Cookievalue!=""){
		return Cookievalue;
	}else{
		return false;
	}
};
Venda.Ebiz.removeCookie = function(name){
	var jar = new CookieJar({expires: 1,path: '/'});
	jar.put(name,"");
};

Venda.Ebiz.OrcfDelivery=function(todayDate){
	var Deliverytype=0;
	var Deliverytxt=new Array("sameday","nextday","2workingdays","7daydelivery","hampers");
	jQuery("input[name=orxorderdate]").attr("id","orxorderdate");
	jQuery("input.pdxtdelivery").each(function(index){		
		if(parseInt(jQuery(this).attr("value"))>Deliverytype){Deliverytype=parseInt(jQuery(this).attr("value"));}
	});
	if(document.getElementById("orxorderdate").value==""){
		jQuery(".deliveryrate input[type=radio]").removeAttr("checked");
	}else{
		var torxorderdate=document.getElementById("orxorderdate").value;
		var orxorderdateDateArray=torxorderdate.match( /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
	}
	var EstimateDelivery=Venda.Ebiz.GetDeliverydate(todayDate,Deliverytxt[Deliverytype]);
	var minDate=(EstimateDelivery.FullDate.getMonth()+1)+'/'+EstimateDelivery.FullDate.getDate()+'/'+EstimateDelivery.FullDate.getFullYear();
	/* Deliverytype=sameday and estimate delivery date != current date, Deliverytype=nextday or 2workingdays */
	Venda.Ebiz.CreateCalendar(Deliverytxt[Deliverytype],"calendar","orxorderdate",minDate,EstimateDelivery);
	document.getElementById("mindate").innerHTML=EstimateDelivery.FullDate.getDate()+"/"+(EstimateDelivery.FullDate.getMonth()+1)+'/'+EstimateDelivery.FullDate.getFullYear();
	var DateTimeArray=todayDate.match( /^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{1,2})$/);
	var Hour = parseInt(DateTimeArray[4]);
	var Minute = parseInt(DateTimeArray[5]);	
	if(document.getElementById("orxorderdate").value!=""){
		jQuery(".y"+orxorderdateDateArray[3]+" .m"+(orxorderdateDateArray[2])+" .d"+orxorderdateDateArray[1]).addClass("selected");
		TempminDate=EstimateDelivery.FullDate.getDate()+'/'+(EstimateDelivery.FullDate.getMonth()+1)+'/'+EstimateDelivery.FullDate.getFullYear();
		if(jQuery(".y"+orxorderdateDateArray[3]+" .m"+(orxorderdateDateArray[2])+" .d"+orxorderdateDateArray[1]).hasClass("sameday")){
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
			Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
			Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
		}else if(jQuery(".y"+orxorderdateDateArray[3]+" .m"+(orxorderdateDateArray[2])+" .d"+orxorderdateDateArray[1]).hasClass("nextday")){
			if(Deliverytxt[Deliverytype]=="sameday"){
				Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
				Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			}else if((Hour==16 && Minute>= 0) || Hour>16){
				Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
				Venda.Ebiz.DisableDeliveryOption("li.nextday");
			}else{
				Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
				Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
			}
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
		}else{ /* 2wd */
			var NextDate=new Date();
			var preNextDate=new Date();
			var Next2DayPadding=Venda.Ebiz.GetPaddingDay("2workingdays");
			var DateTimeArray=todayDate.match( /^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{1,2})$/);			
			NextDate.setFullYear(DateTimeArray[3],DateTimeArray[2]-1,DateTimeArray[1]);
			var TodayDayWeekday=NextDate.getDay();
			preNextDate.setFullYear(DateTimeArray[3],DateTimeArray[2]-1,DateTimeArray[1]);
			if(Deliverytype==2 && ((Hour==16 && Minute>= 0) || Hour>16)){
				if(TodayDayWeekday> 0){NextDate.setDate(NextDate.getDate()+1);}
				NextDate.setDate(NextDate.getDate()+Next2DayPadding[NextDate.getDay()]);
			}else if(Deliverytype==0 && TodayDayWeekday== 5){
				NextDate.setDate(NextDate.getDate()+Next2DayPadding[NextDate.getDay()]-1);
			}else{
				NextDate.setDate(NextDate.getDate()+Next2DayPadding[NextDate.getDay()]);
			}
			preNextDate.setDate(preNextDate.getDate()+Next2DayPadding[preNextDate.getDay()]-1);
			var NextDatestr=NextDate.getDate()+"/"+(NextDate.getMonth()+1)+"/"+NextDate.getFullYear();
			var preNextDatestr=preNextDate.getDate()+"/"+(preNextDate.getMonth()+1)+"/"+preNextDate.getFullYear();
			if(NextDatestr==document.getElementById("orxorderdate").value){
				Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			}else{
				Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
			}
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
		}
		if(Deliverytype==4){
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
			Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
		}else{
			Venda.Ebiz.DisableDeliveryOption("li.hampers");
		}
		jQuery(".deliveryrate").show();
	}else{
		if((Deliverytype==0 && (EstimateDelivery.strTodayShortdate!=EstimateDelivery.strDeliveryShortdate && EstimateDelivery.FullDate.getDay()!=1)) || Deliverytype==1 || Deliverytype==2){
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
		}
		if(Deliverytype==2){
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
		}
		if(Deliverytype==4){
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
			Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
		}else{
			Venda.Ebiz.DisableDeliveryOption("li.hampers");
		}
		jQuery(".deliveryrate").hide();
	}
};

Venda.Ebiz.CreateCalendar=function(deliveryType,contrainerID,targetID,Targetmindate,EstimateDelivery){
	var DateArray=Targetmindate.match( /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/); /* mm/dd/yyyy */
	if(document.getElementById("orxorderdate").value!=""){
		var selecteddatearray=document.getElementById("orxorderdate").value.match( /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/); /* dd/mm/yyyy*/
		var SetPagedate=selecteddatearray[2]+"/"+selecteddatearray[3];
	}else{
		var SetPagedate=DateArray[1]+"/"+DateArray[3];
	}
	/* get current date information */
	var Currentweekday=EstimateDelivery.FullDate.getDay();
	var CurrentHour=EstimateDelivery.FullDate.getHours();
	var CurrentMinute=EstimateDelivery.FullDate.getMinutes();
	
	var DateTimeArray=EstimateDelivery.strTodayFulldate.match( /^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{1,2})$/);
	var TodayDay = DateTimeArray[1];
	var TodayMonth = DateTimeArray[2]; 
	var TodayYear = DateTimeArray[3]; 
	var TodayHour = parseInt(DateTimeArray[4]);
	var TodayMinute = parseInt(DateTimeArray[5]);
	var TodayDate=new Date();
	TodayDate.setFullYear(TodayYear,TodayMonth-1,TodayDay);
	var TodayDayWeekday=TodayDate.getDay();
	var Next2DayPadding=Venda.Ebiz.GetPaddingDay("2workingdays");
	
	var CalendarCustomRenderer = function(workingDate, cell) {
		var validityResult = TestForValidity(workingDate);
		if (validityResult != null) {
			return validityResult;
		}
		var shorworkingDate=(workingDate.getMonth()+1)+"/"+workingDate.getDate()+"/"+workingDate.getFullYear();
		if(shorworkingDate==Targetmindate){
			return YAHOO.widget.Calendar.DISPLAY_DAYS;
		}else{
			cell.innerHTML = this.buildDayLabel(workingDate);
			YAHOO.util.Dom.addClass(cell, "calcell");
			return YAHOO.widget.Calendar.STOP_RENDER;
		}		
	}
	var CalendarhandleSelect = function(type,args,obj) {
		var dates = args[0];var date = dates[0];
		var year = date[0], month = date[1], day = date[2];
		if (Calendar.getSelectedDates().length > 0) {
			var selDate = Calendar.getSelectedDates()[0];      
			var wStr = Calendar.cfg.getProperty("WEEKDAYS_LONG")[selDate.getDay()];      
			var dStr = selDate.getDate();
			var mStr = Calendar.cfg.getProperty("MONTHS_LONG")[selDate.getMonth()];
			var yStr = selDate.getFullYear();
			var nday = selDate.getDate();
			var nmonth = selDate.getMonth()+1;
			var nyear= selDate.getFullYear();
		}
		var txtDate1 = document.getElementById(targetID);
		var txtdate = wStr + " " + dStr + " " + mStr + " " + yStr;
		txtdate = nday + "/" + nmonth + "/" + nyear;		
		txtDate1.value = txtdate;
		var id="Calcalendar_cell"+YUICalgetCellIndex(Calendar.getSelectedDates()[0]);
		var ids=document.getElementById(id);		
		jQuery(".deliveryrate input[type=radio]").removeAttr("checked");
		
		Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
		if(YAHOO.util.Dom.hasClass(ids,"sameday")){
			/* Show only same day delivery */
			if(((TodayHour==14 && TodayMinute>=30) || (TodayHour>15))){
				Venda.Ebiz.DisableDeliveryOption("li.sameday");
				Venda.Ebiz.EnableDeliveryOption("li.nextday");
			}else{
				Venda.Ebiz.EnableDeliveryOption("li.sameday");
				Venda.Ebiz.DisableDeliveryOption("li.nextday");
			}
			Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
			Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
		}else if(YAHOO.util.Dom.hasClass(ids,"nextday")){
			/* Show only Next day delivery */
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			if(deliveryType=="sameday"){
				Venda.Ebiz.EnableDeliveryOption("li.nextday");
				Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
			}else if(((TodayHour==16 && TodayMinute>=0) || (TodayHour>16))){
				Venda.Ebiz.DisableDeliveryOption("li.nextday");
				Venda.Ebiz.EnableDeliveryOption("li.2workingdays");
				Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			}else{
				Venda.Ebiz.EnableDeliveryOption("li.nextday");
				Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
				Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			}			
		}else if(deliveryType=="7daydelivery"){
			/* Show only 7 day delivery */
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
			Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
			Venda.Ebiz.EnableDeliveryOption("li.7daydelivery");			
		}else{
			/* Show only 2 working day delivery */
			TempSelecteddate =  nmonth + "/" + nday + "/" + nyear;			
			var NextDate=new Date();
			var preNextDate=new Date();
			NextDate.setDate(TodayDate.getDate()+Next2DayPadding[TodayDate.getDay()]);
			preNextDate.setDate(TodayDate.getDate()+Next2DayPadding[TodayDate.getDay()]-1);
			var NextDatestr=(NextDate.getMonth()+1)+"/"+NextDate.getDate()+"/"+NextDate.getFullYear();
			var preNextDatestr=(preNextDate.getMonth()+1)+"/"+preNextDate.getDate()+"/"+preNextDate.getFullYear();
			if(deliveryType=="sameday" && TodayDayWeekday==5 && YAHOO.util.Dom.hasClass(ids,"wd1") && preNextDatestr==TempSelecteddate){
				Venda.Ebiz.EnableDeliveryOption("li.2workingdays");
				Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			}else{
				if(NextDatestr==TempSelecteddate){
					if(deliveryType=="sameday" && TodayDayWeekday==5){
						Venda.Ebiz.EnableDeliveryOption("li.7daydelivery");
						Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
					}else{
						Venda.Ebiz.EnableDeliveryOption("li.2workingdays");
						Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
					}
				}else if(TempSelecteddate==Targetmindate){
					Venda.Ebiz.EnableDeliveryOption("li.2workingdays");
					Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
				}else{
					Venda.Ebiz.EnableDeliveryOption("li.7daydelivery");
					Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
				}
			}
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.hampers");
		}

		BulkHampersCheck(deliveryType, txtdate);

		if(deliveryType=="hampers"){		
			Venda.Ebiz.EnableDeliveryOption("li.hampers");
			Venda.Ebiz.DisableDeliveryOption("li.nextday");
			Venda.Ebiz.DisableDeliveryOption("li.sameday");
			Venda.Ebiz.DisableDeliveryOption("li.7daydelivery");
			Venda.Ebiz.DisableDeliveryOption("li.2workingdays");
		}else{
			Venda.Ebiz.DisableDeliveryOption("li.hampers");
		}
		jQuery(".deliveryrate").show();		
	};
	/* YUI calendar get CellIndex from YUI Calendar v.2.7.0*/
	var YUICalgetCellIndex=function(I){var H=-1;if(I){var G=I.getMonth(),N=I.getFullYear(),M=I.getDate(),K=Calendar.cellDates;for(var J=0;J<K.length;++J){var L=K[J];if(L[0]===N&&L[1]===G+1&&L[2]===M){H=J;break;}}}return H;}
	var marknextday = function(workingDate, cell) {
		var validityResult = IsExplicitlyInvalid(workingDate, cell, this);
		if (validityResult != null) {
			return validityResult;
		}

		YAHOO.util.Dom.addClass(cell, "nextday");
		YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_SELECTABLE);
		cell.innerHTML = '<a href="#" class="' + this.Style.CSS_CELL_SELECTOR + '">' + this.buildDayLabel(workingDate) + "</a>";
		return YAHOO.widget.Calendar.STOP_RENDER;
	};
	var marksameday = function(workingDate, cell) {
		var validityResult = IsExplicitlyInvalid(workingDate, cell, this);
		if (validityResult != null) {
			return validityResult;
		}

		YAHOO.util.Dom.addClass(cell, "sameday");
		YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_SELECTABLE);
		cell.innerHTML = '<a href="#" class="' + this.Style.CSS_CELL_SELECTOR + '">' + this.buildDayLabel(workingDate) + "</a>";
		return YAHOO.widget.Calendar.STOP_RENDER;
	};	
	/* YUI Calendar: initial config and create calendar - set mindate and pagedate */
	var Calendar = new YAHOO.widget.Calendar("Cal"+contrainerID, contrainerID,{pagedate:SetPagedate,mindate:Targetmindate});	
	/* hide week that out of current month */
	Calendar.cfg.queueProperty("hide_blank_weeks",true);
	/* add select/click event to each date */
	Calendar.selectEvent.subscribe(CalendarhandleSelect, Calendar, true);
	/* mark posible nextday date */
	Calendar.addWeekdayRenderer(1,CalendarCustomRenderer);

	ApplyInvalidity(Calendar, CalendarCustomRenderer);

	if(deliveryType=="sameday"){		
		if((TodayHour==14 && TodayMinute>=30) || (TodayHour>15)){
			Calendar.addRenderer(Targetmindate,marknextday);
		}else{
			if(TodayDayWeekday>0){
				Calendar.addRenderer(Targetmindate,marksameday);
				var NextDayPadding=new Array(1,1,1,1,1,1,2);/*padding date*/
				var nextDate= new Date();				
				nextDate.setFullYear(EstimateDelivery.FullDate.getFullYear() , EstimateDelivery.FullDate.getMonth(),EstimateDelivery.FullDate.getDate()+NextDayPadding[Currentweekday]);
				var nextDatetxt = (nextDate.getMonth()+1)+"/"+nextDate.getDate()+"/"+nextDate.getFullYear();
				Calendar.addRenderer(nextDatetxt,marknextday);
			}else{
				Calendar.addRenderer(Targetmindate,marknextday);			
			}
		}
	}
	if(deliveryType=="nextday"){
		Calendar.addRenderer(Targetmindate,marknextday);
	}
	
	/* disable delivers on mon */
	if(deliveryType=="2workingdays" || deliveryType=="nextday" || deliveryType=="hampers"){Calendar.addWeekdayRenderer(2,CalendarCustomRenderer);}
	/* disable delivers on Tue) */
	if((deliveryType=="2workingdays" || deliveryType=="hampers") && (Currentweekday==1)){Calendar.addWeekdayRenderer(3,CalendarCustomRenderer);}
	/* disable delivers on Sat  */
	if(deliveryType=="hampers"){Calendar.addWeekdayRenderer(7,CalendarCustomRenderer);}
	/* render calendar */
	Calendar.render();
};

Venda.Ebiz.Synclock=function(){
	DeliverytimeDiff++;
	setTime=setTimeout('Venda.Ebiz.Synclock()',1000);
};

//pre-select add delivery address in register process
jQuery(document).ready(function(){
	jQuery("div.addcontactaddress input#differentaddress").attr("checked",true);
});

//pre-select news checkbox in register process
jQuery(document).ready(function(){
	jQuery("div.addcontactaddress input#blkemail").attr("checked",true);
});