// -------------- Marketer ads support ---------------------------
var mkrBanners = new Array();

function MkrBanner(adId, adArea, profileId, maxExpCnt){
	this.adId = adId;
	this.adArea = adArea;
	this.profileId = profileId;
	this.maxExpCnt = maxExpCnt;
		
	return this;
}
	
//sprawdzenie, czy reklama o danym id jest juz w historii
function isIdInAdHistory(historyArray, adId){
	
	for(var i = 0; i < historyArray.length; i++)
	{
		historyItem = historyArray[i];
				
		var es = historyItem.indexOf('=');
		var hisBannerId = historyItem.substring(0, es);
		var hisExpCnt = historyItem.substring(es + 1, historyItem.length);
			
		if(hisBannerId == adId) return true;
	}
		
	return false;
}

function isInUserProfiles(banner, profilesArray){
	for(var j = 0; j < profilesArray.length; j++)
	{
		if(profilesArray[j] == banner.profileId)
			return true;
	}
	return false;
}
	

//pobranie reklam, ktorych nie ma jeszcze w historii
function getBannersNotInHistory(historyArray, bannersArray, profilesArray) {
	var banners = new Array();
	for(var j = 0; j < bannersArray.length; j++)
	{
		banner = bannersArray[j];
		if(isInUserProfiles(banner, profilesArray)){
			if(!isIdInAdHistory(historyArray, banner.adId)){
				banners[banners.length] = banner;
			}
		}
	}
	return banners;	
}
	
//usuniecie reklam z historii
function removeFromHistory(historyArray, bannersArray) {
	var newHistory = new Array();
		
	for(var i = 0; i < historyArray.length; i++)
	{
		historyItem = historyArray[i];
				
		var es = historyItem.indexOf('=');
		var hisBannerId = historyItem.substring(0, es);
			
		var found = false;
		for(var j = 0; j < bannersArray.length; j++)
		{
			banner = bannersArray[j];
			if(hisBannerId == banner.adId)
			{
				found = true;
				break;
			}
		}	
			
		if(!found) newHistory[newHistory.length] = historyItem;
	}
	return newHistory;	
}


function removeBannersNotInUserProfiles(profilesArray, bannersArray){

	var profBanners = new Array();
	for(var j = 0; j < bannersArray.length; j++)
	{
		for(var i = 0; i < profilesArray.length; i++)
		{
			banner = bannersArray[j];
			if(profilesArray[i] == banner.profileId)
			{
				profBanners[profBanners.length] = banner;
				break;
			}
		}	
	}
	return profBanners;	
}	
	
	
// podziel tablice reklam na miejsca reklamowe	
function parseAdsPlacement (inputArray){
	
	var actVariable;
	var inner = 0;
	var placements = new Array();
	
	for (var i=0;i<inputArray.length;i++)
	{
		actVariable = inputArray[i].adArea;
		
		if (!arrayFindElement(placements,actVariable))
		{
			placements[inner] = actVariable;
			inner ++;
		}
	}
	return placements;
}	


// wyszukuje wystapienie stringu w tablicy
function arrayFindElement (innerArray, entity){
	
	for (var count=0;count<innerArray.length;count++)
	{
		if (innerArray[count] == entity) return true;
	}

	return false;
}


function searchBanner (bannersObj){
	
	if(adHistory)
	{
		var foundBannerObj = null;			
		
		for(var i = 0; i < historyArray.length; i++)
		{
					
			historyItem = historyArray[i];
			var es = historyItem.indexOf('=');
			var hisBannerId = historyItem.substring(0, es);
			var hisExpCnt = historyItem.substring(es + 1, historyItem.length);
				
			for(var j = 0; j < bannersObj.length; j++)
			{
				banner = bannersObj[j];
				if(isInUserProfiles(banner, profilesArray)){
					if(banner.adId == hisBannerId)
					{
						if(hisExpCnt < banner.maxExpCnt)
						{
							foundBannerObj = banner;
							historyArray[i] = '' + foundBannerObj.adId + '=' + (new Number(hisExpCnt) + 1);
						}
						break;
					}
				}
			}
			
			if(foundBannerObj)
			{
				setCookie('adHistory', historyArray.toString(), null, '/');
				return foundBannerObj;
			}	

		}
	}			
}

