/* -*- Mode: JavaScript; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
YAHOO.namespace('vs');

function gebi(i){return document.getElementById(i);}
function clog(txt){if(window.console){console.log(txt);}}

(function() {
    var Y = YAHOO;
    var YUI = YAHOO.util;
    var VS = YAHOO.vs;

    VS.randDealValues = function (username) {
        var d = new Date();
        var weekday=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
        var monthname=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
        var daydate = weekday[d.getDay()] + ', ' + monthname[d.getMonth()]+ ' ' + d.getDate();
        var datetime = d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();
        
        var prod_title = username+"'s Deal on " + daydate +' '+ datetime;
        var review_summary = "Good deal for a " + weekday[d.getDay()]+'!';
        var review = "I, "+username+" can say that this is the greatest deal I have found since the creation of ValueScouts. So today, "+daydate+" must be the greatest day in the history of ValueWeekly! The time right now is: "+datetime;
        var pctoff=Math.floor(Math.random()*101);
        var bigrand=Math.floor(Math.random()*100000001);
        var deal_info = "Awesome deal, "+pctoff+'% off everything!';
        var link = 'http://www.yahoo.com/?rnd='+d.getMonth()+d.getDate()+bigrand;
        var expiry_date = '12/31/2009';
        var purchase_site_name = "DealChimp";
        
        var id_categories = document.getElementById('id_categories');
        if (id_categories) {
            id_categories.options[0].selected =true;
        }
        
        var id_product_title = document.getElementById('id_product_title');
        if (id_product_title) {
            id_product_title.value=prod_title;
        }
        
        var id_review_summary = document.getElementById('id_review_summary');
        if (id_review_summary) {
            id_review_summary.value = review_summary;
        }
        
        var id_review = document.getElementById('id_review');
        if (id_review) {
            id_review.value = review;
        }
        
        var id_deal_info = document.getElementById('id_deal_info');
        if (id_deal_info) {
            id_deal_info.value = deal_info;
        }
        
        var id_link = document.getElementById('id_link');
        if (id_link) {
            id_link.value = link;
        }
        
        var id_expiry_date = document.getElementById('id_expiry_date');
        if (id_expiry_date) {
            id_expiry_date.value = expiry_date;
        }
        
        var id_purchase_site_name = document.getElementById('id_purchase_site_name');
        if (id_purchase_site_name) {
            id_purchase_site_name.value = purchase_site_name;
        }
        
        return false;
        
    };
    
    VS.clickDeal = function(e,obj) {
        YUI.Dom.setStyle('dialog1', 'display', 'block');
        
        var alreadysubscribed = document.getElementById('alreadysubscribed');
        if (alreadysubscribed && alreadysubscribed.value=='no') {
            if (obj) {
                VS.togoLink = obj.togolink;
                if (VS.notRendered) {
                    VS.dialog1.render();
                    VS.notRendered = false;
                }
                VS.dialog1.show();
                var togoLinkEl = document.getElementById('togoLink');
                if (togoLinkEl) {
                    togoLinkEl.value = VS.togoLink;
                }
                
                // if (VS.togoLink != '') {
                //     pageTracker._trackPageview('/_track/interstitial_shown');
                // }
            }
            
            try {
                YUI.Event.preventDefault(e);
            } catch (err) {
                
            }
        }
    };
    
    VS.onDealTextChange = function (e,obj) {
        // debugger;
        if (obj && obj.elid) {
            var el = document.getElementById(obj.elid);
            if (el) {
                if (e.currentTarget) {
                    el.innerHTML = e.currentTarget.value;
                } else if (e.srcElement && e.srcElement.id) {
                    var currEl = document.getElementById(e.srcElement.id);
                    if (currEl) {
                        el.innerHTML = currEl.value;
                    }
                }
            }
        }
    };
    
    VS.init = function() {

        // Define various event handlers for Dialog
        var handleSubmit = function() {
            this.submit();
        };
        var handleCancel = function() {
            this.cancel();
            if (VS.togoLink != '') {
                window.location = VS.togoLink;
            }
        };
        var handleSuccess = function(o) {
            // alert('success!');
            var alreadysubscribed = document.getElementById('alreadysubscribed');
            if (alreadysubscribed) {
                alreadysubscribed.value='yes';
            }
            
            // url to deal is sent in response
            var response = o.responseText;
            if (response != 'false') {
                window.location = response;
            } else {
                var suberror = document.getElementById('suberror');
                if (suberror) {
                    suberror.innerHTML = "There seems to be an error in your email. Please fix and resubmit!";
                }
                VS.dialog1.show();
            }
            // console.log(response);
            // response = response.split("<!")[0];
            // document.getElementById("resp").innerHTML = response;
        };
        var handleFailure = function(o) {
            alert("Submission failed: " + o.status);
        };

        // Instantiate the Dialog
        
        if (VS.newInter) {
            VS.dialog1 = new YAHOO.widget.Dialog("dialog1", 
                                    { width : "640px",
                                        fixedcenter : true,
                                        close: false, //its false here, but we are manually adding a close button in the template itself
                                        modal: true,
                                        visible : false, 
                                        // postmethod: 'form',
                                        constraintoviewport : true,
                                        buttons : [ /*{ text:"Sign Up & Continue", handler:handleSubmit, isDefault:true }*/ ]
                                    });
        } else {
            VS.dialog1 = new YAHOO.widget.Dialog("dialog1", 
                                    { width : "36em",
                                        fixedcenter : true,
                                        close: false, //its false here, but we are manually adding a close button in the template itself
                                        modal: true,
                                        visible : false, 
                                        // postmethod: 'form',
                                        constraintoviewport : true,
                                        buttons : [ { text:"Sign Up & Continue", handler:handleSubmit, isDefault:true } ]
                                    });
        }
                                // removed { text:"Skip", handler:handleCancel },

        // Validate the entries in the form to require that both first and last name are entered
        VS.dialog1.validate = function() {
            var data = this.getData();
            if (data.firstname == "" || data.lastname == "") {
                alert("Please enter your first and last names.");
                return false;
            } else {
                return true;
            }
        };
        
        
        // Wire up the success and failure handlers
        VS.dialog1.callback = { success: handleSuccess,
                                     failure: handleFailure };

        // Render the Dialog
        // VS.dialog1.render();
        VS.notRendered = true;
        var closeElements = YAHOO.util.Dom.getElementsByClassName('container-close', 'a');
        YAHOO.util.Event.addListener(closeElements, "click", function () {
            if (VS.togoLink != '') {
                setTimeout("window.location = '"+VS.togoLink+"'", 0);
            }
            this.cancel();
        }, VS.dialog1, true);
        
        YAHOO.util.Event.addListener("showtest", "click", VS.dialog1.show, VS.dialog1, true);
        YAHOO.util.Event.addListener("hidetest", "click", VS.dialog1.hide, VS.dialog1, true);
    };

    VS.whenLoad = function () {
        VS.shouldPop = true;
        function testInternalLink(el) {
            return el.href.match(document.location.host);
            // && !el.href.match('/out/')
        }
        var internalLinkEls = YUI.Dom.getElementsBy(testInternalLink, "A");
        YUI.Event.addListener(internalLinkEls, "click", function () { VS.shouldPop=false; });
        // alert('call load');
    };
    
    VS.whenUnload = function () {
        if (VS.shouldPop) {
            if (YAHOO.vs.popUrl) {
                var popurl = YAHOO.vs.popUrl;
            } else {
                var popurl = '/signuppopup';
            }
            
            var popwin = window.open(popurl,'PopWin','toolbar=no,status=no,width=500,height=280,scrollbars');
            popwin.moveTo(140,200);         //change the numbers at the left to adjust the top and left margins of
            
            // to make it pop-under
            // popwin.blur();
            // window.focus();
        }
    };


	VS.read_cookie = function(cookie_name) {
	    var my_cookie=""+document.cookie;
	    var ind=my_cookie.indexOf(cookie_name);
	    if (ind==-1 || cookie_name=="") return ""; 
	    var ind1=my_cookie.indexOf(';',ind);
	    if (ind1==-1) ind1=my_cookie.length; 
	    return unescape(my_cookie.substring(ind+cookie_name.length+1,ind1));
	};
	
	VS.superSetVar = function (appendValue) {
	    var getVar = YAHOO.vs.read_cookie('__utmv');             // read the __utmv cookie
	    hasValue = getVar.indexOf(appendValue);     // does the cookie already have the value we want to append?
	    if ( hasValue == -1 ) {                                     // if the new value is not already in the cookie
	        removePrefix = /^.*\.(.*)/.exec(getVar);    // __utmv cookie has the format 12345678.cookieValue - remove the ## prefix
	        if (removePrefix && removePrefix[1]) {
	            newVar = removePrefix[1] + appendValue; // append the value
	        }else{
	            newVar = appendValue;                                 // this will execute if the cookie was not already set.
	        }
	            var superSetVarTracker = _gat._getTracker("UA-7777742-1");    // set up a tracker to call _setVar from
	            superSetVarTracker._initData();    
	            superSetVarTracker._setVar(newVar);                                     // call _setVar with the new value
	    }
	};
	
	VS.unSetVar = function(removeValue){
	    var getVar = YAHOO.vs.read_cookie('__utmv');                 // read the __utmv cookie
	    hasValue = getVar.indexOf(removeValue);         // does the cookie have the value we want to remove?
	    if ( hasValue != -1 ) {                                         // if the value is in the cookie then . . .    otherwise, there is nothing further to do.
	        removePrefix = /^.*\.(.*)/.exec(getVar);    // __utmv cookie has the format 12345678.cookieValue - remove the ## prefix
	        if (removePrefix && removePrefix[1]) {        // if we remove the prefix then. . .
	            //
	            var re = removeValue + '[^/]*';
	            re = new RegExp(re,'g');
	            newVar = removePrefix[1].replace(re,""); // newVar = removePrefix[1] MINUS removeValue
	            //
	            var superSetVarTracker = _gat._getTracker("UA-7777742-1");    // set up a tracker to call _setVar from
	            superSetVarTracker._initData();    
	            superSetVarTracker._setVar(newVar);                                     // call _setVar with the new value
	        }
	        
	    }
	};

    VS.bookOnlineclickDeal = function (e,obj) {
        YUI.Dom.setStyle('dialog1', 'display', 'block');
        
        if (obj) {
            VS.togoLink = obj.togolink;
            if (VS.notRendered) {
                VS.dialog1.render();
                VS.notRendered = false;
            }
            
            VS.dialog1.show();
            var beaconspan = document.getElementById('beaconspan');
            if (beaconspan) {
                beaconspan.innerHTML = "<img src='http://www.bloomspot.com/la_residence_inter_shown_span.png' width='1' height='1' style='display:block; position: absolute; top:-1000px; left:-1000px;'>";
            }
            var togoLinkEl = document.getElementById('togoLink');
            if (togoLinkEl) {
                togoLinkEl.value = VS.togoLink;
            }
        }
        
        try {
            YUI.Event.preventDefault(e);
        } catch (err) {
            
        }
        
        window.setTimeout(function () {
            VS.bookOnlinehandleSubmit();
        }, 12500);
    };
    
    VS.bookOnlineInfo_init = function () {

        // Define various event handlers for Dialog
        VS.bookOnlinehandleSubmit = function() {
            if (VS.togoLink != '') {
                window.location = VS.togoLink;
            }
        };
        var handleCancel = function() {
            this.cancel();
        };
        var handleSuccess = function(o) {
        };
        var handleFailure = function(o) {
            alert("Submission failed: " + o.status);
        };

        // Instantiate the Dialog
        
        VS.dialog1 = new YAHOO.widget.Dialog("dialog1", 
                                { width : "36em",
                                    fixedcenter : true,
                                    close: false, //its false here, but we are manually adding a close button in the template itself
                                    modal: true,
                                    visible : false, 
                                    // postmethod: 'form',
                                    constraintoviewport : true,
                                    buttons : [ { text:"Continue to Deal &rarr;", handler:VS.bookOnlinehandleSubmit, isDefault:true } ]
                                });
                                // removed { text:"Skip", handler:handleCancel },

        // Validate the entries in the form to require that both first and last name are entered
        VS.dialog1.validate = function() {
        };
        
        
        // Wire up the success and failure handlers
        VS.dialog1.callback = { success: handleSuccess,
                                     failure: handleFailure };

        // Render the Dialog
        // VS.dialog1.render();
        VS.notRendered = true;

        YAHOO.util.Event.addListener("dialog1_close", "click", function () {
            if (VS.togoLink != '') {
                // setTimeout("window.location = '"+VS.togoLink+"'", 0);
            }
            this.cancel();
        }, VS.dialog1, true);
        
    };
    
    VS.overDeal = function (e,obj) {
        var el = VS.getElFromE(e);
        // el.style.background = "url(/media/css/images/gray-button-gradient.gif) repeat-x";
        // YUI.Dom.setStyle(el,'background','url(/media/css/images/gray-button-gradient.gif) repeat-x');
        YUI.Dom.setStyle(el.firstChild,'opacity','1');
        
    };

    VS.outDeal = function (e,obj) {
        var el = VS.getElFromE(e);
        YUI.Dom.setStyle(el.firstChild,'opacity','.85');
        // YUI.Dom.setStyle(el,'background','#eeeeee');
    };
    
    VS.showMessageDialog = function (message) {
        if (!VS.msgDialog) {
        }
    };
    
    VS.shareDeal = function (e,obj) {
        var el = VS.getElFromE(e);
        if (!VS.shareDealDialog) {
			var bloomReferral = gebi('bloomReferral');
			YUI.Dom.setStyle(bloomReferral, 'display', 'block');
            VS.shareDealDialog = new YAHOO.widget.Dialog("bloomReferral", 
            { width: "500px",
                fixedcenter: true,
                close: false, //its false here, but we are manually adding a close button in the template itself
                modal: true,
                hideaftersubmit: false,
                effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},
                constraintoviewport : true
                // buttons : [ { text:"Sign Up & Continue", handler:handleSubmit, isDefault:true } ]
            });
        
            var handleSubmit = function () {
            };
        
            // VS.shareDealDialog.asyncSubmitEvent.subscribe(handleSubmit);
            var handleSuccess = function (o) {
                    var response = o.responseText;
                	if (o.getResponseHeader['Bsresult']) {
                        	bsresult = o.getResponseHeader['Bsresult'].replace(/[\s\r\n]+$/, '');
                	}
                	var referral_body = document.getElementById('referral_body');
            	
                    if (bsresult == 'referral_success') {
                            var dialog_title = document.getElementById('offer_title');
                            if (dialog_title) {
                                    dialog_title.innerHTML = "Thank you for sharing this deal with your friends."
                                    YUI.Dom.setStyle(dialog_title,'textAlign','center');
                                    YUI.Dom.setStyle(dialog_title,'fontSize','20px');
                                    YUI.Dom.setStyle(dialog_title,'padding','15px');
                            }
                        
                            var dialog_subtitle = document.getElementById('dialog_subtitle');
                            if (dialog_subtitle) {
                                    YUI.Dom.setStyle(dialog_subtitle,'display','none');
                            }
                        
                            if (referral_body) {
                                    referral_body.style.display = 'none';
                            }
                            pageTracker._trackPageview('/_track/referral_popup/'+obj.dealslug+'/success/');
                            VS.setTimerToCloseDialog(VS.shareDealDialog,3000);
                    } else if (bsresult == 'referral_fail') {
                        	if (o.getResponseHeader['Bserrors']) {
                                	bserrors = o.getResponseHeader['Bserrors'].replace(/[\s\r\n]+$/, '');
                        	}
                        	if (referral_body) {
                        	        referral_body.innerHTML = "Looks like there was an error!: "+bserrors;
                        	}
                    }
            };
        
            var handleFailure = function () {
            
            };
            VS.shareDealDialog.callback = { success: handleSuccess, failure: handleFailure };
            
            VS.shareDealDialog.render();
            YUI.Event.addListener("dialog1_close", "click", function () {
                this.cancel();
            }, VS.shareDealDialog, true);
            VS.currentDialog = VS.shareDealDialog;
            if (VS.refPathDialog) {
                VS.refPathDialog.hide();
            }
            // if (typeof pageTracker == "undefined") {
            //     pageTracker._trackPageview('/_track/referral_popup/'+obj.dealslug+'/');
            // }
        } else {
            if (VS.refPathDialog) {
                VS.refPathDialog.hide();
            }
            
            if (obj.resetForm){
                var referral_body = document.getElementById('referral_body');
                referral_body.style.display = 'block';
            }
            VS.shareDealDialog.show();
        }
        
        var dealslug = document.getElementById('dealslug');
        if (dealslug && obj.dealslug) {
            dealslug.value = obj.dealslug;
        }

        var dialog_title = document.getElementById('offer_title');
        if (dialog_title && obj.dealtitle) {
            dialog_title.innerHTML = "Invite your friends to "+obj.dealtitle+"";
        }

        var deal_title = document.getElementById('deal_title');
        if (deal_title && obj.dealtitle) {
            deal_title.innerHTML = obj.dealtitle;
        }

        var dialog_subtitle = document.getElementById('dialog_subtitle');
        if (dialog_subtitle && obj.dealinfo) {
            dialog_subtitle.innerHTML = obj.dealinfo;
            YUI.Dom.setStyle(dialog_subtitle,'display','block');
        }
        
		var dealReferralForm = document.getElementById('dealReferralForm');
		if (dealReferralForm) {
			if (VS.deal_referral_actions[obj.dealslug]) {
				dealReferralForm.action = VS.deal_referral_actions[obj.dealslug];
			}
		}
		
		if (obj.deal_absolute_url) {
    		VS.request_path = obj.deal_absolute_url;
		}
        
		var dealReferralMessage = document.getElementById('id_message');
		if (dealReferralMessage && obj.deal_r_message && obj.deal_r_message != '') {
			dealReferralMessage.value = obj.deal_r_message;
		}
		
		if (obj.twitter_msg) {
            VS.twitter_msg = obj.twitter_msg;
		}
		
        YUI.Event.addListener('go_back','click',function () {
            VS.shareDealDialog.hide();
            VS.refPathDialog.show();
        });

        VS.refreshReferralShortLink(); 
        YUI.Event.stopPropagation(e);
    };
    
    VS.refreshReferralShortLink = function () {
	    var email_box = document.getElementById('id_sender');
        var url = VS.getTaggedReferralUrl(VS.request_host, VS.request_path, VS.share_utm, email_box.value);
        simple_bitlyfy(url);
    };
    
    VS.getRespHeaderStripNewLines = function (o,key) {
        if (o.getResponseHeader[key]) {
            	return o.getResponseHeader[key].replace(/[\s\r\n]+$/, '');
    	}
    };
    
    VS.setTimerToCloseDialog = function (panel,timeleft) {
        if (panel && timeleft > 1) {
            window.setTimeout(function () {
                panel.hide();
            }, timeleft);
        }
    };

    VS.onEditionsDropdownChange = function(obj) {
        var selected_index = obj.selectedIndex;
        var selected_slug = obj.options[selected_index].value;
        YAHOO.vs.changeEdition(selected_slug);
    };

    VS.changeEdition = function(edition_slug) {
        window.location.href='/' + edition_slug;
    };
    
    VS.getElFromE = function (e) {
        var el;
        if (e.currentTarget) {
            el = e.currentTarget;
        } else if (e.srcElement && e.srcElement.id) {
            el = document.getElementById(e.srcElement.id);
        }
        return el;
    };
    
    VS.increaseHeight = function (e,obj) {
        var el = VS.getElFromE(e);
        var to = obj.to;
        
        if (to) {
            YUI.Dom.setStyle(el,'height',to);
        }
    };
    
    VS.popUp = function (message,title,hideOK) {
        if (!VS.popUp.dialog) {
            var dialog = new YAHOO.widget.SimpleDialog('popUp',{ 
                effect:{
                    effect: YAHOO.widget.ContainerEffect.FADE,
                    duration: 0.25
                }, 
                fixedcenter: true,
                modal: true,
                visible: false,
                draggable: true,
                close: true
            });
            
            VS.popUp.dialog = dialog;
            
            VS.popUp.hide = function hide() {
                VS.popUp.dialog.hide();
            };
            
            var dElement = new YAHOO.util.Element(YAHOO.util.Dom.getElementBy(function(node) {return true;},'div',dialog.element));
            dElement.addClass('auth_dialog');
        }
        else {
            var dialog = VS.popUp.dialog;
        }
        
        var form = new YAHOO.util.Element(document.createElement('form'));
        form.addClass('auth_form');
        form.set('action','javascript: void(0);');
        var mDiv = new YAHOO.util.Element(document.createElement('div'));
        mDiv.addClass('message');
        mDiv.set('innerHTML',message);
        form.appendChild(mDiv.get('element'));

        if (!hideOK) {
            var buttonDiv = new YAHOO.util.Element(document.createElement('div'));
            buttonDiv.addClass('auth_dialog_buttons');
            var okButton = new YAHOO.util.Element(document.createElement('input'));
            okButton.addClass('medmyaccountbutton');
            okButton.set('type', 'submit');
            okButton.set('name', 'ok');
            okButton.set('value', 'OK');
            okButton.set('onclick', 'YAHOO.vs.popUp.hide();');
            buttonDiv.appendChild(okButton);
            form.appendChild(buttonDiv);
        }
        dialog.setBody(form.get('element'));
        if (typeof title == 'undefined'){
            title = 'Alert';
        }
        dialog.setHeader(title);
        dialog.render(document.body);
        YAHOO.util.Dom.getElementsByClassName('auth_dialog','div',YAHOO.vs.popUp.dialog.element)[0].style.display = 'block';
        dialog.show();
        
        return dialog;
    };
    
    (function() {
        YAHOO.vs.beforeShowUserLoginEvent = new YAHOO.util.CustomEvent('BeforeShowUserLogin');
        YAHOO.vs.UserLoginEvent = new YAHOO.util.CustomEvent('UserLogin',fireOnce=true);
        YAHOO.vs.cancelLoginEvent = new YAHOO.util.CustomEvent('CancelLogin');
        YAHOO.vs.loginRefreshHolds = [];
        YAHOO.vs.UserNotMeEvent = new YAHOO.util.CustomEvent('UserNotMe',fireOnce=false);
        YAHOO.vs.ChangedEmailEvent = new YAHOO.util.CustomEvent('ChangedEmail',fireOnce=false);
        YAHOO.vs.UserLoginEvent.subscribeEvent.subscribe(function (e, args) {
            var fn = args[0];
            if (typeof fn.finishEvent != 'undefined'){
                YAHOO.vs.loginRefreshHolds.push(fn);
            }
        });
        YAHOO.vs.formSubmissionCompleteEvent = new YAHOO.util.CustomEvent('FormSubmissionComplete',fireOnce=true);
        YAHOO.vs.linkFollowCompleteEvent = new YAHOO.util.CustomEvent('LinkFollowComplete',fireOnce=true);
        
        YAHOO.vs.completeInterupt = false;
    })();
    
    YAHOO.vs.setupaccountDialogObject = function() {
        YAHOO.vs.continueSubscribeFlow = false;
        if (typeof YAHOO.vs.loggedIn == 'undefined') {YAHOO.vs.loggedIn = false;}
        if (typeof YAHOO.vs.hasPword == 'undefined') {YAHOO.vs.hasPword = false;}
        if (typeof YAHOO.vs.subEmail == 'undefined') {YAHOO.vs.subEmail = '';}
        if (typeof YAHOO.vs.recall == 'undefined') {YAHOO.vs.recall = false;}
        
        YAHOO.vs.accountDialogObject = {};
        YAHOO.vs.accountDialogObject.login_dialog = new YAHOO.widget.Dialog('login_dialog',{fixedcenter:true,draggable:true,visible:false,modal:true,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},postdata:'login=login'});
        YAHOO.vs.accountDialogObject.signup_dialog = new YAHOO.widget.Dialog('signup_dialog',{fixedcenter:true,draggable:true,visible:false,modal:true,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},postdata:'signup=signup'});
        YAHOO.vs.accountDialogObject.forgot_password_dialog = new YAHOO.widget.Dialog('forgot_password_dialog',{fixedcenter:true,draggable:true,visible:false,modal:true,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},postdata:'send_password=send_password'});
        YAHOO.vs.accountDialogObject.create_password_dialog = new YAHOO.widget.Dialog('create_password_dialog',{fixedcenter:true,draggable:true,visible:false,modal:true,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}});
        YAHOO.vs.accountDialogObject.sent_password_dialog = new YAHOO.widget.Panel('sent_password_dialog',{fixedcenter:true,draggable:true,visible:false,modal:true,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}});
        YAHOO.vs.accountDialogObject.changed_password_dialog = new YAHOO.widget.Panel('changed_password_dialog',{fixedcenter:true,draggable:true,visible:false,modal:true,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}});
        
        YAHOO.vs.accountDialogObjectMessage = null;
        
        YAHOO.vs.userLoginRefresh = function userLoginRefresh(url) {
            var wait = false;
            for (var i=0;i<YAHOO.vs.loginRefreshHolds.length;i++) {
                var hold = YAHOO.vs.loginRefreshHolds[i];
                if (!hold.finishEvent.fired) {
                    wait = true;
                    if (YAHOO.vs.userLoginRefresh.subscribedTo.indexOf(hold.finishEvent) < 0) {
                       hold.finishEvent.subscribe(function() {YAHOO.vs.userLoginRefresh(url);});
                       YAHOO.vs.userLoginRefresh.subscribedTo.push(hold.finishEvent);
                    }
                    if (!hold.handling) {
                        hold();
                    }
                }
            }
            if (!wait) {
                for (var i=0;i<YAHOO.vs.loginRefreshHolds.length;i++) {
                    hold.finishEvent.unsubscribeAll();
                }
                window.location = url;
            }
        };
        
        YAHOO.vs.userLoginRefresh.subscribedTo = [];
        
        var accountCallbackSuccess = function(o) {
            document.body.style.cursor = 'default';
            YAHOO.vs.showUserLogin.handling = false;
            if (o.getResponseHeader['Authenticated']) {
                YAHOO.vs.setLoggedIn(true);
                YAHOO.vs.UserLoginEvent.fire();
            }
            if(o.getResponseHeader['Next-Location']) {
                if (YAHOO.vs.recall && typeof YAHOO.vs.recall == 'function') {
                    YAHOO.vs.recall(true);
                    if (YAHOO.vs.continueSubscribeFlow) {
                        YAHOO.vs.showSubscribeDialog(function (){return;});
                    }
                }
                else if (YAHOO.vs.recall) {
                    YAHOO.vs.userLoginRefresh(YAHOO.vs.recall);
                }
                else {
                    YAHOO.vs.userLoginRefresh(o.getResponseHeader['Next-Location'].replace(/^[\n\r\t\s]+|[\n\r\t\s]+$/g,''));
                }
            }
            else if(o.getResponseHeader['Form-Error']) {
                var error = o.getResponseHeader['Form-Error'].replace(/^[\n\r\t\s]+|[\n\r\t\s]+$/g,'');
                var error_div = YAHOO.util.Dom.getElementsByClassName('form_errors','div',o.argument.body)[0];
                error_div.innerHTML = error;
                o.argument.show();
            }
            else if((o.argument == YAHOO.vs.accountDialogObject.forgot_password_dialog)||(o.argument == YAHOO.vs.accountDialogObject.create_password_dialog)) {
                var dialog = YAHOO.vs.accountDialogObject.sent_password_dialog;
                if(o.argument == YAHOO.vs.accountDialogObject.create_password_dialog) {
                    dialog.header.innerHTML = "Create Password<" + "a class='auth_link' href='javascript:void(0);' id='sent_password_dialog_close' class='container-close'><" + "/a>";
                }
                else {
                    dialog.header.innerHTML = "Forgot Password?<" + "a class='auth_link' href='javascript:void(0);' id='sent_password_dialog_close' class='container-close'><" + "/a>";
                }
                dialog.body.innerHTML = o.responseText;
                dialog.show();
                setTimeout(function(){ dialog.hide(); },5000);
            }
            else { 
                if (typeof o.argument.recall == 'function') {
                    o.argument.recall();
                    YAHOO.vs.userLoginRefresh(window.location.href);
                }
                else {
                    var error_div = YAHOO.util.Dom.getElementsByClassName('form_errors','div',o.argument.body)[0];
                    error_div.innerHTML = 'An Unknown Error Occured!';
                    o.argument.show();
                }
            }
        };
        
        var accountCallbackFailure = function(o) {
            YAHOO.vs.showUserLogin.handling = false;
            document.body.style.cursor = 'default';
            if (typeof o.argument.recall == 'function') {
                o.argument.recall();
            }
            else {
                var error_div = YAHOO.util.Dom.getElementsByClassName('form_errors','div',o.argument.body)[0];
                error_div.innerHTML = 'An Unknown Error Occured!';
                o.argument.show();
            }
        };
        
        var onSubmit = function(type,args) {
            document.body.style.cursor = 'wait';
        };
        
        for (var i in YAHOO.vs.accountDialogObject) {
            YAHOO.util.Dom.getElementsByClassName('auth_dialog','div',YAHOO.vs.accountDialogObject[i].element)[0].style.display = 'block';
            if (typeof YAHOO.vs.accountDialogObject[i].form != 'undefined') {
                YAHOO.vs.accountDialogObject[i].callback = {'success':accountCallbackSuccess,'failure':accountCallbackFailure,'argument':YAHOO.vs.accountDialogObject[i]};
                YAHOO.vs.accountDialogObject[i].asyncSubmitEvent.subscribe(onSubmit);
                YAHOO.vs.accountDialogObject[i].cancelEvent.subscribe(function() {
                    YAHOO.vs.showUserLogin.handling = false;
                    YAHOO.vs.cancelLoginEvent.fire();
                });
            }
            YAHOO.vs.accountDialogObject[i].render();
        }
        
        var container = new YAHOO.util.Element('auth_dialogs');
        container.setStyle('display','block');
    
        YAHOO.vs.changeEmail = function(type,args) {
            var email = new YAHOO.util.Element('id_signup-username');
            var email3 = new YAHOO.util.Element('id_forgot_pword-email');
            email3.set('value',email.get('value'));
        };
        YAHOO.util.Event.addListener(['id_login-username'],'change',YAHOO.vs.changeEmail);
        
        YAHOO.vs.clearForm = function(form) {
            var formElements = form.elements;
            for (var i=0;i<formElements.length;i++) {
                formElements.item(i).value = '';
            }
        };
        
        YAHOO.vs.switchDialog = function(toShow) {
            for (var i in YAHOO.vs.accountDialogObject) {
                YAHOO.vs.accountDialogObject[i].hide();
            }
            YAHOO.vs.accountDialogObject[toShow].show();
        };
        
        YAHOO.vs.accountDialogObject.login_dialog.showEvent.subscribe(function() {
            var form = YAHOO.vs.accountDialogObject.login_dialog.form;
            for (var i=0;i<form.elements.length;i++) {
                if (form.elements.item(i).value == '') {
                    form.elements.item(i).focus();
                    break;
                }
            }
        });
        
        YAHOO.vs.showUserLogin = function(redirectTo,emailField) {
            YAHOO.vs.showUserLogin.handling = true;
            if (!YAHOO.vs.beforeShowUserLoginEvent.fire()) {
                return;
                YAHOO.vs.showUserLogin.handling = false;
            }
            YAHOO.vs.switchSubscriber.finishEvent.unsubscribe(YAHOO.vs.showUserLogin);
            if (typeof redirectTo != 'undefined' && (typeof redirectTo == 'function' || redirectTo.indexOf('/') > -1)) {
                YAHOO.vs.recall = redirectTo;
            }
            if (typeof emailField != 'undefined' && emailField == 'header'){
                YAHOO.vs.loginRefreshHolds = [];
                YAHOO.vs.setAccountMessaging({message:'',buttonText:'Sign In'});
            }
            else if (YAHOO.vs.accountDialogObjectMessage) {
                YAHOO.vs.setAccountMessaging(YAHOO.vs.accountDialogObjectMessage);
            }/* 
            if (typeof emailField != 'undefined') {
                var email = emailField.value;
                if (email != YAHOO.vs.subEmail) {
                    YAHOO.vs.subscribeDialog.form.elements.namedItem('email').value = email;
                    YAHOO.vs.subscribeDialog.recall = YAHOO.vs.showUserLogin;
                    YAHOO.vs.subscribeDialog.doSubmit();
                    return;
                }
            }*/
            var dialog;
            if (YAHOO.vs.hasPword) {
                dialog = YAHOO.vs.accountDialogObject.login_dialog;
            }
            else if (YAHOO.vs.subEmail) {
                dialog = YAHOO.vs.accountDialogObject.signup_dialog;
            }
            else {
                if (!YAHOO.vs.switchSubscriber.handling) {
                    YAHOO.vs.switchSubscriber.finishEvent.subscribe(YAHOO.vs.showUserLogin);
                    YAHOO.vs.switchSubscriber();
                }
                return;            
            }
            if (dialog == YAHOO.vs.accountDialogObject.create_password_dialog){
                var message = new YAHOO.util.Element(YAHOO.util.Dom.getElementsByClassName('form_errors','div',dialog.form)[0]);
                message.set('innerHTML','You must create a password in order to access that feature');
            }
            dialog.show();
        };
        YAHOO.vs.showUserLogin.handling = false;
        YAHOO.vs.showUserLogin.finishEvent = YAHOO.vs.UserLoginEvent;
        YAHOO.vs.showUserLogin.completed = false;
        
        YAHOO.vs.confirmPasswordChange = function() {
            YAHOO.vs.accountDialogObject.changed_password_dialog.show();
            setTimeout(function(){ YAHOO.vs.accountDialogObject.changed_password_dialog.hide(); },5000);
        };
        
        YAHOO.vs.setLoggedIn = function(value) {
            YAHOO.vs.loggedIn = value;
            YAHOO.vs.showUserLogin.completed = value;
        };
        
        YAHOO.vs.setAccountMessaging = function setAccountMessaging(messageObject) {
            if (typeof messageObject.message != 'undefined') {
                var messageElements = YAHOO.util.Dom.getElementsByClassName('login_message','div','auth_dialogs');
                for (var i=0;i<messageElements.length;++i) {
                    messageElements[i].innerHTML = messageObject.message;
                }
            }
            if (typeof messageObject.buttonText != 'undefined') {
                function loginButton(node) {
                    var el = new YAHOO.util.Element(node);
                    if (el.hasClass('medmyaccountbutton')){
                        var dialog = YAHOO.util.Dom.getAncestorByClassName(node,'auth_dialog');
                        return (dialog.id == 'login_dialog' || dialog.id == 'signup_dialog');
                    }
                    return false;
                }
                var buttons = YAHOO.util.Dom.getElementsBy(loginButton,'input','auth_dialogs');
                for (var i=0;i<buttons.length;++i){
                    buttons[i].value = messageObject.buttonText;
                }
            }
            
            // if (typeof messageObject.dialogTitle != 'undefined') {
            //     dialog.setHeader(title);
            //     
            // }
            
        };
    };
    
    YAHOO.vs.setupSubscribeDialog = function() {
        YAHOO.vs.subscribeDialog = new YAHOO.widget.Dialog('subscribe_dialog',{fixedcenter:true,draggable:true,visible:false,modal:true,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}});
        
        YAHOO.vs.subscribeDialog.cancelEvent.subscribe(function() {
            YAHOO.vs.switchSubscriber.handling = false;
            YAHOO.vs.showUserLogin.handling=false;
            YAHOO.vs.cancelLoginEvent.fire();
        });
        
        var callback = {
            success: function(o) {
                YAHOO.vs.switchSubscriber.handling = false;
                document.body.style.cursor = 'default';
                if ((o.argument.form.id == 'subscriptions_form')||(o.argument.form.id == 'zipcode_form')) {
                    var myAccountLinks = YAHOO.util.Dom.getElementsByClassName('my_account_link','a');
                    for (var i=0;i<myAccountLinks.length;i++) {
                        myAccountLinks[i].onclick = '';
                        myAccountLinks[i].href = '/subscriber/my-account/';
                    }
                }
                if (o.getResponseHeader['Has-Pword']) {
                    YAHOO.vs.hasPword = o.getResponseHeader['Has-Pword'] == 'true';
                }
                if (o.getResponseHeader['Subscriber-Email']) {
                    var oldEmail = YAHOO.vs.subEmail;
                    YAHOO.vs.setSubscriberEmails(o.getResponseHeader['Subscriber-Email']);
                    YAHOO.vs.ChangedEmailEvent.fire(YAHOO.vs.subEmail);
                    YAHOO.vs.switchSubscriber.complete = true;
                }
                if (o.getResponseHeader['Next-Location']) {
                    if (o.argument.recall) {
                        o.argument.recall();
                    }
                    else {
                        window.location = o.getResponseHeader['Next-Location'];
                    }
                }
                else {
                    o.argument.body.innerHTML = o.responseText;
                    o.argument.registerForm();
                    o.argument.render();
                    var action = o.argument.form.action;
                    if (action.indexOf('ajax') <= 0) {
                        if (action.indexOf('?') >= 0) {
                            action += '&ajax=True';
                        }
                        else {
                            action += '?ajax=True';
                        }
                    }
                    if (o.argument.form.id != 'sign_in_subscribe_form' && o.argument.recall) {
                        YAHOO.vs.continueSubscribeFlow = true;
                        o.argument.recall();
                    }
                    else {
                        o.argument.show();
                    }
                }
            },
            failure: function(o) {
                YAHOO.vs.switchSubscriber.handling = false;
                document.body.style.cursor = 'default';
                alert('Submit Failed');
            },
            argument: YAHOO.vs.subscribeDialog
        };
        
        YAHOO.vs.subscribeDialog.callback = callback;
        
        YAHOO.vs.subscribeDialog.asyncSubmitEvent.subscribe(function(type,args){document.body.style.cursor = 'wait';});
        YAHOO.util.Dom.getElementsByClassName('auth_dialog','div',YAHOO.vs.subscribeDialog.element)[0].style.display = 'block';
        
        YAHOO.vs.subscribeDialog.render();
        
        YAHOO.vs.subscribeDialog.originalBody = YAHOO.vs.subscribeDialog.body.innerHTML;
        
        YAHOO.vs.switchSubscriber = function(newEmail) {
            YAHOO.vs.switchSubscriber.handling = true;
            for (var i in YAHOO.vs.accountDialogObject) {
                YAHOO.vs.accountDialogObject[i].hide();
            }
            if (typeof newEmail != 'undefined' && newEmail != YAHOO.vs.subEmail){
                for (var i in YAHOO.vs.accountDialogObject) {
                    YAHOO.vs.accountDialogObject[i].hide();
                }
                clearCallback = {
                    success: function(o) {
                        YAHOO.vs.UserNotMeEvent.fire();
                        if (typeof o.argument != 'undefined' && o.argument) {
                            YAHOO.vs.setSubscriber(o.argument);
                        }
                        else{
                            YAHOO.vs.switchSubscriber.handling = false;
                            YAHOO.vs.showUserLogin();
                        }
                    },
                    failure: function(o) {
                        alert('An error has occured');
                    },
                    argument: newEmail
                };
                if (YAHOO.vs.subEmail) {
                    var url = window.location.protocol + "//" + window.location.host + "/clearuser/";
                    YAHOO.util.Connect.asyncRequest('GET', url, clearCallback);
                    YAHOO.vs.subEmail = '';
                }
                else {
                    YAHOO.vs.switchSubscriber.finishEvent.subscribe(YAHOO.vs.showUserLogin);
                    YAHOO.vs.setSubscriber(newEmail);
                }
            }
            else if (typeof newEmail == 'undefined'){
                YAHOO.vs.switchSubscriber.finishEvent.subscribe(YAHOO.vs.showUserLogin);
                YAHOO.vs.setSubscriber();
            }
        };
        YAHOO.vs.switchSubscriber.handling = false;
        YAHOO.vs.switchSubscriber.finishEvent = YAHOO.vs.ChangedEmailEvent;
        YAHOO.vs.switchSubscriber.complete = false;
        
        YAHOO.vs.setSubscriber = function(email) {
            if (YAHOO.vs.subscribeDialog.body.innerHTML != YAHOO.vs.subscribeDialog.originalBody) {
                YAHOO.vs.subscribeDialog.body.innerHTML = YAHOO.vs.subscribeDialog.originalBody;
                YAHOO.vs.subscribeDialog.registerForm();
                YAHOO.vs.subscribeDialog.render();
            }
            if (typeof email != 'undefined') {
                if (email != YAHOO.vs.subEmail) {
                    YAHOO.vs.subscribeDialog.form.elements.namedItem('email').value = email;
                    YAHOO.vs.subscribeDialog.recall = function(){return;};
                    /* YAHOO.vs.subscribeDialog.recall = YAHOO.vs.showUserLogin; */
                    YAHOO.vs.subscribeDialog.doSubmit();
                    return;
                }
            }
            else {
                YAHOO.vs.subscribeDialog.recall = function(){return;};
                YAHOO.vs.showSubscribeLogin();
            }
        };
    
        YAHOO.vs.showSubscribeLogin = function(redirectTo) {
            var action = YAHOO.vs.subscribeDialog.form.action;
            if (action.indexOf('next') < 0) {
                if (action.indexOf('?') < 0) {
                    action = action + '?next=/subscriber/my-account/';
                }
                else {
                    action = action + '&next=/subscriber/my-account/';
                }
                YAHOO.vs.subscribeDialog.form.action = action;
            }
            if (typeof redirectTo == 'function') {
                YAHOO.vs.subscribeDialog.recall = redirectTo;
            }
            else if (typeof redirectTo != 'undefined') {
                var action = YAHOO.vs.subscribeDialog.form.action;
                action = action.replace(/next=[^&]+/g,"next=" + redirectTo);
                YAHOO.vs.subscribeDialog.form.action = action;
            }
            YAHOO.vs.subscribeDialog.show();
        };
        
        YAHOO.vs.nextDialog = function(node,url) {
            document.body.style.cursor = 'wait';
            YAHOO.util.Connect.asyncRequest('GET',url,YAHOO.vs.subscribeDialog.callback,null);
        };
        
        YAHOO.vs.setSubscriberEmails = function(email) {
            YAHOO.vs.subEmail = email;
            var emailSpans = YAHOO.util.Dom.getElementsByClassName('subscriber_email','span',"auth_dialogs");
            for (var i=0;i<emailSpans.length;++i) {
                emailSpans[i].innerHTML = email;
            }
            var emailFields = YAHOO.util.Dom.getElementsByClassName('subscriber_email','input',document.body);
            for (var i=0;i<emailFields.length;++i) {
                emailFields[i].value = email;
            }
        };
    };
    
    YAHOO.vs.submitForm = function submitForm(e) {
        if (typeof YAHOO.vs.formToSubmit.callback == 'undefined') {
            if (!YAHOO.vs.interuptFormSubmission.call(YAHOO.vs.formToSubmit)){return;}
        }
        YAHOO.vs.formToSubmit.submit();
    };
    YAHOO.vs.submitForm.handling = false;
    YAHOO.vs.submitForm.finishEvent = YAHOO.vs.formSubmissionCompleteEvent;
    YAHOO.vs.submitForm.subscribedTo = [];
        
    YAHOO.vs.interuptFormSubmission = function interuptFormSubmission(e) {
        if (typeof this.skipInterupt != 'undefined' && this.skipInterupt) {
            this.ckipInterupt = false;
            return true;
        }
        YAHOO.vs.formToSubmit = this;
        if (typeof this.callback != 'undefined'){
            this.callback.customevents = {onComplete: function(e,args) {YAHOO.vs.formSubmissionCompleteEvent.fire();}};
        }
        var formElement = new YAHOO.util.Element(this.form||this);
        var emailFields = formElement.getElementsByClassName('subscriber_email','input');
        if (emailFields.length) {
            var emailField = emailFields[0];
            if (emailField.value != YAHOO.vs.subEmail) {
                YAHOO.vs.switchSubscriber.finishEvent.subscribe(YAHOO.vs.showUserLogin);
                YAHOO.vs.showUserLogin.handling = true;
                YAHOO.vs.switchSubscriber(emailField.value);
            }
        }
        
        return YAHOO.vs.doInterupt.call(this,e,YAHOO.vs.submitForm);
    };
    
    YAHOO.vs.followLink = function followLink(e) {
        if (!YAHOO.vs.interuptLinkClick.call(YAHOO.vs.linkToFollow)){return;}
        window.location.href = YAHOO.vs.linkToFollow.href;
    };
    YAHOO.vs.followLink.handling = false;
    YAHOO.vs.followLink.finishEvent = YAHOO.vs.linkFollowCompleteEvent;
    YAHOO.vs.followLink.subscribedTo = [];
    
    YAHOO.vs.interuptLinkClick = function interuptLinkClick(e) {
        YAHOO.vs.linkToFollow = this;
        return YAHOO.vs.doInterupt.call(this,e,YAHOO.vs.followLink);
    };
    
    YAHOO.vs.doInterupt = function doInterupt(e,callback) {
        if (typeof this.interuptListeners == 'object') {
            var interuptListeners = YAHOO.vs.interuptListeners.concat(this.interuptListeners);
        }
        else {
            var interuptListeners = YAHOO.vs.interuptListeners;
        }
        var interupt = false;
        /* 
        for (var i=0; i<this.interuptListenerIndeces.length; i++) {
            interuptListeners.push(YAHOO.vs.interuptListeners[i]);
        }
        */
        for (var i=0; i<interuptListeners.length; i++){
            var listener = interuptListeners[i];
            if (!listener.completed) {
                interupt = true;
                if (callback.subscribedTo.indexOf(listener.finishEvent) < 0) {
                    listener.finishEvent.subscribe(callback);
                    callback.subscribedTo.push(listener.finishEvent);
                }
                if (!listener.handling) {
                    listener();
                }
            }
        }
        if (interupt) {
            if (e){
                YAHOO.util.Event.preventDefault(e);
            }
        }
        else {
            for (var i=0; i<interuptListeners.length; i++){
                var listener = interuptListeners[i];
                listener.finishEvent.unsubscribe(callback);
            }
            callback.handling = true;
            if (YAHOO.vs.completeInterupt) {
                callback.finishEvent.fire();
                callback.complete = true;
                callback.handling = false;
                if (e){
                    YAHOO.util.Event.preventDefault(e);
                }
                interupt = true;
            }
        }
        return !interupt
    };
    
    YAHOO.vs.setInterupt = function setInterupt(all,interuptListener) {
        if (typeof YAHOO.vs.interuptListeners == 'undefined') {YAHOO.vs.interuptListeners = [];}
        if (typeof YAHOO.vs.interuptFormSubmission.forms != 'object') {
            YAHOO.vs.interuptFormSubmission.forms = [];
        }
        if (typeof YAHOO.vs.interuptLinkClick.links != 'object') {
            YAHOO.vs.interuptLinkClick.links = [];
        }
        
        if (typeof all == 'object') {
            if (YAHOO.vs.interuptFormSubmission.forms.indexOf(all) < 0) {
                YAHOO.util.Event.addListener(all,'submit',YAHOO.vs.interuptFormSubmission);
                YAHOO.vs.interuptFormSubmission.forms.push(all);
            }
            if (typeof all.interuptListeners != 'object') {
                all.interuptListeners = [];
            }
            if (all.interuptListeners.indexOf(interuptListener) < 0 && YAHOO.vs.interuptListeners.indexOf(interuptListener) < 0) {
                all.interuptListeners.push(interuptListener);
            }
        }
        else {
            if (YAHOO.vs.interuptListeners.indexOf(interuptListener) < 0) {
                YAHOO.vs.interuptListeners.push(interuptListener);
            }
            var interuptListenerIndex = YAHOO.vs.interuptListeners.indexOf(interuptListener);
            var forms = YAHOO.util.Dom.getElementsBy(function(node){
                    if (YAHOO.vs.interuptFormSubmission.forms.indexOf(node) > -1) {return false;}
                    var element = new YAHOO.util.Element(node);
                    if (all) {
                        return (!element.hasClass('auth_form'));
                    }
                    else {
                        return (element.hasClass('login_required'));
                    }
                },'form',document.body);
            YAHOO.util.Event.addListener(forms,'submit',YAHOO.vs.interuptFormSubmission);
            YAHOO.vs.interuptFormSubmission.forms = YAHOO.vs.interuptFormSubmission.forms.concat(forms);
            
            var links = YAHOO.util.Dom.getElementsBy(function(node){
                    if (YAHOO.vs.interuptLinkClick.links.indexOf(node) > -1) {return false;}
                    var element = new YAHOO.util.Element(node);
                    if (all) {
                        return (!element.hasClass('auth_link') && !element.hasClass('container-close'))&&(node.href.replace(window.location.href,'').indexOf('#') != 0)&&!((node.href.indexOf('javascript')>=0)&&(node.href.indexOf('void')>=0));
                    }
                    else {
                        return (element.hasClass('login_required'));
                    }
                },'a','bd');
            YAHOO.util.Event.addListener(links,'click',YAHOO.vs.interuptLinkClick);
            YAHOO.vs.interuptLinkClick.links = YAHOO.vs.interuptLinkClick.links.concat(links);
        }
    };
    
    YAHOO.vs.removeInterupt = function removeInterupt(interuptListener) {
        if (typeof YAHOO.vs.interuptListener != 'undefined') {
            var interuptIndex = YAHOO.vs.interuptListeners.indexOf(interuptListener);
            if (interuptIndex > -1) {
                YAHOO.vs.interuptListeners.splice(interuptIndex,1);
            }
        }
    };
    
    YAHOO.vs.removeMyInterupts = function removeMyInterupts(node) {
        if (typeof node.interuptListeners != 'undefined') {
            delete node.interuptListeners;
        }
        var formIndex = YAHOO.vs.interuptFormSubmission.forms.indexOf(node);
        if (formIndex > -1) {
            YAHOO.vs.interuptFormSubmission.forms.splice(formIndex,1);
            YAHOO.util.Event.removeListener(node,'submit',YAHOO.vs.interuptFormSubmission);
        }
    };
    
    YAHOO.vs.renderEventListener = function renderEventListener(e,args) {
        var listeners = YAHOO.util.Event.getListeners(this.form,'submit');
        for (var i=0;i<listeners.length;i++) {
            var fn = listeners[i].fn;
            if (fn == YAHOO.vs.interuptFormSubmission) {
                if (typeof this.form.interuptListenerIndeces != 'undefined') {
                    this.interuptListenerIndeces = this.form.interuptListenerIndeces;
                }
                YAHOO.util.Event.removeListener(this.form,'submit',fn);
                this.beforeSubmitEvent.subscribe(fn);
            }
        }
    };
    
    YAHOO.vs.skipFormInterupt = function skipFormInterupt(node) {
        var form = YAHOO.util.Dom.getAncestorByTagName(node,'form')
        form.skipInterupt = true;
        return true;
    };

