
function pass_tag_on_link(evt) {
    
    var itemname = null;

    // This is an event handler; get the clicked on element,
    // in a cross-browser fashion
    
	evt = (evt) ? evt : ((window.event) ? window.event : "");
	
	if (evt) {

		var lnk = (evt.target) ? evt.target : evt.srcElement;

		// Make sure that the target is an element, not a text node within an element
		if (lnk.nodeType == 3) lnk = lnk.parentNode;

		// Paranoia; check this is an A tag
		if ( (lnk.nodeName.toLowerCase() != 'a') && (lnk.nodeName.toLowerCase() != 'area') ){
			while(lnk.nodeName.toLowerCase() != 'a') {
				// NO infinite loops!
				if ( (typeof lnk.parentNode == "undefined") || (lnk.parentNode == null) ) return;
				lnk = lnk.parentNode;
			}
			// if STILL not an anchor tag...
			if (lnk.nodeName.toLowerCase() != 'a') return;
		}

		if (lnk.nodeName.toLowerCase() == 'a') {
			if ( (typeof lnk.name != "undefined")  && (lnk.name!=null) && (lnk.name.length!=0) ) itemname = lnk.name;
		} else if (lnk.nodeName.toLowerCase() == 'area')  {
			if ( (typeof lnk.id != "undefined")  && (lnk.id!=null) && (lnk.id.length!=0) ) itemname = lnk.id;
		} 

		if (  (itemname==null) ) {
			var myDivName = "";
			var myDiv = lnk;

			// if no link name, then move up to find Div ID.
			if  (myDiv.nodeName.toLowerCase() != 'div') {
				while(myDiv.nodeName.toLowerCase() != 'div' || !page_links.get(myDiv.id) ) {
					// NO infinite loops!
					if ( (typeof myDiv.parentNode == "undefined") || (myDiv.parentNode == null) ) {
						return;
					} else {
						myDiv = myDiv.parentNode;
					}
					myDivName = myDiv.id;
				}
				// if STILL can't find a div...
				if (myDiv==null) return;
			}
			itemname = myDivName;
		} 


		var host = procHost(lnk) ;
		var pathname = procPath(lnk) ;
		var search = procSearch(lnk) ;
		if (search.indexOf("vcat")>-1) {
            return true;
        }
		var hash = procHash(lnk) ;



		if ( (coremetrics_tag_value!=null) && (coremetrics_tag_value.length!=0) ) {
			if (add_suffix) coremetrics_tag_value = coremetrics_tag_value + '_' + page_links.get(itemname);
			if ( (search==null) || (search.length==0) ) {
				search = '?' + coremetrics_tag_name + '=' + coremetrics_tag_value;
			} else {
				search = search + '&' + coremetrics_tag_name + '=' + coremetrics_tag_value;
			}
		}


		// Safari defaults to "file:" for the protocol when lnk is a relative URL
		var alnk = (lnk.protocol.indexOf("file")>-1) ? "" : lnk.protocol+'//'+host;
		if ( (lnk.port) && (lnk.port>80) )  alnk = alnk+':'+lnk.port;
		alnk = alnk+'/'+pathname;
		if (search != null) alnk = alnk+search;
		if (hash!=null) alnk=alnk+'#'+hash;
		lnk.href = alnk;
    
	}
    return true;

}


