var XMLReq = getXmlHttpRequestObject();
var XMLResult;
var postedTime;
var receivedTime;
var serverHost = '';

function Escape(data){
	//var data = escape(data);
	//while (data.indexOf('+')>=0) data = data.replace('+','%2B');
	var result = "";
	for (var i = 0; i < data.length; i++)
	switch (data[i]){
		case '~': result += '%7E'; break;
		case '!': result += '%21'; break;
		case '#': result += '%23'; break;
		case '$': result += '%24'; break;
		case '^': result += '%5E'; break;
		case '&': result += '%26'; break;
		case '=': result += '%3D'; break;
		case '%': result += '%25'; break;
		case ' ': result += '%20'; break;
		case '+': result += '%2B'; break;
		case '\\': result += '%5C%5C'; break;
		default : result += data[i];
	}
	return result;
}


//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} else {
                alert('Can\'t create XML Object!');
			}
}

function DecodeMilisecondTime(mst){
    hasil = "";
    ms = mst % 1000;
    mst = parseInt(mst/1000);
    if (ms) hasil = ms+' mili detik';  else return "0 mili detik";

    s = mst % 60;
    mst = parseInt(mst/60);
    if (s) hasil = s+' detik '+hasil;  else return hasil;

    m = mst % 60;
    mst = parseInt(mst/60);
    if (m) hasil = m+' menit '+hasil;  else return hasil;

    h = mst % 60;
    mst = parseInt(mst/60);
    if (h) hasil = h+' jam '+hasil; else return hasil;

    d = mst % 24;
    mst = parseInt(mst/24);
    if (d) hasil = d+' hari '+hasil;
    return hasil;
}

function SendRequestLL(method, url, param, hResult, XMLObject){
    if (url.substring(0,7)!='http://') url = serverHost + url;
    Today = new Date();
    postedTime = Today.getTime();
    if (param){
        if (param.length==0) param = 'myRandomTimeForRefreshRate='+postedTime;
        else param += '&myRandomTimeForRefreshRate='+postedTime;
    } else param = 'myRandomTimeForRefreshRate='+postedTime;
    if (XMLObject.readyState == 4 || XMLObject.readyState == 0) {
        XMLObject.open(method, url, true);
		XMLObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        XMLObject.onreadystatechange = hResult;
        XMLObject.send(param);
        return true;
	}
    return false;
}

//Sedikit Perubahan
function postData(method, url, form, hResult) {
    var param = ''; 
    if (url.substring(0,7)!='http://') url = serverHost + url;
    if (form)
        for (i = 0; i < form.elements.length; i++) 
            if (form.elements[i].name){
                param += form.elements[i].name+'='+Escape(form.elements[i].value)+'&';
			}
    Today = new Date();
    postedTime = Today.getTime();
    //if (statusIsEmpty()) setStatus("Muat...");
    param += 'myRandomTimeForRefreshRate='+postedTime;
    if (XMLReq.readyState == 4 || XMLReq.readyState == 0) {
        XMLReq.open(method, url, true);
		XMLReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        XMLResult = hResult;
        XMLReq.onreadystatechange = XMLhandleReturnPost;
        XMLReq.send(param);
        return true;
	}
    return false;
}

function XMLhandleReturnPost() {
    if (XMLReq.readyState == 4){
        Today = new Date();
        receivedTime = Today.getTime();
        if (XMLResult) XMLResult();
            else handleXMLResult();
        //else alert('Proses selesai dikerjakan!');
    }
}


// Date Time Function
function day_str() {
  var weeks=new Array(7);
  var months=new Array(13);
  weeks[0]='Minggu';weeks[1]='Senin';weeks[2]='Selasa';
  weeks[3]='Rabu';weeks[4]='Kamis';weeks[5]='Jumat';weeks[6]='Sabtu';
  months[1]='Januari';months[2]='Februari';months[3]='Maret';months[4]='April';
  months[5]='Mei';months[6]='Juni';months[7]='Juli';months[8]='Agustus';months[9]='September';
  months[10]='Oktober';months[11]='Nopember';months[12]='Desember';
  var time=new Date();
  var month=time.getMonth()+1;
  var lmonth=months[month];
  var date=time.getDate();
  var year=time.getYear();
  if (year<2000) year=year+1900;
  var a=Math.floor((14-month)/12);
  var y=year-a;
  var m=month+12*a-2;
  var week=(date+y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400)+Math.floor((31*m)/12))%7;
  var lweek=weeks[week];
  var str = lweek+', '+date+' '+lmonth+' '+year;
  return str;
}


