var alkitabSabdaLink = 'http://alkitab.sabda.org/';
var kamusLink = 'http://kamus.sabda.org/';
var leftPopup = 0;
var topPopup = 0;
var kamusWidth = 500;
var kamusHeight = 300;
var countRel = 10; //batas menampilkan related, karena yang bahasa inggris bisa memiliki sangat banyak
var defLang = '';

function JSONscriptRequest(fullUrl) {
    this.fullUrl = fullUrl;
    this.headLoc = document.getElementsByTagName("head").item(0);
    this.scriptId = 'JscriptId' + JSONscriptRequest.scriptCounter++;
}
JSONscriptRequest.scriptCounter = 1;
JSONscriptRequest.prototype.buildScriptTag = function () {
    this.scriptObj = document.createElement("script");
	this.scriptObj.setAttribute("src", this.fullUrl);
	this.scriptObj.setAttribute("onerror", "failedInf()");
	this.scriptObj.setAttribute("type", "text/javascript");
}
JSONscriptRequest.prototype.removeScriptTag = function () {
	this.headLoc.removeChild(this.scriptObj);
}
JSONscriptRequest.prototype.addScriptTag = function () { this.headLoc.appendChild(this.scriptObj); }

function getKamus() {
	var word = document.kamus_search.word.value;
	if (document.kamus_search.kamus_vers[1].checked) {
		var url = kamusLink + "api/dictionary.php?word=" + word + "&callback=JsonCall";
	} else {
		var url = kamusLink + "api/kamus.php?word=" + word + "&callback=JsonCall";
	}
	bObj = new JSONscriptRequest(url);
	bObj.buildScriptTag();
	bObj.addScriptTag();
	bObj.removeScriptTag();
}