if (COREMETRICS_TESTING_IS_ON) {
if ( (typeof cmPageTagsComplete == "undefined") || (cmPageTagsComplete == false) ) {

    var coremetrics_tag_value = (QueryString(coremetrics_tag_name)!=null) ? QueryString(coremetrics_tag_name) : null;
    var ext_tag_value = (QueryString(ext_tag_name)!=null) ? QueryString(ext_tag_name) : null;
    var store_id_tag_value = (QueryString(store_id_tag_name)!=null) ? QueryString(store_id_tag_name) : null;
    if ( (store_id_tag_value==null) && (typeof cmStoreId != "undefined") ) store_id_tag_value = cmStoreId;

    var pass_category = false;
    var add_suffix    = false;
    
    var myCmdatautilsVersion = (typeof cmdatautilsVersion != "undefined") ? cmdatautilsVersion : null;
    
    if (typeof page_category == "undefined") page_category = null;
    if (typeof page_name == "undefined") page_name = null;


    // 1. Send ProductView tag, or PageView tag, as appropriate.
    
    //      1.a. We've already got page type info, so we can build the page view bits.
    
    if ( ( typeof page_type != "undefined") && ( page_type != null) ) {
        
        switch(page_type) {
            
            case OUT_HOME:
                page_name = "Outlet Home";
                page_category = out_hp_cat;
                coremetrics_tag_value = out_hp_name;
                pass_category = true;
                add_suffix    = true;
                
                break;
                
            case OUT_JUSTREDUCED:
                page_name = "Outlet Just Reduced";
                page_category = just_reduced_cat;
                coremetrics_tag_value = page_category;
                pass_category = true;
                break;
                
            case OUT_TOPSELLERS:
                page_name = "Outlet Top Sellers";
                page_category = top_sellers_cat;
                coremetrics_tag_value = page_category;
                pass_category = true;
                break;

            case REI_SHOP_BY_BRAND:
                // used by rei and outlet.
                page_name = document.title;
                page_category = rei_brand_cat;
                coremetrics_tag_value = page_category;
                pass_category = true;
                break;

            case OUT_SHOP_BY_BRAND:
                // used by rei and outlet.
                page_name = document.title;
                page_category = out_brand_cat;
                coremetrics_tag_value = page_category;
                pass_category = true;
                break;

            case PAGE_TYPE_FINDER:
                if (coremetrics_tag_value!=null) page_category = coremetrics_tag_value  ;
                else coremetrics_tag_value = page_category;
                pass_category = true;
                break;

            case PAGE_TYPE_REI_SHOPALL:
            	page_name = "Shop All REI Gear";
                if (coremetrics_tag_value!=null) page_category = coremetrics_tag_value  ;
                pass_category = true;
                break;

            default:
            	page_category = null;
            	page_name = null;
                break;
                
        }

    } else {

        page_type = null;
        var pathname = window.location.pathname;
        //strip off search from pathname for opera
        if (window.location.pathname.indexOf('?') != -1) pathname = window.location.pathname.substr(0,window.location.pathname.indexOf('?'));

        var filename = false;

        if (pathname.lastIndexOf('/') < pathname.length-1) {
            // a filename on the end.
            filename = true;
        } 

        var pathname_key = null;
        
        if (filename) {
            pathname_key = pathname.substr(0,pathname.lastIndexOf("/")+1);
        } else {
			pathname_key = "";
		}
        

		if ( ((pathname_key!= null) && (pathname_key.indexOf("/shared/") > -1)) && (store_id_tag_value!=null) ){
			pathname_key = "/" + store_id_tag_value + pathname_key;
		}

        if (path_cats.get(pathname)) {
            page_category = path_cats.get(pathname);
        } else if (path_cats.get(pathname_key)) {
            page_category = path_cats.get(pathname_key);
        } else {
            page_category = null;
        }

        if ( (document.title!=null) && (document.title.length>0) ) {
            page_name = document.title;
        } else {
            page_name = pathname;
        }
    }


    //      1.b. Throw the tag.

        
	    // if page name is passed in from the page, 
	    if ( (typeof cm_page_name != "undefined")  && (cm_page_name != null) ) page_name = cm_page_name;
	    if ( (typeof cm_page_cat != "undefined")  && (cm_page_cat != null) ) page_category = cm_page_cat;
	    if ( (typeof cm_pass_cat != "undefined")  && (cm_pass_cat != null) ) pass_category = cm_pass_cat;
	    
	    // if no other page category found, use VCAT value;
	    if ( (page_category==null) && (coremetrics_tag_value!=null) ) page_category = coremetrics_tag_value;


        if ( (typeof PRODUCTION_ENV != "undefined")  && (PRODUCTION_ENV == true) ) cmSetProduction();

        if (page_type == PAGE_TYPE_ERROR) { 
			cmCreateErrorTag();
        } else {
			if (myCmdatautilsVersion=="1.7") {
				cmCreatePageviewTag(page_name,null,page_category, null, reixCookieValue);
			} else {
				cmCreatePageviewTag(page_name,null,page_category);
			}
		}



    // 2. Pass Virtual Category along the clickstream.

    if (pass_category) {
        var allLinks = document.getElementsByTagName('a');
        for (var i=0;i<allLinks.length;i++) {
            var lnk = allLinks[i];
            if ( page_links.get(lnk.name) ) {
                addLinkEvent(lnk,'click',pass_tag_on_link,false);
            }
        }
        var allLinks = document.getElementsByTagName('area');
        for (var i=0;i<allLinks.length;i++) {
            var lnk = allLinks[i];
            if ( page_links.get(lnk.id) ) {            
                addLinkEvent(lnk,'click',pass_tag_on_link,false);
            }
        }

        myDocumentElements=document.getElementsByTagName("div");


        for (var i=0;i<myDocumentElements.length;i++) {
            var myDiv = myDocumentElements.item(i);
            if ( page_links.get(myDiv.id) ) { 
                var allLinks = myDiv.getElementsByTagName("a");    
                for (var a=0;a<allLinks.length;a++) {
                    var lnk = allLinks[a];
                    addLinkEvent(lnk,'click',pass_tag_on_link,false);
                }
                var allAreas = myDiv.getElementsByTagName('area');
                for (var r=0;r<allAreas.length;r++) {
                    var lnk = allAreas[r];
                    addLinkEvent(lnk,'click',pass_tag_on_link,false);
                }
            }
        }
    }

}

}



