
var Dollar=Class.create();Dollar.add=function(dollar1,dollar2){return new Dollar(parseInt(dollar1.cents)+parseInt(dollar2.cents));};Dollar.subtract=function(dollar1,dollar2){return new Dollar(parseInt(dollar1.cents)-parseInt(dollar2.cents));};Dollar.parseDollarString=function(str){var floatString=str.substring(1);return floatString.gsub("\.","")};Dollar.startsWith=function(str,swith){console.log("witwot");return(str.substring(0,swith.length)==swith);};Dollar.prototype={initialize:function(dollarString){dollarString=""+dollarString;if(Dollar.startsWith(dollarString,"$")){this.cents=Dollar.parseDollarString(dollarString);}else{this.cents=parseInt(dollarString);}
console.log("witwit");},toString:function(){return"$"+this.toFloatString();},toFloatString:function(){var dollars=parseInt(this.cents/100);var cents=(this.cents%100).abs();var cents_str=""+cents;if(cents_str.length==1){cents_str="0"+cents_str}
return dollars+"."+cents_str;}};


function getVariant(){return $$('div.variant input[name=variant]').first();}
function addVariantGridBehaviour(){$$('div.variant div.combination').each(function(element){Event.observe(element,'click',function(event){if(element.getElementsByClassName('grid_icon_tick').length>0){$$('div.variant div.combination').each(function(e){e.removeClassName('selected');});element.addClassName('selected');getVariant().value=element.readAttribute('variant_id');$$('#addtobag span').first().removeClassName('disabled');}else{alert('\
The colour / size combination you\n\
have selected is out of stock.\n\
\n\
For wardrobe essentials, it will be back soon.\n\
For fashion items, it has sold out at Birdsnest,\n\
so please email customerservice@birdsnest.com.au\n\
and we will do our best to track it down for you.\n\
');}
Event.stop(event);});});if($('addtobag')){Event.observe($('addtobag'),'click',function(event){if($$('#addtobag span').first().hasClassName('disabled')){alert('Please select a colour / size combination');}else{new Ajax.Request('/bag/add/'+getVariant().value,{method:'get',onSuccess:function(transport){var text=transport.responseText;$('item_added').setStyle({display:'block'});new Effect.Highlight($('item_added'),{startcolor:'#FFFF00',endcolor:'#F3F3F3'});incrementNumberOfItems(1);$$('#notice p').first().innerHTML=text;$$('#notice').first().setStyle({display:'block'});}});new Effect.Highlight($('bag_container'),{startcolor:'#FFFF00',endcolor:'#81807C'});}
Event.stop(event);});};Event.observe(window,'hashchange',function(evt){if(document.changingImage){document.changingImage=false;}else{window.history.back(document.changingImageCount);}});}
function showProductImage(item_id,colour_name){var url="/shop/product_image/"+item_id;new Ajax.Request(url,{method:'get',parameters:{colour:escape(colour_name)}});}
function markSelectedImage(element){element.siblings().each(function(ele){ele.removeClassName('selected');});element.addClassName('selected');}
function showAltImages(item_id,colour_name){var url="/shop/alt_images/"+item_id;new Ajax.Request(url,{method:'get',parameters:{colour:escape(colour_name)}});}
function popUp(url){window.open(url,'product_large_image','toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=480,height=722');}


function recalculateTotal(){var dollars=$$('table.bag td.line_total').collect(function(e){return new Dollar(e.innerHTML.strip());});var dollar=dollars.inject(new Dollar("$0.00"),function(a,b){return Dollar.add(a,b);});$('total').innerHTML=dollar.toString();}
function addShoppingBagBehaviour(){$$('.line_edit').each(function(element){Event.observe(element,'click',function(event){if(element.readAttribute('status')!='editing'){element.setAttribute('status','editing');var oid=parseInt(element.readAttribute('object_id'));var tempid=parseInt(element.readAttribute('temp_id'));var currentQuantity=$('quantity_'+oid).innerHTML.strip();$('quantity_'+oid).innerHTML='<input type="text" class="quantity" name="quantity" value="'+currentQuantity+'"/>';$('line_buttons_'+oid).hide();$('line_buttons2_'+oid).innerHTML='<input type="button" value="Update"/>';var updateButton=$$('#line_buttons2_'+oid+' input[type=button]').first();Event.observe(updateButton,'click',function(element2){var quantityField=$$('#quantity_'+oid+' input[name=quantity]').first();$('line_total_'+oid).innerHTML='';var quant;if(quantityField.value.strip()===""){quant=0;}else{quant=parseInt(quantityField.value);}
if(quant==0){try{$('line_row_'+tempid).hide();}catch(e){updateButton.parentNode.parentNode.parentNode.remove();}}
var tempid_str=element.readAttribute('temp_id');tempid=parseInt(tempid_str);var url;if(tempid_str==""||isNaN(tempid)){var orderitem_id=element.readAttribute('object_id');url='/bag/update/?orderitem_id='+orderitem_id;}else{url='/bag/update/'+tempid;}
new Ajax.Request(url,{method:'post',parameters:{quantity:quant},onSuccess:function(transport){eval('var res = '+transport.responseText);$('line_total_'+oid).innerHTML=res['total'];recalculateTotal();if(quant==0){$('line_row_'+tempid).remove();incrementNumberOfItems(-1);}}});if(quant!=0){$('line_total_'+oid).innerHTML="updating..";$('quantity_'+oid).innerHTML=quantityField.value;$('line_buttons2_'+oid).innerHTML='';$('line_buttons_'+oid).show();element.setAttribute('status','');}
Event.stop(element2);});}
Event.stop(event);});});$$('.line_delete').each(function(element){Event.observe(element,'click',function(event){var tempid_str=element.readAttribute('temp_id');var tempid=parseInt(tempid_str);var url;if(tempid_str==""||isNaN(tempid)){var orderitem_id=element.readAttribute('object_id');url='/bag/delete/?orderitem_id='+orderitem_id;}else{url='/bag/delete/'+tempid;}
new Ajax.Request(url,{method:'post',onSuccess:function(transport){}});try{$('line_row_'+tempid).remove();}catch(e){element.parentNode.parentNode.parentNode.parentNode.remove();}
recalculateTotal();incrementNumberOfItems(-1);Event.stop(event);});});}