function JsonCall(json) {
	if (document.getElementById('kamus_wrapper')){
		var kamus_content = document.getElementById('kamus_wrapper');
		kamus_content.innerHTML = '';
		kamus_content.style.width = kamusWidth + 'px';
	} else {
		var kamus_content = document.createElement("div");
		kamus_content.setAttribute('id','kamus_wrapper');
		kamus_content.setAttribute('style','width:' + kamusWidth + 'px; height: ' + kamusHeight + '; display:none; position:absolute; border:2px solid #D7D7D7; font-size:14px;font-family:"Trebuchet MS",Tahoma,Verdana,Arial,sans-serif;');
	}
	if(json!=""){ 
		
		//kamus_content.textAlign = 'left';
		var header_div = document.createElement('h2');
		header_div.innerHTML = '<a title="Kamus SABDA" style="position:relative; float:left;" href="' + kamusLink + '"><img border="0" height="20px" src="' + kamusLink + 'api/kamus.gif"></a> <div style="font-size:16px; height:20px;">&nbsp;&nbsp;' + document.kamus_search.word.value + ' [<small><a target="_blank" href="' + kamusLink + 'kamus/' + escape(document.kamus_search.word.value) + '">Selengkapnya</a></small>]</div>';
		header_div.setAttribute('id','kamus_header');
		header_div.setAttribute('style','height:20px;font-family:"Trebuchet MS",Tahoma,Verdana,Arial,sans-serif;font-weight:bold; background-color:#EEEEEE; margin:0px;');
		header_div.setAttribute("onmousedown", "dragStart(event, 'kamus_header', 'kamus_wrapper')");
		header_div.style.cursor = 'move';
		kamus_content.appendChild(header_div);
		
		var content_wrapper = document.createElement('div');
		content_wrapper.style.overflowY = 'auto';
		content_wrapper.style.height = '280px';
		kamus_content.appendChild(content_wrapper);
		
		var a = 0;
		defLang = '';
		for (y in json) {
			a+=1;
			//mainkey
			var mainkey_div = document.createElement('h3');
			mainkey_div.setAttribute('style','font-weight:bold; background-color:#FFFFAE; margin:0px;');
			mainkey_div.setAttribute('id','kamus_h3_' + a);
			
			var content_div = document.createElement('div');
			content_div.setAttribute('id','contentdiv_' + a);
			content_div.setAttribute('style','padding:5px;background-color:white;');
			//content_div.innerHTML = '';
			var linkBack = '';
			/*
			if (a == 1) {
				mainkey_div.setAttribute("onmousedown", "dragStart(event, 'kamus_h2_1', 'kamus_wrapper')");
				mainkey_div.style.cursor = 'move';
			}
			*/
			/*
			if (json[y]['mainkey'] != json[y]['root']) {
				mainkey_div.appendChild(document.createTextNode(json[y]['mainkey'] + ' (' + json[y]['root'] + ')'));
			} else {
				mainkey_div.appendChild(document.createTextNode(json[y]['mainkey']));
			}
			*/
			if (json[y]['mainkey'] != json[y]['root']) {
				mainkey_div.innerHTML = json[y]['mainkey'] + ' (' + json[y]['root'] + ')';
			} else {
				mainkey_div.innerHTML = json[y]['mainkey'];
			}
			content_wrapper.appendChild(mainkey_div);
			
			if (typeof(json[y]['results']['kbbi']) != 'undefined') {
				var kamusLang = 'kamus';
			} else {
				var kamusLang = 'dictionary';
			}
			
			//related
			if (typeof(json[y]['related']['word']) != 'undefined') {
				var related_div = document.createElement('div');
				var related_inner = '<b style="color:#387070">Kata Terkait</b> : ';
				for (rel in json[y]['related']['word']) {
					if (rel == 0) {
						related_inner+= '<a href="' + kamusLink + kamusLang + '/' + json[y]['related']['word'][rel] + '">' + json[y]['related']['word'][rel] + '</a>';
					} else if (rel <= countRel) {
						related_inner+= ', <a href="' + kamusLink + kamusLang + '/' + json[y]['related']['word'][rel] + '">' + json[y]['related']['word'][rel] + '</a>';
					}
				}
				if (rel > countRel)
					related_inner+= ', <a href="' + kamusLink + kamusLang + '/' + json[y]['mainkey'] + '">...</a>';
				related_div.innerHTML = related_inner;
				//kamus_content.appendChild(related_div);
				content_div.appendChild(related_div);
			}
			//wordfam
			if (typeof(json[y]['results']['wordfam']) != 'undefined') {
				var wordfam_div = document.createElement('div');
				var wordfam_inner = '<b style="color:#387070;">Keluarga kata dalam Alkitab</b> : ';
				for (wf in json[y]['results']['wordfam']) {
					if (wf == 0) {
						wordfam_inner+= '<a href="' + alkitabSabdaLink + 'search.php?version=tb&search=' + json[y]['results']['wordfam'][wf] + '">' + json[y]['results']['wordfam'][wf] + '</a>';
					} else {
						wordfam_inner+= ', <a href="' + alkitabSabdaLink + 'search.php?version=tb&search=' + json[y]['results']['wordfam'][wf] + '">' + json[y]['results']['wordfam'][wf] + '</a>';
					}					
				}
				wordfam_div.innerHTML = wordfam_inner;
				//kamus_content.appendChild(wordfam_div);
				content_div.appendChild(wordfam_div);
			}
			//kbbi
			if (typeof(json[y]['results']['kbbi']) != 'undefined') {
				defLang = 'id';
				var kbbi_div = document.createElement('div');
				var kbbi_header = '[KBBI]';
				var kbbi_header_wrapper = document.createElement('div');
				kbbi_header_wrapper.appendChild(document.createTextNode(kbbi_header));
				kbbi_header_wrapper.setAttribute('style','color:#387070;font-weight:bold;');
				var kbbi_inner = '';
				//kamus_content.appendChild(kbbi_header_wrapper);
				content_div.appendChild(kbbi_header_wrapper);
				for (kbbi in json[y]['results']['kbbi']) {
					kbbi_inner = json[y]['results']['kbbi'][kbbi][1];
					kbbi_inner += ' ' + json[y]['results']['kbbi'][kbbi][2];
					var kbbi_item = document.createElement('div');
					kbbi_item.innerHTML = '<p style="text-indent:-10px;margin:0px 0px 0px 10px;">' + kbbi_inner + '</p>';
					kbbi_div.appendChild(kbbi_item);
				}
				//kamus_content.appendChild(kbbi_div);
				content_div.appendChild(kbbi_div);
			}
			
			//seasite
			/*
			if (typeof(json[y]['results']['seasite']) != 'undefined') {
				var seasite_div = document.createElement('div');
				var seasite_header = '[SEASITE]';
				var seasite_header_wrapper = document.createElement('div');
				seasite_header_wrapper.appendChild(document.createTextNode(seasite_header));
				seasite_header_wrapper.setAttribute('style','color:#387070;font-weight:bold;');
				var seasite_inner = '';
				//kamus_content.appendChild(seasite_header_wrapper);
				content_div.appendChild(seasite_header_wrapper);
				for (seasite in json[y]['results']['seasite']) {
					seasite_inner = '';
					var seasite_hm = '';
					if (typeof(json[y]['results']['seasite'][seasite]['hm']) != 'undefined') {
						seasite_hm = json[y]['results']['seasite'][seasite]['hm'];
					}
					var seasite_dv = '';
					if (typeof(json[y]['results']['seasite'][seasite]['dv']) != 'undefined') {
						seasite_dv = ':::' + json[y]['results']['seasite'][seasite]['dv'];
					}
					seasite_inner += '<div><b>' + json[y]['results']['seasite'][seasite]['word'] + '<sup>' + seasite_hm + '</sup></b>' + seasite_dv + '</div>';
					var seasite_ge = '';
					if (typeof(json[y]['results']['seasite'][seasite]['ge']) != 'undefined') {
						seasite_ge = json[y]['results']['seasite'][seasite]['ge'];
						seasite_inner += '<div><b>Def. Singkat: </b></td><td>' + seasite_ge + '</div>';
					}
					var seasite_de = '';
					if (typeof(json[y]['results']['seasite'][seasite]['de']) != 'undefined') {
						seasite_de = json[y]['results']['seasite'][seasite]['de'];
						seasite_inner += '<div><b>Def. Inggris: </b></td><td>' + seasite_de + '</div>';
					}
					var seasite_item = document.createElement('div');
					seasite_item.innerHTML = seasite_inner;
					seasite_div.appendChild(seasite_item);
				}
				//kamus_content.appendChild(seasite_div);
				content_div.appendChild(seasite_div);
			}
			*/
			
			//wordnet
			if (typeof(json[y]['results']['wordnet']) != 'undefined') {
				defLang = 'en';
				var wordnet_div = document.createElement('div');
				var wordnet_header = '[wordnet]';
				var wordnet_header_wrapper = document.createElement('div');
				wordnet_header_wrapper.appendChild(document.createTextNode(wordnet_header));
				wordnet_header_wrapper.setAttribute('style','color:#387070;font-weight:bold;');
				var wordnet_inner = '';
				//kamus_content.appendChild(kbbi_header_wrapper);
				content_div.appendChild(wordnet_header_wrapper);
				for (wordnet in json[y]['results']['wordnet']) {
					var wordnet_item = document.createElement('div');
					var wordnet_head = document.createElement('div');
					wordnet_head.innerHTML = wordnet + ' <i style="border-bottom:dashed thin black">' + json[y]['mainkey'] + '</i> has ' + json[y]['results']['wordnet'][wordnet]['count'] + ' senses';
					wordnet_item.appendChild(wordnet_head);
					var wordnet_ct = document.createElement('div');
					for (wordnet_content in json[y]['results']['wordnet'][wordnet]['content']) {
						wordnet_ct.innerHTML += '<li class="wordnet">' + json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['def'] + '</li>';
						for (link_key in json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['link']) {
							var span_ofs =  document.createElement('span');
							span_ofs.setAttribute('class', 'ofs');
							span_ofs.innerHTML = json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['link'][link_key]['name'];
							for (link_detail in json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['link'][link_key]['value']) {
								span_ofs.innerHTML += ' ' + json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['link'][link_key]['value'][link_detail] + ',';
							}
							span_ofs.innerHTML += '<br>';
							wordnet_ct.appendChild(span_ofs);
						}
						if (json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['derive']) {
							for (derive_item in json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['derive']) {
								if (json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['derive'][derive_item]) {
									var span_ofs =  document.createElement('span');
									span_ofs.setAttribute('class', 'ofs');
									span_ofs.innerHTML = '<span class="samt">' + json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['derive'][derive_item]['name'] + '</span>';
									for (derivation_item in json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['derive'][derive_item]['value']) {
										span_ofs.innerHTML += ' ' + json[y]['results']['wordnet'][wordnet]['content'][wordnet_content]['derive'][derive_item]['value'][derivation_item];
									}
									span_ofs.innerHTML += '<br>';
									wordnet_ct.appendChild(span_ofs);
								}
							}
						}
					}
					wordnet_ct.innerHTML = '<ol style="margin-top:0px;">' + wordnet_ct.innerHTML + '</ol>';
					
					wordnet_item.appendChild(wordnet_ct);
					wordnet_div.appendChild(wordnet_item);
				}
				//kamus_content.appendChild(wordnet_div);
				content_div.appendChild(wordnet_div);
			}
			
			content_wrapper.appendChild(content_div);
			/*
			if (defLang == 'id' && a == 1) {
				mainkey_div.innerHTML += ' [<small><a target="_blank" href="' + kamusLink + 'kamus/' + document.kamus_search.word.value + '">Selengkapnya</a></small>]';
			} else if (defLang == 'en' && a == 1) {
				mainkey_div.innerHTML += ' [<small><a target="_blank" href="' + kamusLink + 'dictionary/' + document.kamus_search.word.value + '">Selengkapnya</a></small>]';
			}
			*/
		}
		
		
		//jika yang ditampilkan resource inggris, maka yang di centang di radio button adalah bhs inggris,
		//demikian juga sebaliknya
		if (defLang == 'id') {
			document.kamus_search.kamus_vers[0].checked = true;
		} else if (defLang == 'en') {
			document.kamus_search.kamus_vers[1].checked = true;
		} else {
			var not_found = document.createElement('div');
			not_found.innerHTML = '<h2 style="background-color:#EEEEEE;font-weight:bold; margin:0px;">' + document.kamus_search.word.value + '</h2><b style="color:#387070">Tidak ada definisi untuk kata/frasa ini</b>';
			content_wrapper.appendChild(not_found);
			content_wrapper.style.width = 400 + 'px';
		}
	} else {
		var not_found = document.createElement('div');
		not_found.innerHTML = '<h2 style="background-color:#EEEEEE;font-weight:bold; margin:0px;">' + document.kamus_search.word.value + '</h2><b style="color:#387070">Tidak ada definisi untuk kata/frasa ini</b>';
		content_wrapper.appendChild(not_found);	
	}
	
	if (document.getElementById('kamus_wrapper')){
		//if (document.getElementById('kamus_h2_1'))
			kamus_content.style.display = 'block';
	} else {
		document.body.appendChild(kamus_content);
		//if (document.getElementById('kamus_h2_1'))
			kamus_content.style.display = 'block';
	}
	//button close
	var kamus_close = document.createElement('div');
	kamus_close.style.cursor = 'pointer';
	kamus_close.style.position = 'absolute';
	kamus_close.style.right = '5px';
	kamus_close.style.top = '5px';
	kamus_close.style.backgroundRepeat = 'no-repeat';
	kamus_close.innerHTML = '<img style="width:10px;height:10px;" src="' + alkitabSabdaLink + 'images/closePopup.png">';
	kamus_close.setAttribute('onclick','closePopup();');
	kamus_content.appendChild(kamus_close);
	popupPosition()
}