function getTableId(id, title, content, status){
    var tbl = "<table cellpadding=0 cellspacing=0 width=100% style=\"margin:5px; background: #EEEEEE;\" onMouseOver=\"this.style.background='#F0FFF0';\" onMouseOut=\"this.style.background='#EEEEEE';\">";
    tbl += "<tr><td><img src=\""+themesdir+"lefttitle.gif\"></td>";
    tbl += "<td id=\""+id+"_title\" style=\"padding: 5px; text-align: center; font: bold 11px verdana; background: url("+themesdir+"midtitle.jpg); width: 100%;\">"+title+"</td>";
    tbl += "<td><img src=\""+themesdir+"righttitle.gif\"></td></tr>";
    tbl += "<tr><td id=\""+id+"\" colspan=3 style=\"padding: 5px; font: normal 10px verdana; border-left: 1px #333333 solid; border-right: 1px #333333 solid;\">"+content+"</td></tr>";
    tbl += "<tr><td id=\""+id+"_status\" colspan=3 style=\"padding: 2px; background: #CCCCCC; font: normal 10px tahoma; border: 1px #333333 solid;\">"+status+"</td></tr>";
    tbl += "</table>";
    return tbl;
}

function replaceId(id, val){
    var f = document.getElementById(id);
    if (f){
        var inputType = "text,textarea,password";
        if (inputType.indexOf(f.type)>-1) f.value = val;
        else {
            f.innerHTML = val;
            if (val) f.style.visibility = "visible";
            else  f.style.visibility = "hidden";
        }
    }
}

function getValueFromId(id){
    var f = document.getElementById(id);
    if (f){
        var inputType = "text,textarea,password";
        if (inputType.indexOf(f.type)>-1) return f.value;
		return "";
    }
}

function generatePageLink(tHal, hal, len, url){
var r;
var start = (hal-len)>0?hal-len:0;
}

function copyHTMLId(idTgt, idSrc){
    var fTgt = document.getElementById(idTgt);
    var fSrc = document.getElementById(idSrc);
    if ((fTgt)&&(fSrc)){
		fTgt.innerHTML = fSrc.innerHTML;
		return true
    }else return false;
}

    function successMsg(msg){
    var f = document.getElementById('successMsg');
    if (f){
        if (msg != ""){
            f.style.visibility = "visible";
            f.style.position = "";
        } else{
            f.style.visibility = "hidden";
            f.style.position = "absolute";
        }
        f.innerHTML = msg;
    } else alert(msg);
    }

    function getData(url){
        postData("GET", url, null, handleXMLResult);
    }

 
    function handleXMLResult(){
        if (XMLReq.readyState == 4) {
            successMsg('');
            var xmldoc = XMLReq.responseXML;
            // Mencari Apakah ada data form yang dikirimkan ke pengguna
            var pages = xmldoc.getElementsByTagName("replaceId");
            for (i=0; i<pages.length; i++){
                var id = pages[i].getAttribute('id');
                if ((id)&&(pages[i].firstChild)) replaceId(id, pages[i].firstChild.nodeValue)
            }

            // Add Row
            var rows = xmldoc.getElementsByTagName("addRow");
            for (i=0; i<rows.length; i++){
                var id = rows[i].getAttribute('id');
                var position = rows[i].getAttribute('position');
                if ((id)&&(rows[i].firstChild)) addRow(id, rows[i].firstChild.nodeValue, position);
            }

            // Sekarang mencari data script yang ada
            var script = xmldoc.getElementsByTagName("script");
            // Jika ada langsung dieksekusi dong
            for (i=0; i<script.length; i++){
                if (script[i].firstChild) eval(script[i].firstChild.nodeValue);
            }
            
            // Di sini digunakan untuk menampilkan Pesan Kesalahan yang dikirimkan oleh server
            var error = xmldoc.getElementsByTagName("error");
            for (i = 0; i < error.length; i++){
                if (error[i].firstChild) alert(error[i].firstChild.nodeValue);
                var script = error[i].getAttribute('script');
                if (script) eval(script);
            }

            // Di sini digunakan untuk menampilkan Pesan Sukses yang dikirimkan oleh server
            var error = xmldoc.getElementsByTagName("message");
            for (i = 0; i < error.length; i++){
                if (error[i].firstChild) successMsg(error[i].firstChild.nodeValue);
                var script = error[i].getAttribute('script');
                if (script) eval(script);
            }
        }
    }


