var js = document.scripts,itttt = 0,intervalidL; 
window.selfjs = js[js.length - 1];
window.pluginroot = js[js.length - 1].src.substring(0, selfjs.src.lastIndexOf("/") + 1);
window.LgyLogin={
	config:{
		'showInfo':'#LoginStatus',
		'user':'',
		'jumpurl':'/',
		'callback':'',
		'show':'',
		'modal':'',
		'errornum':3
	},
	init:function(){
		var mainObj=$(selfjs);
 		for(var i in this.config){
 			var v = mainObj.data(i);
 			if(v){
 				if(v =='true')v=true;
 				if(v =='false')v=false;
 				this.config[i] = v
 			}
 		}	
		LgyLogin.getTemplate(function(){
			try{
				lgyInit(1);
			}catch(e){}

			$.ajax({
				url:pluginroot+'index.php?t='+Math.random(),
				dataType:'json',
				success:function(json){
					if(json.err_msg=='success'){
						LgyLogin.config.user=json.data;
						LgyLogin.isLogin();
					}else{
						LgyLogin.noLogin();
					}
				}
			});
		});	
		//初始化弹窗
		this.initShowModel(function(){
			$(document).on('click','.ng-logout',function(){
				LgyLogin.loginout();
			});		
			$(document).on('click','.showLogin,.ng-login',function(){
				 LgyLogin.showMode('login');
			});		
			$(document).on('click','.ng-reg',function(){
				 LgyLogin.showMode('register');
			});	
		});
	},
	initShowModel:function(callback){
 		try{
 			LgyAlert();
 			callback && typeof(callback=='function')?callback():null; 
 		}catch(e){
	        var fileref = document.createElement('link');
	        fileref.setAttribute("rel", "stylesheet");
	        fileref.setAttribute("type", "text/css");
	        fileref.setAttribute("href", pluginroot+'/extend/lgyAlert/lgyAlert.css');
 			document.getElementsByTagName("head")[0].appendChild(fileref)
 			$.getScript(pluginroot+'/extend/lgyAlert/lgyAlert.js?sd',function(){
				callback && typeof(callback=='function')?callback():null; 
 			});
 		}		
	},
	loginTempTab:function(role){
		$('#loginModalLabel span').removeClass('active');
		$('#loginModalLabel span[data-role="'+role+'"]').addClass('active');
		$('#loginModal .lgy520-modal-body').removeClass('role-login role-register').addClass('role-'+role);
	},	
	showMode:function(showtype,callback){
		if(callback)LgyLogin.config.callback=callback;
		var temp = $('#LoginModelTemplate').html();
		LgyLogin.config.modal = LgyAlert({   
			title: "",   
			text: temp,   
			html: true,
			allowOutsideClick:true,
			showConfirmButton: false
		},'','',function(){
			LgyLogin.loginTempTab(showtype);
			if($.cookie('errornum')>LgyLogin.config.errornum){
				$('#loginModal').find('.lgy520-showKey').find('img').trigger('click');
				$('#loginModal').find('.lgy520-showKey').show();
			}		
			//兼容ie placeHlder
			var placeholderSupport = 'placeholder' in document.createElement('input');
			if(!placeholderSupport){
			    $('[placeholder]').focus(function() {
			        var input = $(this);
			        if (input.val() == input.attr('placeholder')) {
			            input.val('');
			            input.removeClass('placeholder');
			        }
			    }).blur(function() {
			        var input = $(this);
			        if (input.val() == '' || input.val() == input.attr('placeholder')) {
			            input.addClass('placeholder');
			            input.val(input.attr('placeholder'));
			        }
			    }).blur();
			};


		});
		$('.cancelModal').unbind('click').on('click',function(){
			LgyLogin.config.modal._remove('',1);
		})
	},
	isLogin:function(){
		this.ExpUserField();
		try{
			lgyInit(2);
		}catch(e){}

	},
	noLogin:function(){
		var temp = $('#disLoginTemplate').html();
		$(this.config.showInfo).html(temp);
		 $('.login_before').show();
		 $('.login_after').hide(); 
		try{
			lgyInit(3);
		}catch(e){}		 
	},
	loginout:function(){
		 LgyAlert({
			title: "您确定要退出系统吗？", 
			text: "", 
			type: "warning",
			showCancelButton: true,
 			cancelButtonText:'取消退出',
			confirmButtonText: "确定退出"
			}, function() {
				$.ajax({
					url:pluginroot+'doaction.php?520am=exit&t='+Math.random(),
					dataType:'html',
					success:function(ret){
						if(ret){
							LgyLogin.noLogin();
							LgyLogin.config.user='';
							LgyAlert({confirmButtonColor: "#1dacf9",title:"退出成功",type:"success",timer:2000},function(){
								if(jumpurl=LgyLogin.config.jumpurl){
									window.location.href=jumpurl;
								}								
							});
						}
					}			
				});
			});
	},
	ExpUserField:function(){
		var user = LgyLogin.config.user;
		if(user){
		  var temp = $('#isLoginTemplate').html();

		  if(temp){
	          for(var i in user){
	              var r = user[i];    
	              var reg = "/\\[!--"+i+"\\--]/g";
	              temp = temp.replace(eval(reg),r);
	          }
          	$(this.config.showInfo).html(temp);	
          }	
		}else{
			return;
		}
		if($('.login_after').length>0){

		  var temp= this.config.login_after?this.config.login_after:this.config.login_after = $('.login_after').html();
          for(var i in user){
              var r = user[i];    
              var reg = "/\\[!--"+i+"\\--]/g";
              temp = temp.replace(eval(reg),r);
          }
          $('.login_before,.notLogin').hide();
          $('.login_after').html(temp).show();
		}
	},
	getTemplate:function(callback){
		$.ajax({
			url:pluginroot+'template.php?islogin=0&t='+Math.random(),
			success:function(temp){
 
				$('head').append(temp);
				if(callback && typeof(callback=='function')){
					callback(temp);
				}
			}
		});		
	},
	formToJson:function(id){
	 	$.fn.serializeObject = function()
		{
		   var o = {};
		   var a = this.serializeArray();
		   $.each(a, function() {
		       if (o[this.name]) {
		           if (!o[this.name].push) {
		               o[this.name] = [o[this.name]];
		           }
		           o[this.name].push(this.value || '');
		       } else {
		           o[this.name] = this.value || '';
		       }
		   });
		   return o;
		};		
			return json = $(id).serializeObject();
	},
	doaction:function(obj){
 		this.showError(obj);
		var form = this.formToJson(obj);
			form.errornum=$.cookie('errornum');
		var errornum = $.cookie('errornum');
			errornum = errornum?parseInt(errornum):0;

 
	   if(form.username==''){
	   		LgyLogin.showError(obj,'username','请输入用户名');
		   		return false;
	   }
	   if(form.password==''){
	   		LgyLogin.showError(obj,'password','请输入密码');
		   		return false;
	   }
	   //注册 
	   if(form['520am']=='register'){
		   if(form.repassword==''){
		   		LgyLogin.showError(obj,'repassword','请输入确认密码');
			   		return false;
		   }
		   if(form.email==''){
		   		LgyLogin.showError(obj,'email','请输入邮箱');
			   		return false;
		   }
		   if(form.key==''){
		   		LgyLogin.showError(obj,'key','请输入验证码');
			   		return false;
		   }
		   if(form.agreement!='on'){
		   		LgyLogin.showError(obj,'agreement','同意注册协议方可继续注册');
			   		return false;		   	
		   }

	   }
	   if(errornum>LgyLogin.config.errornum){
			if($(obj).find('.lgy520-showKey').is(':hidden')){
				$(obj).find('.lgy520-showKey').find('img').trigger('click');
			}
			$(obj).find('.lgy520-showKey').show();
			if(form.key==''){
		   		LgyLogin.showError(obj,'key','请输入验证码');
 		   		return false;
		    }
		}
		$('.lgy520-errMsg').html('<font color=#555>'+(form['520am']=='register'?'请检查表单全部填写正确':'正在登陆')+'...</font>').show();
		$.ajax({
			url:pluginroot+'doaction.php?t='+Math.random(),
			type:'post',
			data:form,
			dataType:'json',
			success:function(ret){
				if(ret.err_msg=='success'){
					LgyLogin.config.user=ret.data;
					LgyLogin.isLogin();		
					LgyAlert({confirmButtonColor: "#1dacf9",title:form['520am']=='register'?'注册成功':'登陆成功',type:"success",timer:2000},function(){
					if(jumpurl=LgyLogin2.config.jumpurl){
									window.location.href=jumpurl;
								}								
							});
					//if(LgyLogin2.config.callback){
					//	try{
					//	LgyLogin2.config.callback();
					//	}catch(e){}
					//}
					$.cookie('errornum',0);
				}else{
					if(errornum>LgyLogin.config.errornum){
						if($(obj).find('.lgy520-showKey').is(':hidden')){
							$(obj).find('.lgy520-showKey').find('img').trigger('click');
						}
						$(obj).find('.lgy520-showKey').show();
					}else{
						$.cookie('errornum',errornum+1);
					}
					switch(ret.info){
						case 'FailPassword':
							LgyLogin.showError(obj,'password','密码错误');
						break;
						case 'FailUsername':
							LgyLogin.showError(obj,'username','账号不存在');
						break;
						case 'NotCheckedUser':
							LgyLogin.showError(obj,'username','账号未激活');
						break;
						case 'OutKeytime':
						    LgyLogin.showError(obj,'key','验证码已过期');
						break;
						case 'FailKey':
						    LgyLogin.showError(obj,'key','验证码错误');
						break;
						case "NotRepassword":
							LgyLogin.showError(obj,'repassword',ret.msg);
						break;
						case "FailPasslen":
							LgyLogin.showError(obj,'password',ret.msg);
						break;	
						case "EmailFail":
						case "ReEmailFail":
							LgyLogin.showError(obj,'email',ret.msg);
						break;	
						case "NotSpeWord":
						case "ReUsername":
							LgyLogin.showError(obj,'username',ret.msg);
						break;
						case "errorMsgCode":
							LgyLogin.showError(obj,'smscode',ret.msg);
						break;	
						case "RePhone":
							LgyLogin.showError(obj,'phone',ret.msg);
						break;	
						case "RegisterSuccessCheck":
						case "SendActUserEmailSucess":
							LgyAlert({confirmButtonColor: "#1dacf9",title:ret.msg,type:"success"});
						break;
						case "LoginToRegister":
							LgyAlert({confirmButtonColor: "#1dacf9",title:ret.msg,type:"error"});
						break;
						default:
							LgyLogin.showError(obj,'phon2e',ret.msg);
					}
				}
			}
		});
		return false;
	},
	showError:function(obj,type,info){
		if(!type){
			$(obj).find('.lgy520-form-control').removeClass('error');
			$(obj).find('.lgy520-form-control').unbind('blur').on('blur',function(){
				if($(this).val()!='')$(this).removeClass('error');
				$('.lgy520-errMsg').fadeIn();
			});
		}else{
			$('.lgy520-errMsg').html(info).fadeIn();
			$(obj).find('input[name="'+type+'"]').addClass('error').focus();
			
			itttt=2;
			if(intervalidL)clearInterval(intervalidL); 
			intervalidL = setInterval("funs()", 1000); 

		}
	},
	checkUser:function(obj){
		if($('.lgy520-modal-body').hasClass('role-register')){
			var id = $(obj).attr('name');
			var val = $(obj).val();
			if(!val)return false;
			$.ajax({
				url:pluginroot+'doaction.php?520am=checkUser&t='+Math.random(),
				type:'post',
				data:{fied:id,val:val,phone:$('#lgy-520phone').val()},
				dataType:'json',
				success:function(ret){
					if(ret.info){
						LgyLogin.showError(obj,id,ret.msg);
						$(obj).addClass('error').focus();
					}else{
						$('.lgy520-errMsg').fadeOut();
						$(obj).removeClass('error');
					}

				}});
		}
	}
}

function funs() { 
	if (itttt == 0) { 
		$('.lgy520-errMsg').stop().fadeOut();
		clearInterval(intervalidL); 
	} 
	itttt--; 
} 
LgyLogin.init();

jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // NOTE Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

