var LOGIN_FORM_NAME = "loginFrm1";
var DEFAULT_LOGIN_SECURE = "GPSEC";

var SUCCESS_RUN = 0;
var FAIL_RUN = 1;

var NORMAL_SITE = 0;
var GAME_SITE = 1;

var LOGIN_ACTIVE_FORM = "http://static.plaync.co.kr/common/activex/ActiveXNotice.html";
var LOGIN_NOTICE_FORM = "http://static.plaync.co.kr/common/activex/SecureXNotice.html";
var DAUM_NOTICE_FORM = "https://dmid.game.daum.net/secure.aspx";

var LOGIN_WWW_FORM = escape(location.href);

var LOGIN_DOMAIN = ["plaync.co.kr", "yahoo.co.kr", "daum.net"];

function getCookie(name) {
	var str = name + "=";
	if (document.cookie.length > 0) {
		var find = document.cookie.indexOf(str);
		if(find == -1) return null;
		var first = find + str.length;
		var end = document.cookie.indexOf(";", first);
		if(end == -1) end = document.cookie.length;
		return unescape(document.cookie.substring(first, end));
	}
	else
		return null;
}

function setCookie (name, domain) {
	var exp = new Date();
	var cookie = exp.getTime();
  exp.setTime(cookie+1000*60*60*24);
  
	document.cookie = name + "=" + escape(cookie) + ";expires=" + exp.toGMTString() + "; path=/;domain="+LOGIN_DOMAIN[domain];
}

function delCookie (name, domain) {
	var exp = new Date();
	exp.setTime(exp.getTime()-1);
	
	document.cookie = name + "=" + ";expires=" + exp.toGMTString() + "; path=/;domain="+LOGIN_DOMAIN[domain];
}

function isCookie(name) {
	if (getCookie(name)) {
		return true;
	}
	else {
		return false;
	}
}

function getKey() {
  try {
	  if (LoadActiveXInMultiMode('', '', '', 0) != SUCCESS_RUN) {
	  	return null;
	  }
	  else {
      	return GetUniqueKey();
      }
	} catch (e) {
		return null;
	}
}

function isActiveX() {
	try {
		if (getKey())
			return true;
		else
			return false;
  	} catch(ex) {
    	return false;
  	}
}

function initKey() {
	var frm = document.getElementById(LOGIN_FORM_NAME);

	frm.ukey.value = "";
}

function hasActiveX(){
   try {
      var obj = new ActiveXObject("NCLoader.NCLoaderCtl");
      
      if (obj) 
      	return true;
      else 
      	return false;
   } catch(ex) {
      return false;
   }
}

function loginKey() {
	initKey();
	
	var frm = document.getElementById(LOGIN_FORM_NAME);	  
	if (hasActiveX()) {
	  var uid = getKey();
	  if(uid != null)
	    frm.ukey.value = uid;
	}
}

function setKey(site) {
  try {
		if (site != NORMAL_SITE) {
	       LoadActiveX();
	  }
	  
	  try {
	    setPage();
	  } catch(ex) {alert(ex.description)}    
	  
	  var detect = detectActiveX();
	  GotoSecureXPage(detect, 0);
	  
  } catch(ex) {"setKey : " + alert(ex.description)}  
}

function channelKey(domain) {
  try {
    LoadActiveX();
	  
	  var detect = detectActiveX();
	  
	  GotoSecureXPage(detect, domain);
  } catch(ex) {"channelKey : " + alert(ex.description)}  
}

function GotoSecureXPage(detect, domain) {
  var cookie = getCookie(DEFAULT_LOGIN_SECURE);

  if(cookie != null) {
    var exp = new Date();
    
    if((exp.getTime() - cookie) > 1000*60*60*3) {
      delCookie(DEFAULT_LOGIN_SECURE, domain);
      if (detect == 1) {  
        setCookie(DEFAULT_LOGIN_SECURE, domain);
        
        GotoChannelPage(domain);
      }
    }
	}
	else {
	  if (detect == 1) {
      setCookie(DEFAULT_LOGIN_SECURE, domain);

      GotoChannelPage(domain);
    }
  }
}

function GotoChannelPage(domain) {
    var ReturnUrl = getParameter("return_url");
    if(ReturnUrl == "")
      ReturnUrl = LOGIN_WWW_FORM;
      
    if(domain == 2) {
       location.href=DAUM_NOTICE_FORM + "?return_url=" + ReturnUrl;
    }
    else {
       location.href=LOGIN_NOTICE_FORM + "?return_url=" + ReturnUrl;
    }
}

function GotoActiveXPage() {
  var ReturnUrl = getParameter("return_url");
  if(ReturnUrl == "")
    ReturnUrl = LOGIN_WWW_FORM;

  location.href=LOGIN_ACTIVE_FORM + "?return_url=" + ReturnUrl;
}

function getLauncher(startGameID, sessKey, userNick, CompanyID)
{
	try {
		if (LoadActiveXInMultiMode(startGameID, sessKey, userNick, CompanyID) != SUCCESS_RUN) {
			return FAIL_RUN; 
		}
		else {
			return StartLauncher();
		}
	} catch (e) {
		return FAIL_RUN;
	}
}

function GameStart(startGameID, sessKey, userNick, CompanyID, ReturnUrl) {
	if (hasActiveX()) {
			return getLauncher(startGameID, sessKey, userNick, CompanyID);
	}
	else {
	  location.href=LOGIN_ACTIVE_FORM + "?return_url=" + ReturnUrl;
		return FAIL_RUN;
	}	
}

function detectActiveX() {
  if(hasActiveX()) {
    var infect = CheckInfected();
    if(infect != null) {
      return infect;
    }
    else {
      return (4);
    }
  }
  else {
    return (999);
  }
}

function setPage() {
	var frm = document.getElementById(LOGIN_FORM_NAME);

  try {
  	if(frm.id.addEventListener)
  	  frm.id.addEventListener("focus", getNoticePage, false);
  	else
  		frm.id.attachEvent("onfocus", getNoticePage);
	} catch(e) {}
}


function getNoticePage() {
  var detect = detectActiveX(); 

  if (detect == 1) {
    GotoSecureXPage(detect, 0);
  }
  else if (detect == 999 || detect == 4 || detect == 5) {
	  GotoActiveXPage();
	}
}


function getParameter(key)
{
    var url = window.location.search;
    
    var spoint = url.indexOf("?");
    var query = url.substring(spoint,url.length);
    var keys = new Array;
    var values = new Array;
    var nextStartPoint = 0;
    while(query.indexOf("&",(nextStartPoint+1) ) >-1 ){
        var item = query.substring(nextStartPoint, query.indexOf("&",(nextStartPoint+1) ) );
        var p = item.indexOf("=");
        keys[keys.length] = item.substring(1,p);
        values[values.length] = item.substring(p+1,item.length);
        nextStartPoint = query.indexOf("&", (nextStartPoint+1) );
    }
    item = query.substring(nextStartPoint, query.length);
    p = item.indexOf("=");
    keys[keys.length] = item.substring(1,p);
    values[values.length] = item.substring(p+1,item.length);
    var value = "";
    for(var i=0; i<keys.length; i++){
        if(keys[i]==key){
            value = values[i];
        }
    }
    
    return unescape(value);
}


