/** requires jquery.cookie plugin, bj.formactions, bj.forms,jquery.ui, jquery.globalplugins **/


   function bjLogin() {
        this.options = {}
        //var options = $.meta ? $.extend({}, main_options, $this.data()) : main_options;
        this.options['club'] = false;

        this.checkLogin();
    }


  bjLogin.prototype.checkLogin = function()
  {

        if($.cookie('tempcookielogin')!=null && $.cookie('tempcookielogin')!="")
        {
            addNotice('You have been logged in as <b>'+$.cookie('tempcookielogin')+'</b>');
            $.cookie('tempcookielogin','');
        }

  }

  bjLogin.prototype.run = function(el)
 {
     return this.login(el, this.options);
 }

   bjLogin.prototype.set = function(key, value)
    {
       this.options[key] = value;
    }



    bjLogin.prototype.login = function(el,options) { //decide which validations to use
        // debug(el);
            var bjLogin = this;
            var withDetail = false;
            var useURL = false;
            var c = $(el).attr('class');
            if(c.match(/withDetail/)!=null) withDetail = true;
            if(c.match(/useURL/)!=null) useURL = true;



            runValidate();

        $("#btn_login").live('click',function(){
           var $this = $(this);

           var error = 0;
           var parent = $(this).parents("div#bj_dialog");
           var p = {};
           parent.find(':input').each(function(){
               var name = $(this).attr('name');
               var value = $(this).val();
               if(value=="") error++;
               p[name] = value;

           });


                   var url = getDomain();
                   $.ajax({
                        url: url+'performLogonFromEmailAjaxAction.do',
                        data:p,
                        type:'GET',
                        dataType: 'jsonp',
                        success: function (data, textStatus) {
                            if(data.success == false)
                            {
                                $("#bj_dialog").prepend('<div class="error">'+data.error+'</div>');
                            }
                            else
                            {
                                $("#bj_dialog").append('<div class="success">You are now logged in as '+data.name+'. One moment please.</div>');
                                if($("#create_account").length > 0) $("#create_account").hide();

                                if(withDetail == true)
                                {
                                bjLogin.ajaxShippingBilling();
                                    $("#bj_dialog").dialog('close');

                                }
                                if(useURL == true)
                                {
                                    bjLogin.reloadPage();
                                }
                            }
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown){
                            debug(errorThrown);
                            $("#bj_dialog").prepend('<div class="alert">Login is unsuccessful.  Please try again.</div>');
                        },
                        beforeSend: function (XMLHttpRequest) {
                            // $("#bj_dialog").append('<div class="ajloading" style="position:absolute;top:48%;left:48%;"><img src="http://www.bocajava.com/resources/images/2009/loading_small.gif" /></div>');
                             ajaxicator("#bj_dialog");
                        },
                        complete: function (XMLHttpRequest) {
                             //$("#bj_dialog .ajloading").remove();
                              ajaxicator("#bj_dialog","off");

                        }
                    });



           return false;
        });

        };


       bjLogin.prototype.doBilling = function(id)
    {
         if($("#f_billingId").val()==null) $(".mainform").prepend('<input type="hidden" class="hidden" value="" name="billingId" id="f_billingId" />');
         $("#f_billingId").val(id);
        $("#billingform :input").addClass('disabled');
         runValidate();
    }

    bjLogin.prototype.reloadPage = function()
    {
         window.location.reload();
    }

    bjLogin.prototype.doShipping = function(id)
    {
         if($("#f_shippingId").val()==null) $(".mainform").prepend('<input type="hidden" class="hidden" value="" name="shippingId" id="f_shippingId" />');
         $("#f_shippingId").val(id);
         $("#shippingform :input").addClass('disabled');
         runValidate();
    }

    bjLogin.prototype.isClub = function()
    {
         if(this.options['club']){
            var freqHTML = '<ul class="col mt1 pt1 bt2"><li class="first">I want to receive my<br />first shipment in</li><li><select name="Frequency" id="f_frequency"><option value="4">4 Weeks</option><option value="5">5 Weeks</option> <option value="6">6 Weeks</option><option value="7">7 Weeks</option><option value="8">8 Weeks</option></select></ul>';
            $("#loggedin_frequency").append(freqHTML);
          }
    }

    bjLogin.prototype.ajaxShippingBilling = function(){

           $(".p_clubdefault_checkout :input").each(function(){
               if($(this).attr('class').match('disabled')==null) $(this).addClass('disabled');
               runValidate() //bj.init.js
           })

            var $this = this;
            var url = getDomain();
            var p = {};
            p['detail'] = 'Y';
            var shipList = '';
            var cardList = '';
            var cardHTML = '';
            var shipHTML = '';
             $.ajax({
                        url: url+'performLogonFromEmailAjaxAction.do',
                        data:p,
                        type:'POST',
                        dataType: 'jsonp',
                        success: function (data, textStatus) {

                        if(parseInt(data.customer_id) <= 0){
                            $("#panel").prepend('<div class="notify">There has been an error with your request. Please try again, or contact customer service.</div>');
                        }
                        else {
                            $this.isClub();

                            $("#panel").fadeOut('slow',function() {
                            $("#create_account").hide();
                            var listDiv = '<div class="ct" id="listDiv"><div class="ct"><h2>You are logged in as '+data.name+'</h2><div class="notify">Select a shipping address and payment method, or add new information to continue.</div></div><div class="ct" id="listIn"></div>';


                            if(data.creditcards) {

                            if($("#listIn").html()==null || $("#listDiv").html()==null)
                            {
                                $('div.account').after(listDiv);

                            }

                            var cardArray = {};
                               cardList = '<div id="cardList" class="p1"><h3>Select an existing credit card</h3><table class="dataset wide"><tr><th></th><th>Name</th><th>Type</th><th>CC#</th></tr>';
                               var cardClass = "";
                               $.each(data.creditcards, function(i,item){
                                   cardArray[i] = item;
                                   if(item.def)
                                    {
                                    cardClass='sel';
                                    $this.doBilling(item.id);
                                    }
                                   else{
                                     cardClass=''
                                   }

                                    if(item.id > 0) cardList+= '<tr id="creditcard_'+i+'" class="'+cardClass+'"><td><a href="#" id="'+item.id+'" class="gbtn sm sel"><span><span>select</span></span></td><td>'+item.name+'</td><td>'+item.type+'</td><td>************'+item.cardNumber+'</td></tr>';


                               });
                               cardList+='</table><a href="#" class="actionLink" id="newcard">use a new card</a></div>';



                               cardHTML = ''+cardList+'';

                               if($("#cardList").html()==null) $("#billing h2").after(cardHTML);
                               $("#billingform").hide();
                               $("#cardList a.sel").unbind().click(function(){
                                   $("#cardList tr").removeClass('sel');
                                   var i = $(this).parents('tr').attr('id');
                                   $(this).parents('tr').addClass('sel');
                                   var idS = i.split('_');
                                   $this.doBilling($(this).attr('id'));

                                   $("#billingform:visible").fadeOut();
                                   return false;
                               });

                               $("a#newcard").unbind().click(function(){
                                   $("#billingform").fadeIn();
                                   $("#cardList tr").removeClass('sel');
                                   $("#f_billingId").remove();
                                   $("#billingform :input").removeClass('disabled');
                                   runValidate();
                                   return false;
                               });

                               $("#listDiv").effect("highlight",{},2000);

                            }
                            if(data.shiptos) {

                               if($("#listDiv").html()==null || $("#listDiv").html()==null)
                                {
                                    $('div.account').after(listDiv);

                                }

                               var shipArray = {};
                               shipList = '<div id="shipList" class="p1"><h3>Select an existing address</h3><table class="dataset wide"><tr><th></th><th>Name</th><th>Address</th></tr>';
                               $.each(data.shiptos, function(i,item){
                                   shipArray[i] = item;
                                   if(item.def && item.id >0)
                                           {
                                    shipList+= '<tr id="shipto_'+i+'" class="sel"><td><a href="#" id="'+item.id+'" class="gbtn sm sel"><span><span>select</span></span></td><td>'+item.name+'</td><td>'+item.address1+'<br />'+item.city+', '+item.state+' '+item.zip+'</td></tr>';
                                    $this.doShipping(item.id);
                                    }
                                   else if(item.id > 0){
                                     shipList+= '<tr id="shipto_'+i+'"><td><a href="#" id="'+item.id+'" class="gbtn sm sel"><span><span>select</span></span></td><td>'+item.name+'</td><td>'+item.address1+'<br />'+item.city+', '+item.state+' '+item.zip+'</td></tr>';
                                   }
                               });
                               shipList+='</table><a href="#" id="newaddress" class="actionLink">use a new address</a></div>';
                               shipHTML = ''+shipList+'';
                               if($("#shipList").html()==null) $("#shipping h2").after(shipHTML);
                               $("#shippingform").hide();
                               $("#shipList a.sel").unbind().click(function(){
                                   $("#shipList tr").removeClass('sel');
                                   var i = $(this).parents('tr').attr('id');
                                   $(this).parents('tr').addClass('sel');
                                   var idS = i.split('_');
                                   $this.doShipping($(this).attr('id'));
                                   $("#shippingform:visible").fadeOut();
                                   return false;
                               });

                               $("a#newaddress").unbind().click(function(){
                                   $("#shippingform").fadeIn();
                                   $("#shipList tr").removeClass('sel');
                                   $("#f_shippingId").remove();
                                   $("#shippingform :input").removeClass('disabled');
                                   runValidate();
                                   return false;
                               });

                            }
                            if($this.options['club']) $("#loggedin_frequency").show().effect("highlight",{},2000);
                            $("#panel").fadeIn('fast');
                                $("#loggedin_pleasewait:visible").hide();
                            });
                            }
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown){

                        },
                        beforeSend: function (XMLHttpRequest) {
                             $("#panel").before('<div class="loading" style="position:relative;left:48%;top:20px;"><img src="/resources/images/2009/loading_small.gif" /></div>');
                        },
                        complete: function (XMLHttpRequest) {
                           $(".loading").remove();
                        }
                    });
       };


