/*!
 * @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.
 */

function setGATracking(objOpts){
    
	var rExpCart = new RegExp(objOpts.urls.shoppingCartURLExp);    	
    var rExpBilling = new RegExp(objOpts.urls.billingURLExp, 'gi');    
    var rExpShipping = new RegExp(objOpts.urls.shippingURLExp, 'gi');
    var rExpPaymeth = new RegExp(objOpts.urls.paymethURLExp, 'gi');  
    var rExpConfirm = new RegExp(objOpts.urls.confirmURLExp, 'gi');   
    var rExpThanks = new RegExp(objOpts.urls.orderThanksURLExp, 'gi');		
    
    if (rExpCart.exec(document.URL) !== null) {
        pageTracker._trackPageview(objOpts.urls.shoppingCartURL);
    }
    else {
        if (rExpBilling.exec(document.URL) !== null) {
            pageTracker._trackPageview(objOpts.urls.billingURL);
        }
        else {
            if (rExpShipping.exec(document.URL) !== null) {
                pageTracker._trackPageview(objOpts.urls.shippingURL);
            }
            else {
                if (rExpPaymeth.exec(document.URL) !== null) {
                    pageTracker._trackPageview(objOpts.urls.paymethURL);
                }
                else {					
                    if (rExpConfirm.exec(document.URL) !== null) {
                        pageTracker._trackPageview(objOpts.urls.confirmURL);
						saveGAProducts(objOpts.products.prodNamePos,objOpts.products.prodSKUPos,objOpts.products.qtyPos,objOpts.products.pricePos,objOpts.products.cookieName);
                    }
                    else {
                        if (rExpThanks.exec(document.URL) !== null) {
                            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)
                        }
                        else {
                            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");
			
		}
	}
}

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].name), unescape(objItems[i].sku), '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) {			
    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;			
			var strItemSKU = arrCartRows[i].cells[intProdSKUPos].innerHTML;									
			var strItemQty = arrCartRows[i].cells[intQtyPos].innerHTML;
			var strItemPrice = arrCartRows[i].cells[intPricePos].innerHTML;				
			strItemPrice = strItemPrice.replace(/(\(|\$|,|A|€|\))/g, '');
			strItemPrice = (strItemPrice / strItemQty);
            strItemPrice = strItemPrice.toFixed(2);
			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;
}
