﻿/*
script name : cpc_redirect.js
script definition :  client-side redirect process    ~ server-side redirect is not necessary  the connection url sets are necessary )  
script version : V5
script register : 2009.10.20
script writer : sky (mini0557@nate.com)
*/

if(typeof cpcguard == 'undefined'){var cpcguard = new Object();}

cpcguard.util = {
	index:function(value,comparechar){return value.indexOf(comparechar);},
	lastCharCompareRemove:function(value,comparechar){try{var _index = value.length-1; if(value.charAt(_index) == comparechar){return value.substring(0,_index);} return value;}catch(e){return '';}},
	compareSplitBefore: function(value,comparechar){try{if(value.indexOf(comparechar) < 0 ){return value;}return value.split(comparechar)[0];}catch(e){return '';}},
	compareSplitAfter: function(value,comparechar){try{var _index = value.indexOf(comparechar); if(_index < 0 ){return '';} return value.substring(_index+comparechar.length,value.length);}catch(e){return '';}},
	left: function(value,index){try{if(index <= 0){return '';}else if(index > String(value).length){return value;}else{return String(value).substring(0,index);}}catch(e){return '';}},
	getUrl: function(value){
		try{
			if(value.indexOf("http%3A//") !=-1 || value.indexOf("https%3A//") !=-1){value=unescape(value);}
			else if(value.indexOf("http%3A%2F%2F") !=-1 || value.indexOf("https%3A%2F%2F") !=-1){try{value=decodeURIComponent(value);}catch(e){}}

			value = this.lastCharCompareRemove(this.compareSplitBefore(value,'#'),'/');
			if(value !='' && value.charAt(0).toUpperCase()=='H' && value.indexOf('://') > -1 ){value = this.compareSplitAfter(value,'://');}

			return (value.indexOf('%u') > -1) ? unescape(value) : value;
		}catch(e){return '';}
	},
	getDomain: function(value){try{return this.compareSplitBefore(this.compareSplitBefore(value,'/'),':');}catch(e){return '';}},
	getShotDomain: function(){
		try{
			var _domain_list = new Array('.CO.KR','.CO.IN','.OR.KR','.PE.KR','.NE.KR','.GO.KR','.AC.KR','.HS.KR','.MS.KR','.ES.KR','.KG.KR','SC.KR','.COM','.NET','.ORG','.BIZ','.KR','.IN','.TV','.AC','.TW','.EU','.CC');
			var _domain = document.domain;

			for(var i = 0; i < _domain_list.length; i++){
				var _index = _domain.toUpperCase().indexOf(_domain_list[i]);

				if(_index > 0){
					var _split = _domain.split('.');
					var _length = _split.length;
					var _domainlength = (_domain_list[i].split('.')).length;

					if(_domainlength == 3){if(_length > 2){return _split[_length-3] + '.' + _split[_length-2] + '.' +_split[_length-1];}}
					else if(_domainlength==2){if(_length > 1){return _split[_length-2] + '.' +_split[_length-1];}}
				}
			}
			return _domain;
		}catch(e){return document.domain;}
	}
}


cpcguard.cookie = {
	setCookie: function(name,value,domain,expires,path,secure){
		try{
			document.cookie = name + '=' + escape (value) + 
			((expires == null) ? '' : ('; expires=' + expires.toGMTString())) + 
			((path == null) ? '; path=/' : ('; path=' + path)) +  
			((domain == null) ? '' : ('; domain=' + domain)) + 
			((secure == true) ? '; secure' : '');
		}catch(e){}
	},
	getCookie: function(name,defaultValue){
		try{
			var _cookies = document.cookie.split('; ');
			for(var i=0; i < _cookies.length; i++){
				var args = _cookies[i].split('=');
				if(name == args[0]){if(args.length==1){return '';}else{return unescape(args[1]);}}
			}
			return defaultValue == null ? null : defaultValue;
		}catch(e){return null;}
	},
	makeCookie : function(info){try{if(info){var cookie = "{"; for(var i in info){if(typeof(info[i]) == 'function'){ continue;} if(info[i] == null || typeof(info[i]) == 'undefined'){cookie += '"' + i + '":null,';}else if(typeof(info[i])  == 'number'){cookie += '"' + i + '":' + info[i] + ',';}else{cookie += '"' + i + '":"' + info[i] + '",';}}return cookie.substring(0,cookie.length-1) + "}";}return "";}catch(e){return "";}},
	getUserCookie : function(name){try{var _cookie =  this.getCookie('CPC_' + name); if(_cookie){return  eval('('+ _cookie+')');}else{return null;}}catch (e){return null;}},
	setUserCookie : function(type,name,object,domain){try{if(type == 'global'){var _expires = new Date(); _expires.setYear(_expires.getYear() + 1); this.setCookie('CPC_' + name, this.makeCookie(object), domain,_expires);}else{this.setCookie('CPC_' + name, this.makeCookie(object), domain);}}catch (e){return null;}}
}

