var done=1;
var currobj="";
var keyStr = "ABCDEFGHIJKLMNOP" +
               "QRSTUVWXYZabcdef" +
               "ghijklmnopqrstuv" +
               "wxyz0123456789+/" +
               "=";


function uniqid() {
    var newDate = new Date;
    return (newDate.getTime()+(Math.rand()*1000));
}

function httpPOSTRequest(post, url, target) {
	http1 = null;
	try
	{
	    http1 = new XMLHttpRequest();
	    http1.open("POST",url);

    	}
	catch (error)
	{
	    try
	    {
    		http1 = new ActiveXObject("Microsoft.XMLHTTP");
		http1.open("POST",url,true);

    	    }
    	    catch (error)
	    {
		return false;
	    }
	}    
	http1.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http1.setRequestHeader("Content-length", post.length);
	http1.setRequestHeader("Connection", "close");
//	http1.onreadystatechange = POSTHttpResponse;
	http1.onreadystatechange = function() {
	    try {
		if (http1.readyState == 4) {
		    if (http1.status == 200) {
	    		if (target == "tagsuggestions") {
			    tag_update(http1.responseText);
			} else {
			    document.getElementById(target).innerHTML=http1.responseText;
			}
		        done=1;
		    } else {
		    }
		}
	    } catch (e) {}
	}
	http1.send(post);
}

function httpGETRequest(url,target) {
	http1 = null;
	try
	{
	    http1 = new XMLHttpRequest();
	    http1.open("GET",url);

    	}
	catch (error)
	{
	    try
	    {
    		http1 = new ActiveXObject("Microsoft.XMLHTTP");
		http1.open("GET",url,true);

    	    }
    	    catch (error)
	    {
		return false;
	    }
	}    
	http1.setRequestHeader("Connection", "close");
	http1.onreadystatechange = function() {
	    try {
		if (http1.readyState == 4) {
		    if (http1.status == 200) {
	    		if (target == "tagsuggestions") {
			    tag_update(http1.responseText);
			} else if (target != "none") {
			    document.getElementById(target).innerHTML=http1.responseText;
			}
		        done=1;
		    } else {
		    }
		}
	    } catch (e) {}
	}
	http1.send(null);
}

function encode64(input) {
    input = escape(input);
    var output = "";
    var chr1, chr2, chr3 = "";
    var enc1, enc2, enc3, enc4 = "";
    var i = 0;

    do {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
           enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
           enc4 = 64;
        }

        output = output +
           keyStr.charAt(enc1) +
           keyStr.charAt(enc2) +
           keyStr.charAt(enc3) +
           keyStr.charAt(enc4);
        chr1 = chr2 = chr3 = "";
	enc1 = enc2 = enc3 = enc4 = "";
    } while (i < input.length);
    return output;
}

function decode64(input) {
    var output = "";
    var chr1, chr2, chr3 = "";
    var enc1, enc2, enc3, enc4 = "";
    var i = 0;

    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
    var base64test = /[^A-Za-z0-9\+\/\=]/g;
    if (base64test.exec(input)) {
	alert("There were invalid base64 characters in the input text.\n" +
          "Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
          "Expect errors in decoding.");
    }
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

    do {
	enc1 = keyStr.indexOf(input.charAt(i++));
	enc2 = keyStr.indexOf(input.charAt(i++));
	enc3 = keyStr.indexOf(input.charAt(i++));
	enc4 = keyStr.indexOf(input.charAt(i++));
	chr1 = (enc1 << 2) | (enc2 >> 4);
	chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
	chr3 = ((enc3 & 3) << 6) | enc4;

	output = output + String.fromCharCode(chr1);

	if (enc3 != 64) {
    	    output = output + String.fromCharCode(chr2);
	}
	if (enc4 != 64) {
    	    output = output + String.fromCharCode(chr3);
	}

	chr1 = chr2 = chr3 = "";
	enc1 = enc2 = enc3 = enc4 = "";

    } while (i < input.length);
    return unescape(output);
}

function urlencode(str) {
    str = escape(str);
    str = str.replace('+', '%2B');
    str = str.replace('%20', '+');
    str = str.replace('*', '%2A');
    str = str.replace('/', '%2F');
    str = str.replace('@', '%40');
    return str;
}
                            
function urldecode(str) {
    str = str.replace('+', ' ');
    str = unescape(str);
    return str;
}

var isCtrl = false; 
var isShift = false;
document.onkeyup=function(e){ 
    if(e.which == 17) 
	isCtrl=false;
    if(e.which == 14 || e.which == 15)
	isShift = false; 
} 
document.onkeydown=function(e){ 
    if(e.which == 17) 
	isCtrl=true; 
    if (e.which == 15)
	isShift = true;
    if(e.which == 83 && isCtrl == true) {
	setfocus('search');
	return false;
    } 
} 

function setfocus(a_field_id) {
    document.getElementById(a_field_id).focus();
}
               
function facebook_onlogin() {
}
function onConnected(user_id) {
} 
function onNotConnected() {
//    document.getElementById('showfblogin').innerHTML = "<fb:login-button onlogin='facebook_onlogin();'></fb:login-button>";
} 

FB.init("2ecbcd8b50209aa52df4ae0975cdadda", "/xd_receiver.htm",{"reloadIfSessionStateChanged":true,"ifUserConnected":onConnected, "ifUserNotConnected":onNotConnected});

                                        
