﻿//ver 2.1 (added Booking_Domain try-catch, contains & subdomain fix & popup link);
//mh need to set:
//var Booking_Domain = "test.com" //manually in header of each site since no db in legacy/common.

//mh jquery implementation of formerly itHappened() function
//PURPOSE: add var str = '/outgoing/' + url;	 to outgoing links
//Replace all odd characters, so that it works with Analytics Niavgation analysis
function stripUrl(inStrip) {
    inStrip = inStrip.replace(/http:/gi, '');
    inStrip = inStrip.replace(/https:/gi, '');
    inStrip = inStrip.replace(/www./gi, '');
    inStrip = inStrip.replace(/&/gi, '_');
    inStrip = inStrip.replace(/#/gi, ''); //remove hashes
    inStrip = inStrip.replace(/\/\//gi, ''); //remove slashes
    return inStrip;
}

function contains(haystack, needle) {
    return haystack.indexOf(needle) > -1;
}

function doesNotContains(haystack, needle) {
    return haystack.indexOf(needle) == -1;
}
 
//page loaded
jQuery(document).ready(function() {

    //a clicked or area tag clicked
    jQuery("a, area").click(function() {

        var strippedUrl;
        var str;
        var originalUrl = jQuery(this).attr('href');

        if (originalUrl != '') { //if it has an href (some <area> tags do not);
            strippedUrl = stripUrl(jQuery(this).attr('href'));

            if (contains(originalUrl, 'mailto:')) {
                str = '/mailto/' + strippedUrl;
                pageTracker._trackPageview(str);
                return true;
            }

            //Booking Domain undefined. - http://dmartin.org/weblog/javascript-checking-whether-a-variable-exists
                try {
                if (Booking_Domain) { }
                } catch (err) {
                Booking_Domain = "booking domain needs to be set in header";
                }
          
                //if Booking_Domain is a subdomain (as well as external) track outgoing
                //mh moved this block up b/c if we have a match on Booking_Domain we can return(since any domain that is the booking domain should return true;.
                if (contains(strippedUrl, Booking_Domain)) {

                    str = '/outgoing/check-availability/';
                    pageTracker._trackPageview(str);

                    //for reservation links that open in pop-up windows, can put params in rel attribute         
                    if (jQuery(this).hasClass("popup")) {
                        var popup_params = 'resizable,scrollbars,width=1020,height=600,top=800,left=800';
                        //pull popup parameters from forms' rel attribute
                        if (jQuery(this).attr('rel') != undefined) {
                            popup_params = jQuery(this).attr('rel');
                        }
                        window.open(pageTracker._getLinkerUrl(originalUrl), '', popup_params);
                        return false;  //so link doesn't return as well as popup
                    } //end popup


                    //sets getLinkerUrl href here
                    jQuery(this).attr('href', pageTracker._getLinkerUrl(originalUrl));
                    return true;
                
            }

            //if it doesn't have http or https then internal link do nothing - return true.
            //exclude internal relative links (those that have no protocol  )                    
            if ((doesNotContains(originalUrl, 'http://')) && (doesNotContains(originalUrl, 'https://'))) return true;

            return true;
        } //end check if url has href

    }); //end click
});     //end ready