/** non object version - created from top navigation **/

function topnavLogin(options)
	{
		//console.log(viewPath);



                $("div.topnav_content").pngfix();
		$("div.topnav_bottom").pngfix();

		var hideDelayTimer = null;
		var hideDelay = 50;
                var anchor = $("#topnav_login div");
		$("#topnav_login div").mouseover(function(){

                                $(this).addClass('on');
				if (hideDelayTimer) clearTimeout(hideDelayTimer);
				var tcOffset = $(this).offset();
				var t = tcOffset.top;
				var l = tcOffset.left;
                                var r = $(this).width();

				var h = 25;
				var w = 368;
				var fWidth = Math.floor(w);
				var vcTop = t+h-6;
				if (location.href.match('/custom') != null)
					vcTop = 600;
                //console.log(t+':'+h);
				var lf=l-328+r-2;
                                //if ($.browser.msie && parseInt($.browser.version)<=6) lf=lf;
				//if (jQuery.browser.mozilla)lf -= 2;

				$("#login_div")
				.css({top:vcTop+'px',left:lf+'px',width:fWidth+'px',zIndex:100}).show()
				.mouseover(function(){
                                     $('#errortip_tn_password:hidden').show();
                                     $("#errortip_tn_email:hidden").show();
                                    if (hideDelayTimer) clearTimeout(hideDelayTimer);})
				.mouseout(function () {

		    	  if (hideDelayTimer) clearTimeout(hideDelayTimer);

			      // store the timer so that it can be cleared in the mouseover if required
			      hideDelayTimer = setTimeout(function () {
			        hideDelayTimer = null;
			       $("#login_div").hide();
                               $('#errortip_tn_password').hide();
                                $("#errortip_tn_email").hide();
                               anchor.removeClass('on');
			      }, hideDelay);
		    });


		}).mouseout(function(){
			if (hideDelayTimer) clearTimeout(hideDelayTimer);

	      // store the timer so that it can be cleared in the mouseover if required
	      hideDelayTimer = setTimeout(function () {
	        hideDelayTimer = null;
	       $("#login_div").hide();
               anchor.removeClass('on');
	      }, hideDelay);
		});


              $("#tn_btn_login").click(function(){
                 $("#login_div .alert").remove();
                 var parent = $(this).parents('div.topnav_over');
                 var p = {};
                 var error = 0;
                 parent.find(':input').each(function(){
                    var id = $(this).attr('id');
                    var ids = id.split('_');
                    var key = ids[1];
                    var value = $(this).val();
                    if(key!='btn'){
                    if(value=="") error++;
                    p[key] = value;
                    }
                 });

                 if(error > 0)
               {
                   $("#login_div .topnav_content div").prepend('<div class="alert">Both fields are required.</div>');
               }
           else
               {
                   var url = getDomain();
                   debug(url);
                   $.ajax({
                        url: '/performLogonFromEmailAjaxAction.do',
                        data:p,
                        type:'GET',
                        dataType: 'jsonp',
                        success: function (data, textStatus) {
                            if(data.success == false)
                            {
                                $("#login_div .topnav_content h4").after('<div class="alert">'+data.error+'</div>');
                            }
                            else
                            {
                                $("#login_div .topnav_content div").html('<div class="success">You will be logged in as '+data.name+'. One moment please.</div>');
                                $.cookie('tempcookielogin',data.name);
                                var locale = window.location;
                                location.href = locale;
                            }
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown){
                          //  debug(errorThrown);
                            $("#login_div .topnav_content h4").after('<div class="alert">Login is unsuccessful.  Please try again.</div>');
                        },
                        beforeSend: function (XMLHttpRequest) {
                             ajaxicator("#tn_btn_login")
                        },
                        complete: function (XMLHttpRequest) {
                              ajaxicator("#tn_btn_login", 'off')
                        }
                    });
               }
               return false;
              });

	}