var PostageCostAustralia=1095
var PostageCostInternational=1895
function onPaymentPage(){return($$('#payment_details').length>0);}
function updateOrderTotal(){var h_subtotal=$('order_subtotal');var h_gv=$('order_gv');var h_postage=$('order_postage');var h_total=$('order_total');var u_subtotal=$$('#u_total_purchases .value').first();var u_gv=$$('#u_total_gv .value').first();var u_postage=$$('#u_total_postage .value').first();var u_total=$$('#u_total_total .value').first();var value=new Dollar(0);if($$('.payment input.radio[name=postage][value=australia]').first().checked){value=new Dollar(PostageCostAustralia);$('postage_method').value="australia";}
if($$('.payment input.radio[name=postage][value=international]').first().checked){value=new Dollar(PostageCostInternational);$('postage_method').value="international";}
h_postage.value=value.cents;u_postage.innerHTML=value.toFloatString();u_total.innerHTML=Dollar.subtract(Dollar.add(new Dollar("$"+u_subtotal.innerHTML),new Dollar("$"+u_postage.innerHTML)),new Dollar("$"+u_gv.innerHTML)).toFloatString();h_total.value=parseInt(h_subtotal.value)+parseInt(h_postage.value)-parseInt(h_gv.value);if((new Dollar("$"+u_total.innerHTML)).cents!=parseInt(h_total.value)){alert(u_total.innerHTML+" != "+h_total.value);}}
function addPaymentPageBehaviour(){if(onPaymentPage()){var updateTotals=function(){console.info('updateTotals() called');updateOrderTotal();};$$('.payment input.radio[name=postage]').each(function(element){Event.observe(element,'click',function(event){updateTotals();});});$$('.payment input.radio[name=payment_method]').each(function(element){Event.observe(element,'click',function(event){var cc_submit=$$('.payment input.submit[name=authorise_cc]').first();var other_submit=$$('.payment input.submit[name=confirm_order]').first();cc_submit.disable();other_submit.disable();if(element.value=="cc"){cc_submit.enable();}
if(element.value=="other"){other_submit.enable();}});});var gv_submit=$$('.payment input.submit[value=Submit Voucher Details]').first();Event.observe(gv_submit,'click',function(event){var code=$$('.payment input[name=gv_code]').first().value;var dollars=parseInt($$('.payment input[name=gv_amount_dollars]').first().value);var date=$$('.payment input[name=gv_date]').first().value;if(isNaN(dollars)){dollars=0;}
var cents=parseInt($$('.payment input[name=gv_amount_cents]').first().value);if(isNaN(cents)){cents=0;}
var amount=(dollars*100)+cents;$('voucher_spinner').setStyle({'display':'inline'});new Ajax.Request('/order/gift_voucher?code='+code+'&amount='+amount+'&date='+date,{method:'post',onComplete:function(){$('voucher_spinner').setStyle({'display':'none'});}});Event.stop(event);});var promo_submit=$$('.payment input.submit[value=Submit Code]').first();Event.observe(promo_submit,'click',function(event){var code=$$('.payment input[name=promo_code]').first().value;$('promo_spinner').setStyle({'display':'inline'});new Ajax.Request('/order/promotional?code='+code,{method:'post',onComplete:function(){$('promo_spinner').setStyle({'display':'none'});}});Event.stop(event);});}}
function setGiftVoucher(code,amount){amount=new Dollar(parseInt(amount));var h_gv=$('order_gv');var u_gv=$$('#u_total_gv .value').first();h_gv.value=amount.cents;u_gv.innerHTML=amount.toFloatString();updateOrderTotal();}
function clickConfirmOrder(button){button.disable();var pay_by_other_radio_button=$$('input.radio[value=other]')[0];var pay_by_other_confim_order_button=$$('input.submit[name=confirm_order]')[0];pay_by_other_radio_button.click();setTimeout(function(){pay_by_other_confim_order_button.click();pay_by_other_confim_order_button.disable();pay_by_other_confim_order_button.value="Please wait..";},400);}
if(onPaymentPage()){Event.observe(window,'unload',function(evt){});Event.observe(window,'load',document.payment_onload=function(evt){var pay_by_other_radio_button=$$('input.radio[value=other]')[0];var pay_by_other_confim_order_button=$$('input.submit[name=confirm_order]')[0];var pay_by_cc_confim_order_button=$$('input.submit[name=authorise_cc]')[0];pay_by_other_radio_button.enable();pay_by_cc_confim_order_button.enable();pay_by_other_confim_order_button.enable();$$('input[name=payment_method]').each(function(e){e.enable();});document.rollout_cc=function(){Effect.BlindDown('rollout_cc',{duration:0.3});Effect.BlindUp('rollout_other',{duration:0.3});return true;};document.rollout_other=function(){Effect.BlindUp('rollout_cc',{duration:0.3});Effect.BlindDown('rollout_other',{duration:0.3});return true;};if($$('input[name=payment_method][value=cc]').first().checked){$('span_cc').style.fontWeight='bold';}else{$$('#rollout_cc').first().hide();$$('input[name=confirm_order]').first().enable();}
if($$('input[name=payment_method][value=other]').first().checked){$('span_other').style.fontWeight='bold';}else{$$('#rollout_other').first().hide();$$('input[name=authorise_cc]').first().enable();}
$$('input[name=payment_method][value=cc]').first().observe('click',function(evt){$('span_cc').style.fontWeight='bold';$('span_other').style.fontWeight='normal';if(Prototype.Browser.IE){}});$$('input[name=payment_method][value=other]').first().observe('click',function(evt){$('span_cc').style.fontWeight='normal';$('span_other').style.fontWeight='bold';if(Prototype.Browser.IE){}});document.orderButtonClicked=function(){$('processing').setStyle({'display':'block'});$$('input[name=payment_method]').each(function(e){e.disable();});if(Prototype.Browser.IE){$('sidebar').setStyle({'background':'gray','opacity':'0.4'});}};$('payment_form').observe('submit',function(evt){document.orderButtonClicked();});});Event.observe(window,'pageshow',function(evt){$('processing').setStyle({'display':'none'});document.payment_onload();});}