function removeRow(id, position){
    var t = document.getElementById(id);
    if (!t) return false;
    if (!t.outerHTML){
        var tags = t.innerHTML;
        if (position=="bottom"){
            var pos = tags.toUpperCase().lastIndexOf("<TR>");
            tags = tags.substr(0, pos);
        }
        else{
            var pos = tags.toUpperCase().indexOf("</TR>")+5;
            tags = tags.substr(pos, tags.length);
        }
        t.innerHTML = tags;
    }
    else
    if (t.outerHTML.indexOf("<TABLE")!=-1){
        var tags = t.outerHTML;
        if (position=="bottom"){
            var pos1 = tags.lastIndexOf("<TR");
            var pos2 = tags.lastIndexOf("</TR>")+5;
        }
        else{
            var pos1 = tags.indexOf("<TR");
            var pos2 = tags.indexOf("</TR>")+5;
        }
        var tags1st = tags.substr(0,pos1);
        var tagslast = tags.substr(pos2, tags.length);
        tags = tags1st+tagslast;
        t.outerHTML = tags;
    }else alert('Bukan tabel bos!');
}

    function showHideId(divid, visible){
    var f = document.getElementById(divid);
    if (f){
        f.style.visibility = visible;
        if (visible == "hidden"){
            f.style.position = "absolute";
        } else f.style.position = "";
    }
    }

    function setDisplayId(divid, displayStyle){
    var f = document.getElementById(divid);
    if (f){
        f.style.display = displayStyle;
    }
    }

    function switchDisplayId(divid){
    var f = document.getElementById(divid);
    if (f){
        if (f.style.display == 'none') f.style.display = ''; else f.style.display = 'none';
    }
    }

function addRow(id, row, position){
    var t = document.getElementById(id);
    if (!t) return false;
    if (!t.outerHTML){
            if (row){
            if (row.toUpperCase().indexOf("<TR")==-1) row = "<TR>"+row;
            if (row.toUpperCase().indexOf("</TR")==-1) row += "</TR>";
            var tags = t.innerHTML;
            if (position=="bottom")
                var pos = tags.toUpperCase().lastIndexOf("</TR>")+5;
            else
                var pos = tags.toUpperCase().indexOf("<TR");
            var tags1st = tags.substr(0,pos);
            var tagslast = tags.substr(pos, tags.length);
            tags = tags1st+row+tagslast;
            t.innerHTML = tags;
        }else alert('Anda tidak memasukkan parameter!');
    }
    else
    if (t.outerHTML.indexOf("<TABLE")!=-1){
        if (row){
            if (row.indexOf("<TR")==-1) row = "<TR>"+row;
            if (row.indexOf("</TR")==-1) row += "</TR>";
            var tags = t.outerHTML;
            if (position=="bottom")
                var pos = tags.toUpperCase().lastIndexOf("</TR>")+5;
            else
                var pos = tags.toUpperCase().indexOf("<TR");
            var tags1st = tags.substr(0,pos);
            var tagslast = tags.substr(pos, tags.length);
            tags = tags1st+row+tagslast;
            t.outerHTML = tags;
        }else alert('Anda tidak memasukkan parameter!');
    }else alert('Bukan tabel bos!');
	return true;
}

function changeWidth(id, newWidth){
    var f = document.getElementById(id);
    if (f) f.style.width = newWidth;
}

function changeHeight(id, newHeight){
    var f = document.getElementById(id);
    if (f) f.style.height = newHeight;
}

function generateBody(tulisan){
  return '<body>' + tulisan + '</body>';
}

