jQuery('document').ready(function(){ //use jQuery to tag outbound links
        if(typeof(pageTracker._crossDomain) !== 'undefined' && pageTracker._crossDomain == true){
            thishost = location.hostname;
            regex = /^http(s)?\:/i;
            jQuery('a').each(function(){
                try{    
                    var thishref = (jQuery(this).attr('href')) ? jQuery(this).attr('href') : 'none';
                    if(thishref != 'none' && thishref.search(regex)>-1 && thishref.indexOf(thishost)==-1){
                        jQuery(this).click(function(){
                            pageTracker._link(this.href);return false;
                        });    
                    }
                } catch(err) {}    
            });
            jQuery('form').each(function(){
                try{
                    var thisaction = (jQuery(this).attr('action')) ? jQuery(this).attr('action') : 'none';
                    if(thisaction != 'none' && thisaction.search(regex)>-1 && thisaction.indexOf(thishost)==-1){
                        jQuery(this).submit(function(){
                            pageTracker._linkByPost(this);
                        });    
                    }
                } catch(err) {}
            });
        }
    });
    jQuery('document').ready(function(){//events
 
        jQuery('input,select,textarea,button').each(function(){//hand off form events on blur
            try{
                var __frm = jQuery(this).parent('form');
                if(!jQuery(this).hasClass('gae_noevent')  && !__frm.hasClass('gae_noevent')){ //'gae_noevent' class can be set at the form or element levels, and will disable tracking
                    __frm = (__frm.attr('id').length > 0) ? __frm.attr('id')+':' : __frm.attr('name')+':';
                    jQuery(this).blur(function(){
                        _evTrackProxy('forms', (this.id.length > 0) ? __frm + this.id : __frm + this.name, '', this);
                    });                        
                }
            } catch(err) {}            
        });        
        jQuery("*").click(function(e){ //hand off click targets and mouse position
            try{
                var target = [e.target.nodeName.toLowerCase()];
                var ePos = e.pageX+','+e.pageY;
                target[1] = '';
                target[1] = (target[1] == '' && typeof(jQuery(e.target).attr('id')) !== 'undefined' && jQuery(e.target).attr('id').length > 0) ?  '#' + jQuery(e.target).attr('id') : target[1];
                target[1] = (target[1] == '' && typeof(jQuery(e.target).attr('class')) !== 'undefined' && jQuery(e.target).attr('class').length > 0) ?  '.' + jQuery(e.target).attr('class') : target[1];
                target[1] = (target[1] == '' && typeof(jQuery(e.target).attr('name')) !== 'undefined' && jQuery(e.target).attr('name').length > 0) ?  ':' + jQuery(e.target).attr('name') : target[1];
                target[1] = (target[1] == '' && typeof(jQuery(e.target).attr('title')) !== 'undefined' && jQuery(e.target).attr('title').length > 0) ?  '-' + jQuery(e.target).attr('title') : target[1];
                target[1] = (target[1] == '' && typeof(jQuery(e.target).attr('rel')) !== 'undefined' && jQuery(e.target).attr('rel').length > 0) ?  '=' + jQuery(e.target).attr('rel') : target[1];
                if(typeof(jQuery(e.target).attr('href')) != 'undefined' && jQuery(e.target).attr('href').length > 0){
                    target[2] = ' (href=' + jQuery(e.target).attr('href') + ')';
                }
                
                if(!jQuery(e.target).parents().andSelf().hasClass('gae_noclick') && pageTracker._thisClickEvent != ePos){// look up the chain for .gae_noclick, and only track if false
                    target = target.toString().replace(/,/g,'');
                    _evTrackProxy('clicks', target, e.pageX+','+e.pageY);
                    pageTracker._thisClickEvent = ePos;
                }
                
            } catch(err) {}        
        });
    });
    function _evTrackProxy(cat, action, label, el){
        var tmp = '';
        var regex = '';
        try{
            if(typeof(el) !== 'undefined'){    
                if(typeof(el.selectedIndex) !== 'undefined'){
                    label = el.options[el.selectedIndex].text;
                }else if( jQuery(el).attr('type') == 'checkbox' ||  jQuery(el).attr('type') == 'radio' ){
                    tmp = el.value.replace(/[\W\s]+/g,'_');
                    label = (el.checked) ? tmp + ':checked' : tmp + ':unchecked';
                }else if( jQuery(el).attr('type') == 'password' ){  
                    label = el.value.replace(/[a-z]/g,'x').replace(/[A-Z]/g,'X').replace(/[0-9]/g,'9').replace(/[^xX9]/g,'$');
                }else{
                    regex = /^([a-zA-Z0-9._%+-]+)(@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})$/;
                    if(regex.test(el.value)){
                        tmp = regex.exec(el.value);
                        label = 'xxxxx' + tmp[2];
                    }else{
                        label = el.value;
                    }
                }
            }
            pageTracker._trackEvent(cat, action, label);
        } catch(err) {}
    }    