var Zoomer={init_zoomer:function(){if($$('.zoom_container').size()>0){Zoomer.overImage=function(x,y){var width=Zoomer.zmain.offsetWidth;var height=Zoomer.zmain.offsetHeight;if((x>=Zoomer.findPosX(Zoomer.zmain)&&x<=(Zoomer.findPosX(Zoomer.zmain)+width))&&(y>=Zoomer.findPosY(Zoomer.zmain)&&y<=(Zoomer.findPosY(Zoomer.zmain)+height))){return true;}else{return false;}}
Zoomer.followCursor=function(x,y){Zoomer.viewport.style.left=(x-Zoomer.viewportWidth/2+Zoomer.viewportOffsetX)+'px';Zoomer.viewport.style.top=(y-Zoomer.viewportHeight/2+Zoomer.viewportOffsetY)+'px';var rX=(((x-Zoomer.viewportWidth/2)-Zoomer.xOffset)+Zoomer.viewportWidth)/Zoomer.scale-Zoomer.previewWidth;var rY=(((y-Zoomer.viewportHeight/2)-Zoomer.yOffset)+Zoomer.viewportHeight)/Zoomer.scale-Zoomer.previewHeight;Zoomer.zimg.style.left=(-rX-Zoomer.tweakX)+'px';Zoomer.zimg.style.top=(-rY-Zoomer.tweakY)+'px';}
Zoomer.detectOver=function(x,y){if(Zoomer.overImage(x,y)){console.log("Showing Zoomer");Zoomer.viewwindow.style.display='block';Zoomer.viewport.style.display='block';}else{Zoomer.viewwindow.style.display='none';Zoomer.viewport.style.display='none';}}
Zoomer.startDetectOver=function(){if(Zoomer.stopDetect==1){}else{setTimeout("Zoomer.detectOver(Zoomer.mousex, Zoomer.mousey); Zoomer.startDetectOver()",500);}}
Zoomer.setViewportOffset=function(){Zoomer.viewportOffsetX=-Zoomer.findPosX($$('.zoomer_offset_reference').first());Zoomer.viewportOffsetY=-Zoomer.findPosY($$('.zoomer_offset_reference ').first());}
Zoomer.setMainOffset=function(){Zoomer.xOffset=Zoomer.findPosX(Zoomer.zmain);Zoomer.yOffset=Zoomer.findPosY(Zoomer.zmain);}
Zoomer.init=function(){console.log("Called Zoomer.init()");Zoomer.stopDetect=1;Zoomer.mousex=0;Zoomer.mousey=0;Zoomer.zmain=$$('.zoom_container').first();Zoomer.viewport=$$('.zoom_container_viewport').first();Zoomer.viewwindow=$$('.zoom_container_viewwindow').first();Zoomer.zimg=$$('.zoom_container_viewwindow_img').first();Zoomer.viewwindow.show();Zoomer.viewport.show();Zoomer.setViewportOffset();Zoomer.tweakX=10;Zoomer.tweakY=10;Zoomer.previewWidth=Zoomer.viewwindow.offsetWidth;Zoomer.previewHeight=Zoomer.viewwindow.offsetHeight;var width=Zoomer.zimg.width;if(width==0||$$('.zoom_container img').first().width==0){Zoomer.scale=240/1000;}else{Zoomer.scale=$$('.zoom_container img').first().width/width;}
Zoomer.viewport.style.width=parseInt(Zoomer.previewWidth*Zoomer.scale)+"px";Zoomer.viewport.style.height=parseInt(Zoomer.previewHeight*Zoomer.scale)+"px";Zoomer.viewportWidth=Zoomer.viewport.offsetWidth;Zoomer.viewportHeight=Zoomer.viewport.offsetHeight;Zoomer.setMainOffset();$$('.zoom_container_viewport').invoke('hide');$$('.zoom_container_viewwindow').invoke('hide');document.onmousemove=Zoomer.update;Zoomer.update();Zoomer.stopDetect=0;Zoomer.startDetectOver();console.log("Zoomer.zmain = "+Zoomer.zmain);console.log("Zoomer.viewport = "+Zoomer.viewport);console.log("Zoomer.viewwindow = "+Zoomer.viewwindow);console.log("Zoomer.zimg = "+Zoomer.zimg);$$('.zoom_container_viewport').first().setStyle({visibility:'visible'});$$('.zoom_container_viewwindow').first().setStyle({visibility:'visible'});console.log("Zoomer.init() returned.");}
Zoomer.update=function(e){Zoomer.getMouseXY(e);Zoomer.followCursor(Zoomer.mousex,Zoomer.mousey);}
Zoomer.getMouseXY=function(e){if(!e)e=window.event;if(e){if(e.pageX||e.pageY){Zoomer.mousex=e.pageX;Zoomer.mousey=e.pageY;}else if(e.clientX||e.clientY){Zoomer.mousex=e.clientX+document.body.scrollLeft;Zoomer.mousey=e.clientY+document.body.scrollTop;}}}
Zoomer.findPosX=function(obj)
{var curleft=0;if(obj.offsetParent)
while(1)
{curleft+=obj.offsetLeft;if(!obj.offsetParent)
break;obj=obj.offsetParent;}
else if(obj.x)
curleft+=obj.x;return curleft;}
Zoomer.findPosY=function(obj)
{var curtop=0;if(obj.offsetParent)
while(1)
{curtop+=obj.offsetTop;if(!obj.offsetParent)
break;obj=obj.offsetParent;}
else if(obj.y)
curtop+=obj.y;return curtop;}
Zoomer.init();Zoomer.pageResized=function(){Zoomer.setViewportOffset();Zoomer.setMainOffset();}
Event.observe(window,'resize',Zoomer.pageResized);}}};


