function onenet_guid()
{
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
        return v.toString(16);
    });
    
}

function InitCmdMsg(action, data)
{
	var msg = {};
	msg['logid'] = onenet_guid();
	msg['action'] = action; 
	msg['data'] = data;
	return msg;
}
	

var oneNetHelper_activex=new Object();
oneNetHelper_activex.isAvailable = false;
oneNetHelper_activex.IsAddonAvailable = function ()
	{
		if(!oneNetHelper_activex.isAvailable)
		{
			oneNetHelper_activex.isAvailable = (AuthClientCtrl)? true : false;
			if(oneNetHelper_activex.isAvailable)
			{
				try
				{			
					AuthClientCtrl.Test();
				}
				catch(e)
				{
					oneNetHelper_activex.isAvailable = false;
					alert("AuthClientCtrl.Test失败!");
				}	
			}
			else
			{
				alert("加载AuthClientCtrl 对象失败!");
			}
		}
		
		
		return oneNetHelper_activex.isAvailable;
	}
	
oneNetHelper_activex.AddonAvailableNotify = function (notify_web)
	{
		setTimeout(function (){
			var resp = {};
			resp['addon']=oneNetHelper_activex.isAvailable;
			notify_web(resp);	
		}, 0);
	}
	
oneNetHelper_activex.GetUASToken = function (notify_web)
	{
		setTimeout(function (){
			var resp = {};
			AuthClientCtrl.GetUASToken();
			resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
			resp['errinfo'] = AuthClientCtrl.bstrError;	
			resp['token'] = AuthClientCtrl.bstrUASToken;
			resp['expiredate'] = AuthClientCtrl.bstrUASExpireDate;		
			notify_web(resp);	
		}, 0);
	}	

oneNetHelper_activex.GetUserInfo = function (notify_web)
	{		
		setTimeout(function (){
			var resp = {};		
			AuthClientCtrl.GetUserInfo();
			resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
			resp['errinfo'] = AuthClientCtrl.bstrError;	
			resp['userid'] = AuthClientCtrl.bstrUserID;
			resp['username'] = AuthClientCtrl.bstrUserName;
			resp['certuserid'] = AuthClientCtrl.bstrCertUserID;
			resp['certusername'] = AuthClientCtrl.bstrCertUserName;
			resp['authresult'] = AuthClientCtrl.lAuthResult;
			notify_web(resp);
		}, 0);
	}
	
oneNetHelper_activex.GetSignAndToken = function (randomnum, notify_web)
	{
		setTimeout(function (){
			var hostname = location.hostname;
			var msg = InitCmdMsg("GetSignAndToken", randomnum);
			msg['appServerAddr'] = hostname;
			var resp = {};	
			AuthClientCtrl.JsonActionCmdDeal(JSON.stringify(msg));
			var obj = JSON.parse(AuthClientCtrl.bstrResponse);
			resp = obj.info;
			/*说明:1.针对老版本客户端底层未处理GetSignAndToken action方式,再次调用原接口获取令牌;
					2.若提示AuthClientCtrl未定义JsonActionCmdDeal方法,则直接使用GetSignAndToken方法*/
			if(resp['ret'] == -2003)
			{
				AuthClientCtrl.GetSignAndToken(randomnum);
				resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
				resp['errinfo'] = AuthClientCtrl.bstrError;	
				resp['signandtoken'] = AuthClientCtrl.bstrSignValAndToken;	
			}
			notify_web(resp);
		}, 0);
	}
	
