/*ȫ��*/ if(!function.prototype.fnbind) { function.prototype.fnbind = function (argobj,args) { var _fn = this; return function () { if(args && arguments.length) { var _args = array.prototype.slice.call(args,0); for(var i = 0;i < arguments.length;i++) { array.prototype.push.call(_args,arguments[i]); } } return _fn.apply(argobj || this,_args || args || arguments); } }; } /*ֻ�����*/ if(!function.prototype.bindarg) { function.prototype.bindarg = function () { return this.fnbind(null,arguments); }; } number.prototype.tofixed = function (argdigit) { var _num = math.floor(this * math.pow(10,argdigit)) + 0.5; var _sign = _num < 0 ? '-' : ''; _num = math.abs(_num); if(math.abs(this) * math.pow(10,argdigit) - _num >= -1 * math.pow(10,-15 + argdigit)) { _num = _num + 0.5; } else { _num = _num - 0.5; } _num += ''; if(argdigit == 0) { return _sign + _num; } _num = _num.split(''); if(_num.length <= argdigit) { for(var i = _num.length;i < argdigit;i++) { _num.unshift('0'); } _num.unshift('.'); _num.unshift('0'); } else { _num.splice(_num.length - argdigit,0,'.'); } return _sign + _num.join(''); }; /*�ַ���tofixed����������*/ string.prototype.tofixed = function (argdigit) { if(!isnan(this * 1)) { return (this * 1).tofixed(argdigit); } else { return this.tostring(); } }; /*�ַ������ָ�*/ string.prototype.format = function (argspliter) { argspliter = argspliter || ','; var _str = this + ''; if(typeof (_str * 1) != 'number') { return _str; } var _ex = ''; var _pre = ''; if(_str.indexof('-') > -1) { _pre = '-'; _str = _str.replace('-',''); } if(_str.indexof('.') > -1) { var _arr = _str.split('.'); _str = _arr[0]; _ex = '.' + _arr[1]; } var _return; if(_str.length > 3) { _str = _str.replace(/\d{3}$/,function ($1) { _return = ',' + $1; return ''; }) return _pre + arguments.callee.apply(_str,arguments) + _return + _ex; } else { return _pre + _str + _ex; } }; number.prototype.format = function (argspliter) { return string.prototype.format.apply(this + '',arguments); }; //�ַ���ǰ��λ��ĭ��2λ���ȣ���0 string.prototype.prefull = function (argdigit,argchar) { var _str = this.tostring(); argdigit = argdigit || 2; argchar = argchar || '0'; while(_str.length < argdigit) { _str = argchar + _str; } return _str; }; //����ǰ��λ��ֱ�ӵ����ַ����ķ�ӧ���� number.prototype.prefull = function (argdigit,argchar) { return (this + '').prefull(argdigit,argchar); }; function escaperegexp(str) { return str.replace(/([.*+?^${}()|[\]\/\\])/g,'\\$1'); } /*ʱ�������������math.random*/ function random() { return new date().gettime(); } /*����$.getscript*/ function getscript(argurl,argcallback,argcharset) { var _script = document.createelement('script'); _script.type = 'text/javascript'; if(argcharset) { _script.charset = argcharset; } _script.src = argurl; var _head = document.getelementsbytagname('head')[0]; var _done = false; _script.onload = _script.onreadystatechange = function () { if(!_done && (!this.readystate || this.readystate === "loaded" || this.readystate === "complete")) { _done = true; if(argcallback) { argcallback(); } _script.onload = _script.onreadystatechange = null; settimeout(function () { _head.removechild(_script); },1); } }; _head.appendchild(_script); } /*�������������ж���ɫ*/ /*����argkey�ļ�����argkeyֵ���ж��ǵ�*/ function checkud(argdata,argkey) { /*δ���̷�����ɫ*/ var _key = argkey !== undefined ? argkey : argdata.change; if(_key > 0) { return upcolor; } if(_key < 0) { return downcolor; } return flatcolor; } /*argdestination��ҫ�ϲ������ķ���*/ /*argorigin���¼ӵķ���*/ /*merge(a,b)����a����������b�����կ�����*/ function merge(argdestination,argorigin) { for(var p in argorigin) { if(typeof argdestination[p] == 'object' && typeof argorigin[p] == 'object') { argdestination[p] = arguments.callee(argorigin[p],argdestination[p]); } else { argdestination[p] = argorigin[p]; } } return argdestination; } if(!window.cookie) { window.cookie = {}; cookie.get = function (key) { var value = document.cookie.match('(?:^|;)\\s*' + escaperegexp(key) + '=([^;]*)'); return value ? value[1] || '' : ''; }; cookie.set = function (key,value,options) { options = options || {}; if(value === null) { value = ''; options.expires = -1; } var expires = ''; if(options.expires && (options.expires * 1 || options.expires.toutcstring)) { var date; if(options.expires * 1) { date = new date(); date.settime(date.gettime() + (options.expires * 24 * 60 * 60 * 1000)); } else { date = options.expires; } expires = '; expires=' + date.toutcstring(); } var path = options.path ? '; path=' + (options.path) : ''; var domain = options.domain ? '; domain=' + (options.domain) : ''; var secure = options.secure ? '; secure' : ''; document.cookie = [key,'=',value,expires,path,domain,secure].join(''); }; } /*�����ַ���ת�� �÷��� hqparser(type,�ַ���,����(�dz�ҫ��������ʱ��symbol����ϊundefined������ʱ�������롢���ֵķ�����)) ���� hqparser.a(�ַ���������); hqparser.hk(�ַ���������); ����ֵ(�������ҵģ�������դӵ��뿴����)�� symbol���������� sym�������ִ��룬a���൱��symbol����ȥ����sh��sz change���ǵ��� changep���ǵ��� amount���ɽ��� income�������� swing����� */ var hqparser = new function () { function _hk(argstr,argsymbol) { if(!argstr) { var _return = {}; _return.enname = _return.name = _return.open = _return.preclose = _return.low = _return.high = _return.now = _return.change = _return.changep = _return.buy = _return.sell = _return.volume = _return.amount = _return.pe = _return.income = _return.high52 = _return.low52 = _return.low52 = _return.date = _return.time = _return.swing = '--'; return _return; } var _tmpdata = argstr.split(','); var _data = {}; if(argsymbol) { if(argsymbol.indexof('hk') > -1) { _data.symbol = argsymbol; _data.sym = argsymbol.replace('hk',''); } else { _data.symbol = 'hk' + argsymbol; _data.sym = argsymbol; } } _data.enname = _tmpdata[0]; _data.name = _tmpdata[1]; _data.open = _tmpdata[2] * 1; _data.preclose = _tmpdata[3] * 1; _data.high = _tmpdata[4] * 1; _data.low = _tmpdata[5] * 1; _data.now = _tmpdata[6] * 1; _data.change = _tmpdata[7] * 1; _data.changep = _tmpdata[8] * 1; _data.buy = _tmpdata[9] * 1; _data.sell = _tmpdata[10] * 1; _data.volume = _tmpdata[12] * 1; _data.amount = _tmpdata[11] * 1; _data.pe = _tmpdata[13] * 1; _data.pe = _data.pe || '--'; _data.income = _tmpdata[14] * 1; _data.income = _data.income || '--'; _data.high52 = _tmpdata[15] * 1; _data.low52 = _tmpdata[16] * 1; _data.date = _tmpdata[17]; _data.time = _tmpdata[18]; if(!_data.open) { _data.open = '--'; if(!_data.now) { _data.high = '--'; _data.low = '--'; } } if(!_data.now /*|| _data.open == '--'*/) { _data.change = '--'; _data.changep = '--'; } if(_data.preclose) { _data.swing = (_data.high - _data.low) / _data.preclose * 100; _data.swing = isnan(_data.swing) ? '--' : _data.swing; } else { _data.preclose = '--'; _data.swing = '--'; } return _data; } function _us(argstr,argsymbol) { if(!argstr) { var _return = {}; _return.enname = _return.name = _return.open = _return.preclose = _return.low = _return.high = _return.now = _return.change = _return.changep = _return.buy = _return.sell = _return.volume = _return.amount = _return.pe = _return.income = _return.high52 = _return.low52 = _return.low52 = _return.date = _return.time = _return.swing = '--'; return _return; } var _tmpdata = argstr.split(','); var _data = {}; if(argsymbol) { _data.sym = argsymbol; } // _data.enname = _tmpdata[0]; _data.name = _tmpdata[0]; _data.now = _tmpdata[1] * 1; _data.changep = _tmpdata[2] * 1; _data.updatetime = _tmpdata[3];//���ݸ���ʱ�� _data.change = _tmpdata[4] * 1; _data.open = _tmpdata[5] * 1; _data.high = _tmpdata[6] * 1; _data.low = _tmpdata[7] * 1; _data.high52 = _tmpdata[8] * 1; _data.low52 = _tmpdata[9] * 1; _data.volume = _tmpdata[10] * 1; _data.averagevolume = _tmpdata[11] * 1;//ƽ���ɽ��� _data.totalshare = _tmpdata[12] * 1;//����ֵ _data.eps = _tmpdata[13] * 1;//ÿ������ _data.pe = _tmpdata[14] * 1; _data.pe = _data.pe || '--'; _data.beta = _tmpdata[16] * 1;//����ϵ�� _data.dividend = _tmpdata[17] * 1;//��ϣ _data.dividend = _data.dividend || '--'; _data.income = _tmpdata[18] * 1;//������ _data.income = _data.income || '--'; _data.shares = _tmpdata[19] * 1;//�ܹɱ� _data.hourtradingprice = _tmpdata[21] * 1;//�̺����¼� _data.hourtradingchangep = _tmpdata[22] * 1;//�̺��ǵ��� _data.hourtradingchange = _tmpdata[23] * 1;//�̺��ǵ��� _data.hourtradingdatetime = _tmpdata[24]; var _dt = _tmpdata[24].split(' '); _data.hourtradingdate = _dt[0] + ' ' + _dt[1]; _data.hourtradingtime = _dt[2] || '';//�̺������ʱ�䣨���� _data.datetime = _tmpdata[25]; _dt = _tmpdata[25].split(' '); _data.date = _dt[0] + ' ' + _dt[1]; _data.time = _dt[2];//�����ʱ�䣨���� _data.preclose = _tmpdata[26] * 1; // _data.amount = _tmpdata[11] * 1; if(!_data.open) { _data.open = '--'; _data.high = '--'; _data.low = '--'; } if((!_data.now || _data.open == '--') && !_data.change) { _data.change = '--'; _data.changep = '--'; } if(_data.preclose) { _data.swing = (_data.high - _data.low) / _data.preclose * 100; _data.swing = isnan(_data.swing) ? '--' : _data.swing; } else { _data.preclose = '--'; _data.swing = '--'; } return _data; } function _a(argstr,argsymbol) { if(!argstr) { var _return = {}; _return.enname = _return.name = _return.open = _return.preclose = _return.low = _return.high = _return.now = _return.change = _return.changep = _return.buy = _return.sell = _return.volume = _return.amount = _return.pe = _return.income = _return.high52 = _return.low52 = _return.low52 = _return.date = _return.time = _return.swing = '--'; return _return; } var _tmpdata = argstr.split(','); var _data = {}; if(argsymbol) { if(argsymbol.indexof('s') > -1) { _data.symbol = argsymbol; _data.sym = argsymbol.replace(/s[hz]/,''); } else { _data.sym = argsymbol; var _first = argsymbol.charat(0); if('69'.indexof(_first) > -1) { _data.symbol = 'sh' + argsymbol; } if('023'.indexof(_first) > -1) { _data.symbol = 'sz' + argsymbol; } } } _data.name = _tmpdata[0]; _data.open = _tmpdata[1] * 1; _data.preclose = _tmpdata[2] * 1; _data.now = _tmpdata[3] * 1; _data.high = _tmpdata[4] * 1; _data.low = _tmpdata[5] * 1; _data.buy = _tmpdata[6] * 1; _data.sell = _tmpdata[7] * 1; _data.volume = _tmpdata[8] * 1; /*��ָ֤����ȩ֤�ɽ�����100����λ��ͬ*/ if(_data.symbol && /^(sh000|sh580)\d*/.test(_data.symbol)) { _data.volume *= 100; } _data.amount = _tmpdata[9] * 1; _data.date = _tmpdata[30]; _data.time = _tmpdata[31]; _data.status = _tmpdata[32]; var _statusword = { '00': '','01': '��ͣ1h','02': 'ͣ��','03': 'ͣ��','04': '��ͣ','05': 'ͣ1/2','07': '��ͣ','-1': '�޼�¼','-2': 'δ����','-3': '����' }; /*���̼���ͣ�լ�ʱ��ҫ��ߣ�������ֵ�ǰ�ۻ��߳ɽ���������ǿ����ϊ��ʼ����*/ if(_data.status == '00' || _data.buy || _data.sell) { _data.statusword = ''; } else { _data.statusword = _statusword[_data.status]; } if((_data.status == '02' || _data.status == '03') && !_data.buy && !_data.sell) { _data.stopday = true; } _data.change = _data.now - _data.preclose; _data.changep = _data.change / _data.preclose * 100; if(!_data.open) { _data.open = '--'; // if(_data.status == '02' || _data.status == '03') // { // _data.now = 'ͣ��'; // } _data.high = '--'; _data.low = '--'; } if(!_data.now || _data.open == '--') { _data.change = '--'; _data.changep = '--'; } if(_data.preclose) { _data.swing = ((_data.high - _data.low) || 0) / _data.preclose * 100; _data.swing = isnan(_data.swing) ? '--' : _data.swing; } else { _data.preclose = '--'; _data.swing = '--'; } _data.now = _data.now || _data.preclose; // _data.pe = _tmpdata[11] * 1; // _data.income = _tmpdata[12] * 1; // _data.high52 = _tmpdata[13] * 1; // _data.low52 = _tmpdata[14] * 1; return _data; } function _b(argstr,argsymbol) { if(!argstr) { var _return = {}; _return.enname = _return.name = _return.open = _return.preclose = _return.low = _return.high = _return.now = _return.change = _return.changep = _return.buy = _return.sell = _return.volume = _return.amount = _return.pe = _return.income = _return.high52 = _return.low52 = _return.low52 = _return.date = _return.time = _return.swing = '--'; return _return; } var _tmpdata = argstr.split(','); var _data = {}; _data.name = _tmpdata[0]; _data.now = _tmpdata[1] * 1; _data.change = _tmpdata[2] * 1; _data.changep = _tmpdata[3] * 1; _data.time = _tmpdata[4]; if(!_data.now) { _data.change = '--'; _data.changep = '--'; } return _data; } function _hf(argstr,argsymbol) { if(!argstr) { var _return = {}; _return.enname = _return.name = _return.open = _return.preclose = _return.low = _return.high = _return.now = _return.change = _return.changep = _return.buy = _return.sell = _return.volume = _return.amount = _return.pe = _return.income = _return.high52 = _return.low52 = _return.low52 = _return.date = _return.time = _return.swing = '--'; return _return; } var _tmpdata = argstr.split(','); var _data = {}; _data.now = _tmpdata[0] * 1; _data.change = _data.now - _tmpdata[7]; _data.changep = _tmpdata[1] * 1; if(!_data.now) { _data.change = '--'; _data.changep = '--'; } return _data; } function _return(argtype,argstr,argsymbol) { var _fn = arguments.callee[argtype]; if(_fn) { return _fn(argtype,argstr,argsymbol); } else { return {}; } } _return.a = _a; _return.b = _b; _return.hk = _hk; _return.us = _us; _return.hf = _hf; return _return; } (); /*ʱ��*/ var clock = new function () { var _url = 'http://counter.sina.com.cn/time?fm=js&rn='; /*el:Ԫ�أ�diff��ʱ���*/ var _areas = []; var _time; var _timereg = /\d{2}:\d{2}:\d{2}/; var _hasinited = false; //this.time = null; /*argconfig*/ /*elid����ʾԪ�ص�id��area��ʱ������ cn��us*/ this.init = function (argconfig) { argconfig = argconfig || []; var _area; for(var i = 0;i < argconfig.length;i++) { _area = {}; _area.el = document.getelementbyid(argconfig[i].elid); _area.diff = getglobaltimezone(argconfig[i].area) * 60 * 60 * 1000; _area.template = argconfig[i].template; _areas.push(_area); } if(_hasinited) { this.draw(); return; } _hasinited = true; if(window['standardbjtime']) { this.settime(); } this.gettime(); setinterval(this.gettime.fnbind(this),60 * 60 * 1000); setinterval(this.draw.fnbind(this),1000); }; this.add = function (argconfig) { }; this.gettime = function () { getscript(_url + random(),this.settime.fnbind(this)); }; this.settime = function () { _time = window['standardbjtime'] * 1000; this.draw(); }; //��ȡ��ǰʱ��ӿ� this.time = function () { return new date(_time); } this.draw = function () { if(!_time) { return; } var _date; for(var i = 0;i < _areas.length;i++) { _date = new date(_time + _areas[i].diff); //���������ģ�壬��ģ������� if(_areas[i].template) { _areas[i].el.innerhtml = _areas[i].template.replace('yy',_date.getfullyear()) .replace('y',(_date.getfullyear() % 100).prefull()) .replace('mm',(_date.getmonth() + 1).prefull()) .replace('dd',_date.getdate().prefull()) .replace('h',_date.gethours().prefull()) .replace('m',_date.getminutes().prefull()) .replace('s',_date.getseconds().prefull()); } else { _areas[i].el.innerhtml = (_date.getmonth() + 1) + '��' + _date.getdate() + '�� ' + _date.tostring().match(_timereg)[0]; } } _time += 1000; }; }; /*��¼���*/ !function () { function $(id) { if(typeof id == 'string') { return document.getelementbyid(id); } else { return id; } } /** * logincomponent ��һ��¼���ܿ飬��������¼���ܵ�ʵ�� * * ������ * name : �û�������� * psw : ��������� * nameenter: �ƿ����������û����س���� * pswenter: �ƿ�������������س���� * remember : �ƿ��ס��¼״̬ ��ϊ����ҳ��ϊdom * loginbtn: ��¼��ť * logoutbtn : �dz���ť * onsubmit : ����д�÷��� ���и���ļ��� ����false��֤��ͨ�� / true ͨ������һ���������û������ڶ������������� * * ������ * onloginsuccess : ��¼�ɹ��ص� ��һ�������û���ϣ * onloginfailed : ��¼ʧ�ܻص� ��һ������ʧ��ԭ�� * onlogoutsuccess : �dz��ɹ� * onlogoutfailed : �dz�ʧ�� ��һ������ʧ��ԭ�� * onuserchanged : ��¼�û��л� ��һ���������û���ϣ���ڶ����������û���ϣ * oncheckfailed : ��֤ʧ�ܻص� * * ʾ���� * var c = new logincomponent({ name : "name", psw : "psw", remember: "rem", loginbtn: "loginbtn", logoutbtn: "logoutbtn", onloginsuccess : function(){ alert( "_loginsuccess" );}, onloginfailed : function(){ alert( "_loginfailed" ); }, onlogoutsuccess : function(){ alert("_logoutsuccess"); }, onlogoutfailed : function(){ alert( "_logoutfailed" ); }, onuserchanged : function(){ alert('_userchanged');} }); */ var logincomponent = function (config) { merge(this,config); this.name = $(this.name); this.psw = $(this.psw); this.remember = $(this.remember); this.loginbtn = $(this.loginbtn); this.days = $(this.days); this.logoutbtn = $(this.logoutbtn); function addevent(obj,type,call) { if(document.all) { obj.attachevent('on' + type,call); } else { obj.addeventlistener(type,call,false); } } var _this = this; this.loginbtn && addevent(this.loginbtn,'click',this.checksubmit.fnbind(this)); this.logoutbtn && addevent(this.logoutbtn,'click',this.logout.fnbind(this)); function _inputok(ev) { ev = ev || event; if(ev.keycode == 13) { _this.checksubmit(); } } this.name && this.nameenter && addevent(this.name,'keyup',_inputok); this.psw && this.pswenter && addevent(this.psw,'keyup',_inputok); }; merge(logincomponent.prototype, { name: null, //dom,id psw: null, //dom,id nameenter: true, //true,false �ƿ����������û����س���� pswenter: true, //true,false �ƿ�������������س���� remember: null, //int, dom, id loginbtn: null, //dom,id logoutbtn: null, //dom,id ��ѡ button days: 30, //��ס����,dom,id,int onloginsuccess: function () { }, onloginfailed: function () { }, onlogoutsuccess: function () { }, onlogoutfailed: function () { }, onuserchanged: function () { }, onsubmit: function () { return true; }, //form �ύ �ɸ���֧����֤�� oncheckfailed: function () { }, //��֤ʧ�ܻص� checksubmit: function () { if(this.onsubmit(this.name.value,this.psw.value)) { this.login(); } else { this.oncheckfailed(); } return false; }, getdays: function () { if(!this.remember) { return undefined; } if(typeof this.remember == 'number') { return this.remember; } else { switch(this.remember.tagname) { case 'input': { if(this.remember.checked) { return (this.remember.value * 1) || typeof this.days == 'number' ? this.days : this.days.value; } else { return undefined; } break; } case 'select': return this.remember.value; break; default: return undefined; } } }, login: function (name,psw,days) { if(!name && !this.name.value) { return false; } var t = this; sinassocontroller.customlogincallback = function (ret) { if(ret && ret.result === true) { t.onloginsuccess(sinassocontroller.getsinacookie()); } else { if(ret && ret.result === false) { t.onloginfailed(ret); } else t.onloginfailed(ret); } }; sinassocontroller.login(name || this.name.value,psw || this.psw.value,days || this.getdays()); return false; }, logout: function () { var _this = this; sinassocontroller.customlogoutcallback = function (ret) { if(ret.result) { _this.onlogoutsuccess(_this); } else { _this.onlogoutfailed("�˳�ʧ��..."); } }; sinassocontroller.logout(); return false; } }); /** * * loginmanager ��¼������������ģʽ������new * * ������ * startmonitor : ��������� ��һ������ѭ�����ʱ�� * stopmonitor : ֹͣ������ * checkimmediate: ������� * setfreq : ���ü��ƶ�� * add : ���logincomponentģ�� ������ϊʵ��ҳ��ϊ���ò���������ӵ�һ��ģ��ʱ�զ�����״̬��� * * ʾ���� * var c = new logincomponent({ name : "name", psw : "psw", remember: "rem", login : "login", logout : "logout", onloginsuccess : function(){ alert( "_loginsuccess" );}, onloginfailed : function(){ alert( "_loginfailed" ); }, onlogoutsuccess : function(){ alert("_logoutsuccess"); }, onlogoutfailed : function(){ alert( "_logoutfailed" ); } }); loginmanager.add( c ) .add( { onloginsuccess : function(){ alert( "_loginsuccess2" );}, onlogoutsuccess : function(){ alert("_logoutsuccess2"); } }); */ var loginmanager = new function () { var _entry = 'finance', _service = 'finance', _inter = 1000, //ѭ�����ʱ���� _logon = false, _user = null, _actiontype = true, //post _timer = null, _components = []; //��ŵ���ӵ�ģ�� //�ƾ���ʒ�ı�ʶ window.sinassoconfig = merge({ entry: _entry, service: _service, setdomain: _actiontype },window.sinassoconfig || {}); function _startmonitor(inter) { /*ֻ�ܿ���һ��������*/ if(_timer) { return; } _inter = (inter * 1) || _inter || 1000; _timer = setinterval(_check,_inter); //�״μ�� ����cookie�����զ���¼ if(sinassocontroller.getsinacookie()) { //�զ���¼ sinassocontroller.autologin(_check); } } this.startmonitor = _startmonitor; this.setfreq = function (inter) { clearinterval(_timer); _inter = inter || _inter; _timer = setinterval(_check,_inter); }; function _stopmonitor() { clearinterval(_timer); _resumecomponents(); } this.stopmonitor = _stopmonitor(); /*����ģ��ص���������һģ��״̬�仯ʱ�����������ģ��*/ function _setcomponents(argcomp) { argcomp._onloginsuccess = argcomp.onloginsuccess; argcomp._onlogoutsuccess = argcomp.onlogoutsuccess; argcomp.onloginsuccess = _check; argcomp.onlogoutsuccess = _check; } function _resumecomponents() { for(var i = 0;i < _components.length;i++) { _components[i].onloginsuccess = _components[i]._onloginsuccess; _components[i].onlogoutsuccess = _components[i]._onlogoutsuccess; } } function _onlogin() { for(var i = 0;i < _components.length;i++) { _components[i]._onloginsuccess(_user); } } function _onlogout() { for(var i = 0;i < _components.length;i++) { _components[i]._onlogoutsuccess(_user); } } function _onuserchanged(newuser,olduser) { for(var i = 0;i < _components.length;i++) { _components[i].onuserchanged(newuser,olduser); } } function _check() { var _userinfo = sinassocontroller.getsinacookie(); if(_userinfo) { if(!_user) { _user = _userinfo; _onlogin(); } else { if(_userinfo.uid != _user.uid) { _onuserchanged(_userinfo,_user); _user = _userinfo; } } } else { if(_user) { _onlogout(); _user = null; } } } this.checkimmediate = _check; this.add = function (component) { var _comp = component; if(_comp.constructor != logincomponent) { _comp = new logincomponent(_comp); } _components.push(_comp); if(_user) { _comp.onloginsuccess(_user); } _setcomponents(_comp); /*��һ�����ģ���զ�������*/ if(_components.length == 1) { _startmonitor(); } return this; }; this.get = function (index) { return _components(index); } } (); window.loginmanager = loginmanager; } (); object.toquerystring = function (source) { if(typeof source == 'string') { return encodeuricomponent(source); } var querystring = []; for(var property in source) { querystring.push(encodeuricomponent(property) + '=' + encodeuricomponent(source[property])); } return querystring.join('&'); };