cpcguard.common = {
	cookieEnabled : function(){try{cpcguard.cookie.setCookie('exist','exist');if(cpcguard.cookie.getCookie('exist')){return true;}else{return false;}}catch(e){return false;}},
	uniqueID: parseInt((document.uniqueID) ? document.uniqueID.replace(/ms__id/gi,'') : 0), // 'ms_id1'
	frameset : function(){
		var _target = null; var _exist = false;
		try{if(top && typeof(top) == "object" && top.frames.length){_exist = true; if(typeof(top.document) != "unknown"){_target = top;}}else if(parent && typeof(parent) == "object" && parent.frames.length){_exist = true; if(typeof(parent.document) != "unknown"){_target = parent;}}}catch(e){}
		return {exist : _exist, target : _target}
	},
	firstVisit: function(){
		try{
			if(!cpc_connect.firstID){cpc_connect.firstID = this.uniqueID; return true;}
			else{
				if(navigator.cookieEnabled){//cookie use
					if(this.uniqueID==0){ //FireFox 
						if(parseInt(cpc_connect.firstID) == 1){if(history.length==0){return true;}else{return false;}} //already connect
						else{cpc_connect.firstID = 1; return true;} //first connect
					}else{// IE
						 if(this.uniqueID  <= parseInt(cpc_connect.firstID)){return true;} //first connect 
						 else if(this.uniqueID  > parseInt(cpc_connect.firstID)){return false;} 
						 else{return (history.length==0) ? true : false;} //already connect
					}
				}else{return  (history.length==0) ? true : false;}//cookie unuse
			}

		}catch(e){return true;}
	},
	urlInfo: function(type){
		var _url = '',_search = '',_domain = '';
		try{
			if(type=='local'){if(this.firstVisit()){_url = top.document.URL || parent.document.URL || document.URL;}else{_url = document.URL;}}
			else{
				if(this.firstVisit()){
					try{_url = top.document.referrer || parent.document.referrer || document.referrer}catch(e){}
					try{if(! _url){if(top && typeof(top) == "object"){if(typeof(top.document) != "unknown"){_url = top.document.referrer;}}}}catch(e){}
					try{if(! _url){if(parent && typeof(parent) == "object"){if(typeof(parent.document) != "unknown"){_url = parent.document.referrer;}}}}catch(e){}
					try{if(! _url){if(opener && typeof(opener) == "object"){if(typeof(opener.document) != "unknown"){_url = opener.document.URL;}}}}catch(e){}
					try{if(! _url){if(typeof(parent) == "object" ){if(parent.opener && typeof(parent.opener) == "object" ){if(typeof(parent.opener.document) != "unknown") {_url = parent.opener.document.referrer;}}}}}catch(e){}
					try{if(! _url){_url = document.referrer || 'bookmark';}}catch(e){}

					var _frame = this.frameset();
					if(_frame && _frame.exist){try{if(_url == _frame.target.document.URL){_url = 'bookmark';}}catch(e){}}  // frameset check

					cpc_connect.influxUrl = _url;
				}else{
					var _referrer = cpc_connect.beforeUrl;
					if(_referrer ==  document.URL){_url = document.URL;}
					else{if(document.referrer){_url = document.referrer; var _frame = this.frameset(); if(_frame && _frame.exist){try{if(document.referrer == _frame.target.document.URL){_url = _referrer;}}catch(e){}}}else{_url = _referrer;}}
				}
			}
		}catch(e){_url = (type == 'local') ? document.URL : document.referrer || 'bookmark';}

		_url = cpcguard.util.getUrl(_url);
		_search = cpcguard.util.compareSplitAfter(_url,'?');
		_domain = (type == 'local') ? document.domain : cpcguard.util.getDomain(_url);

		return {domain:_domain,url:_url,search:_search};
	},
	connectInfo : function(redirect, firstID, influxUrl, beforeRef, beforeUrl, visit, unfaircode){return {redirect : redirect , firstID : firstID , influxUrl : influxUrl , beforeRef : beforeRef , beforeUrl : beforeUrl , visit : visit, unfaircode : unfaircode};}
}

try{
	var cpc_domain = cpcguard.util.getShotDomain();
	var cpc_connect = cpcguard.cookie.getUserCookie('CONNECT');
	var cpc_site = cpcguard.cookie.getUserCookie('SITEINFO');
	if(!cpc_connect){cpc_connect = cpcguard.common.connectInfo('N',null,null,null,null,null,'');}

	// S - ANALYSIS PROCESS 
	var cpc_url = cpcguard.common.urlInfo('local');
	var cpc_referrer = cpcguard.common.urlInfo('referrer');
	var cpc_isinflux = cpcguard.common.firstVisit();

	if(cpc_isinflux){
		try{
			var _isbookmark = false;
			if(cpc_site){
				if(cpc_site.domainList){
					var _domainList = cpc_site.domainList.split(','); 
					for(var i = 0; i < _domainList.length; i++ ){if(_domainList[i] == cpc_referrer.domain){_isbookmark = true; break;}}
				}
			}else{if(cpc_url.domain == cpc_referrer.domain){_isbookmark = true;}}

			if(_isbookmark){
				cpc_connect.influxUrl = 'bookmark'; 
				cpc_isinflux = false;
			}
		}catch(e){}
	}


	if(cpc_isinflux){cpc_connect.redirect = 'Y'; cpc_connect.unfaircode='';}

	cpc_connect.beforeUrl = document.URL;

	try{cpcguard.cookie.setUserCookie('local','CONNECT', cpc_connect, cpc_domain);}catch(e){}

}catch(e){}