var clickTagRequest = {

    handleSuccess:function(o)
    {
        if(o.responseText == "")
            return;
        var response = YAHOO.lang.JSON.parse(o.responseText);
        if ( response.StatusCode < 300 && this.ActionID == response.ActionID ){
            var url = response.DestinationUrl;
            this.openLink(url, response.DestinationType);
        }

    },

    handleFailure:function(o){
        //alert("clickTagRequest.handleFailure");
    },

    saveLinkInfo:function(desturl) {
        var jObj = new Object();
        jObj.Command = "save_click_info";
        jObj.SubscriberID = SubscriberID;
        jObj.ContactID = new Number(ContactID);
        jObj.MD5 = md5TokenHash;
        jObj.Timestamp = new Number(md5TokenTS);
        this.ActionID = Math.random().toString();
        jObj.ActionID = this.ActionID;
        jObj.ClickTagUrl = desturl;

        var srequest = YAHOO.lang.JSON.stringify(jObj);
        YAHOO.util.Connect.setDefaultPostHeader( false );
        YAHOO.util.Connect.initHeader("Content-Type", "application/json", true);
        YAHOO.util.Connect.initHeader("Accept", "application/json", true);

        YAHOO.util.Connect.initHeader("X-AbbeySDKVersion", "1.3", true);

        this.request = YAHOO.util.Connect.asyncRequest('POST', 'ThirdPartyCall', viCallback, srequest);
    },

    openLink:function(url, destinationType){
        if(destinationType == "http")
            javascript:winOpen(url);
        else if(destinationType == "mailto")
            this.openMailTo(url);
    },

    openMailTo:function(email){
        var win = window.open(email);
        if (win && win.open &&!win.closed)
            win.close();
    }
};

var viCallback =
{
    success: clickTagRequest.handleSuccess,
    failure: clickTagRequest.handleFailure,
    scope: clickTagRequest
};

function saveClickInfo(desturl){
    clickTagRequest.saveLinkInfo(desturl);
}