/***********************************************
* Disable "Enter" key in Form script- By Nurul Fadilah(nurul@REMOVETHISvolmedia.com)
* This notice must stay intact for use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
                
    YAHOO.vs.handleEnter = function handleEnter (event) {
        var field = this;
        var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
        if (field.className == 'bitlylink') {
            YAHOO.util.Event.stopEvent(event);
            return false;
        }
        if (keyCode == 13) {
            var i;
            for (i = 0; i < field.form.elements.length; i++)
                if (field == field.form.elements[i])
                    break;
            i = (i + 1) % field.form.elements.length;
            field.form.elements[i].focus();
            YAHOO.util.Event.stopEvent(event);
            return false;
        } 
        return true;
    };
    
    YAHOO.util.Event.onDOMReady(function (){
        YAHOO.util.Event.addListener(YAHOO.util.Dom.getElementsBy(function(node){return (node.type!='submit')&&(node.type!='button');},'input',document.body),'keypress',YAHOO.vs.handleEnter);
        YAHOO.util.Event.addListener(YAHOO.util.Dom.getElementsBy(function(node){return true;},'select',document.body),'keypress',YAHOO.vs.handleEnter);
    });

})();

YAHOO.vs.circleDealMustJoinCircleMsg = function circleDealMustJoinCircleMsg(){
    YAHOO.vs.circleDealMustJoinCircleMsg.handling = true;
    YAHOO.vs.circleDealMustJoinCircleMsgDialog = new YAHOO.widget.Dialog('<div id="circleDealMustJoinCircleMsg"><' + '/div>', { 
        effect:{
            effect: YAHOO.widget.ContainerEffect.FADE,
            duration: 0.25
        }, 
        fixedcenter: true,
        modal: true,
        visible: false,
        draggable: true,
        close: false
    });
    
    YAHOO.vs.circleDealMustJoinCircleMsgDialog.setHeader('Exclusive Offer to Circle Members');
    YAHOO.vs.circleDealMustJoinCircleMsgDialog.setBody('<div class="message">You must be a member of a Community Circle on BloomSpot to enjoy this offer.<' + '/div><div class="auth_dialog_buttons"><input type="submit" class="medmyaccountbutton" value="OK" onclick="window.location=\''+YAHOO.vs.about_circles_url+'\';"><' + '/div>');
    
    var dialogElement = new YAHOO.util.Element(YAHOO.util.Dom.getElementBy(function(node) {return true;},'div',YAHOO.vs.circleDealMustJoinCircleMsgDialog.element));
    dialogElement.addClass('auth_dialog');

    YAHOO.vs.circleDealMustJoinCircleMsgDialog.render(document.body);
    YAHOO.util.Dom.getElementsByClassName('auth_dialog','div',YAHOO.vs.circleDealMustJoinCircleMsgDialog.element)[0].style.display = 'block';
    
    YAHOO.vs.showcircleDealMustJoinCircleMsgDialog = function(callback) {
        YAHOO.vs.circleDealMustJoinCircleMsgDialog.show();
    };
    YAHOO.vs.showcircleDealMustJoinCircleMsgDialog.handling = false;
    YAHOO.vs.showcircleDealMustJoinCircleMsgDialog.finishEvent = YAHOO.vs.decidedToJoinEvent;
    YAHOO.vs.showcircleDealMustJoinCircleMsgDialog.completed = false;


};

function CountDownTimer(seconds, mode, container,levels) {
    this.startTime = new Date().getTime();
    this.endTime = this.startTime + (seconds * 1000);
    this.mode = mode;
	this.levels=levels;
    this.container = YAHOO.util.Dom.get(container);
    YAHOO.util.Dom.addClass(container, 'timer-container');
    /* function to be called for each timer tick*/
	var context = this;
    this.updateTimer = function() {
		var curTime = new Date().getTime();
        var remTime = context.getRemainingTime((context.endTime - curTime));
        html = context.getTimeHTML(remTime, context);
		//console.log(html.innerHTML)
        context.container.innerHTML = "";
        context.container.appendChild(html);
		if(!remTime.running){
			context.timeOutEvent.fire({startTime:context.startTime,container:context.container});
		}
        //for (i = 0; i < 5000000; i++) {}; // for testing CPU load
    };
	this.timeOutEvent = new YAHOO.util.CustomEvent("timeOut");
    this.getTimeHTML = function(remTime, me) {
        var parentEl,html,el;
		if (me.mode == 1) {
            // full text
            parentEl = document.createElement('div');
            YAHOO.util.Dom.addClass(parentEl, 'timer-full-text_' + me.mode);
            if (remTime.days !== 0) {
                html = remTime.days + " day" + ((remTime.days != 1) ? "s": "") + " :";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'days');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (remTime.days !== 0 || remTime.hours !== 0) {
                html = remTime.hours + " hr" + ((remTime.hours != 1) ? "s": "") + " :";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'hours');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0) {
                html = remTime.mins + " min" + ((remTime.mins != 1) ? "s": "") + " :";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'mins');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0 || remTime.secs !== 0) {
                html = remTime.secs + " sec" + ((remTime.secs != 1) ? "s": "") + "";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'secs');
                el.innerHTML = html;
                parentEl.appendChild(el);
            } else {

                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'expired');
                el.innerHTML = 'Now';
                parentEl.appendChild(el);
            }
            el = document.createElement('div');
            YAHOO.util.Dom.addClass(el, 'cleardiv');
            el.innerHTML = "";
            parentEl.appendChild(el);
            return parentEl;
        }
        if (me.mode == 2) {
            // simple digital
			parentEl = document.createElement('div');
            YAHOO.util.Dom.addClass(parentEl, 'timer-full-text' + me.mode);
            if (me.levels > 3 || remTime.days !== 0 ) {
                html = ((remTime.days < 10) ? "0": "") + remTime.days + ":";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'days');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (me.levels > 2 || remTime.days !== 0 || remTime.hours !== 0 ) {
                html = ((remTime.hours < 10) ? "0": "") + remTime.hours + ":";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'hours');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (me.levels > 1 || remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0 ) {
                html = ((remTime.mins < 10) ? "0": "") + remTime.mins + ":";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'mins');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (me.levels > 0 || remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0 || remTime.secs !== 0) {
                html = ((remTime.secs < 10) ? "0": "") + remTime.secs;
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'secs');
                el.innerHTML = html;
                parentEl.appendChild(el);
            } 
			
			if(remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0 || remTime.secs !== 0){}else{

                parentEl.innerHTML="";
				el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'expired');
                el.innerHTML = 'Now';
                parentEl.appendChild(el);
            }
            el = document.createElement('div');
            YAHOO.util.Dom.addClass(el, 'cleardiv');
            el.innerHTML = "";
            parentEl.appendChild(el);
            return parentEl;
        }
        if (me.mode == 3) {
            // simple digital with text
            parentEl = document.createElement('div');
            YAHOO.util.Dom.addClass(parentEl, 'timer-full-text' + me.mode);
            if (me.levels > 3 || remTime.days !== 0) {
                html = "<div class='big'>" + ((remTime.days < 10) ? "0": "") + remTime.days + "</div><div class='small'>day" + ((remTime.days > 1) ? "s": "") + "</div>";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'days');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (me.levels > 2 || remTime.days !== 0 || remTime.hours !== 0) {
                html = "<div class='big'>" + ((remTime.hours < 10) ? "0": "") + remTime.hours + "</div><div class='small'>hour" + ((remTime.hours > 1) ? "s": "") + "</div>";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'hours');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (me.levels > 1 || remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0) {
                html = "<div class='big'>" + ((remTime.mins < 10) ? "0": "") + remTime.mins + "</div><div class='small'>min" + ((remTime.mins > 1) ? "s": "") + "</div>";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'mins');
                el.innerHTML = html;
                parentEl.appendChild(el);
            }
            if (me.levels > 0 || remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0 || remTime.secs !== 0) {
                html = "<div class='big'>" + ((remTime.secs < 10) ? "0": "") + remTime.secs + "</div><div class='small'>sec" + ((remTime.secs > 1) ? "s": "") + "</div>";
                el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'secs');
                el.innerHTML = html;
                parentEl.appendChild(el);
            } 
			
			if(remTime.days !== 0 || remTime.hours !== 0 || remTime.mins !== 0 || remTime.secs !== 0){}else{

                parentEl.innerHTML="";
				el = document.createElement('div');
                YAHOO.util.Dom.addClass(el, 'expired');
                el.innerHTML = 'Now';
                parentEl.appendChild(el);
            }
            el = document.createElement('div');
            YAHOO.util.Dom.addClass(el, 'cleardiv');
            el.innerHTML = "";
            parentEl.appendChild(el);
            return parentEl;
        }
    };

    this.getRemainingTime = function(amount) {
        // time is already past
        if (amount <= 0) {
            clearInterval(this.timeInterval);
            //document.getElementById('countbox').innerHTML = "Now!";
           var out = {
                days: 0,
                hours: 0,
                mins: 0,
                secs: 0,
                running: false
            };
            return out;

        }
        // date is still good
        else {

           var out = {
                days: 0,
                hours: 0,
                mins: 0,
                secs: 0,
                running: true
            };

           var amount = Math.floor(amount / 1000);
            //kill the "milliseconds" so just secs
            out.days = Math.floor(amount / 86400);
            //days
            amount = amount % 86400;

            out.hours = Math.floor(amount / 3600);
            //hours
            amount = amount % 3600;

            out.mins = Math.floor(amount / 60);
            //minutes
            amount = amount % 60;

            out.secs = Math.floor(amount);
            //seconds
            return out;
        }
    };
   this.updateTimer();
   this.timeInterval = setInterval(this.updateTimer, 100,this);
}

if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}