if($$('div.copy_details input[name=copy_address_details]').size()>0){var button=$$('div.copy_details input[name=copy_address_details]').first();var prefix="mydetails";var toprefix="delivery";var len=prefix.length;Event.observe(button,'click',function(e){$$('#customer_address input').each(function(element){var namea=element.readAttribute('name');if(namea.substr(0,len)==prefix){var toname=toprefix+"["+namea.substr(len+1);document.getElementsByName(toname)[0].value=element.value;}});$$('select.delivery_country').first().value=$$('select.billing_country').first().value;Event.stop(e);});var giftcheck=$$('.giftwrap .giftwrap_opt input[name=giftwrap]').first();Event.observe(giftcheck,'click',function(e){var gifttext=$$('.giftwrap textarea[name=gift_message]').first();if(giftcheck.checked){gifttext.enable();gifttext.focus();}else{gifttext.disable();}});var checkout=$$('.delivery .submit').first();var present=[['mydetails[first_name]','First Name in My Details'],['mydetails[last_name]','Last Name in My Details'],['mydetails[address_line_1]','Street Address in My Details'],['mydetails[suburb]','Suburb / Town in My Details'],['mydetails[postcode]','Post Code in My Details'],['mydetails[state]','State / Province in My Details'],['mydetails[country]','Country in My Details'],['delivery[first_name]','First Name in Delivery Details'],['delivery[last_name]','Last Name in Delivery Details'],['delivery[address_line_1]','Street Address in Delivery Details'],['delivery[suburb]','Suburb / Town in Delivery Details'],['delivery[postcode]','Post Code in Delivery Details'],['delivery[state]','State / Province in Delivery Details'],['delivery[country]','Country in Delivery Details']];Event.observe(checkout,'click',function(e){var prob_fields=[];present.each(function(pair){var namea=pair[0];var info=pair[1];var ele=document.getElementsByName(namea)[0];if(ele.value.length<1){prob_fields.push(info);ele.addClassName('validation_problem');}else{ele.removeClassName('validation_problem');}});if(prob_fields.length>0){var head="";if(prob_fields.length==1){head="The following field cannot be left blank:";}else{head="The following fields cannot be left blank:";}
alert(head+"\n\n"+prob_fields.join("\n"));Event.stop(e);}});}


