﻿(function($) { 
$.register = function(options) {
    this.plan = options.plan;
	if(this.plan.ID) this.id = this.plan.ID;
	else this.id = this.plan;
	this.options = $.extend({}, $.register.DEFAULTS, options || {});  
    var selft =this;
    this.e =false;
    this.win = false;
    this.status = 0;
    if(!this.options.inline) {
      this.win = new Boxy("", { title: "CellSwapper.com - Sign in " ,beforeUnload:function(){chat.register = false;}});
      this.showLogin();
    }  else {
      this.e = $("#"+options.form);
      this.e.html(this.getInline());
      $("a.reset").click(function(e){ self.resetEmail(); } );
      $("a.forgot").click(function(e){ self.showForgot(); } );
      this.checkRegister(this.e.find("ul.register"));
      this.checkLogin(this.e.find("ul.login"));
    }
};

$.register.EF = function() {};
$.extend($.register, {    
    DEFAULTS: {
        inline:true,LoginPassword:true,
        registered:  $.register.EF
    }
});

 
  $.register.prototype= {
    run:function(){
     if($(".email_login").val()!="" && $(".password").val() !=""){
         return  this.login();
       }else
         return  this.register();
     },
	getInline:function(){
	 var content ='<div style="clear:both;width:838px;">';
	   content += '<div  style="float:left; padding-left:350px;color:#29759C;font-size:20px;font-weight:bold;">Login / Register</div>';
	   content += '<div style="float:right;">';
	   content +='<div id="rotatediv" style="display:none; clear:both;">';
	   content +='<div>';
	   content +='<span style="display:block;color:#29759C;font-size:20px;font-weight:bold; float:left; ">Processing...</span>';
	   content +='<span style="padding-left:10px;float:left;"><img src="/images/loading.gif" alt="Loading..." /></span>';
	   content +='</div>';
	   content +='</div>';
	   content +='</div>';
	   content + '</div>';
	   content += '<div style="clear:both;"><div style="float:left ; width:387px;"><ul class="login " >';
	   content += '<li class="header" style="text-align:center;"><span class="style5">Current User </span></li>';
	   content += '<li><label>Email Address:</label><input type="text" class="email" /></li>';
	   content += '<li><label>Password:</label><input type="password" class="password" /></li>';
	   content += '<li><label>Remember me next time</label><input type="checkbox"  /></li>';
	   content += '<li><label>Forgot Password?</label><a href="javascript:void(0);" class="forgot">click here</a></li>';
	   content += '<li style="padding:30px 0px;display:none;"><label>Email Address:</label><input class="email" type="text" />';
	   content += '<br /><input type="button" style="margin:7px 0 0 190px;" value="Reset Password" class="reset" /></li>';
	   content +='</ul>&nbsp;</div>';
	   content += '<div style="float:left;width:450px;"><ul class="login register" >';
	   content += '<li class="header" style="text-align:center;"><span class="style5">New Users</span></li>';
	   content += '<li><label>Email Address:</label><input class="email" type="text" /></li>';
	   content += '<li><label>First Name:</label><input type="text" class="fname" /></li>';
	   content += '<li><label>Last Name:</label><input type="text"  class="lname" /></li>';
	   content += '<li><label>Password:</label><input type="password" class="password"   /> </li>';
	   content += '<li><label>Confirm Password:</label><input type="password" class="password2" /> </li>';
	   content += '<li><label>Address:</label><input type="text" class="address" /></li>';
	   content += '<li><label>City:</label><input name="city" type="text" class="city"  /></li>';
	   content += '<li><label>'+loc.StateTerm+':</label><select  style="width:130px;" class="state"><option value="0">--------</option>';
	   for(var i = 0; i< loc.States.length;i++){
	      content += '<option value="'+loc.States[i].Id+'">'+loc.States[i].Name+'</option>';
	   }
	   content += '</select></li>';
	   content += '<li><label>'+loc.ZipTerm+'</label><input type="text" class="zip"  /></li>';
	   content += '<li><label>Phone:</label><input type="text" class="phone"  /></li>';
	   content += '</ul></div><br /></div>';
	   return content;
	},
	
	getLogin:function(){
	   var content = '<div><ul class="login" >';
	   content += '<li class="header"><span class="left">Current User </span><span class="right">Not yet a member? + <a href="javascript:void(0);" class="goreg">Register &#187;</a></span></li>';
	   content += '<li><label>Email Address:</label><input class="email" type="text" /></li>';
	   content += '<li><label>Password:</label><input type="password" class="password"  /></li>';
	   content += '<li><label>Remember me next time</label><input type="checkbox" class="rmb"  checked="checked" /></li>';
	   content += '<li><label>&nbsp;</label><a href="javascript:void(0);" class="login"><img src="/images/button_log_in.png" alt="" /></a></li>';
	   content += '<li class="forgot" style="padding:30px 0px;display:none;"><label>Email Address:</label><input class="email" type="text" />';
	   content += '<br /><input type="button" style="margin:7px 0 0 190px;" value="Reset Password"  /></li>';
	   content +='</ul>&nbsp;';
	   content +='<div id="rotatediv" style="display:none;height:30px"><span class="left ProgressText" style="padding-left:20px; padding-bottom:20px;float:left; ">Processing...</span><span style="padding-left:10px;float:left;"><img src="/images/bert2-loader.gif" alt="Loading..." /></span></div></div>';
	   return content;
	},
	
    showLogin:function(){
	    this.win.setContent(this.getLogin())
	    this.win.setTitle("CellSwapper.com - Sign in " );
 
 
        var self = this;
        this.e = this.win.getContent();
    
        this.e.find("a.goreg").click(function(){self.showRegister();});
	    this.checkLogin(this.e);
       // this.e.find("li.forgot").show();
	},
	
	checkLogin:function(e){
	   var self = this;
	   e.find("input.password").keypress(function(e){ if ( e.which == 13 ){self.login();} });
       e.find("input.email").keypress(function(e){  if ( e.which == 13 ){self.login(); }});
       e.find("a.login").click(function(){self.login();});
	},
	
	resetEmail:function(){
	    var email = this.e.find(".email_forgot").val();
	    if( email.indexOf("@") < 2 ) {
	        alert("Please input your email address");
	        return;
	    }
	    if(this.regFINEF=false){
	       alert("Please correct your email format");
	       this.e.find(".email_forgot").focus();
	       return;
	    }
	    var self =this;
		$.post('/service/account.ashx',{reset:1,email:email},function(r){
                if(r.success){
                   self.e.find(".email_forgot").parent().hide();
                   alert("Your new password has been sent by email");
                }else{alert(r.message);}
            },'json');
	},
	
	getRegisterHTML:function(){
	   var content= '<div><ul class="login register" >';
	   content += '<li class="header"><span class="left">New User</span> <span class="right">Already a member? ';
	   content += '<a class="gologin" href="javascript:void(0);">Sign In &#187;</a></span></li>';
	   content += '<li><label>Email Address:</label><input class="email" type="text" /></li>';
	   content += '<li><label>First Name:</label><input type="text" class="fname" /></li>';
	   content += '<li><label>Last Name:</label><input type="text" class="lname"  /></li>'; 
	   content += '<li><label>Password:</label><input type="password" class="password" /></li>';
	   content += '<li><label>Confirm Password:</label><input class="password2" type="password" /></li>';
	   content += '<li><label>Address:</label><input type="text" class="addr"  /></li>';
	   content += '<li><label>City:</label><input name="city" type="text"  /></li>';
	   content += '<li><label>'+loc.StateTerm+':</label><select class="state"><option value="---------">--------</option>';
	   for(var i = 0; i< loc.States.length;i++){
	      content += '<option value="'+loc.States[i].Id+'">'+loc.States[i].Name+'</option>';
	   }
	   content += '</select></li>';
	   content += '<li><label>'+loc.ZipTerm+'</label><input type="text" class="zip" /></li>';
	   content += '<li><label>Phone:</label><input type="text" class="phone" /></li>';
	   content += '<li><label>&nbsp;</label><a href="javascript:void(0);" class="register"  ><img src="/images/button_register.png" alt="" /></a></li>';
	   content += '</ul>&nbsp;';
	   content +='<div class="loading" style="display:none;"><span class="left ProgressText" style="padding-left:20px; padding-bottom:20px;float:left; ">Processing...</span><span style="padding-left:10px;float:left;"><img src="/images/bert2-loader.gif" alt="Loading..." /></span></div></div>';
	   return content;
	},
	
	chckLogin:function(){
	var self= $(this);
	   $(".login .email:nth(0)").keypress(function(e){
            if (e.which == 13 )
               return self.e.validateLogin({alert:true});
        });
        
        $(".login .password").caps(function(on){on?$("div.message").html(myMsg):$("div.message").empty();});
	},
	checkRegister:function(e){
	   e.find("input.email").blur(function(){$(this).checkvemail({h:true,alert:true,l:1}); })
	           .keyup(function(){$(this).valemail({h:true});});
	   e.find("input.password").blur(function(){
	        $(this).valpwd({h:true});
	   }) 
	},
	showProgress: function(msg){
	    this.e.find(".loading .ProgressText").html(msg);
	    this.e.find(".loading").show();
	},
	
	showRegister:function(){
	    this.win.setTitle("CellSwapper.com - Sign Up ");
	    this.win.setContent(this.getRegisterHTML());
	    var self = this;
	    this.e = this.win.getContent();
	    $(".gologin").click(function(e){self.showLogin();});
	    $("a.register").click(function(e){self.register();});
        this.checkRegister(this.e);
 
	},
 
	login : function(){
	    if(this.status == 1) return ;
	    var self = this;
	
	    if(! this.e.validateLogin({h:true})) return ;
	    $("#rotatediv").toggle();
	        this.status = 1;
        var account = {action:'login',email:this.e.find(".email:nth(0)").val(),
                       password:self.e.find(".password").val(),
                       remember:self.e.find(".rmb").val(),
                       plan:self.id,
                       old:chat.account.Id};
	    $.post("/service/account.ashx",account, function(r) {
	            self.status = 0;
                $("#rotatediv").toggle();
                if(r.success) self.done(r.message);
                else alert(r.message);
        },"json");
	},
	register:function(){
	  if(this.status == 1) return ;
	   var e = this.e;
	   if(!this.e.hasClass("register"))
	      e = this.e.find("ul.register");
	   if(!e.validateRegister({h:true}))return; 
	   var self = this;
	   var account = {};
	   account.email = e.find("input.email").val();
	   account.fname = e.find("input.fname").val();
	   account.lname = e.find("input.lname").val();
	   account.password = e.find("input.password").val();
	   account.confirmpassword= e.find("input.password2").val();
	   account.address = e.find("input.addr").val();
	   account.city = e.find("input.city").val();
	   account.zip = e.find("input.zip").val();
	   account.phone = e.find("input.phone").val();
	   account.state = e.find("select.state").val();
	   account.plan = this.id;
	   account.action="register";
	   account.old = chat.account.Id;
	   $("#rotatediv").show();
	     self.status = 1;
	   $.post('/service/account.ashx',account,function(r){
	     self.status = 0;
                $("#rotatediv").hide();
                if(r.success || typeof r.message == 'undefined')self.done(r.message);
                else alert(r.message);
            },"json");
	},
	
	close:function(){
	    if(this.win) this.win.unload();
	    else this.e.html('');
	},
	
	beforeclose:function()	{  chat.register.close();   },
	done:function(res){
	    chat.account = res;
	    $("#h_sign a").attr("href", "/logout.aspx");
        $("#h_sign a").mouseover(function(e){ SwapImage2($(this).attr("id"), "/images/sign_out_ro.jpg"); return false;});
        $("#h_sign a").mouseout(function(e){ SwapImage2($(this).attr("id"), "/images/sign_out.jpg"); return false;});
        $("#h_sign a img").attr("src", "/images/sign_out.jpg");
        this.close();
        this._fire("registered",res);
	},
	
	_fire: function(event,args) {
        this.options[event].call(this,args);
    }
};
$.fn.register = $.register;
})(jQuery);	
