﻿/* Clement Gomez
*  VASCO Product Tracking Function.
*  POST Product information via jQuery to a User Control which then send it to SalesForce.
*/
 
$(document).ready(function() {
    $("a.downloadtracking").click(function(ev) {
        //prevent the default action of the event, this will stop the href in the anchor being followed
        //before the animation has started, u can also use return false;
        ev.preventDefault();
        
        $parentli = $($(this).parent().filter('li'));
        $divMessage = $("div:last",$parentli);
        $target = $(this).attr('target');
        
		//******************************************** VARIABLES *************************************************************
        var userAuthenticatedURL = "/App_Pages/userAuthenticated.aspx";
        var userLoginURL = "/login.aspx?ReturnUrl=";
        //********************************************************************************************************************
		
        var donwloadTrackingURL = $parentli.attr('trackurl');
        var downloadURL = $(this).attr('href');
        $divMessage.text("Your download should begin shortly, please wait...");
        
        var downloadID = $.urlParam('dlid', donwloadTrackingURL);
        if (downloadID != "")
        {
            //************************************* CHECK IF USER IS AUTHENTICATED *******************************************
            $.ajax({
                url: userAuthenticatedURL,
                cache: false,
                dataType: "text",
                success: function(data){
                    //******************************* USER AUTHENTICATED FUNCTION ********************************************
                    var userAuthenticated = data.substring(0,1);
                    //alert("userAuthenticated: " + userAuthenticated);
                    if (userAuthenticated == "0")
                    {
                        //***************************** REDIRECT TO THE LOGIN PAGE ********************************************
                        var urlEncode = Url.encode(window.location.pathname);
		                document.location = userLoginURL + urlEncode;
		                //*****************************************************************************************************
		            }
		            else
		            {
		                $.ajax({
                            url: donwloadTrackingURL,
                            cache: false,
                            dataType: "html",
                            success: function() {
                                //alert("Tracking url: " + donwloadTrackingURL);
                                //*************************** LAUNCH THE DOWNLOAD *******************************************
                                $divMessage.text("");
                                if ($target != '_blank'){
                                    document.location = downloadURL;
                                }else{
                                    window.open(downloadURL);
                                }
                                //********************************************************************************************
                            }
                        });
		                //****************************************************************************************************
		            }
                    //********************************************************************************************************
                }
            });
            //****************************************************************************************************************
        }
        else
        {
            //******************************************* LAUNCH THE DOWNLOAD ************************************************
            $divMessage.text("");
            if ($target != '_blank'){
                document.location = downloadURL;
            }else{
                window.open(downloadURL);
            }
            //****************************************************************************************************************
        }
    });
    $.urlParam = function(paramName, url){
        var results = new RegExp('[\\?&]' + paramName + '=([^&#]*)').exec(url);
        if (!results) { return 0; }
        return results[1] || 0;
    }
    var Url = {
	    // public method for url encoding
	    encode : function (string) {
		    return escape(this._utf8_encode(string));
	    },
	    // public method for url decoding
	    decode : function (string) {
		    return this._utf8_decode(unescape(string));
	    },
	    // private method for UTF-8 encoding
	    _utf8_encode : function (string) {
		    string = string.replace(/\r\n/g,"\n");
		    var utftext = "";
		    for (var n = 0; n < string.length; n++) {
			    var c = string.charCodeAt(n);
			    if (c < 128) {
				    utftext += String.fromCharCode(c);
			    }
			    else if((c > 127) && (c < 2048)) {
				    utftext += String.fromCharCode((c >> 6) | 192);
				    utftext += String.fromCharCode((c & 63) | 128);
			    }
			    else {
				    utftext += String.fromCharCode((c >> 12) | 224);
				    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				    utftext += String.fromCharCode((c & 63) | 128);
			    }
		    }
		    return utftext;
	    },
	    // private method for UTF-8 decoding
	    _utf8_decode : function (utftext) {
		    var string = "";
		    var i = 0;
		    var c = c1 = c2 = 0;
		    while ( i < utftext.length ) {
			    c = utftext.charCodeAt(i);
			    if (c < 128) {
				    string += String.fromCharCode(c);
				    i++;
			    }
			    else if((c > 191) && (c < 224)) {
				    c2 = utftext.charCodeAt(i+1);
				    string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				    i += 2;
			    }
			    else {
				    c2 = utftext.charCodeAt(i+1);
				    c3 = utftext.charCodeAt(i+2);
				    string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				    i += 3;
			    }
		    }
		    return string;
	    }
    }
});
