var responses = {},
extradata = {},
responseimages = {},
demographics = {},
tStart = new Date(),
modulename,
modulestarted = false,
flasher,
repeat = true,
responseCounter = {},
VDNA_setComplete = false,
clickedAlready = [],
quiz_def_array = [];

// VisualDNA cookie
checkCookieComplete = function(url, userId){
	// if Safari, ignore cookie and redirect
	if (userId == null)
	{
		document.location.assign(url);
		return;
	}
	if (!VDNA_setComplete) 
	{
		//setTimeout('checkCookieComplete("' + url + '");', 100);
		setTimeout(function() { checkCookieComplete(url); }, 200)
	}
	else 
	{
		document.location.assign(url);
	}
}

// randomise an array	
randOrd = function(){
	return (Math.round(Math.random())-0.5); 
} 

// alert
say = function(str){
    try{
        window.loadFirebugConsole();
        console.log(str);
    }catch(e){
        alert(str);
    }
};

var rippleImages = [];
var rippleSize;

// create ripple effect	
doRipple = function(){
	if(rippleImages.length){
		var $imgs = $('#c').children('div.page');
		$imgs = $($imgs[0]).children().find('ul.ql');
		var i = rippleImages.pop();
		var $obj = $imgs.children('li:nth-child('+i+')').children().find('img');
		highlightImage($obj, 'ripple');
		//window.setTimeout('doRipple()', 75)
		setTimeout(function() { doRipple(); }, 75);
	}
}

// set up ripple
rippleSetUp = function(initial){
	var $imgs = $('#c').children('div.page');
	$imgs = $($imgs[0]).children().find('ul.ql');
	for(var i = 0; i < $imgs.children().size(); i++){
		rippleImages.push(i + "");	
	}
	rippleImages = rippleImages.sort(randOrd);
	size = rippleImages.length;
	doRipple();
}

addImageEffects = function(){
	var $imgs = $('ul.ql').children().children().find('img');
	$.each($imgs, function(){
		$(this).bind('mouseover', function(){
			highlightImage($(this), 'over');		
		});
	});
	$.each($imgs, function(){
		$(this).bind('mouseout', function(){
			highlightImage($(this), 'out');		
		});
	});
}

highlightImage = function($obj, type){
	var speed = 100,
	toggleSpeed = 250;
	if(type==='over'){
		$obj.parents('li').children('div:not(.is_clicked)').children('div').css('background-color', '#02a8e6');
		$obj.parents('li').children('div:not(.is_clicked)').children('div').animate({
			'top' : '0',
			'width' : '150px',
			'height' : '150px',
			'left' : '0'
		}, speed);
	}else if(type=='out'){
		$obj.parents('li').children('div:not(.is_clicked)').children('div').animate({
			'top' : '6px',
			'width' : '138px',
			'height' : '138px',
			'left' : '6px'
		}, speed, function(){
			$(this).css('background-color', '#ffffff');
		});
	}else{
		$obj.parents('li').children('div:not(.is_clicked)').children('div').css('background-color', '#02a8e6');
		$obj.parents('li').children('div:not(.is_clicked)').children('div').animate({
			'top' : '0',
			'width' : '150px',
			'height' : '150px',
			'left' : '0'
		}, toggleSpeed, function(){
			$(this).animate({
				'top' : '6px',
				'width' : '138px',
				'height' : '138px',
				'left' : '6px'
			}, toggleSpeed, function(){
				$(this).css('background-color', '#ffffff');
			});
		});
	}
}