function get_html_translation_table(table, quote_style) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: noname
    // %          note: It has been decided that we're not going to add global
    // %          note: dependencies to php.js. Meaning the constants are not
    // %          note: real constants, but strings instead. integers are also supported if someone
    // %          note: chooses to create the constants themselves.
    // %          note: Table from http://www.the-art-of-web.com/html/character-codes/
    // *     example 1: get_html_translation_table('HTML_SPECIALCHARS');
    // *     returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
    
    var entities = {}, histogram = {}, decimal = 0, symbol = '';
    var constMappingTable = {}, constMappingQuoteStyle = {};
    var useTable = {}, useQuoteStyle = {};
    
    useTable      = (table ? table.toUpperCase() : 'HTML_SPECIALCHARS');
    useQuoteStyle = (quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT');
    
    // Translate arguments
    constMappingTable[0]      = 'HTML_SPECIALCHARS';
    constMappingTable[1]      = 'HTML_ENTITIES';
    constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
    constMappingQuoteStyle[2] = 'ENT_COMPAT';
    constMappingQuoteStyle[3] = 'ENT_QUOTES';
    
    // Map numbers to strings for compatibilty with PHP constants
    if (!isNaN(useTable)) {
        useTable = constMappingTable[useTable];
    }
    if (!isNaN(useQuoteStyle)) {
        useQuoteStyle = constMappingQuoteStyle[useQuoteStyle];
    }
    
    if (useTable == 'HTML_SPECIALCHARS') {
        // ascii decimals for better compatibility
        entities['38'] = '&amp;';
        entities['60'] = '&lt;';
        entities['62'] = '&gt;';
    } else if (useTable == 'HTML_ENTITIES') {
        // ascii decimals for better compatibility
      entities['38'] = '&amp;';
      entities['60'] = '&lt;';
      entities['62'] = '&gt;';
      entities['160'] = '&nbsp;';
      entities['161'] = '&iexcl;';
      entities['162'] = '&cent;';
      entities['163'] = '&pound;';
      entities['164'] = '&curren;';
      entities['165'] = '&yen;';
      entities['166'] = '&brvbar;';
      entities['167'] = '&sect;';
      entities['168'] = '&uml;';
      entities['169'] = '&copy;';
      entities['170'] = '&ordf;';
      entities['171'] = '&laquo;';
      entities['172'] = '&not;';
      entities['173'] = '&shy;';
      entities['174'] = '&reg;';
      entities['175'] = '&macr;';
      entities['176'] = '&deg;';
      entities['177'] = '&plusmn;';
      entities['178'] = '&sup2;';
      entities['179'] = '&sup3;';
      entities['180'] = '&acute;';
      entities['181'] = '&micro;';
      entities['182'] = '&para;';
      entities['183'] = '&middot;';
      entities['184'] = '&cedil;';
      entities['185'] = '&sup1;';
      entities['186'] = '&ordm;';
      entities['187'] = '&raquo;';
      entities['188'] = '&frac14;';
      entities['189'] = '&frac12;';
      entities['190'] = '&frac34;';
      entities['191'] = '&iquest;';
      entities['192'] = '&Agrave;';
      entities['193'] = '&Aacute;';
      entities['194'] = '&Acirc;';
      entities['195'] = '&Atilde;';
      entities['196'] = '&Auml;';
      entities['197'] = '&Aring;';
      entities['198'] = '&AElig;';
      entities['199'] = '&Ccedil;';
      entities['200'] = '&Egrave;';
      entities['201'] = '&Eacute;';
      entities['202'] = '&Ecirc;';
      entities['203'] = '&Euml;';
      entities['204'] = '&Igrave;';
      entities['205'] = '&Iacute;';
      entities['206'] = '&Icirc;';
      entities['207'] = '&Iuml;';
      entities['208'] = '&ETH;';
      entities['209'] = '&Ntilde;';
      entities['210'] = '&Ograve;';
      entities['211'] = '&Oacute;';
      entities['212'] = '&Ocirc;';
      entities['213'] = '&Otilde;';
      entities['214'] = '&Ouml;';
      entities['215'] = '&times;';
      entities['216'] = '&Oslash;';
      entities['217'] = '&Ugrave;';
      entities['218'] = '&Uacute;';
      entities['219'] = '&Ucirc;';
      entities['220'] = '&Uuml;';
      entities['221'] = '&Yacute;';
      entities['222'] = '&THORN;';
      entities['223'] = '&szlig;';
      entities['224'] = '&agrave;';
      entities['225'] = '&aacute;';
      entities['226'] = '&acirc;';
      entities['227'] = '&atilde;';
      entities['228'] = '&auml;';
      entities['229'] = '&aring;';
      entities['230'] = '&aelig;';
      entities['231'] = '&ccedil;';
      entities['232'] = '&egrave;';
      entities['233'] = '&eacute;';
      entities['234'] = '&ecirc;';
      entities['235'] = '&euml;';
      entities['236'] = '&igrave;';
      entities['237'] = '&iacute;';
      entities['238'] = '&icirc;';
      entities['239'] = '&iuml;';
      entities['240'] = '&eth;';
      entities['241'] = '&ntilde;';
      entities['242'] = '&ograve;';
      entities['243'] = '&oacute;';
      entities['244'] = '&ocirc;';
      entities['245'] = '&otilde;';
      entities['246'] = '&ouml;';
      entities['247'] = '&divide;';
      entities['248'] = '&oslash;';
      entities['249'] = '&ugrave;';
      entities['250'] = '&uacute;';
      entities['251'] = '&ucirc;';
      entities['252'] = '&uuml;';
      entities['253'] = '&yacute;';
      entities['254'] = '&thorn;';
      entities['255'] = '&yuml;';
    } else {
        throw Error("Table: "+useTable+' not supported');
        return false;
    }
    
    if (useQuoteStyle != 'ENT_NOQUOTES') {
        entities['34'] = '&quot;';
    }
    
    if (useQuoteStyle == 'ENT_QUOTES') {
        entities['39'] = '&#039;';
    }
    
    // ascii decimals to real symbols
    for (decimal in entities) {
        symbol = String.fromCharCode(decimal)
        histogram[symbol] = entities[decimal];
    }
    
    return histogram;
}

