﻿
function getSmallUrl() {

    param = getSmallUrl.arguments;
	var url = document.location.href;
	var durl = "/Common/AsynPage/Util/xmlDurl.aspx";

    if(param.length > 0)
    {
        durlparam = escape(param[0]);
    }
    else
    {
	    durlparam = escape(url);
    }

	new Ajax.Request(durl,{
		asynchronous:true,
		method: "get",
		parameters: "longurl=" + durlparam,
		onSuccess: function(request){
			getSmallUrl_Callback(request.responseText);
		},
		onFailure: function(request){
			alert(request.responseText);
		}
	});
}

function getSmallUrl_Callback(res) {

    if(navigator.appName.toLowerCase().indexOf("microsoft", 0) != -1)
    {
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(res);

        var tag = xmlDoc.getElementsByTagName("durl");
        for(var i=0; i<tag.length; i++)
        {
            shorturl = tag[i].getElementsByTagName('short-url')[0].firstChild.nodeValue;
        }
    }
    else
    {
        var parser = new DOMParser();
        var xmlDoc = parser.parseFromString(res, "text/xml");
        var tag = xmlDoc.getElementsByTagName("durl");
        for(var i=0; i<tag.length; i++)
        {
            shorturl = tag[i].getElementsByTagName('short-url')[0].firstChild.nodeValue;
        }        
    }
    
    var twitterUrl = 'http://twitter.com/?status=';
    var twitterTag = document.getElementById("sharetwitter").tag;
    var twitter = twitterUrl + encodeURIComponent(twitterTag + " " + shorturl);

    window.open(twitter);
}

function encodeURL(str){
     var s0, i, s, u;
     s0 = "";                // encoded str
     for (i = 0; i < str.length; i++){   // scan the source
         s = str.charAt(i);
         u = str.charCodeAt(i);          // get unicode of the char
         if (s == " "){s0 += "+";}       // SP should be converted to "+"
         else {
             if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <= 0x7a))){       // check for escape
                 s0 = s0 + s;            // don't escape
             }
             else {                  // escape
                 if ((u >= 0x0) && (u <= 0x7f)){     // single byte format
                     s = "0"+u.toString(16);
                     s0 += "%"+ s.substr(s.length-2);
                 }
                 else if (u > 0x1fffff){     // quaternary byte format (extended)
                     s0 += "%" + (oxf0 + ((u & 0x1c0000) >> 18)).toString(16);
                     s0 += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
                     s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
                     s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                 }
                 else if (u > 0x7ff){        // triple byte format
                     s0 += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
                     s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
                     s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                 }
                 else {                      // double byte format
                     s0 += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
                     s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                 }
             }
         }
     }
     return s0;
 }