$(window).load(function(){
	
	addImageEffects();

	rippleSetUp();

    var pageLoadEnd = new Date();
    var pageLoadTime = pageLoadEnd.getTime() - pageLoadStart.getTime();

    // determine the thresholds

    if(pageLoadTime<2000) lc = "Very Fast";
    else if (pageLoadTime<5000) lc = "Fast";
    else if (pageLoadTime<10000) lc = "Medium";
    else if (pageLoadTime<30000) lc = "Sluggish";
    else if (pageLoadTime<45000) lc = "Slow";
    else lc = "Very Slow";
    var fn = document.location.pathname;
    if( document.location.search) fn += document.location.search;
	
	if (typeof(pageTracker) != "undefined")
	{
		try {
	        pageTracker._trackEvent("Page Load", lc + " Loading Pages", fn, Math.round(pageLoadTime / 1000));
	    } catch(err){}
		
	}
    
	if (typeof(currentPage) != "undefined" && currentPage == 'static')
	{
        sendImpressionEvent('STATIC_WINDOW_ONLOAD');
    }
	else
	{
		sendImpressionEvent('QUIZ_WINDOW_ONLOAD');
	}
});

nextpage = function(el,subq,page,next_page){

	$('#pick p').text('Pick any three');
	
	if(page){
		$('#footer').fadeOut('slow');
		$('#new-footer').fadeOut('slow');
	}

	var $message = $('#flash-message'),	key, $inner, npage;
	
	if($message){
		$message.remove();
	}
	
	// hide current page
	if(page != ""){
		$("#page" + page).css('display', 'none');
	}

	// find next page
	if(page != "")
	{
		page = next_page;
	}
	else
	{ // find first page
		for (key in quiz_def)
		{
		   page = key;
	   	   loadImages(page);
		   break;
		}
	}

	if(page.toLowerCase() !== 'finish')
	{
		sendEventAfterAllImgLoad(page);
	}

	if(page){
		$("#page" + page).fadeIn('slow');
	}else{
		$("#page" + page).css('display', 'block');
	}
	
	if(page.toLowerCase() === 'finish'){
		finishUp();
		return;
	}
	
	$inner = $("#page" + page).children('div.q');

	if (page != "age"){
		randomizeImages(page);
	}
	
	
	// display 5 choice images in a row, if 15 images
	if (jQuery("#page" + page + " ul.ql li").size() == 15)
	{
		jQuery("#page" + page + " ul.ql").css({"width": "800px"});
		jQuery("#page" + page + " div.q").css({"margin-left": "-90px"});
		jQuery("#page" + page + " div.s").css({"width": "775px", "margin-left": "-85px", "background": "url(http://resources-ms-ak.visualdna.com/www.adzappa.com/live/20100702112722/images/quiz/newbackgrounds1_770px.gif) no-repeat scroll 0 0"});
		jQuery("#page" + page + " div.p").css({"width": "780px", "margin-left": "-85px", "background": "url(http://resources-ms-ak.visualdna.com/www.adzappa.com/live/20100702112722/images/quiz/newbackgrounds1_770px.gif) 0 -50px no-repeat"});
	}
	// display 3 choice images in a row, if only 6 images
	if (jQuery("#page" + page + " ul.ql li").size() == 6)
	{
		jQuery("#page" + page + " ul.ql").css({"padding-left": "75px", "width": "500px"});
	}
	// display 3 choice images in a row, if only 5 images
	if (jQuery("#page" + page + " ul.ql li").size() == 5)
	{
		jQuery("#page" + page + " ul.ql").css({"padding-left": "75px", "width": "500px"});
	}
	// display 3 choice images centered, if only 3 images
	if (jQuery("#page" + page + " ul.ql li").size() == 3)
	{
		jQuery("#page" + page + " ul.ql").css({"padding-left": "75px"});
	}
	// display 2 choice images centered, if only 2 images
	if (jQuery("#page" + page + " ul.ql li").size() == 2)
	{
		jQuery("#page" + page + " ul.ql").css({"padding-left": "150px"});
	}
	
	
	// load next page's images
	if (npage != "")
	{
		loadImages(next_page, true);
	}
}




