__gaPrefix    = 'automobile';
__events      = new Array();
__tracked     = new Array();

// tracking delayed events
function trackEvents() {

    for( var i in __events ) {

        // making key
        var key = __events[i].category + __events[i].action;
        if( __events[i].label ) {
            key += __events[i].label;
        };
        if( __events[i].value ) {
            key += __events[i].value;
        };

        if( __tracked[key] ) {
            continue;
        }
        __tracked[key] = true;

        _gaq = window._gaq || [];

        var data = [ __gaPrefix + '._trackEvent', __events[i].category, __events[i].action, __events[i].label, __events[i].value ];
        if( __events[i].value == undefined || __events[i].value == '' ) {
            data = [ __gaPrefix + '._trackEvent', __events[i].category, __events[i].action, __events[i].label ];
        }

        // google tracker
        _gaq.push( data );

        if( typeof(yam) === 'undefined' ) { continue; }

        // yandex tracker
        yam.reachGoal( __events[i].metrika, { action: __events[i].action, label: __events[i].label, value: __events[i].value } );
    }

    // unsetting tracked events
    __events = new Array();
}

// delayed track
function trackEvent( category, action, label, value, metrika ) {
    if( metrika == undefined ) {
        metrika = action;
    }
    __events.push( {category: category, action: action, label: label, value: value, metrika: metrika } );
}

// immediate track
function imTrackEvent( category, action, label, value, metrika ) {
    if( metrika == undefined ) {
        metrika = action;
    }

    var data = [ __gaPrefix + '._trackEvent', category, action, label, value ];
    if( value == undefined || value == '' ) {
        data = [ __gaPrefix + '._trackEvent', category, action, label ];
    }

    _gaq = window._gaq || [];

    // google tracker
    _gaq.push( data );

    if( typeof(yam) === 'undefined' ) { return; }

    // yandex tracker
    yam.reachGoal( metrika, { action: action, label: label, value: value } );
}