oneNetHelper_activex.GetUserCertInfo = function (notify_web)
	{
		setTimeout(function (){
			var resp = {};		
			AuthClientCtrl.GetUserCertInfo();
			resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
			resp['errinfo'] = AuthClientCtrl.bstrError;	
			resp['DNStringAll'] = AuthClientCtrl.bstrUserCertInfoValue('DNStringAll');
			resp['UserName'] = AuthClientCtrl.bstrUserCertInfoValue('UserName');
			resp['UserID'] = AuthClientCtrl.bstrUserCertInfoValue('UserID');
			resp['DNCode'] = AuthClientCtrl.bstrUserCertInfoValue('DNCode');
			resp['DisName'] = AuthClientCtrl.bstrUserCertInfoValue('DisName');
			resp['UniqueId'] = AuthClientCtrl.bstrUserCertInfoValue('UniqueId');
			resp['IssuerDisName'] = AuthClientCtrl.bstrUserCertInfoValue('IssuerDisName');
			resp['CertSerial'] = AuthClientCtrl.bstrUserCertInfoValue('CertSerial');
			resp['EMail'] = AuthClientCtrl.bstrUserCertInfoValue('EMail');
			resp['Org'] = AuthClientCtrl.bstrUserCertInfoValue('Org');
			resp['OrgUnit'] = AuthClientCtrl.bstrUserCertInfoValue('OrgUnit');
			resp['City'] = AuthClientCtrl.bstrUserCertInfoValue('City');
			resp['State'] = AuthClientCtrl.bstrUserCertInfoValue('State');
			resp['Descption'] = AuthClientCtrl.bstrUserCertInfoValue('Descption');
			resp['Version'] = AuthClientCtrl.bstrUserCertInfoValue('Version');
			resp['BeginTime'] = AuthClientCtrl.bstrUserCertInfoValue('BeginTime');
			resp['EndTime'] = AuthClientCtrl.bstrUserCertInfoValue('EndTime');
			//resp['authresult'] = AuthClientCtrl.lAuthResult;
			notify_web(resp);
		}, 0);
	}

oneNetHelper_activex.Login = function (appToken,username,userpwd,authtype,svctype, gw_id, notify_web)
	{
		alert("Login IE插件未实现");
	}

oneNetHelper_activex.ChangeUKeyPin = function (old_key_pin,new_key_pin,notify_web)
	{
		alert("ChangeUKeyPin IE插件未实现");
	}

oneNetHelper_activex.SSLUsbKeyLogin = function (appToken,gw_id,key_pin,notify_web)
	{
		alert("SSLUsbKeyLogin IE插件未实现");
	}
	
oneNetHelper_activex.SSLUserPwdLogin = function (appToken,gw_id,username,userpwd,notify_web)
	{
		alert("SSLUserPwdLogin IE插件未实现");
	}
	
oneNetHelper_activex.IPSecUsbKeyLogin = function (appToken,gw_id,key_pin,notify_web)
	{
		alert("IPSecUsbKeyLogin IE插件未实现");
	}
	
oneNetHelper_activex.Logout = function (appToken,notify_web)
	{
		alert("Logout IE插件未实现");
	}
	
oneNetHelper_activex.QuerySecPortalStatus = function (appToken,notify_web)
	{
		alert("QuerySecPortalStatus IE插件未实现");
	}
	
oneNetHelper_activex.HeartBeat = function (appToken,notify_web)
	{
		alert("HeartBeat IE插件未实现");
	}
	
oneNetHelper_activex.GetGateWayAddrList = function (notify_web)
	{
		setTimeout(function (){
		var msg = InitCmdMsg("GetGateWayAddrList", "");	
		var resp = {};	
		AuthClientCtrl.JsonActionCmdDeal(JSON.stringify(msg));
		var obj = JSON.parse(AuthClientCtrl.bstrResponse);
		resp = obj.info;
		notify_web(resp);
		}, 0);
	}

oneNetHelper_activex.JsonActionTestCmdDeal = function (notify_web)
	{
		setTimeout(function (){
		var msg = InitCmdMsg("testAction", "");	
		var resp = {};	
		AuthClientCtrl.JsonActionCmdDeal(JSON.stringify(msg));
		var obj = JSON.parse(AuthClientCtrl.bstrResponse);
		resp = obj.info;
		notify_web(resp);
		}, 0);
	}