function closePopup() {
	var kamus_wrapper = document.getElementById('kamus_wrapper');
	kamus_wrapper.style.display = 'none';
}

function popupPosition() {
	var kamus_block = document.getElementById('kamus_block');
	var kamusLeft = kamus_block.offsetLeft;
	var kamusTop = kamus_block.offsetTop + 25;
	if (kamusLeft + kamusWidth > document.body.clientWidth) {
		//kamusLeft = (kamusLeft + kamusWidth) - document.body.clientWidth - 100;
		kamusLeft = kamusLeft - ((kamusLeft + kamusWidth) - document.body.clientWidth) - 20;
		if (kamusLeft < 0)
			kamusLeft = 1;
	}
	
	//if (kamusTop + kamusHeight > document.body.clientHeight) {
	if (kamusTop - window.scrollY + kamusHeight > window.innerHeight) {
		kamusTop = window.scrollY + window.innerHeight - kamusHeight - 5;
		if (kamusTop < 0)
			kamusTop = 1;
		
	}
	var kamus_wrap = document.getElementById('kamus_wrapper');
	kamus_wrap.style.left = kamusLeft + 'px';
	kamus_wrap.style.top = kamusTop + 'px';
	kamus_wrap.style.zIndex = 2000;
	kamus_wrap.style.textAlign = 'left';
}

