var miniDaum_Obj;
var miniDaum_varNickName='';
var miniDaum_varUserid='';
var miniDaum_varLogInStatus='logoff';
var miniDaum_varLogin='';
var miniDaum_varLocation='http%3a%2f%2fwww%2edaum%2enet%2f';
var miniDaum_varMiniFL='show';
var miniDaum_varBackground='MiniBody';
var miniDaum_varCategory='';
var miniDaum_varMode='javascript';
var miniDaum_varLogout='http://login.daum.net/Mail-bin/logout.cgi?url=http%3a%2f%2fwww%2edaum%2enet%2f';

miniDaum_varLogInStatus='logoff';
miniDaum_varLogin='http://www.daum.net/Mail-bin/login.html?url=http%3a%2f%2fwww%2edaum%2enet%2f';


var __MiniDaum2008 = function(options) {
	var self = this;
	var s = new Array();
	var serviceUrls = {
		main: [
			{name: "메일", url: "http://mail.daum.net/", tag: "mail"},
			{name: "카페", url: "http://cafe.daum.net/", tag: "cafe"},
			{name: "블로그", url: "http://blog.daum.net/", tag: "blog"},
			{name: "d&shop", url: "http://dnshop.daum.net/jsp/util/ShopPartnerURL.jsp?PARTNERID=dnshop_partner_99&Psid=030001&URL=http://dnshop.daum.net/?Sid=MINI_00030000_00_00", tag: "dnshop"},
			{name: "뉴스", url: "http://media.daum.net/", tag: "news"},
			{name: "동영상", url: "http://tvpot.daum.net/Top.do", tag: "tvpot"}
		],
		more: [
			{name: "미즈넷", url: "http://miznet.daum.net/", tag: "miznet"},
			{name: "영화", url: "http://movie.daum.net/", tag: "movie"},
			{name: "게임", url: "http://game.daum.net/", tag: "game"},
			{name: "증권", url: "http://stock.finance.daum.net/", tag: "stock"},
			{name: "키즈", url: "http://kids.daum.net/", tag: "kids"},
			{name: "만화", url: "http://comic.daum.net/", tag: "comic"},
			{name: "운세", url: "http://fortune.daum.net/", tag: "fortune"},
			{name: "펀드", url: "http://fund.finance.daum.net/", tag: "fund"},
			{name: "신지식", url: "http://k.daum.net/qna/index.html", tag: "k"},
			{name: "뮤직", url: "http://music.daum.net/", tag: "music"},
			{name: "날씨", url: "http://weather.media.daum.net/", tag: "weather"},
			{name: "부동산", url: "http://estate.daum.net/", tag: "estate"},
			{name: "사전", url: "http://alldic.daum.net/", tag: "dic"},
			{name: "책", url: "http://book.daum.net/", tag: "book"},
			{name: "지도", url: "http://local.daum.net/map/", tag: "map"},
			{name: "전체보기", url: "http://www.daum.net/doc/site.html", tag: "all"}
		]
	};
	var type = {BASIC: 0, FRAME: 1, OUTSOURCE: 2};
	this.opts = {
		isLoggedOn: null,
		userId: null,
		nickname: null,
		location: null,
		type: null,
		loginUrl: "http://www.daum.net/Mail-bin/login.html",
		logoutUrl: "http://login.daum.net/Mail-bin/logout.cgi?url=http://www.daum.net/",
		category: null,
		bgColor: "#fff"
	}
	
	this.init = function() {
		if (options) {
			for (var prop in options) {
				this.opts[prop] = options[prop];
			}
		}
		if (this.opts.category == "shop") {
			serviceUrls.main[3].url = "http://dnshop.daum.net/?Sid=0002_9U000000_00_00";
			this.opts.bgColor = "#f3f3f3";
		}
		if (this.opts.category == "outsource") {
			this.opts.type = type.OUTSOURCE;
			this.opts.bgColor = "#f3f3f3";
		}
	}
	
	this.generate = function() {
		this.generateSource();
		var html = s.join('');
		if (this.opts.type == type.BASIC) {
			document.getElementById("DaumUI__minidaum").innerHTML = html;
		} else {
			document.body.innerHTML = html;
			this.addTargetTop();
		}
		this.addStyleSheets();
		document.getElementById("DaumUI__wrap").style.display = "block";
	}
	
	this.generateSource = function() {
		s[s.length] = '<fieldset id="DaumUI__wrap" class="';
		s[s.length] = this.opts.type == type.OUTSOURCE ? 'DaumUI__full' : 'DaumUI__base';
		s[s.length] = '" style="display: none; background-color: ' + this.opts.bgColor + ';"><legend>미니다음</legend><div id="DaumUI__main">';
//		this.userStatusHtml();
		this.mainServiceListHtml();
		if (this.opts.type == type.BASIC) {
			this.moreServiceListHtml();
		}
		s[s.length] = '</div>';
		if (this.opts.type == type.OUTSOURCE) {
			this.optionalHtml();
		}
		s[s.length] = '</fieldset>';
	}
	
	this.userStatusHtml = function() {
		s[s.length] = '<div id="DaumUI__stat">';
		if (this.opts.isLoggedOn) {
			var url = this.opts.logoutUrl;
			s[s.length] = '<a href="http://planet.daum.net/' + this.opts.userId + '?nil_profile=mini&nil_src=planet" id="DaumUI__nick" title="내 플래닛으로 가기">' + this.opts.nickname + '님</a><a href="' + this.func.getLogoutLink(url) + '" class="DaumUI__out">로그아웃</a>'
		} else {
			var url = this.opts.loginUrl;
			if (this.opts.type == type.BASIC) {
				url += "?url=" + this.func.getThisUrl();
			}
			s[s.length] = '<a href="' + this.func.getLoginLink(url) + '" class="DaumUI__in">로그인</a>';
		}
		s[s.length] = '</div>';
	}
	
	this.mainServiceListHtml = function() {
		s[s.length] = '<div id="DaumUI__list"><a href="http://www.daum.net/?nil_profile=mini&nil_src=daum" class="DaumUI__a1">Daum</a>';
		var n = serviceUrls.main.length;
		for (var i = 0; i < n; i++) {
			var svc = serviceUrls.main[i];
			s[s.length] = '<a href="' + this.getTaggedUrl("main", i);
			s[s.length] = '" class="DaumUI__a' + (i + 2) + '">';
			s[s.length] = svc.name + '</a>';
		}
		s[s.length] = this.opts.type == type.BASIC
			? '<span id="DaumUI__moreBtn" onmouseover="__MiniDaumObj.func.openMore();" onmouseout="__MiniDaumObj.func.closeMore();">더보기<button onclick="__MiniDaumObj.func.moreServices()">more</button></span>'
			: '<a href="http://www.daum.net/doc/site.html?nil_profile=mini&nil_src=all" id="DaumUI__moreBtn">전체보기</a>';
		s[s.length] = '</div>';	
	}
	
	this.moreServiceListHtml = function() {
		s[s.length] = '<div id="DaumUI__more" class="DaumUI__close" onmouseover="__MiniDaumObj.func.openMore();" onmouseout="__MiniDaumObj.func.closeMore();"><div><span>';
		var n = serviceUrls.more.length;
		for (var i = 0; i < n; i++) {
			var svc = serviceUrls.more[i];
			if (i % 4 == 0 && i != 0) {
				s[s.length] = '</span><span class="DaumUI__span' + (i / 4 + 1) + '">';
			}
			s[s.length] = '<a href="' + this.getTaggedUrl("more", i) + '"' + ((i % 4 == 3) ? ' class="DaumUI__last"' : '') + '>' + svc.name + '</a> ';
		}
		s[s.length] = '</span><div class="DaumUI__clear"></div></div></div>';	
	}
	
	this.getTaggedUrl = function(opt, idx) {
		var list = opt == "main" ? serviceUrls.main : serviceUrls.more;
		return this.func.getNilTaggedUrl(list[idx].url, "mini", list[idx].tag);
	}
	
	this.optionalHtml = function() {
		s[s.length] = '<div id="DaumUI__opt"><a href="http://www.daum.net/" id="DaumUI__logo" target="new" title="Daum으로 가기">Daum</a><a href="javascript: return false;" onclick="__MiniDaumObj.func.setHomePage(this);" id="DaumUI__homePage" title="Daum을 시작페이지로 설정">Daum을 시작페이지로</a>';
		s[s.length] = '<a href="http://toolbar.daum.net/?nil_profile=mini&nil_src=toolbar" id="DaumUI__toolBar" target="new" title="Daum 툴바3.0 설치">툴바3.0 설치</a>';
		s[s.length] = '</div>';
	}
	
	this.addStyleSheets = function() {
		var el = document.createElement("link");
		el.type = "text/css";
		el.rel = "stylesheet";
		el.href = "/ui/minidaum2008.css";
		el.charset = "utf-8";
		document.getElementsByTagName("head")[0].appendChild(el);
	}
	
	this.addTargetTop = function() {
		var list = document.getElementById("DaumUI__wrap").getElementsByTagName("a");
		for (var i = 0; i < list.length; i++) {
			list[i].target = "_top";
		}
	}
	
	this.func = {
		moreServices: function() {
			var el = document.getElementById("DaumUI__more");
			el.className = el.className == "DaumUI__open" ? "" : "DaumUI__open";
		},
		openMore: function() {
			var el = document.getElementById("DaumUI__more");
			el.className = "DaumUI__open";
			if (self.timer) {
				window.clearTimeout(self.timer);
			}
		},
		closeMore: function() {
			self.timer = window.setTimeout(function() {
				var el = document.getElementById("DaumUI__more");
				el.className = "DaumUI__close";
				window.clearTimeout(self.timer);
			}, 500);
		},
		getLoginLink: function(url) {
			return self.func.getNilTaggedUrl(url, "login", self.func.getService());
		},
		getLogoutLink: function(url) {
			return self.func.getNilTaggedUrl(url, "logout", self.func.getService());
		},
		getNilTaggedUrl: function(url, profile, src) {
			return url + ((url.indexOf("?") > -1) ? "&" : "?") + "nil_profile=" + profile + "&nil_src=" + src;
		},
		getService: function() {
			var result = decodeURIComponent(self.opts.location).match(/http:\/\/(\w+)[.\w.]*.daum.net\//);
			var sub = null;
			if (result != null) {
				sub = result[1];
				if (/cafe[\d]+/.test(sub)) sub = "cafe";
				if (/wwl[\d]+/.test(sub)) sub = "mail";
			}
			return sub;
		},
		getThisUrl: function() {
			try {return window.top.location.href;}
			catch(e) {return window.location.href;}
		},
		setHomePage: function(el) {
			if (document.all) {
				el.style.behavior="url(#default#homepage)";
				el.setHomePage("http://www.daum.net/");
			}
			return false;
		}
	}
	
	//init.
	this.init();
}

var __MiniDaumOpts = {};
__MiniDaumOpts.isLoggedOn = miniDaum_varLogInStatus == "logon" ? true : false;
__MiniDaumOpts.userId = miniDaum_varUserid;
__MiniDaumOpts.nickname = miniDaum_varNickName;
__MiniDaumOpts.location = miniDaum_varLocation;
__MiniDaumOpts.type = miniDaum_varMode == "iframe" ? 1 : miniDaum_varMode == "outsource" ? 2 : 0;
if (__MiniDaumOpts.type) __MiniDaumOpts.loginUrl = miniDaum_varLogin;
//__MiniDaumOpts.logoutUrl = miniDaum_varLogout;
__MiniDaumOpts.category = miniDaum_varCategory;

var __MiniDaumObj = new __MiniDaum2008(__MiniDaumOpts);
__MiniDaumObj.generate();

/*function __MiniDaum2008_Loader() {
}

if (window.attachEvent) {
	window.attachEvent("onload", __MiniDaum2008_Loader);
} else if (window.addEventListener) {
	window.addEventListener("load", __MiniDaum2008_Loader, false);
}*/