r = function(el, page, response, subq, number_of_answers){
	
	if(number_of_answers>1){
		var $parent = $(el).parents('ul');
		var index = $parent.children('li').index($(el).parents('li'));
		var $message = $('<div>').attr('class', 'picksteps').html('<p>Pick 2 more</p>');
		$parent.children('li:nth-child('+(index+1)+')').children().find('a').append($message);
		if(clickedAlready.in_array(index)){
			return;
		}else{
			if(clickedAlready.length){
				$parent.children('li:nth-child('+(clickedAlready[0]+1)+')').children().find('div.picksteps').remove();
			}
			$(el).parent().addClass('is_clicked');
			$str = $message.html();
			if(clickedAlready.length==1){
				$message.html('<p>Pick 1 more</p>');
			}
			clickedAlready.push(index);
		}
	}
	
	if(!modulestarted){
		modulestarted = true;
		sendModuleStartEvent();
	}
	
	var $img = $(el).children(':first-child');
	
	if($img.src == "") return false;
	
	if(isImageLoaded($img) == false) return false;
	
	if(page == "age_fem" || page == "age_male"){
		switch(response){
			case "choice_72787":
			  trackingData.Ba15 = "18-24";
			  break;
			case "choice_72788":
			  trackingData.Ba15 = "25-34";
			  break;
			case "choice_72789":
			  trackingData.Ba15 = "35-44";
			  break;
			case "choice_72790":
			  trackingData.Ba15 = "45-54";
			  break;
			case "choice_72791":
			  trackingData.Ba15 = "55+";
			  break;
			default:
				//
		}
	}
	
	if(page == "gender"){
		switch(response){
			case "choice_54204":
			  trackingData.Ba16 = "M";
			  break;
			case "choice_54205":
			  trackingData.Ba16 = "F";
			  break;
			default:
				//
		}
	}
	
    if(isNaN(responseCounter[page])){
        responseCounter[page] = 1;
    }else{
        responseCounter[page]++;
    }

    if(number_of_answers > 1){
        statement_ident = page + "__" + responseCounter[page];
    }else{
        statement_ident = page;
    }

    responses[statement_ident] = response;
	responseimages[statement_ident] = $img.attr('src');
	sendStatementEvent(statement_ident,"CLICK");

	if(responseCounter[page] == number_of_answers){
		clickedAlready = [];
		
		if (typeof(quiz_def[page][response]) != "undefined")
		{
			nextpage(el, subq, page, quiz_def[page][response]);
		}
		else
		{
			nextpage(el, subq, page, quiz_def[page].successor);
		}
    }

	return false;
}

sendEventAfterAllImgLoad = function(page)
{
	if (checkImagesFullLoad(page))
	{
		sendStatementEvent (page,"IMPRESSION");
	}
	else
	{
		setTimeout(function() { sendEventAfterAllImgLoad(page); }, 500)
	}
}

removeLoaderAfterFirstPageLoaded = function(page)
{
	if (checkImagesFullLoad(page))
	{
		var $message = $('#flash-message');

        if($message){
            $message.remove();
        }
	}
	else
	{
		setTimeout(function() { removeLoaderAfterFirstPageLoaded(page); }, 500)
	}
}

loadImages = function(page, next){
	var $ims = $("#page" + page).children().find("img");
	$.each($ims, function(){
		if($(this).attr('src').indexOf("/images/quiz/t.gif")!=-1){
			$(this).attr('src', $(this).parent().attr('rel'));
		}
	});	
	
	// also load next page's images?
	if (next)
	{
		preloadNextNextPageImages(page);
	}
}

checkImagesFullLoad = function(page)
{
	var $allImagesLoaded = true;
	var $ims = $("#page" + page).children().find("img");
	$.each($ims, function(){
		if($(this).attr('src').indexOf("/images/quiz/shadow.png")==-1)
		{
			if (!$(this).attr('complete') || $(this).attr('src').indexOf("/images/quiz/t.gif")!=-1)
			{
				$allImagesLoaded = false;
			}

			if (typeof $(this).attr('naturalWidth') != "undefined" && $(this).attr('naturalWidth') == 0)
			{
				$allImagesLoaded = false;
			}
		}
	});
	return $allImagesLoaded;
}