function Browser() {
	var ua, s, i;		this.isNS = false;	this.version = null;	ua = navigator.userAgent;
	s = "Netscape6/";
	if ((i = ua.indexOf(s)) >= 0) {    this.isNS = true;    this.version = parseFloat(ua.substr(i + s.length));    return;  }
	// Treat any other "Gecko" browser as NS 6.1.
	s = "Gecko";
	if ((i = ua.indexOf(s)) >= 0) {    this.isNS = true;    this.version = 6.1;    return;  }
}

var browser = new Browser();
var dragObj = new Object();		dragObj.zIndex = 0;
var dragObjParent = new Object();
function dragStart(event, id, id_parent) {
	var el;  var x, y;
	// If an element id was given, find it. Otherwise use the element being clicked on.
	if (id){
		dragObj.elNode = document.getElementById(id);
		dragObjParent.elNode = document.getElementById(id_parent);
	}	else {
		if (browser.isNS)	dragObj.elNode = event.target;
	    // If this is a text node, use its parent element.
	    if (dragObj.elNode.nodeType == 3)	dragObj.elNode = dragObj.elNode.parentNode;
	}
	// Get cursor position with respect to the page.
	if (browser.isNS) {    x = event.clientX + window.scrollX;    y = event.clientY + window.scrollY;  }
	// Save starting positions of cursor and element.
	dragObj.cursorStartX = x;
	dragObj.cursorStartY = y;
	dragObjParent.cursorStartX = x;
	dragObjParent.cursorStartY = y;
	dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
	dragObj.elStartTop = parseInt(dragObj.elNode.style.top, 10);
	dragObjParent.elStartLeft  = parseInt(dragObjParent.elNode.style.left, 10);
	dragObjParent.elStartTop = parseInt(dragObjParent.elNode.style.top, 10);
	if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
	if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;
	if (isNaN(dragObjParent.elStartLeft)) dragObjParent.elStartLeft = 0;
	if (isNaN(dragObjParent.elStartTop))  dragObjParent.elStartTop  = 0;
	// Update element's z-index.
	dragObj.elNode.style.zIndex = ++dragObj.zIndex;
	// Capture mousemove and mouseup events on the page.
	if (browser.isNS) {
	    document.addEventListener("mousemove", dragGo,   true);
		document.addEventListener("mouseup",   dragStop, true);
	    event.preventDefault();
	}
}
function dragGo(event) {
	var x, y;
	// Get cursor position with respect to the page.
	if (browser.isNS) {    x = event.clientX + window.scrollX;    y = event.clientY + window.scrollY;  }
	// Move drag element by the same amount the cursor has moved.
	dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
	dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";
	dragObjParent.elNode.style.left = (dragObjParent.elStartLeft + x - dragObjParent.cursorStartX) + "px";
	dragObjParent.elNode.style.top  = (dragObjParent.elStartTop  + y - dragObjParent.cursorStartY) + "px";
	if (browser.isNS)    event.preventDefault();
}
function dragStop(event) {
	// Stop capturing mousemove and mouseup events.
	if (browser.isNS) {    document.removeEventListener("mousemove", dragGo,   true);    document.removeEventListener("mouseup",   dragStop, true);  }
}
//----------------------selesai bag drag popup


