/*!
 * @author Gproxy Design Inc.
 * @copyright (c) 2009, Gproxy Design Inc. All rights reserved.
 * @version 1.0
 *
 * Gproxy doesn't allow to copy or change this code without Gproxy authorization.
 * See http://www.gproxy.com/licenses/license01.pdf for the full license governing this code.
 */
var GP_GA_Tools = (function(){
    function setGATrackingTransaction(strAddress, strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, strCookieName){
        try {
            var auxArray = strAddress.split('<br>');
            var country = 'None';
            var city = 'None';
            var state = 'None';
            try {
                if (auxArray.length > 0) {
                    country = auxArray[auxArray.length - 1].toString();
                    var auxArray1 = auxArray[auxArray.length - 2].toString().split(' ');
                    if (auxArray1.length > 0) {
                        city = auxArray1[0].toString();
                        state = auxArray1[1].toString();
                    }
                }
            } 
            catch (e) {
                var country = 'Country-Script-Error';
                var city = 'City-Script-Error';
                var state = 'State-Script-Error';
            }
            try {
                pageTracker._addTrans(strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, city, state, country);
                var strItems = readCookie(strCookieName);
                if (strItems != null) {
                    var objItems = eval(unescape(strItems));
                    for (var i = 0; i < objItems.length; i++) {
                        pageTracker._addItem(strOrderNumber, unescape(objItems[i].sku), unescape(objItems[i].name), 'None', unescape(objItems[i].price), unescape(objItems[i].qty));
                    }
                }
                else {
                    pageTracker._addItem(strOrderNumber, 'Cookie-Error', 'Cookie-Error', 'None', '0', '0');
                }
                pageTracker._trackTrans();
            } 
            catch (e) {
                pageTracker._addTrans(strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, 'Cookie-Error', 'Cookie-Error', 'Cookie-Error');
                pageTracker._addItem(strOrderNumber, 'Cookie-Error', 'Cookie-Error', 'None', '0', '0');
                pageTracker._trackTrans();
            }
        } 
        catch (ex) {
            pageTracker._addTrans(strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, 'Cookie-Error', 'Cookie-Error', 'Cookie-Error');
            pageTracker._addItem(strOrderNumber, 'Cookie-Error', 'Cookie-Error', 'None', '0', '0');
            pageTracker._trackTrans();
        }
    }
    
    function saveGAProducts(intProdNamePos, intProdSKUPos, intQtyPos, intPricePos, strCookieName, strRegXPrice){
        try {
            var arrCartRows = $j("tr[id^='carttablerow']");
            var strJSON = '';
            var strString = '';
            for (var i = 0; i < arrCartRows.length; i++) {
                var arrCartRowCell = arrCartRows[i].cells[intProdNamePos].getElementsByTagName('a');
                var strItemName = arrCartRowCell[0].innerHTML;
                arrCartRowCell = arrCartRows[i].cells[intProdSKUPos].getElementsByTagName('a');
                var strItemSKU = arrCartRowCell[0].innerHTML;
                var strItemQty = arrCartRows[i].cells[intQtyPos].innerHTML;
                var strItemPrice = arrCartRows[i].cells[intPricePos].innerHTML;
                strItemPrice = strItemPrice.replace(strRegXPrice, '');
                strString += "{name: '" + escape(strItemName.replace(/'/g, "-")) + "', sku: '" + escape(strItemSKU.replace(/'/g, "-")) + "', qty: '" + escape(strItemQty) + "', price: '" + escape(strItemPrice) + "'},";
            }
            if (strString != '') {
                strString = strString.substring(0, (strString.length - 1));
                strJSON = "{Items: [" + strString + "]}";
                createCookie(strCookieName, strJSON);
            }
        } 
        catch (ex) {
        }
    }
    
    function createCookie(name, value, days){
        var expires = '';
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toGMTString();
        }
        else 
            expires = "";
        document.cookie = name + "=" + escape(value) + expires + "; path=/";
    }
    
    function readCookie(name){
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(name + "=");
            if (c_start != -1) {
                c_start = c_start + name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) 
                    c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
        return null;
    }
    
    function setGATrackingTransaction(strAddress, strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, strCookieName){
        try {
            var auxArray = strAddress.split('<br>');
            var country = 'None';
            var city = 'None';
            var state = 'None';
            try {
                if (auxArray.length > 0) {
                    country = auxArray[auxArray.length - 1].toString();
                    var auxArray1 = auxArray[auxArray.length - 2].toString().split(' ');
                    if (auxArray1.length > 0) {
                        city = auxArray1[0].toString();
                        state = auxArray1[1].toString();
                    }
                }
            } 
            catch (e) {
                var country = 'Country-Script-Error';
                var city = 'City-Script-Error';
                var state = 'State-Script-Error';
            }
            try {
                pageTracker._addTrans(strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, city, state, country);
                var strItems = readCookie(strCookieName);
                if (strItems != null) {
                    var objItems = eval(unescape(strItems));
                    for (var i = 0; i < objItems.length; i++) {
                        pageTracker._addItem(strOrderNumber, unescape(objItems[i].sku), unescape(objItems[i].name), 'None', unescape(objItems[i].price), unescape(objItems[i].qty));
                    }
                }
                else {
                    pageTracker._addItem(strOrderNumber, 'Cookie-Error', 'Cookie-Error', 'None', '0', '0');
                }
                pageTracker._trackTrans();
            } 
            catch (e) {
                pageTracker._addTrans(strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, 'Cookie-Error', 'Cookie-Error', 'Cookie-Error');
                pageTracker._addItem(strOrderNumber, 'Cookie-Error', 'Cookie-Error', 'None', '0', '0');
                pageTracker._trackTrans();
            }
        } 
        catch (ex) {
            pageTracker._addTrans(strOrderNumber, strSiteName, intConfirmationTotal, intTax, intShipping, 'Cookie-Error', 'Cookie-Error', 'Cookie-Error');
            pageTracker._addItem(strOrderNumber, 'Cookie-Error', 'Cookie-Error', 'None', '0', '0');
            pageTracker._trackTrans();
        }
    }
    
    function saveGAProducts(intProdNamePos, intProdSKUPos, intQtyPos, intPricePos, strCookieName, strRegXPrice){
        try {
            var arrCartRows = $j("tr[id^='carttablerow']");
            var strJSON = '';
            var strString = '';
            for (var i = 0; i < arrCartRows.length; i++) {
                var arrCartRowCell = arrCartRows[i].cells[intProdNamePos].getElementsByTagName('a');
                var strItemName = arrCartRowCell[0].innerHTML;
                arrCartRowCell = arrCartRows[i].cells[intProdSKUPos].getElementsByTagName('a');
                var strItemSKU = arrCartRowCell[0].innerHTML;
                var strItemQty = arrCartRows[i].cells[intQtyPos].innerHTML;
                var strItemPrice = arrCartRows[i].cells[intPricePos].innerHTML;
                strItemPrice = strItemPrice.replace(strRegXPrice, '');
                strString += "{name: '" + escape(strItemName.replace(/'/g, "-")) + "', sku: '" + escape(strItemSKU.replace(/'/g, "-")) + "', qty: '" + escape(strItemQty) + "', price: '" + escape(strItemPrice) + "'},";
            }
            if (strString != '') {
                strString = strString.substring(0, (strString.length - 1));
                strJSON = "{Items: [" + strString + "]}";
                createCookie(strCookieName, strJSON);
            }
        } 
        catch (ex) {
        }
    }
    
    function createCookie(name, value, days){
        var expires = '';
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toGMTString();
        }
        else 
            expires = "";
        document.cookie = name + "=" + escape(value) + expires + "; path=/";
    }
    
    function readCookie(name){
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(name + "=");
            if (c_start != -1) {
                c_start = c_start + name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) 
                    c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
        return null;
    }
    
    return {
        pageType: {
            cart: 0,
            billing: 1,
            shipping: 2,
            paymeth: 3,
            confirm: 4,
            thanks: 5,
            other: 6
        },
        setGATracking: function(objOpts){
            switch (objOpts.pageType) {
                case this.pageType.cart:
                    pageTracker._trackPageview(objOpts.urls.shoppingCartURL);
                    break;
                case this.pageType.billing:
                    pageTracker._trackPageview(objOpts.urls.billingURL);
                    break;
                case this.pageType.shipping:
                    pageTracker._trackPageview(objOpts.urls.shippingURL);
                    break;
                case this.pageType.paymeth:
                    pageTracker._trackPageview(objOpts.urls.paymethURL);
                    break;
                case this.pageType.confirm:
                    pageTracker._trackPageview(objOpts.urls.confirmURL);
                    saveGAProducts(objOpts.products.prodNamePos, objOpts.products.prodSKUPos, objOpts.products.qtyPos, objOpts.products.pricePos, objOpts.products.cookieName, objOpts.products.regXPrice);
                    break;
                case this.pageType.thanks:
                    pageTracker._trackPageview(objOpts.urls.orderThanksURL);
                    setGATrackingTransaction(objOpts.transaction.address, objOpts.transaction.orderNumber, objOpts.transaction.siteName, objOpts.transaction.confirmationTotal, objOpts.transaction.tax, objOpts.transaction.shipping, objOpts.products.cookieName)
                    break;
                default:
                    pageTracker._trackPageview();
            }
            if (document.URL.indexOf(objOpts.proxy.domainName) != -1) {
                if (document.referrer.indexOf(objOpts.proxy.domainName) == -1 || document.referrer == "") {
                    objIframe = $j("<iframe>");
                    objIframe.attr("src", pageTracker._getLinkerUrl(objOpts.proxy.gaProxyURL));
                    objIframe.css("display", "none");
                    objIframe.appendTo("#div__header");
                    
                }
            }
        }
    }
    
})();

