
var itinerarySummary;function getSummary(id)
{var a=document.getElementById(id);return a.name;}
function createHiddenInput(name,value)
{var inp=document.createElement("input");inp.type="hidden";inp.name=name;inp.value=value;return inp;}
function wrapInDiv(els,id,cls)
{var div=document.createElement("div");for(i in els)div.appendChild(els[i]);if(id)div.id=id;if(cls)div.className=cls;return div;}
function createGroupedLabelField(lblVal,fldVal,id,cls)
{var lbl=document.createElement("label");lbl.innerHTML=lblVal;var fld=document.createElement("span");fld.innerHTML=fldVal;return wrapInDiv([lbl,fld],id,cls);}
function createBoxedLongTextField(lblVal,fldVal,id,cls)
{var fieldset=document.createElement("fieldset");fieldset.innerHTML=fldVal;var legend=document.createElement("legend");legend.innerHTML=lblVal;fieldset.appendChild(legend);if(id)fieldset.id=id;if(cls)fieldset.className=cls;return fieldset;}
var tydata;function callback_resStatus(data)
{tydata=data;var el=document.getElementById("ReservationStatus");var flds=[];flds.push(createGroupedLabelField("Status:","Deposit <a href='#' title='Paypal Transaction id: "+data.paymentState.paypal_txn_id+"'>"+data.paymentState.className+"</a> $"+formatCurrency(data.paymentState.paypal_auth_amount)+" <sup>[<a href='index.htm?key=R1016160#ThankYou'>Update Status</a>]</sup>"));flds.push(createGroupedLabelField("Reservation placed:",data.created));flds.push(createGroupedLabelField("Name:",data.fnam+" "+data.lnam));flds.push(createGroupedLabelField("Email:",data.email));flds.push(createGroupedLabelField("Arrival:",data.arrival));flds.push(createBoxedLongTextField("Notes:",data.notes));el.appendChild(wrapInDiv(flds,"ResStatFlds",null));}
function DisplayReservationStatus()
{var search=window.location.search.substring(1);var sArr=search.split("&");var dct=new Object();for(var x=0;x<sArr.length;x++)
{var sArg=sArr[x].split('=');dct[sArg[0]]=sArg[1];}
var key=dct["key"];if(key)
{appendScript("http://reserve-it.appspot.com/reservations/get/json",{"key":key,"callback":"callback_resStatus"});}}
function callback_reserve(data)
{var itineraryForm=document.getElementById('itineraryForm');var itinerarySummary=document.getElementById('itinerarySummary');var lblKey=document.createElement('label');lblKey.innerHTML="Status:";var spanKey=document.createElement('span');spanKey.innerHTML=data.status;var aKey=document.createElement('a');aKey.href="/reservations/"+data.key;aKey.innerHTML="(update status)";var divKey=wrapInDiv([lblKey,spanKey,aKey],null,"field");itinerarySummary.appendChild(divKey);var lblName=document.createElement('label');lblName.innerHTML="Name:";lblName.htmlFor="name";var spanName=document.createElement('span');spanName.innerHTML=data.fnam+" "+data.lnam;spanName.id="name";spanName.style.clear="left";var divName=wrapInDiv([lblName,spanName],null,"field");itinerarySummary.appendChild(divName);var lblEmail=document.createElement('label');lblEmail.innerHTML="Email:";lblEmail.htmlFor="email";var spanEmail=document.createElement('span');spanEmail.innerHTML=data.email;spanEmail.id="email";var divEmail=wrapInDiv([lblEmail,spanEmail],null,"field");itinerarySummary.appendChild(divEmail);var lblArrival=document.createElement('label');lblArrival.innerHTML="Arrival:";lblArrival.htmlFor="arrival";var spanArrival=document.createElement('span');spanArrival.innerHTML=data.arrival;spanArrival.id="arrival";var divArrival=wrapInDiv([lblArrival,spanArrival],null,"field");itinerarySummary.appendChild(divArrival);var table=document.createElement('table');table.cellspacing=0;table.cellpadding=1;var thead=document.createElement('thead');thead.style.fontSize="smaller";var thQty=document.createElement('th');thQty.innerHTML="Qty";var thSummary=document.createElement('th');thSummary.innerHTML="Summary";var thGuests=document.createElement('th');thGuests.innerHTML="Guests";var thPriceper=document.createElement('th');thPriceper.innerHTML="Price";var thSub=document.createElement('th');thSub.innerHTML="Total";thead.appendChild(thQty);thead.appendChild(thSummary);thead.appendChild(thGuests);thead.appendChild(thPriceper);thead.appendChild(thSub);table.appendChild(thead);var tbody=document.createElement('tbody');var total=0;for(var i=0;i<data.items.length;i++)
{var tr=document.createElement('tr');var tdQty=document.createElement('td');tdQty.style.textAlign="center";var tdSummary=document.createElement('td');var tdGuests=document.createElement('td');tdGuests.style.textAlign="center";var tdPriceper=document.createElement('td');tdPriceper.style.textAlign="right";var tdSub=document.createElement('td');tdSub.style.textAlign="right";var spanID="<span>["+data.items[i].id+"]</span>";tdPriceper.innerHTML=formatCurrency(data.items[i].priceper,false);tdSummary.innerHTML=spanID+" "+getSummary(data.items[i].id);if(data.items[i].type=='accommodation')
{tdQty.innerHTML=data.items[i].nights;tdGuests.innerHTML=data.items[i].occupants;var sub=data.items[i].nights*data.items[i].occupants*data.items[i].priceper;tdSub.innerHTML=formatCurrency(sub,false);total+=sub;}
else
{tdQty.innerHTML=data.items[i].units;tdGuests.innerHTML="&nbsp;";var sub=data.items[i].units*data.items[i].priceper;tdSub.innerHTML=formatCurrency(sub,false);total+=sub;}
tr.appendChild(tdQty);tr.appendChild(tdSummary);tr.appendChild(tdGuests);tr.appendChild(tdPriceper);tr.appendChild(tdSub);tbody.appendChild(tr);}
table.appendChild(tbody);var tfoot=document.createElement('tfoot');var dep=0.25*total;var trTot=document.createElement('tr');var tdTotLbl=document.createElement('td');tdTotLbl.style.textAlign="right";tdTotLbl.colSpan="4";var tdTot=document.createElement('td');tdTot.style.textAlign="right";tdTotLbl.innerHTML="<span style='font-size:smaller;color:red;'>[in US dollars]</span> Total";tdTot.innerHTML=formatCurrency(total,false);trTot.appendChild(tdTotLbl);trTot.appendChild(tdTot);tfoot.appendChild(trTot);var trDep=document.createElement('tr');var tdDepLbl=document.createElement('td');tdDepLbl.style.textAlign="right";tdDepLbl.colSpan="4";var tdDep=document.createElement('td');tdDep.style.textAlign="right";tdDepLbl.innerHTML="<span style='font-size:smaller;color:red;'>[25% required online]</span> Deposit";tdDep.innerHTML=formatCurrency(dep,false);trDep.appendChild(tdDepLbl);trDep.appendChild(tdDep);tfoot.appendChild(trDep);var trBal=document.createElement('tr');var tdBalLbl=document.createElement('td');tdBalLbl.style.textAlign="right";tdBalLbl.colSpan="4";var tdBal=document.createElement('td');tdBal.style.textAlign="right";tdBalLbl.innerHTML="<span style='font-size:smaller;color:red;'>[due upon arrival]</span> Balance";tdBal.innerHTML=formatCurrency(total-(0.25*total),false);trBal.appendChild(tdBalLbl);trBal.appendChild(tdBal);tfoot.appendChild(trBal);table.appendChild(tfoot);itinerarySummary.appendChild(table);var qqform=document.createElement("form");qqform.action="https://www.paypal.com/cgi-bin/webscr";qqform.method="post";var icmd=createHiddenInput("cmd","_xclick");var ibiz=createHiddenInput("business","paypal@kiteandsurfperu.com");var ilc=createHiddenInput("lc","CA");var iitemname=createHiddenInput("item_name","deposit");var icustom=createHiddenInput("custom","");var iinvoice=createHiddenInput("invoice",data.key);var iamount=createHiddenInput("amount",dep);var icurrency_code=createHiddenInput("currency_code","USD");var ifirst_name=createHiddenInput("first_name",data.fnam);var ilast_name=createHiddenInput("last_name",data.lnam);var inotify_url=createHiddenInput("notify_url","http://reserve-it.appspot.com/reservations/ipn/");var ipaymentaction=createHiddenInput("paymentaction","authorization");var ipage_style=createHiddenInput("page_style","KiteandSurfPeru_1");var iimage_url=createHiddenInput("image_url","http://kiteandsurfperu.com/g/logo.150x50.png");var ino_note=createHiddenInput("no_note","1");var ireturn=createHiddenInput("return","http://kiteandsurfperu.com/index.htm?key="+escape(data.key)+"#ThankYou");var icancel_return=createHiddenInput("cancel_return","http://reserve-it.appspot.com/reservations/cancel/?key="+escape(data.key));var ibn=createHiddenInput("bn","PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted");var submit=document.createElement("input");submit.type="image";submit.src="https://www.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif";submit.border="0";submit.name="submit";var qqimg=document.createElement("image");qqimg.border="0";qqimg.src="https://www.paypal.com/en_US/i/scr/pixel.gif";qqimg.width="1";qqimg.height="1";qqform.appendChild(icmd);qqform.appendChild(ibiz);qqform.appendChild(ilc);qqform.appendChild(iitemname);qqform.appendChild(icustom);qqform.appendChild(iinvoice);qqform.appendChild(ireturn);qqform.appendChild(iamount);qqform.appendChild(icurrency_code);qqform.appendChild(ifirst_name);qqform.appendChild(ilast_name);qqform.appendChild(inotify_url);qqform.appendChild(ipaymentaction);qqform.appendChild(ino_note);qqform.appendChild(ireturn);qqform.appendChild(icancel_return);qqform.appendChild(ibn);qqform.appendChild(submit);qqform.appendChild(qqimg);itinerarySummary.appendChild(qqform);itineraryForm.style.display="none";itinerarySummary.style.display="block";}
function getJSON()
{var jsonstr;var dct={};dct['account']=this.account.value;dct['arrival']=this.arrival.value;dct['nights']=this.nights.value;dct['email']=this.email.value;dct['fnam']=this.fnam.value;dct['lnam']=this.lnam.value;dct['notes']=this.notes.value;dct['items']=[];var Activities=document.getElementById('Activity Reservations');var Accommodation=document.getElementById('Accommodation Reservations');var inputsActivities=Activities.getElementsByTagName('input');for(var i=0;i<inputsActivities.length;i++)
if(inputsActivities[i].name=="reservationItem"||inputsActivities[i].className=="reservationItem")
dct['items'].push(JSON.parse(inputsActivities[i].value));var inputsAccms=Accommodation.getElementsByTagName('input');for(var j=0;j<inputsAccms.length;j++)
if(inputsAccms[j].name=="reservationItem"||inputsAccms[j].className=="reservationItem")
dct['items'].push(JSON.parse(inputsAccms[j].value));jsonstr=JSON.stringify(dct);return jsonstr;}
function appendScript(src,args)
{var script=document.createElement("script");script.type="text/javascript";script.src=src;if(args)
{script.src+="?";for(var a in args)
{script.src+=escape(a)+"="+escape(args[a])+"&";}}
document.body.appendChild(script);}
function uploadJSON()
{var jsonEnc=escape(this.getJSON());var script=document.createElement("script");script.type="text/javascript";script.src=this.getAttribute("reserve-it:action");script.src+="?reservationSummary="+jsonEnc;var callback=this.getAttribute("reserve-it:callback");if(callback)script.src+="&callback="+escape(callback);this.appendChild(script);}
function initItinerary()
{itinerarySummary=document.getElementById('itineraryForm');itinerarySummary.getJSON=getJSON;itinerarySummary.uploadJSON=uploadJSON;var buttonNext=document.getElementById("buttonNext");buttonNext.onclick=onbuttoNextClick;}
function toggleFulfilled(inp,exp)
{var rx=/ fulfilled/;if(typeof(exp)=='boolean')
{if(exp)
{if(rx.test(inp.className))inp.className=inp.className.replace(rx,' fulfilled');else inp.className+=" fulfilled";}
else if(rx.test(inp.className))inp.className=inp.className.replace(rx,'');}
else
{if(rx.test(inp.className))inp.className=inp.className.replace(rx,'');else inp.className+=" fulfilled";}}
function cnvrtDDMMYYYYtDate(str)
{var dd=parseInt(str.toString().substring(0,3));var mm=parseInt(str.toString().substring(3,6))-1;var yyyy=parseInt(str.toString().substring(6,10));return new Date(yyyy,mm,dd);}
function cnvrtDatetDDMMYYYY(dt){var d=dt.getDate();var m=dt.getMonth()+1;var y=dt.getFullYear();var dd;if(d<10)dd="0"+d+" ";else dd=d+" ";if(m<10)mm="0"+m+" ";else mm=m+" ";return dd+mm+y;}
function addDays(myDate,days){return new Date(myDate.getTime()+days*24*60*60*1000);}
function daysDiff(dtpair){var diff=dtpair.t.getTime()-dtpair.i.getTime();return Math.floor(diff/1000/60/60/24);}
function hiliteField(fieldName){document.forms[0][fieldName].select();}
function validateFieldError(strMessage,el)
{this.message=strMessage;this.element=el;}
function validateArrivalFieldError(strMessage,el)
{this.message=strMessage;this.element=el;}
function validateField(inp,alertMsg)
{val=inp.value;rx=new RegExp(inp.getAttribute("reserve-it:valid"));if(rx.test(val)){toggleFulfilled(inp,true);return true;}
else{toggleFulfilled(inp,false);throw new validateFieldError(inp.getAttribute("reserve-it:invalidMsg").toString(),inp);}}
function validateArrivalField(inp)
{var val=inp.value;var dtArr=cnvrtDDMMYYYYtDate(val);var lead=parseInt(inp.getAttribute("reserve-it:leaddays"));var dtCurrent=new Date();var dtLead=addDays(dtCurrent,lead);if(dtLead<dtArr){toggleFulfilled(inp,true);return true;}
else{toggleFulfilled(inp,false);throw new validateFieldError(inp.getAttribute("reserve-it:invalidLeadDaysMsg").toString(),inp);}}
function onItineraryFieldChange(e)
{if(!e)var e=window.event;if(e.target)var targ=e.target;else if(e.srcElement)var targ=e.srcElement;if(targ.nodeType==3)targ=targ.parentNode;try{validateField(targ);toggleFulfilled(targ,true);return true;}
catch(e){alert(e.message);setTimeout("hiliteField('"+targ.name+"')",0);return false;}}
function initializeItineraryFields(ins)
{if(ins instanceof Array)
for(var i in ins)
{var inp=document.getElementById(ins[i]);inp.onchange=onItineraryFieldChange;try{validateField(inp);}
catch(e){toggleFulfilled(inp,false);}}}
function onArrivalFieldBlur(e)
{if(!e)var e=window.event;if(e.target)var targ=e.target;else if(e.srcElement)var targ=e.srcElement;if(targ.nodeType==3)targ=targ.parentNode;try{validateArrivalField(targ);validateArrivalField(targ);return true;}
catch(err)
{if(err instanceof validateFieldError)
{alert(err.message);setTimeout("hiliteField('"+targ.name+"')",0);return false;}
else if(err instanceof validateArrivalFieldError)
{alert(err.message);var leadDays=parseInt(targ.getAttribute("reserve-it:leaddays"));dtCurrent=new Date();dtLead=addDays(dtCurrent,leadDays);strLead=cnvrtDatetDDMMYYYY(dtLead);targ.value=strLead;setTimeout("hiliteField('"+targ.name+"')",0);return false;}}}
function initArrivalDateField(id)
{var inp=document.getElementById(id);var leadDays=parseInt(inp.getAttribute("reserve-it:leaddays"));inp.onblur=onArrivalFieldBlur;try{validateField(inp);validateArrivalField(inp);}
catch(e){dtCurrent=new Date();dtLead=addDays(dtCurrent,leadDays);strLead=cnvrtDatetDDMMYYYY(dtLead);inp.value=strLead;}}
function updateTotal()
{var total=0;var Activities=document.getElementById('Activity Reservations');var Accommodation=document.getElementById('Accommodation Reservations');var divTotal=document.getElementById('runningTotal');var spanTotal=divTotal.getElementsByTagName('span')[0];var inputsActivities=Activities.getElementsByTagName('input');for(i in inputsActivities)if(inputsActivities[i].name=="reservationItem"){var smry=JSON.parse(inputsActivities[i].value);total+=smry.priceper*smry.units;}
var inputsAccom=Accommodation.getElementsByTagName('input');for(i in inputsAccom)if(inputsAccom[i].name=="reservationItem"){var smry=JSON.parse(inputsAccom[i].value);total+=smry.priceper*smry.nights*smry.occupants;}
spanTotal.innerHTML=formatCurrency(total);}
function onbuttoNextClick(e)
{if(!e)var e=window.event;if(e.target)var targ=e.target;else if(e.srcElement)var targ=e.srcElement;if(targ.nodeType==3)targ=targ.parentNode;updateTotal();var Activities=document.getElementById('Activity Reservations');var Accommodation=document.getElementById('Accommodation Reservations');var boolACTsorACCs=false;var inputsActivities=Activities.getElementsByTagName('input');for(var i=0;i<inputsActivities.length;i++)
if(inputsActivities[i].name=="reservationItem"||inputsActivities[i].className=="reservationItem")
{boolACTsorACCs=true;break;}
if(!boolACTsorACCs)
{var inputsAccom=Accommodation.getElementsByTagName('input');for(var j=0;j<inputsAccom.length;j++)
if(inputsAccom[j].name=="reservationItem"||inputsAccom[i].className=="reservationItem")
{boolACTsorACCs=true;break;}}
if(boolACTsorACCs)
{var np;try{var flds=["arrival","nights","email","fnam","lnam"];for(y in flds)
{np=document.getElementById(flds[y]);validateField(np);toggleFulfilled(np,true);}
itinerarySummary.uploadJSON();return false;}
catch(e){alert("Frm must cmleted: "+e.message);setTimeout("hiliteField('"+np.name+"')",0);return false;}}
else
{alert('You have not selected any activities or accommodation to reserve.');return false;}}
function removeEntry(e)
{if(!e)var e=window.event;if(e.target)var targ=e.target;else if(e.srcElement)var targ=e.srcElement;if(targ.nodeType==3)targ=targ.parentNode;var el2remove=targ.parentNode;if(el2remove&&el2remove.parentNode&&el2remove.parentNode.removeChild)
el2remove.parentNode.removeChild(el2remove);updateTotal();}
function formatCurrency(num,showCur)
{if(typeof(showCur)=='undefined')showCur=' USD';else if(showCur)showCur=" "+showCur;else showCur='';if(num%1>0)
{mod=(num%1)*10;if(mod%1>0)return num+showCur;else return num+"0"+showCur;}
else return num+".00"+showCur;}
function updateAccomSubtotal(subtotal_el,occupants,nights,priceper)
{var ocs=parseInt(occupants);var nights=parseInt(nights);subtotal_el.innerHTML=formatCurrency(ocs*parseFloat(priceper)*nights);}
function occupantsChanged(e)
{if(!e)var e=window.event;if(e.target)var targ=e.target;else if(e.srcElement)var targ=e.srcElement;if(targ.nodeType==3)targ=targ.parentNode;var occupants=parseInt(targ.options[targ.selectedIndex].value);var nights=parseInt(targ.nights.value);var priceper=parseFloat(targ.priceper);var id=targ.itemid;updateAccomSubtotal(targ.subtotal,occupants,nights,priceper);targ.rsrvItmJSON.value=getReservationItemJSON(id,priceper,nights,occupants);updateTotal();}
function nightsChanged(e)
{if(!e)var e=window.event;if(e.target)var targ=e.target;else if(e.srcElement)var targ=e.srcElement;if(targ.nodeType==3)targ=targ.parentNode;var occupants=parseInt(targ.occupants.options[targ.occupants.selectedIndex].value);var nights=parseInt(targ.value);var priceper=parseFloat(targ.priceper);var id=targ.itemid;updateAccomSubtotal(targ.subtotal,occupants,nights,priceper);targ.rsrvItmJSON.value=getReservationItemJSON(id,priceper,nights,occupants);updateTotal();}
var idz=new Array();function getUniqueID(oldid)
{var i=0;if(idz[oldid])i=idz[oldid]++;else idz[oldid]=1;var newid=oldid+"-"+i;return newid;}
function getReservationItemJSON(id,price,units,occupants)
{var str;if(occupants)
{str='{"id":"ID","type":"accommodation","nights":UNITS,"occupants":OCCUPANTS,"priceper":PRICE}';str=str.replace(/ID/,id);str=str.replace(/UNITS/,units);str=str.replace(/OCCUPANTS/,occupants);str=str.replace(/PRICE/,price);}
else
{str='{"id":"ID","type":"activity","units":UNITS,"priceper":PRICE}';str=str.replace(/ID/,id);str=str.replace(/UNITS/,units);str=str.replace(/PRICE/,price);}
return str;}
function createAccommodationEntry(price,id,name,min,max,nights)
{min=parseInt(min);max=parseInt(max);var uid=getUniqueID(id);var wrapper=document.createElement("div");wrapper.price=price;wrapper.id=uid;wrapper.name=name;wrapper.min=min;wrapper.max=max;wrapper.className="entrywrapper twolines";var entryname=document.createElement("div");entryname.className="entryname";entryname.innerHTML=name;wrapper.appendChild(entryname);var button=document.createElement("button");button.className="entryremove";button.innerHTML="REMOVE";button.onclick=removeEntry;wrapper.appendChild(button);var entryprice=document.createElement("div");entryprice.className="entryprice";updateAccomSubtotal(entryprice,min,nights,price);wrapper.appendChild(entryprice);var hiddenid=document.createElement("input");hiddenid.type="hidden";hiddenid.value=id;hiddenid.name="accommodation-id";wrapper.appendChild(hiddenid);var entryline2=document.createElement("div");entryline2.className="entryline2";var entryntslbl=document.createElement("label");entryntslbl.htmlFor="nights-"+uid;entryntslbl.innerHTML="Nights";entryntslbl.className="entryqtylabel";var inputNights=document.createElement("input");inputNights.type="text";inputNights.className="number";inputNights.value=nights;inputNights.id="nights-"+uid;inputNights.itemid=id;var entryocslbl=document.createElement("label");entryocslbl.htmlFor="occupants-"+uid;entryocslbl.innerHTML="Occupants";entryocslbl.className="entryqtylabel";var selOcs=document.createElement("select");selOcs.id="occupants-"+uid;selOcs.itemid=id;selOcs.className="number";var i=min;while(i<=max){var op=document.createElement("option");op.value=i;op.text=i;op.innerHTML=i;if(i==min)op.defaultSelected=true;selOcs.appendChild(op);i++;}
var resitemhidden=document.createElement("input");resitemhidden.type="hidden";resitemhidden.id="resitem-"+uid;resitemhidden.name="reservationItem";resitemhidden.className="reservationItem";resitemhidden.value=getReservationItemJSON(id,price,nights,min);inputNights.priceper=price;inputNights.subtotal=entryprice;inputNights.occupants=selOcs;inputNights.rsrvItmJSON=resitemhidden;inputNights.onchange=nightsChanged;var hiddenPrice=document.createElement("input");hiddenPrice.type="hidden";hiddenPrice.value=price;hiddenPrice.id="price-"+uid;selOcs.nights=inputNights;selOcs.priceper=price;selOcs.subtotal=entryprice;selOcs.rsrvItmJSON=resitemhidden;selOcs.onchange=occupantsChanged;entryline2.appendChild(entryntslbl);entryline2.appendChild(inputNights);entryline2.appendChild(entryocslbl);entryline2.appendChild(selOcs);entryline2.appendChild(hiddenPrice);entryline2.appendChild(resitemhidden);var entryprclabel=document.createElement("label");entryprclabel.className="entryqtylabel";entryprclabel.innerHTML="Price/person:";entryline2.appendChild(entryprclabel);var spanpriceper=document.createElement("span");spanpriceper.className="entryqtylabel";spanpriceper.innerHTML=formatCurrency(price);entryline2.appendChild(spanpriceper);wrapper.appendChild(entryline2);return wrapper;}
function createActivityEntry(price,id,name,minDays)
{var uid=getUniqueID(id);var wrapper=document.createElement("div");wrapper.price=price;wrapper.id=uid;wrapper.name=name;wrapper.minDays=minDays;wrapper.className="entrywrapper";var hiddenid=document.createElement("input");hiddenid.type="hidden";hiddenid.value=id;hiddenid.name="activity-id";wrapper.appendChild(hiddenid);var entryname=document.createElement("div");entryname.className="entryname";entryname.innerHTML=name;wrapper.appendChild(entryname);var button=document.createElement("button");button.className="entryremove";button.innerHTML="REMOVE";button.onclick=removeEntry;wrapper.appendChild(button);var entryprice=document.createElement("div");entryprice.className="entryprice";entryprice.innerHTML=formatCurrency(price);wrapper.appendChild(entryprice);var resitemhidden=document.createElement("input");resitemhidden.type="hidden";resitemhidden.id="resitem-"+uid;resitemhidden.name="reservationItem";resitemhidden.value=getReservationItemJSON(id,price,1);wrapper.appendChild(resitemhidden);return wrapper;}
function getDaysinPairs(dtpairs)
{var dycnt=0;for(var p in dtpairs)
dycnt+=daysDiff(dtpairs[p]);return dycnt;}
function checkBlack(id,dtA,days,ttlDays)
{var blackdates=[{"name":"launch","s":".*","i":"01 01 2009","t":"01 04 2009","r":"The services requested are reserved through April 1st. Please try a different date."},{"name":"kiteseason","s":"K.*","i":"01 01","t":"31 03","r":"Kite season begins April 1st!"},{"name":"kimbasSample","s":"HK.*","i":"01 12","t":"31 12","r":"Kimba's is fully reserved Dec 14 through Jan 4th."},{"name":"LokisSample","s":"HLS.*","i":"01 04 2009","t":"07 04 2009","r":"Loki's Single and Twin rooms reserved Apr 1 through 7th."}];var dtD;if(ttlDays)dtD=addDays(dtA,ttlDays);else dtD=addDays(dtA,days);var dtPairs=[{"i":dtA,"t":dtD}]
for(var b in blackdates)
{var bd=blackdates[b];var rx=new RegExp(bd.s);var iB;var tB;if(rx.test(id))
{if(bd.i.length<10){var year=new Date().getFullYear().toString();iB=cnvrtDDMMYYYYtDate(bd.i+" "+year);tB=cnvrtDDMMYYYYtDate(bd.t+" "+year);}
else{iB=cnvrtDDMMYYYYtDate(bd.i);tB=cnvrtDDMMYYYYtDate(bd.t);}
for(var x in dtPairs)
{var dtPair=dtPairs[x];var i=dtPair.i;var t=dtPair.t;if((iB>dtPair.t)||(tB<dtPair.i))continue;else if(ttlDays)
{var actThrwMsg="The activity requested cannot be reserved for the date requested: "+bd.r;if(tB<i||iB>t)continue;else{if(tB>=t)
if(iB<=i)throw actThrwMsg;else{t=new Date(iB);if(getDaysinPairs(dtPairs)>ttlDays)throw actThrwMsg;}
else{if(iB>i){var newpr={"i":new Date(tB),"t":new Date(t)};dtPairs[x].t=new Date(iB);dtPairs.push(newpr);var daysleft=getDaysinPairs(dtPairs);if(daysleft<days)throw actThrwMsg;}
else{dtPairs[x].i=new Date(tB);if(getDaysinPairs(dtPairs)<days)throw actThrwMsg;}}}}
else throw"The accommodation you requested cannot be reserved at this time: "+bd.r;}}}
return true;}
function sendToItinerary(el)
{var price=el.getAttribute("price");var id=el.getAttribute("id");var name=el.getAttribute("name");var minDays;var min;var max;var entry;var wrapper;var nights;var days;var resColEl;minDays=el.getAttribute("minDays");if(minDays){entry=createActivityEntry(price,id,name,minDays);resColEl=document.getElementById("Activity Reservations");days=minDays;var inpNights=document.getElementById("nights");var intNights=parseInt(inpNights.value);if(!intNights)try{validateField(inpNights);}
catch(e){alert("Please enter the number of nights you intend to stay in Mancora.");}
if(days>intNights)
{var answer=confirm("You have selected an activity that requires a minimum "+minDays+" nights stay. /n Do you wish to change the duration of your stay t accommodate this activity?");if(answer)inpNights.value=minDays;else return false;}}
else{min=el.getAttribute("min");max=el.getAttribute("max");nights=document.getElementById("nights").value;entry=createAccommodationEntry(price,id,name,min,max,nights);resColEl=document.getElementById("Accommodation Reservations");days=nights;}
var inpArrival=document.getElementById("arrival");var strArr=inpArrival.value;var dtArr=cnvrtDDMMYYYYtDate(strArr);if(dtArr)
{try
{var chBl;if(minDays)chBl=checkBlack(id,dtArr,days,intNights);else chBl=checkBlack(id,dtArr,days);if(chBl){resColEl.appendChild(entry);updateTotal();}}
catch(e){alert(e);return false;}}
else
{}}
if(!this.JSON){JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z';};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}})();