if(typeof Prototype=='undefined')alert("CalendarDateSelect Error: Prototype could not be found. Please make sure that your application's layout includes prototype.js (.g. <%= javascript_include_tag :defaults %>) *before* it includes calendar_date_select.js (.g. <%= calendar_date_select_includes %>).");if(Prototype.Version<"1.6")alert("Prototype 1.6.0 is required.  If using earlier version of prototype, please use calendar_date_select version 1.8.3");Element.addMethods({purgeChildren:function(element){$A(element.childNodes).each(function(e){$(e).remove();});},build:function(element,type,options,style){var newElement=Element.buildAndAppend(type,options,style);element.appendChild(newElement);return newElement;}});Element.buildAndAppend=function(type,options,style)
{var e=$(document.createElement(type));$H(options).each(function(pair){e[pair.key]=pair.value});if(style)e.setStyle(style);return e;};nil=null;Date.one_day=24*60*60*1000;Date.weekdays=$w("S M T W T F S");Date.first_day_of_week=0;Date.months=$w("January February March April May June July August September October November December");Date.padded2=function(hour){var padded2=parseInt(hour,10);if(hour<10)padded2="0"+padded2;return padded2;}
Date.prototype.getPaddedMinutes=function(){return Date.padded2(this.getMinutes());}
Date.prototype.getAMPMHour=function(){var hour=this.getHours();return(hour==0)?12:(hour>12?hour-12:hour)}
Date.prototype.getAMPM=function(){return(this.getHours()<12)?"AM":"PM";}
Date.prototype.stripTime=function(){return new Date(this.getFullYear(),this.getMonth(),this.getDate());};Date.prototype.daysDistance=function(compare_date){return Math.round((compare_date-this)/Date.one_day);};Date.prototype.toFormattedString=function(include_time){var hour,str;str=Date.months[this.getMonth()]+" "+this.getDate()+", "+this.getFullYear();if(include_time){hour=this.getHours();str+=" "+this.getAMPMHour()+":"+this.getPaddedMinutes()+" "+this.getAMPM()}
return str;}
Date.parseFormattedString=function(string){return new Date(string);}
Math.floor_to_interval=function(n,i){return Math.floor(n/i)*i;}
window.f_height=function(){return([window.innerHeight?window.innerHeight:null,document.documentElement?document.documentElement.clientHeight:null,document.body?document.body.clientHeight:null].select(function(x){return x>0}).first()||0);}
window.f_scrollTop=function(){return([window.pageYOffset?window.pageYOffset:null,document.documentElement?document.documentElement.scrollTop:null,document.body?document.body.scrollTop:null].select(function(x){return x>0}).first()||0);}
_translations={"OK":"OK","Now":"Now","Today":"Today","Clear":"Clear"}
SelectBox=Class.create();SelectBox.prototype={initialize:function(parent_element,values,html_options,style_options){this.element=$(parent_element).build("select",html_options,style_options);this.populate(values);},populate:function(values){this.element.purgeChildren();var that=this;$A(values).each(function(pair){if(typeof(pair)!="object"){pair=[pair,pair]};that.element.build("option",{value:pair[1],innerHTML:pair[0]})});},setValue:function(value){var e=this.element;var matched=false;$R(0,e.options.length-1).each(function(i){if(e.options[i].value==value.toString()){e.selectedIndex=i;matched=true;};});return matched;},getValue:function(){return $F(this.element)}}
CalendarDateSelect=Class.create();CalendarDateSelect.prototype={initialize:function(target_element,options){this.target_element=$(target_element);if(!this.target_element){alert("Target element "+target_element+" not found!");return false;}
if(this.target_element.tagName!="INPUT")this.target_element=this.target_element.down("INPUT")
this.target_element.calendar_date_select=this;this.last_click_at=0;this.options=$H({embedded:false,popup:nil,time:false,buttons:true,clear_button:true,year_range:10,close_on_click:nil,minute_interval:5,popup_by:this.target_element,month_year:"dropdowns",onchange:this.target_element.onchange,valid_date_check:nil}).merge(options||{});this.use_time=this.options.get("time");this.parseDate();this.callback("before_show")
this.initCalendarDiv();if(!this.options.get("embedded")){this.positionCalendarDiv()
Event.observe(document,"mousedown",this.closeIfClickedOut_handler=this.closeIfClickedOut.bindAsEventListener(this));Event.observe(document,"keypress",this.keyPress_handler=this.keyPress.bindAsEventListener(this));}
this.callback("after_show")},positionCalendarDiv:function(){var above=false;var c_pos=this.calendar_div.cumulativeOffset(),c_left=c_pos[0],c_top=c_pos[1],c_dim=this.calendar_div.getDimensions(),c_height=c_dim.height,c_width=c_dim.width;var w_top=window.f_scrollTop(),w_height=window.f_height();var e_dim=$(this.options.get("popup_by")).cumulativeOffset(),e_top=e_dim[1],e_left=e_dim[0],e_height=$(this.options.get("popup_by")).getDimensions().height,e_bottom=e_top+e_height;if(((e_bottom+c_height)>(w_top+w_height))&&(e_bottom-c_height>w_top))above=true;var left_px=e_left.toString()+"px",top_px=(above?(e_top-c_height):(e_top+e_height)).toString()+"px";this.calendar_div.style.left=left_px;this.calendar_div.style.top=top_px;this.calendar_div.setStyle({visibility:""});if(navigator.appName=="Microsoft Internet Explorer")this.iframe=$(document.body).build("iframe",{src:"javascript:false",className:"ie6_blocker"},{left:left_px,top:top_px,height:c_height.toString()+"px",width:c_width.toString()+"px",border:"0px"})},initCalendarDiv:function(){if(this.options.get("embedded")){var parent=this.target_element.parentNode;var style={}}else{var parent=document.body
var style={position:"absolute",visibility:"hidden",left:0,top:0}}
this.calendar_div=$(parent).build('div',{className:"calendar_date_select"},style);var that=this;$w("top header body buttons footer bottom").each(function(name){eval("var "+name+"_div = that."+name+"_div = that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: 'left'} ); ");});this.initHeaderDiv();this.initButtonsDiv();this.initCalendarGrid();this.updateFooter("&#160;");this.refresh();this.setUseTime(this.use_time);},initHeaderDiv:function(){var header_div=this.header_div;this.close_button=header_div.build("a",{innerHTML:"x",href:"#",onclick:function(){this.close();return false;}.bindAsEventListener(this),className:"close"});this.next_month_button=header_div.build("a",{innerHTML:"&gt;",href:"#",onclick:function(){this.navMonth(this.date.getMonth()+1);return false;}.bindAsEventListener(this),className:"next"});this.prev_month_button=header_div.build("a",{innerHTML:"&lt;",href:"#",onclick:function(){this.navMonth(this.date.getMonth()-1);return false;}.bindAsEventListener(this),className:"prev"});if(this.options.get("month_year")=="dropdowns"){this.month_select=new SelectBox(header_div,$R(0,11).map(function(m){return[Date.months[m],m]}),{className:"month",onchange:function(){this.navMonth(this.month_select.getValue())}.bindAsEventListener(this)});this.year_select=new SelectBox(header_div,[],{className:"year",onchange:function(){this.navYear(this.year_select.getValue())}.bindAsEventListener(this)});this.populateYearRange();}else{this.month_year_label=header_div.build("span")}},initCalendarGrid:function(){var body_div=this.body_div;this.calendar_day_grid=[];var days_table=body_div.build("table",{cellPadding:"0px",cellSpacing:"0px",width:"100%"})
var weekdays_row=days_table.build("thead").build("tr");Date.weekdays.each(function(weekday){weekdays_row.build("th",{innerHTML:weekday});});var days_tbody=days_table.build("tbody")
var row_number=0,weekday;for(var cell_index=0;cell_index<42;cell_index++)
{weekday=(cell_index+Date.first_day_of_week)%7;if(cell_index%7==0)days_row=days_tbody.build("tr",{className:'row_'+row_number++});(this.calendar_day_grid[cell_index]=days_row.build("td",{calendar_date_select:this,onmouseover:function(){this.calendar_date_select.dayHover(this);},onmouseout:function(){this.calendar_date_select.dayHoverOut(this)},onclick:function(){this.calendar_date_select.updateSelectedDate(this,true);},className:(weekday==0)||(weekday==6)?" weekend":""},{cursor:"pointer"})).build("div");this.calendar_day_grid[cell_index];}},initButtonsDiv:function()
{var buttons_div=this.buttons_div;if(this.options.get("time"))
{var blank_time=$A(this.options.get("time")=="mixed"?[[" - ",""]]:[]);buttons_div.build("span",{innerHTML:"@",className:"at_sign"});var t=new Date();this.hour_select=new SelectBox(buttons_div,blank_time.concat($R(0,23).map(function(x){t.setHours(x);return $A([t.getAMPMHour()+" "+t.getAMPM(),x])})),{calendar_date_select:this,onchange:function(){this.calendar_date_select.updateSelectedDate({hour:this.value});},className:"hour"});buttons_div.build("span",{innerHTML:":",className:"seperator"});var that=this;this.minute_select=new SelectBox(buttons_div,blank_time.concat($R(0,59).select(function(x){return(x%that.options.get('minute_interval')==0)}).map(function(x){return $A([Date.padded2(x),x]);})),{calendar_date_select:this,onchange:function(){this.calendar_date_select.updateSelectedDate({minute:this.value})},className:"minute"});}else if(!this.options.get("buttons"))buttons_div.remove();if(this.options.get("buttons")){buttons_div.build("span",{innerHTML:"&#160;"});if(this.options.get("time")=="mixed"||!this.options.get("time"))b=buttons_div.build("a",{innerHTML:_translations["Today"],href:"#",onclick:function(){this.today(false);return false;}.bindAsEventListener(this)});if(this.options.get("time")=="mixed")buttons_div.build("span",{innerHTML:"&#160;|&#160;",className:"button_seperator"})
if(this.options.get("time"))b=buttons_div.build("a",{innerHTML:_translations["Now"],href:"#",onclick:function(){this.today(true);return false}.bindAsEventListener(this)});if(!this.options.get("embedded")&&!this.closeOnClick())
{buttons_div.build("span",{innerHTML:"&#160;|&#160;",className:"button_seperator"})
buttons_div.build("a",{innerHTML:_translations["OK"],href:"#",onclick:function(){this.close();return false;}.bindAsEventListener(this)});}
if(this.options.get('clear_button')){buttons_div.build("span",{innerHTML:"&#160;|&#160;",className:"button_seperator"})
buttons_div.build("a",{innerHTML:_translations["Clear"],href:"#",onclick:function(){this.clearDate();if(!this.options.get("embedded"))this.close();return false;}.bindAsEventListener(this)});}}},refresh:function()
{this.refreshMonthYear();this.refreshCalendarGrid();this.setSelectedClass();this.updateFooter();},refreshCalendarGrid:function(){this.beginning_date=new Date(this.date).stripTime();this.beginning_date.setDate(1);this.beginning_date.setHours(12);var pre_days=this.beginning_date.getDay()
if(pre_days<3)pre_days+=7;this.beginning_date.setDate(1-pre_days+Date.first_day_of_week);var iterator=new Date(this.beginning_date);var today=new Date().stripTime();var this_month=this.date.getMonth();vdc=this.options.get("valid_date_check");for(var cell_index=0;cell_index<42;cell_index++)
{day=iterator.getDate();month=iterator.getMonth();cell=this.calendar_day_grid[cell_index];Element.remove(cell.childNodes[0]);div=cell.build("div",{innerHTML:day});if(month!=this_month)div.className="other";cell.day=day;cell.month=month;cell.year=iterator.getFullYear();if(vdc){if(vdc(iterator.stripTime()))cell.removeClassName("disabled");else cell.addClassName("disabled")};iterator.setDate(day+1);}
if(this.today_cell)this.today_cell.removeClassName("today");if($R(0,41).include(days_until=this.beginning_date.stripTime().daysDistance(today))){this.today_cell=this.calendar_day_grid[days_until];this.today_cell.addClassName("today");}},refreshMonthYear:function(){var m=this.date.getMonth();var y=this.date.getFullYear();if(this.options.get("month_year")=="dropdowns")
{this.month_select.setValue(m,false);var e=this.year_select.element;if(this.flexibleYearRange()&&(!(this.year_select.setValue(y,false))||e.selectedIndex<=1||e.selectedIndex>=e.options.length-2))this.populateYearRange();this.year_select.setValue(y);}else{this.month_year_label.update(Date.months[m]+" "+y.toString());}},populateYearRange:function(){this.year_select.populate(this.yearRange().toArray());},yearRange:function(){if(!this.flexibleYearRange())
return $R(this.options.get("year_range")[0],this.options.get("year_range")[1]);var y=this.date.getFullYear();return $R(y-this.options.get("year_range"),y+this.options.get("year_range"));},flexibleYearRange:function(){return(typeof(this.options.get("year_range"))=="number");},validYear:function(year){if(this.flexibleYearRange()){return true;}else{return this.yearRange().include(year);}},dayHover:function(element){var hover_date=new Date(this.selected_date);hover_date.setYear(element.year);hover_date.setMonth(element.month);hover_date.setDate(element.day);this.updateFooter(hover_date.toFormattedString(this.use_time));},dayHoverOut:function(element){this.updateFooter();},clearSelectedClass:function(){if(this.selected_cell)this.selected_cell.removeClassName("selected");},setSelectedClass:function(){if(!this.selection_made)return;this.clearSelectedClass()
if($R(0,42).include(days_until=this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()))){this.selected_cell=this.calendar_day_grid[days_until];this.selected_cell.addClassName("selected");}},reparse:function(){this.parseDate();this.refresh();},dateString:function(){return(this.selection_made)?this.selected_date.toFormattedString(this.use_time):"&#160;";},parseDate:function()
{var value=$F(this.target_element).strip()
this.selection_made=(value!="");this.date=value==""?NaN:Date.parseFormattedString(this.options.get("date")||value);if(isNaN(this.date))this.date=new Date();if(!this.validYear(this.date.getFullYear()))this.date.setYear((this.date.getFullYear()<this.yearRange().start)?this.yearRange().start:this.yearRange().end);this.selected_date=new Date(this.date);this.use_time=/[0-9]:[0-9]{2}/.exec(value)?true:false;this.date.setDate(1);},updateFooter:function(text){if(!text)text=this.dateString();this.footer_div.purgeChildren();this.footer_div.build("span",{innerHTML:text});},clearDate:function(){if((this.target_element.disabled||this.target_element.readOnly)&&this.options.get("popup")!="force")return false;var last_value=this.target_element.value;this.target_element.value="";this.clearSelectedClass();this.updateFooter('&#160;');if(last_value!=this.target_element.value)this.callback("onchange");},updateSelectedDate:function(partsOrElement,via_click){var parts=$H(partsOrElement);if((this.target_element.disabled||this.target_element.readOnly)&&this.options.get("popup")!="force")return false;if(parts.get("day")){var t_selected_date=this.selected_date,vdc=this.options.get("valid_date_check");for(var x=0;x<=3;x++)t_selected_date.setDate(parts.get("day"));t_selected_date.setYear(parts.get("year"));t_selected_date.setMonth(parts.get("month"));if(vdc&&!vdc(t_selected_date.stripTime())){return false;}
this.selected_date=t_selected_date;this.selection_made=true;}
if(!isNaN(parts.get("hour")))this.selected_date.setHours(parts.get("hour"));if(!isNaN(parts.get("minute")))this.selected_date.setMinutes(Math.floor_to_interval(parts.get("minute"),this.options.get("minute_interval")));if(parts.get("hour")===""||parts.get("minute")==="")
this.setUseTime(false);else if(!isNaN(parts.get("hour"))||!isNaN(parts.get("minute")))
this.setUseTime(true);this.updateFooter();this.setSelectedClass();if(this.selection_made)this.updateValue();if(this.closeOnClick()){this.close();}
if(via_click&&!this.options.get("embedded")){if((new Date()-this.last_click_at)<333)this.close();this.last_click_at=new Date();}},closeOnClick:function(){if(this.options.get("embedded"))return false;if(this.options.get("close_on_click")===nil)
return(this.options.get("time"))?false:true
else
return(this.options.get("close_on_click"))},navMonth:function(month){(target_date=new Date(this.date)).setMonth(month);return(this.navTo(target_date));},navYear:function(year){(target_date=new Date(this.date)).setYear(year);return(this.navTo(target_date));},navTo:function(date){if(!this.validYear(date.getFullYear()))return false;this.date=date;this.date.setDate(1);this.refresh();this.callback("after_navigate",this.date);return true;},setUseTime:function(turn_on){this.use_time=this.options.get("time")&&(this.options.get("time")=="mixed"?turn_on:true)
if(this.use_time&&this.selected_date){var minute=Math.floor_to_interval(this.selected_date.getMinutes(),this.options.get("minute_interval"));var hour=this.selected_date.getHours();this.hour_select.setValue(hour);this.minute_select.setValue(minute)}else if(this.options.get("time")=="mixed"){this.hour_select.setValue("");this.minute_select.setValue("");}},updateValue:function(){var last_value=this.target_element.value;this.target_element.value=this.dateString();if(last_value!=this.target_element.value)this.callback("onchange");},today:function(now){var d=new Date();this.date=new Date();var o=$H({day:d.getDate(),month:d.getMonth(),year:d.getFullYear(),hour:d.getHours(),minute:d.getMinutes()});if(!now)o=o.merge({hour:"",minute:""});this.updateSelectedDate(o,true);this.refresh();},close:function(){if(this.closed)return false;this.callback("before_close");this.target_element.calendar_date_select=nil;Event.stopObserving(document,"mousedown",this.closeIfClickedOut_handler);Event.stopObserving(document,"keypress",this.keyPress_handler);this.calendar_div.remove();this.closed=true;if(this.iframe)this.iframe.remove();if(this.target_element.type!="hidden"&&!this.target_element.disabled)this.target_element.focus();this.callback("after_close");},closeIfClickedOut:function(e){if(!$(Event.element(e)).descendantOf(this.calendar_div))this.close();},keyPress:function(e){if(e.keyCode==Event.KEY_ESC)this.close();},callback:function(name,param){if(this.options.get(name)){this.options.get(name).bind(this.target_element)(param);}}}