function htmlspecialchars(string, quote_style) {  
    // Convert special characters to HTML entities    
    //   
    // version: 812.316  
    // discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_htmlspecialchars  
  
    // +   original by: Mirek Slugen  
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)  
    // +   bugfixed by: Nathan  
    // +   bugfixed by: Arno  
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)  
    // -    depends on: get_html_translation_table  
    // *     example 1: htmlspecialchars("<a href='test'>Test</a>", 'ENT_QUOTES');  
    // *     returns 1: '&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;'  
    var histogram = {}, symbol = '', tmp_str = '', i = 0;  
    tmp_str = string.toString();  
      
    if (false === (histogram = get_html_translation_table('HTML_SPECIALCHARS', quote_style))) {  
        return false;  
    }  
      
    for (symbol in histogram) {  
        entity = histogram[symbol];  
        tmp_str = tmp_str.split(symbol).join(entity);  
    }  
      
    return tmp_str;  
}

function ggSwitch2Id(lastView,newView){
	if ((newView==lastView)||(newView=="")) return;
	setDisplayId(lastView,"none");
	setDisplayId(newView,"");
	var btn = document.getElementById("btn"+lastView);
	if (btn) btn.className = "tabOff";
	lastView = newView;
	var btn = document.getElementById("btn"+lastView);
	if (btn){
		btn.className = "tabOn";
		btn.blur();
	}
}

function tabObject(currentId){
	this.currentId = currentId;
	setDisplayId(currentId,"");
	var btn = document.getElementById("btn"+currentId);
	if (btn) btn.className = "tabOn";
}

tabObject.prototype.switchTo=function(newId){
	if (newId==this.currentId) return;
	ggSwitch2Id(this.currentId, newId)
	this.currentId = newId;
}

function printID(id){
	var divToPrint=document.getElementById(id);
	newWin= window.open("");
	newWin.document.write(divToPrint.innerHTML);
	newWin.print();
	newWin.close();
}

function incPopularity(){
	SendRequestLL('get', '/xml.php?act=incPopularity', '', function(){if (XMLReq.readyState==4) alert('Penambahan Popularitas Berhasil!')}, XMLReq);
}

function insertAtCursor(myField, myValue){
if (document.selection) {
	myField.focus();
	sel = document.selection.createRange();
	sel.text = myValue;
}else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);
} else {
myField.value += myValue;
}
}
/*
Halo donk
*/