function prepareId (foundBannerObj, bannersObj){
		
	localAdId = -1;
		
	if(foundBannerObj)
	{
		localAdId = foundBannerObj.adId;	
	}
	else
	{
		//czy są jeszcze jakies niewylosowane bannery?
		var banners = getBannersNotInHistory(historyArray, bannersObj,profilesArray);
		if(banners.length == 0)
		{
			historyArray = removeFromHistory(historyArray,  bannersObj)
			setCookie('adHistory', historyArray.toString(), null, '/');
			banners =  bannersObj;
		}
		banners = removeBannersNotInUserProfiles(profilesArray, banners);
		
		//wylosowanie nastepnego 
		if(banners.length > 0)
		{
			adIndex = Math.floor(Math.random() * banners.length);
			foundBanner = banners[adIndex];
			localAdId = foundBanner.adId;
			historyArray[historyArray.length] = '' + localAdId + '=1';
			setCookie('adHistory', historyArray.toString(), null, '/');
		}
		
	}		
	
	return localAdId;
}


function add2osHistory(banId,maxExcp){
	var localHistory = new Array();
	var localCookie = getCookie ("osHistory");

	if (localCookie==null)
	{ 
		// jezeli nie ma - stworz cookie
		localHistory[0] = ""+banId+"=1";
	}
	else
	{ 
		localHistory[localHistory.length] = localCookie;
		if (isIdInAdHistory(localHistory, banId)){
			// odczytaj stan i zwieksz licznik
			if (!checkMaxExcp (localHistory,banId,maxExcp)) return false;			
			localHistory = incrementExcp (localHistory, banId);

		}else{	
			// jezeli wystapi pierwszy raz
			localHistory[localHistory.length] = ""+banId+"=1";
		}	
	}
	
	// ustaw nowe cookie
	setCookie('osHistory',localHistory, null, '/');
	return true;
}


// sprawdzenie czy liczba odslon nie przekroczyla zalozonej
function checkMaxExcp(historyArray,banId,maxExcp){
	var es,hisBannerId, hisExpCnt, historyItem;

	for (var inner=0;inner < historyArray.length;inner++)
	{
		historyItem = historyArray[inner];
		es = historyItem.indexOf('=');
		hisBannerId = historyItem.substring(0, es);
		hisExpCnt = historyItem.substring(es + 1, historyItem.length);		

		if (hisBannerId == banId && hisExpCnt < maxExcp) return true;
	}
	
	return false;
}


// Zwieksz liczbe odslon danego bannera w historii
function incrementExcp (historyArray, banId){
	var es,hisBannerId, hisExpCnt, historyItem;
	var newHistory = new Array();
	
	for (var inner=0;inner < historyArray.length;inner++)
	{
		historyItem = historyArray[inner];
		es = historyItem.indexOf('=');
		hisBannerId = historyItem.substring(0, es);
		hisExpCnt = historyItem.substring(es + 1, historyItem.length);		
		
		if (hisBannerId == banId)
		{
			newHistory[newHistory.length] = ""+hisBannerId+"="+(new Number(hisExpCnt) + 1);
		}
	}
	
	return newHistory;
	
}

// ----------- onScreen ads support ------------------------------

