//# 작성자 : 제트스윙
//# 이메일 : junsik.lee@gmail.com
//# 블로그 : http://www.zetblog.net
var zetsense_mouseover_flag = false;
var zetsense_onblur_flag = false;
var BrowserName = '';
var BrowserInfor = navigator.userAgent;
var adsense_variable = null;
var google_keyword = 'googlesyndication.com';
var google_keyword2 = 'googleads.g.doubleclick.net'; //# 애드센스 주소가 변견되어 추가 20081214 이준식
//var google_keyword = 'zetsense.com';
var click_window_type = '';
var sum_page_ad_block = "";
var DulFlag = false; //# 데이타의 중복 저장을 막기위한 변수
var offsetX1; //# 클릭시 X좌표
var offsetY1; //# 클릭시 Y좌표
//# 밀리세컨드(1000:1초) 만큼 처리를 지연시킨다.
function delay(numberMillis)
{
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true)
{
now = new Date();
if (now.getTime() > exitTime)
return true;
}
}
//## 데이타 처리1
function prepareAdsenseQS()
{
qstr = "http://pagead2.googlesyndication.com/pagead/ads?adtest=on&client=ca-adsenseko";
qstr += "&random=" + (new Date()).getTime();
qstr += "&color_border=" + document.forms.fieldForm.elements.border.value.substring(1);
qstr += "&color_bg=" + document.forms.fieldForm.elements.bg.value.substring(1);
qstr += "&color_link=" + document.forms.fieldForm.elements.link.value.substring(1);
qstr += "&color_text=" + document.forms.fieldForm.elements.text.value.substring(1);
qstr += "&color_url=" + document.forms.fieldForm.elements.url.value.substring(1);
if(qs.get("gl")) qstr += "&gl=" + qs.get("gl");
qstr += "&url=" + document.forms.fieldForm.elements.weburl.value;
return qstr;
}
//# 현재 페이지에 애드센스 광고를 대체 페이지로 변경
function zetsense_iframe_block(url)
{
elements = document.getElementsByTagName("iframe");
for (var i = 0;i < elements.length;i++)
{
if( (elements[i].src.indexOf(google_keyword) > -1) || (elements[i].src.indexOf(google_keyword2) > -1) )
{
elements[i].src = url;
}
}
}
//## 데이타 처리2
function ShowAdsensePreview(adDimensions, adType)
{
iFrame="scrolling='no' marginwidth='0' marginheight='0' vspace='0' hspace='0' frameborder='0'";
adTempDimension=adDimensions.split("x");
tempWidth=adTempDimension[0]; tempHeight = adTempDimension[1].split("_")[0];
iFrameURL = "
";
return iFrameURL;
}
//# 현재 페이지에 애드센스 광고를 완전 숨김
function zetsense_iframe_hidden()
{
elements = document.getElementsByTagName("iframe");
for (var i = 0;i < elements.length;i++)
{
if( (elements[i].src.indexOf(google_keyword) > -1) || (elements[i].src.indexOf(google_keyword2) > -1) )
{
elements[i].style.display="none";
}
}
}
//# 광고차단시 사이트 접근금지
function zetsense_site_forbidden()
{
//alert("방문자의 IP가 부정클릭으로 의심되는 흔적이 있어 사이트 접근을 차단합니다. ");
//top.location.href = "about:Blank";
top.location.href = "http://kr.zetsense.com/error/site_forbidden.html";
}
//## 데이타 처리3
function gf()
{
var e = document.forms.fieldForm.elements.field;
if(e != undefined)
{
for (var i = 0; i < e.length; i++)
{
if (e[i].checked)
{
return e[i].value;
}
}
}
var r = document.forms.fieldForm.elements;
for (var i = 0; i < r.length; i++)
{
return r[i].id;
}
}
//# 현재 페이지에 애드센스광고 검색
function zetsense_iframe_search()
{
//# 현재 페이지의 iframe태그 정보를 모두 가져옴
var ifrms = document.getElementsByTagName('iframe');
//# 애드센스 광고위에 마우스가 올려지면 실행
var ifrm_onmouseover=function()
{
zetsense_mouseover_flag = true;
adsense_variable = this; //# 애드센스 환경설정 정보 가져오기 위해(IE+FF 모두 동작)
//# 아래 명령어는 onmouseover 이벤트핸들러 외에서 사용하면 에러가 난다.
//alert(event.srcElement.tagName);
//alert(event.srcElement.src);
//alert(event.srcElement.name);//google_ads_frame
//alert(event.srcElement.parentElement.tagName);//TD
//alert(event.srcElement.parentElement);
offsetX1 = event.offsetX;
offsetY1 = event.offsetY;
/*
if( event.srcElement.parentElement.tagName == "a" )
{
alert('d');
}
*/
}
//# 애드센스 광고위에 마우스가 올려졌다면 완전히 벗어나면 실행
var ifrm_onmouseout=function()
{
zetsense_mouseover_flag = false;
}
for(var i=0,m=ifrms.length;i -1) || (ifrms[i].src.indexOf(google_keyword2) > -1) )
{
ifrms[i].onmouseover=ifrm_onmouseover;
ifrms[i].onmouseout=ifrm_onmouseout;
//# 파이어폭스
if(navigator.userAgent.indexOf("Firefox")>-1)
{
ifrms[i].addEventListener("blur", zetsense_new_window, false)
}
//# 익스플로어
else
{
ifrms[i].attachEvent("onblur", zetsense_new_window)
}
}
}
//# 현재 페이지에 애드센스 광고가 1개이상 있으면 실행
if( i>0 )
{
zetsense_iframe_log_process();
}
}
function adsense_keydown()
{
zetsense_mouseover_flag = false;
}
//# 현재 페이지에 검색된 애드센스광고 클릭내역 이벤트부여
function zetsense_iframe_log_process()
{
//# 애드센스 광고위에 마우스 오버상태에서 "F5" 키를 누를시 내역기록 중지
//# 애드센스 광고위에 마우스 오버상태에서 F5으로 리로드시 로그안남기기 위해 사용
//# 애드센스 광고위에 마우스 오버상태에서 CTRL + <, >로 이동시 로그안남기기 위해
//# 애드센스 광고위에 아무곳이나 클릭후에 F5나 CTRL+<,>을 하게되면 keydown이벤트가 발생안해서 기록됨 -_-
//# 애드센스 광고위에서 마우스클릭은 keydown이 실행되지 않음, 키보드에 의한 입력만 이벤트발생
//# 왜냐면 keydown 이벤트는 부모프레임에만 해당되고 애드센스 iframe에서는 실행안되기 때문
//# 익스플로어에서 동작
if(document.attachEvent)
{
//top이나 parent을 붙히고 http://bloggernews.media.daum.net/news/597189같은 블로거뉴스에 가면 "액세스 거부"
//# 스크립트가 뜬다. -_- 제한이 왜케 심한지..원..
//top.document.attachEvent("onkeydown", adsense_keydown);
//top.attachEvent("onbeforeunload", zetsense_beforeunload);
document.attachEvent("onkeydown", adsense_keydown);
attachEvent("onbeforeunload", zetsense_beforeunload);
}
//# 파이어폭스에서 동작
//# 애드센스 클릭된 상태에서 드래그후 애드센스 외의 영역에 드롭하면 새로운 창이 뜨며 애드센스 광고가 출력되지만
//# 이벤트는 동작하지 않는다. (나중에 수정 -_-)
//# 애드센스광고 드래그후 주소밑에 즐겨찾기에 드롭하면 즐겨찾기만 단지 생성되고
//# 애드센스광고 드래그후 주소창에 드롭하면 이벤트가 발생안함
//# 애드센스광고 설명글 클릭후 F5 기록됨, 애드센스광고 제목, url 클릭시 정상기록됨
else if(document.addEventListener)
{
//top이나 parent을 붙히고 http://bloggernews.media.daum.net/news/597189같은 블로거뉴스에 가면 "액세스 거부"
//# 스크립트가 뜬다. -_- 제한이 왜케 심한지..원..
//# 첫번째 인자 : 이벤트명 (파폭은 on을 붙히지 않는다.)
//top.document.addEventListener("keydown", adsense_keydown , false);
//top.addEventListener("beforeunload", zetsense_beforeunload , false);
document.addEventListener("keydown", adsense_keydown , false);
addEventListener("beforeunload", zetsense_beforeunload , false);
}
//# 기타 브라우저(넷츠게이프, 오페라, 사파리)에서 동작
else
{
//# 소스는 익스플로어와 동일
top.document.attachEvent("onkeydown", adsense_keydown);
top.attachEvent("onbeforeunload", zetsense_beforeunload);
}
}
//# 현재창에 광고 출력시 실행
function zetsense_beforeunload()
{
//# 구글 애드센스 광고를 클릭시 동작
if(zetsense_mouseover_flag) //# 애드센스광고에 마우스오버 상태일때
{
click_window_type = '1';
adsense_click_process();
}
//# 구글 애드센스 광고클릭으로 이동이 아닌 다른 메뉴나 링크를 통해 이동될때 실행
else
{
//#
}
}
//# 새창에 광고 출력시 실행
function zetsense_new_window()
{
//# 구글 애드센스 광고를 클릭시 동작
if(zetsense_mouseover_flag) //# 애드센스광고에 마우스오버 상태일때
{
click_window_type = '2';
adsense_click_process();
delay(600); //# 중간에 텀이 없이 페이지가 갱신되어 내역이 제대로 남지 않아서 추가했음 20080310
top.document.location.reload(); //# 새창으로 광고가 뜰때 광고차단 기능이 작동하기 위해 클릭페이지 한번 갱신함 20080306
//top.location.reload(); //# 새창으로 광고가 뜰때 광고차단 기능이 작동하기 위해 클릭페이지 한번 갱신함 20080306
}
//# 구글 애드센스 광고클릭으로 이동이 아닌 다른 메뉴나 링크를 통해 이동될때 실행
else
{
//# 애드센스 영역에서 클릭영역이 아닌 영역을 클릭을 한후 애드센스 영역에서 벗어나면 실행
zetsense_onblur_flag = false;
}
}
function adsense_click_process()
{
log_image = new Image();
if(BrowserInfor.indexOf("MSIE") >-1)
{
BrowserName = "IE";
}
else if(BrowserInfor.indexOf("Firefox") >-1)
{
BrowserName = "FF";
}
else
{
BrowserName = "ETC";
}
//# 광고 클릭시 문자열 출력
click_msg = "";
if( click_msg != "") alert(click_msg);
//# escape함수를 이용하면 "&"가 포함된 문자열도 get방식 전송가능
User = escape('hatm11');
Href = escape(document.location.href);
Status = escape(window.status);
Referrer = escape(document.referrer);
BrowserInfor = escape(BrowserInfor);
channel = escape(zetsense_adsense_variable(adsense_variable, "channel")); //# 채널값 가져옴(IE+FF 모두 동작)
//# 20071117 이준식 현재 발급되는 애드센스 코드에는 채널값이 없으므로 코드의 google_ad_slot 값을 가져와서 채널값처럼 쓴다. (IE+FF 모두 동작)
if(channel == "")
channel = escape(zetsense_adsense_variable(adsense_variable, "slotname"));
//# 추천 광고 구별을 사용
cpa_choice = escape(zetsense_adsense_variable(adsense_variable, "cpa_choice"));
//# 워드프레스에서는 page라는 변수를 사용하면 자스 에러발생하여 page1으로 변경 2008-01-10
page1 = "http://www.zetsense.com/zetsense/zetsense_ok.php";
page1 += "?user=" + User;
page1 += "&href=" + Href;
page1 += "&status=" + Status;
page1 += "&referrer=" + Referrer;
page1 += "&browser=" + BrowserInfor;
page1 += "&browser_type=" + BrowserName;
page1 += "&channel=" + channel; //# 채널값은 고정 10자리로
page1 += "&cpa_choice=" + cpa_choice; //# cpa_choice 값은 추천광고만 가지고 있음
page1 += "&click_window_type=" + click_window_type; //# 새창인지 현재창인지 체크함
page1 += "&offsetX1=" + offsetX1; //# 클릭시 X측 좌표값
page1 += "&offsetY1=" + offsetY1; //# 클릭시 Y측 좌표값
//# 데이타의 중복 저장을 막기위한 처리(DulFlag)
if( DulFlag == false )
{
DulFlag = true;
log_image.src = page1;
}
}
//# 중요한 데이타 처리
function sf_ok(f, v)
{
if (window.event)
{
if (event.keyCode == 13)
{
sf_oc(f, v); // simulate onchange
event.cancelBubble = true;
}
}
}
//# (IE+FF 모두 동작)
//# URL의 getstrintg의 name값에 해당하는 value값을 가져옴
//# 클릭한 애드센스의 환경설정 정보알아냄
function zetsense_adsense_variable(iframeObj, name)
{
var dc = iframeObj.src;
var prefix = name + "=";
var begin = dc.indexOf("&" + prefix);
if (begin == -1)
{
begin = dc.indexOf("?" + prefix);
if (begin == -1)
return '';
}
else
{
begin += 1;
}
var end = dc.indexOf("&", begin);
//# 맨마지막 변수값이면
if (end == -1)
{
end = dc.length;
}
return dc.substring(begin + prefix.length, end);
}
zetsense_iframe_search(); //# 메인실행