/*
Contextual Tracker
http://ContextualTracker.wiadomosc.info/

Copyright (C) 2006 Tobiasz 'gosciu' Cudnik
gosc@wiadomosc.info

You can use ContextualTracker free of charge.
Distribution and code reuse NOT permitted.
*/

var ct_adkontekstFrames = new Array();
setTimeout('ct_adkontekstRun()', 500);

function ct_adkontekstRun()
{
	var ad = document.getElementsByTagName('iframe');
	var scripts = document.getElementsByTagName('script');
	var scriptsCount = 0;
	var tmp;
	var adIndex;
	var match;

	for ( var i=0; i<scripts.length; i++)
	{
		if ( typeof scripts[ i ].src != 'undefined' && scripts[ i ].src.substring(0,39) == 'http://adsearch.wp.pl/akon/spliter?prid' ) {
			scriptsCount++;
		}
	}

	var frameCount=0;

	for ( var i=0; i < ad.length; i++)
	{
		if (! ( match = ad[i].name.match(/^adKontekst_(\d+)/) ) )
			continue;

		frameCount++;

		if ( ct_adkontekstFrames[ match[1] ] )
			continue;

		// tworzenie struktury dla ramki i jej reklam

		ct_adkontekstFrames[ match[1] ] = new Array('frame','ads','channel');
		ct_adkontekstFrames[ match[1] ]['frame'] = ad[i];
		ct_adkontekstFrames[ match[1] ]['ads'] = new Array();
		ct_adkontekstFrames[ match[1] ]['channel'] = '';

		// wyszukiwanie id kanalu danej ramki (zmienna 'caid')

		var k=0;
		for ( var j=0; j<scripts.length; j++)
		{
			if ( typeof scripts[ j ].src != 'undefined' && scripts[ j ].src.substring(0,39) == 'http://adsearch.wp.pl/akon/spliter?prid' )
			{
				// wszytskie <script... po kolei, az zrodlo i kolejnosc bedzie zgodna z obecna ramka
				if ( k == match[1] )
					ct_adkontekstFrames[ match[1] ]['channel'] = ct_getURLvar( scripts[ j ].src, 'caid' );

				k++;
			}
		}

		if ( ct_isIE() )
		{
			ct_trackFrame( ad[i], 'adkontekst', 'ct_adkontekstClickIE', {'idx': match[1]} );
			continue;	// IE nie dopuszcza nas do obiektu document ramki, wiec tutaj konczymy
		}

		ct_debug("tracking frame '"+ad[i].name+"'; full pass :)", 1);

		if (! _ct_handlersAttached ) {
			window.addEventListener('unload', _ct_runClickHandlers, false);
			_ct_handlersAttached = true;
		}

		// wyszukiwanie reklam w ramce i zapisywanie ich do tablicy
		adIndex = 0;

		while ( true )
		{
			// strzelamy nie znajac liczby reklam
			if ( tmp = eval("window.frames."+ad[i].name+".document.getElementById('adc_ah_"+adIndex+"')") )
				ct_adkontekstFrames[ match[1] ]['ads'][ adIndex ] = tmp;
			else
				break;

			// podpinamy sie pod onclick dla anchora przez funkcje posredniczaca, aby miec id ramki i reklamy
			tmp.onclick = new Function('event',"ct_adkontekstClick( event, "+match[1]+", "+adIndex+" )");

			adIndex++
		}
	}

	// sprawdzanie czy liczba monitorowanych ramek == liczbe skryptow
	if ( frameCount != scriptsCount )
		setTimeout('ct_adkontekstRun()', 500);
}

function ct_adkontekstGetURL( href )
{
	var match = href.match( new RegExp("\\?u=([^&]+)") );

	if ( match != null )
		return unescape( match[1] );

	return '';
}

function ct_adkontekstClickIE( frameObj, vars )
{
	ct_adkontekstClick( null, vars['idx'], null );
}

// event jest null dla ie
function ct_adkontekstClick( event, frameIndex, adIndex )
{
	var data = new Object();

	if ( ct_statusWorking && ! ct_status && ct_isIE() ) {	// prawdopodobnie klikniecie w pusta przestrzen ramki
		ct_cancelClick( frameObj );
		return;
	}

	data['sys'] = "adkontekst";

	if ( adIndex != null )
		data['ad_url'] = ct_adkontekstGetURL( ct_adkontekstFrames[ frameIndex ]['ads'][ adIndex ]['href'] );
	else		// IE
		data['ad_url'] = ct_status;

	if ( data['ad_url'] == 'http://firma.netsprint.pl/landing_page/index2.html' ) {
		ct_cancelClick( ct_adkontekstFrames[ frameIndex ]['frame'] );
		return;
	}

	data['src_title'] = document.title;
	data['src_url'] = ct_location;
	data['channel'] = ct_adkontekstFrames[ frameIndex ]['channel'];
	data['browser'] = ct_browser();

	if ( window.adKontekst_pola && window.adKontekst_pola[ frameIndex ] ) {
		data['ad_size'] = adKontekst_pola[ frameIndex ].x +"x"+ adKontekst_pola[ frameIndex ].y;

		if ( window.adKontekst_pola[ frameIndex ].nform )
			data['ad_form'] = adKontekst_pola[ frameIndex ].nform;
	} else	// ponizszy sposob czasem myli sie o piksel...
		data['ad_size'] = ct_adkontekstFrames[ frameIndex ]['frame'].width +"x"+ ct_adkontekstFrames[ frameIndex ]['frame'].height;

	ct_storeClick( data );
}