// flash detection
function detectFlash(){
   var flashMode,flashVersion,x,y = 0;
   
   // netscape and mozilla
   if (navigator.plugins && navigator.plugins.length){
	  x=navigator.plugins["Shockwave Flash"];
	  if (x && x.description) y=x.description;
    } else if (navigator.mimeTypes && navigator.mimeTypes.length){
	  x=navigator.mimeTypes['application/x-shockwave-flash'];
	  if (x && x.enabledPlugin) y=x.enabledPlugin.description;
	}else{
	// IE flash detection.
		for(var i=8; i>0; i--){
			try{
				var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i);
				flashVersion = i;
				break;			
			}catch(e){}
		}
			
	}
		
	if (y) flashVersion = y.charAt(y.indexOf('.')-1);

	if (flashVersion >= 6) { flashMode = 3; } 
	else if (flashVersion == 5) { flashMode = 2; } 
	else if (flashVersion == 4) { flashMode = 1; }
	
	return flashMode;
}

// eof flashDetect

// layer turningg on/off - DOM compatible
function switchDiv(layerName){
  if(document.all || document.getElementById) {
	 var stateDef  = 'hidden'; 
	 var divObj = document.getElementById ? document.getElementById(layerName) : document.all[layerName];
 	 
	 if (divObj.style.visibility == stateDef){
	    divObj.style.visibility = 'visible';
	 }else{ 			
        divObj.style.visibility = stateDef;
	 } 
   }
}
		  
// setting div position
function scrollDiv (){
  if(document.all || document.getElementById) {
	 var layerName = 'commDiv';
	 if (defLayerName) layerName = defLayerName;
	 				
	 var divObj = document.getElementById ? document.getElementById(layerName) : document.all[layerName];
     divObj.style.top = document.body.scrollTop + parseInt(document.body.clientHeight/3);
   }
}
		  
// starting onscroll event
function startScroll (){
  if(document.all || document.getElementById) {
    window.onscroll = scrollDiv;
  }  		  
}
		  
// print flash ads
function printFla(fMovie,fWidth,fHeight){
   var flaString = '';
   var tLeft = 0, tTop = 0;
   var winWidth  = document.body.clientWidth;
   var winHeight = document.body.clientHeight;
			  
   tLeft = parseInt((winWidth-fWidth)/2);
   tTop  = parseInt((winHeight-fHeight)/2); 
			 
   flaString  = '<div id="commDiv" style="position:absolute;width:1px;height:1px;z-index:10;left:'+tLeft+'px;top:'+tTop+'px;visibility:visible;">'; 		  
   flaString += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+fWidth+'" height="'+fHeight+'" align="">';
   flaString += '<param name="movie" value="'+fMovie+'"><param name="quality" value="high"><param name="wmode" value="transparent"><param name="LOOP" value="false">';
   flaString += '<embed src="'+fMovie+'" width="'+fWidth+'" height="'+fHeight+'" loop="false" align="" quality="high" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object></div>';

  //document.write (flaString);
  return flaString;
}

// -------------- function multipleOnload (){} provides multiple onload method

  navMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
  navMacIE = ((document.all)&&(navMac)) ? true : false;
  navIE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;
	  
  var multiArray = new Array();
	  
  function multipleOnLoad(func){
  	if (navMac && navIE4) {
	   window.onload = ReadOnload;multiArray[multiArray.length] = func;
	}else if  (window.onload){
		if (window.onload != getPrev){
		   multiArray[0] = window.onload;window.onload = getPrev;
		}		
		multiArray[multiArray.length] = func;
	}else window.onload = func;
   }
   
   function getPrev(){
    	for (var i=0;i<multiArray.length;i++) multiArray[i]();
   }

// end of MultipleOnload();

// ----------- questionaire forms ------------------------------

// check if user has filled up questionaire form already
function checkQForm (mkrBannerArray) {
	tmpMkrBanners = new Array();
	for (i=0;i<mkrBanners.length;i++) {
		if (qForms){
			filledUp = false;
			qFormArray = new Array();
			qFormArray = qForms.split(',');
			for (j=0;j<qFormArray.length;j++){
				if (mkrBanners[i].adId == qFormArray[j]) {
					filledUp = true;
				}
			}
			if (filledUp == false){
				tmpMkrBanners[tmpMkrBanners.length] = mkrBanners[i];
			}
		}
	}
	return tmpMkrBanners;
}
// end of checkQForm();