Date.prototype.toFormattedString=function(include_time){str=this.getFullYear()+"-"+Date.padded2(this.getMonth()+1)+"-"+Date.padded2(this.getDate());if(include_time){hour=this.getHours();str+=" "+this.getAMPMHour()+":"+this.getPaddedMinutes()+" "+this.getAMPM()}
return str;}
Date.parseFormattedString=function(string){var regexp="([0-9]{4})(-([0-9]{2})(-([0-9]{2})"+"( ([0-9]{1,2}):([0-9]{2})? *(pm|am)"+"?)?)?)?";var d=string.match(new RegExp(regexp,"i"));if(d==null)return Date.parse(string);var offset=0;var date=new Date(d[1],0,1);if(d[3]){date.setMonth(d[3]-1);}
if(d[5]){date.setDate(d[5]);}
if(d[7]){hours=parseInt(d[7],10);offset=0;if(d[9]){is_pm=(d[9].toLowerCase()=="pm");if(is_pm&&hours<=11)hours+=12;if(!is_pm&&hours==12)hours=0;}
date.setHours(hours);}
if(d[8]){date.setMinutes(d[8]);}
if(d[10]){date.setSeconds(d[10]);}
if(d[12]){date.setMilliseconds(Number("0."+d[12])*1000);}
if(d[14]){offset=(Number(d[16])*60)+Number(d[17]);offset*=((d[15]=='-')?1:-1);}
return date;}