randomizeImages = function(page){
	var $ims = $("#page" + page).children().find("li"),
	el1, el2;
	for(var i = 0 ; i < $ims.length * 2; i++){
		el1 = $ims[Math.round(getRandomArbitary(0,$ims.length-1))];
		el2 = $ims[Math.round(getRandomArbitary(0,$ims.length-1))];
		el2.parentNode.insertBefore(el2,el1);	
	}
}

getRandomArbitary = function(min, max){
  return Math.random() * (max - min) + min;
}

Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
}

cro = function(){var o=null;if(window.ActiveXObject){o=new ActiveXObject("Msxml2.XMLHTTP");if(!o)o=new ActiveXObject("Microsoft.XMLHTTP")}else if(window.XMLHttpRequest){o=new XMLHttpRequest()}return o;}

function rmp(u,f,a){
    var p=cro();
    p.open("POST", campaignDir + "saveResponse.php", true);
    p.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    p.setRequestHeader("Content-length", u.length);
    p.setRequestHeader("Connection", "close");
    if(f){p.onreadystatechange=function(){
            if(p.readyState==4){
                a?f(a,p.responseText):f(p.responseText)
            }
        }
    }
    p.send(u)
}

finishUp = function(){
	// record how long it took to complete surve
	var tDate = new Date(),
    tDiff = tDate.getTime() - tStart.getTime();
    tDate.setTime(tDiff);

	rrs = "";
    for (i in responses) {
		rrs += "&"+i+"="+responses[i];
	}

	for (i in quiz_def) {
		if (rrs.indexOf("&" + i) == -1 && i != "finish")
		{
			if (i.match(/sparetime_fem/) == null && i.match(/sparetime_male/) == null && i.match(/holiday_fem/) == null && i.match(/holiday_male/) == null)
			{
				rrs += "&"+i+"=no_answer";
			}
		}
	}
	
	if (trackingData.Ba16 == "M")
	{
		rrs += "&sparetime_fem__1=no_answer&sparetime_fem__2=no_answer&sparetime_fem__3=no_answer";
		rrs += "&holiday_fem__1=no_answer&holiday_fem__2=no_answer&holiday_fem__3=no_answer";
	}
	else
	{
		rrs += "&sparetime_male__1=no_answer&sparetime_male__2=no_answer&sparetime_male__3=no_answer";
		rrs += "&holiday_male__1=no_answer&holiday_male__2=no_answer&holiday_male__3=no_answer";
	}

	for (i in extradata) {
		rrs += "&extra_"+i+"="+extradata[i];
	}
	submitForm(rrs);
}

submitForm = function(rrs){
	var ourDate = new Date(),
	cachebreak = ourDate.getMilliseconds(); 
	rmp("ts="+cachebreak+rrs,formSubmitted);	
}

formSubmitted = function(a){
	var responseId = null,
	userId = null;
	eval(a);
	sendModuleCompleteEvent(responseId);
}

isImageLoaded = function(img){
    if(typeof img.complete != "undefined" && !img.complete){
        return false;
    }
    if(typeof img.naturalWidth != "undefined" && img.naturalWidth == 0){
        return false;
    }
    return true;
}


$(function() {
	var i = 0;
	$.each(quiz_def, function(page, v) {
		quiz_def_array[i] = page;
		i++;
	});
});

preloadNextNextPageImages = function (current_page)
{
	//return true;
	for (i = 0; i < quiz_def_array.length; i++)
	{
		if (quiz_def_array[i] == current_page && quiz_def_array[i + 1] != "finish")
		{
			next_page = quiz_def_array[i + 1];
			loadImages(next_page);
		}
	}
}
