var generic = generic || {};
generic.announcement || {};

generic.announcement = {
    
	init : function ( landing_on, basket_on, checkout_on, custom) {
		this.landing_announcement_on = landing_on;
		this.basket_announcement_on = basket_on;
		this.checkout_announcement_on = checkout_on;
	
		if(typeof(custom) != 'undefined' && typeof(this[custom]) == 'function') {
			this[custom](custom);
			return;
		}
	
		var checkout = 0;
		var UrlRegExp = /checkout/;
	
		if ( UrlRegExp.test(window.location) ) {
			checkout = 1;
		}
	
		if ( this.landing_announcement_on && !checkout ) {
			this.landing();
		}
	
		if (this.checkout_announcement_on && checkout) {
			this.checkout();
		}
	},
    
	popup: function(html, params) {
		var layer = new Element("div", params);
		$(document.body).insert(layer);
		layer.insert(html);
		bb.overlay.launchPopover({content: layer});
		layer.select("a.close-link").each(function(link) {
		  link.observe("click", function(closeClickEvent) {
  			closeClickEvent.preventDefault();
			  layer.remove();
			  bb.overlay.hide();
		  });
		});
	},
   
	/* custom pop'd */
	neonnude: function() {
		if(generic.cookie('popup.neonude')) return;
	
		var config = {
			'path': '/templates/popups/neon_nude.tmpl'+window.location.search,
			'forceReload': true,
			'method': 'post'
		};
	
		var handle_submit = function(e) {
			var form = e.srcElement;
			form.select('.add-button')[0].hide();
			form.select('.add-progress')[0].show();
			var params = form.serialize(true);
			config.urlparams = params;
			generic.templatefactory.get(config).evaluateCallback({
				callback: function(html) {
					$$('div.a-content')[0].update('');
					var content = new Element('div');
					content = content.update(html).select('div.a-content')[0].childElements();
					content.each(function(h) {
						$$('div.a-content')[0].insert(h); 
					});
					$('waitlist').observe('submit', handle_submit);
				}
			});
			e.preventDefault();
		};
		
		var params = {
			callback: function(html) {
				generic.announcement.popup(html, {'class': 'announcement-wrapper popup'});
				generic.cookie('popup.neonude', 1 ,{path:"/"});
				$('waitlist').observe('submit', handle_submit);
			}
		};
	
		generic.templatefactory.get(config).evaluateCallback(params);
	},
    
    landing : function () {

    if ( generic.cookie("LandingAnnouncementSeen") ) return; 
	  if ( generic.cookie("AnnouncementEmailCompleted") ) return;
	    	
        generic.templatefactory.get({path: '/templates/popups/weather_message.tmpl', forceReload: true}).evaluateCallback({        
            callback: function(html) {
                
                // write cookes so we do not display on screen again
                generic.cookie("LandingAnnouncementSeen",1 , {path:"/"});

                var wrapperNode = new Element("div", {"class":"announcement-wrapper popup"});
                $(document.body).insert(wrapperNode);
                wrapperNode.insert(html);

                bb.overlay.launchPopover({content: wrapperNode});
                
                // wire up close link
                var closeButtonNode = wrapperNode.select("a.close-link")[0];
                closeButtonNode.observe("click", function(closeClickEvent) {
                    closeClickEvent.preventDefault();
                    wrapperNode.remove();
                    bb.overlay.hide();
                }); 	
                
               /*
                $$("#waitlist")[0].observe('submit', function (submitEvt) {                
                    submitEvt.preventDefault();                
                
                    $$("#waitlist .add-progress")[0].style.display = "block";
                    $$("#waitlist .add-button")[0].style.display = "none";
                    
                    var params = $$("#waitlist")[0].serialize(true);
                    
                    generic.jsonrpc.fetch({
                        method : 'rpc.form',
                        params: [params],
                        onSuccess:function(jsonRpcResponse) {
                            $$("#waitlist .add-progress")[0].style.display = "none";
                            $$("#waitlist .add-button")[0].style.display = "block";
                            
                            //we have successfully captured email so lets not show popups anymore for this session
                            generic.cookie("AnnouncementEmailCompleted",1 , {path:"/"});
                            
                            generic.templatefactory.get({path: '/templates/popups/announcement_thanks.tmpl'}).evaluateCallback({
                                callback: function(html) {
                                    
                                    var wrapperNode = $$('.announcement-wrapper')[0];
                                    
                                    wrapperNode.update(html);
                        
                                    // wire up close link
                                    var closeButtonNode = wrapperNode.select("a.close-link")[0];
                                    closeButtonNode.observe("click", function(closeClickEvent) {
                                        closeClickEvent.preventDefault();
                                        wrapperNode.remove();
                                        bb.overlay.hide();
                                    });
                                }
                            });
                        },
                        
                        onFailure: function(jsonRpcResponse){
                            var errorObjectsArray = jsonRpcResponse.getMessages();
                            generic.showErrors(errorObjectsArray, $$("#waitlist ul.error_messages")[0]);
                            $$("#waitlist .add-progress")[0].style.display = "none";
                                                        
                            $$("#waitlist .add-button")[0].style.display = "block";
                            $$("#waitlist")[0].select("input#form--waitlist--field--PC_EMAIL_ADDRESS")[0].focus();
                        }
                    });
                });        
                */
            }        
        });        
    },

    checkout : function() {
     
    if ( generic.cookie("AnnouncementEmailCompleted") ) return; 
	        
        generic.templatefactory.get({path: '/templates/popups/announcement.tmpl?checkout=1', forceReload: true}).evaluateCallback({        
            callback: function(html) {
                
                var wrapperNode = new Element("div", {"class":"announcement-wrapper popup"});
                $(document.body).insert(wrapperNode);
                wrapperNode.insert(html);

                bb.overlay.launchPopover({content: wrapperNode});
                
                // wire up close link
                var closeButtonNode = wrapperNode.select("a.close-link")[0];
                closeButtonNode.observe("click", function(closeClickEvent) {
                    closeClickEvent.preventDefault();
                    wrapperNode.remove();
                    bb.overlay.hide();
                }); 
                
                $$("#waitlist")[0].observe('submit', function (submitEvt) {                
                    submitEvt.preventDefault();                
                
                    $$("#waitlist .add-progress")[0].style.display = "block";
                    $$("#waitlist .add-button")[0].style.display = "none";
                    
                    var params = $$("#waitlist")[0].serialize(true);
                    
                    generic.jsonrpc.fetch({
                        method : 'rpc.form',
                        params: [params],
                        onSuccess:function(jsonRpcResponse) {
                            $$("#waitlist .add-progress")[0].style.display = "none";
                            $$("#waitlist .add-button")[0].style.display = "block";

                            //we have successfully captured email so lets not show popups anymore for this session
                            generic.cookie("AnnouncementEmailCompleted",1 , {path:"/"});
                        
                            generic.templatefactory.get({path: '/templates/popups/announcement_thanks.tmpl'}).evaluateCallback({
                                callback: function(html) {
                                    var wrapperNode = $$('.announcement-wrapper')[0];
                                    
                                    wrapperNode.update(html);
                        
                                    // wire up close link
                                    var closeButtonNode = wrapperNode.select("a.close-link")[0];
                                    closeButtonNode.observe("click", function(closeClickEvent) {
                                        closeClickEvent.preventDefault();
                                        wrapperNode.remove();
                                        bb.overlay.hide();
                                    });
                                }
                            });
                        },
                        
                        onFailure: function(jsonRpcResponse){
                            var errorObjectsArray = jsonRpcResponse.getMessages();
                            generic.showErrors(errorObjectsArray, $$("#waitlist ul.error_messages")[0]);
                            $$("#waitlist .add-progress")[0].style.display = "none";
                                                        
                            $$("#waitlist .add-button")[0].style.display = "block";
                            $$("#waitlist")[0].select("input#form--waitlist--field--PC_EMAIL_ADDRESS")[0].focus();
                        }
                    });
                });         
            }        
        });       
    },
    
    basket : function() {
     
    if ( generic.cookie("AnnouncementEmailCompleted") ) return; 
	        
        generic.templatefactory.get({path: '/templates/popups/announcement.tmpl?basket=1', forceReload: true}).evaluateCallback({        
            callback: function(html) {
                
                var wrapperNode = new Element("div", {"class":"announcement-wrapper popup"});
                $(document.body).insert(wrapperNode);
                wrapperNode.insert(html);

                bb.overlay.launchPopover({content: wrapperNode});
                
                // wire up close link
                var closeButtonNode = wrapperNode.select("a.close-link")[0];
                closeButtonNode.observe("click", function(closeClickEvent) {
                    closeClickEvent.preventDefault();
                    wrapperNode.remove();
                    bb.overlay.hide();
                }); 
                
                $$("#waitlist")[0].observe('submit', function (submitEvt) {                
                    submitEvt.preventDefault();                
                
                    $$("#waitlist .add-progress")[0].style.display = "block";
                    $$("#waitlist .add-button")[0].style.display = "none";
                    
                    var params = $$("#waitlist")[0].serialize(true);
                    
                    generic.jsonrpc.fetch({
                        method : 'rpc.form',
                        params: [params],
                        onSuccess:function(jsonRpcResponse) {
                            $$("#waitlist .add-progress")[0].style.display = "none";
                            $$("#waitlist .add-button")[0].style.display = "block";

                            //we have successfully captured email so lets not show popups anymore for this session
                            generic.cookie("AnnouncementEmailCompleted",1 , {path:"/"});
                        
                            generic.templatefactory.get({path: '/templates/popups/announcement_thanks.tmpl'}).evaluateCallback({
                                callback: function(html) {
                                    var wrapperNode = $$('.announcement-wrapper')[0];
                                    
                                    wrapperNode.update(html);
                        
                                    // wire up close link
                                    var closeButtonNode = wrapperNode.select("a.close-link")[0];
                                    closeButtonNode.observe("click", function(closeClickEvent) {
                                        closeClickEvent.preventDefault();
                                        wrapperNode.remove();
                                        bb.overlay.hide();
                                    });
                                }
                            });
                        },
                        
                        onFailure: function(jsonRpcResponse){
                            var errorObjectsArray = jsonRpcResponse.getMessages();
                            generic.showErrors(errorObjectsArray, $$("#waitlist ul.error_messages")[0]);
                            $$("#waitlist .add-progress")[0].style.display = "none";
                                                        
                            $$("#waitlist .add-button")[0].style.display = "block";
                            $$("#waitlist")[0].select("input#form--waitlist--field--PC_EMAIL_ADDRESS")[0].focus();
                        }
                    });
                });         
            }        
        });       
    }    
}
