// ======================== HeaderLevel1 ========================
// ------------------------ HeaderLevel2 ------------------------
// ........................ HeaderLevel3 ........................

// ======================== Main objects and properties ========================



var userInfo = {};

var cpbe = (!cpbe) ? {} : cpbe;

// ------------------------ Browser flags ------------------------

cpbe.browser = {};


cpbe.browser.init = function() {
    cpbe.browser.gecko = ($.browser.mozilla == true) ? true : false;
    cpbe.browser.webkit = ($.browser.safari == true) ? true : false;
    cpbe.browser.ie = ($.browser.msie == true) ? true : false;
    cpbe.browser.ie7 = ($.browser.msie == true && parseInt($.browser.version) < 8) ? true : false;
	if ($.browser.msie == true && parseInt($.browser.version) < 7) {
		cpbe.browser.ie6 = true;
		cpbe.browser.ie7 = false;
	}


    cpbe.browser.flash = swfobject.getFlashPlayerVersion();
    cpbe.browser.flash = cpbe.browser.flash.major;
};

// ------------------------ Scopes ------------------------

cpbe.scope = {};
cpbe.scope.init = function() {
    cpbe.scope.modals = $('#modals');
    cpbe.scope.modalShade = $('#modalShade');
    cpbe.scope.msg = $('#msg');
    cpbe.scope.msgShade = $('#msgShade');
	cpbe.scope.views = $('#views');
	cpbe.scope.nav2 = $('#nav2');
	cpbe.scope.commentList = $('#commentList .\\+');
}

// ======================== Methods ========================

// ------------------------ Dummy number ------------------------

cpbe.num = 0;
cpbe.dummynum = function() {
	return cpbe.num++;
};

// ------------------------ Debug ------------------------

// ........................ Logging ........................

cpbe.log = function(msg) {
    if (window.console) {
        console.log(cpbe.log.index + ': ' + msg);
    }
    cpbe.log.index++;
};

cpbe.log.index = 0;


// ........................ Logging for IE7< ........................

cpbe.oldCon = {};
cpbe.oldCon.index = 0;

cpbe.oldCon.init = function() {
	$(document.body).append('<div id="oldCon"><strong>IE7 Console</strong></div>');
	$('#oldCon').css({
		display: 'none',
		background: '#fff',
		border: '1px solid #666',
		color: '#444',
		position: 'absolute',
		top: '20px',
		left: '20px',
		width: '500px',
		padding: '10px'
	});
}

cpbe.oldCon.log = function(msg,truelog) {
	if ($('#oldCon').length > 0) {
		if (truelog == true) {
			var col = '#fff;';
		} else {
			var col = '#fcc;';
		}
		$('#oldCon').append('<div style="background:'+col+'border-bottom: 1px solid #bbb;">' + cpbe.oldCon.index + ': ' + msg + '</div>');
		cpbe.oldCon.index++;
	}
}

cpbe.oldCon.toggle = function() {
	$('#oldCon').toggle();
}

// ........................ Shout, shout, let it all out ........................

cpbe.yo = function(msg) {
	if (cpbe.yo.mute !== true) {
		alert(msg);
	}
}

cpbe.yo.mute = false;

// ------------------------ Get Flash ------------------------

cpbe.getFlash = function(name) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        window[name] = $('#' + name)[0];
        return window[name];
    } else {
        return document[name];
    }
};



// ------------------------ Querystring to object ------------------------

cpbe.query2object = function(str, sep1, sep2) {
    if (str !== undefined) {
        if (str.indexOf(sep1) == (str.length - 1)) {
            str = str.substr(0, (str.length - 1));
        }
        str = str.split(sep1);
        var obj = {};
        for (var i = 0, il = str.length; i < il; i++) {
            str[i] = str[i].split(sep2);
            obj[str[i][0]] = str[i][1];
        }
        return obj;
    } else {
        return false;
    }
};

// ------------------------ Get value from Querystring ------------------------

cpbe.getQueryValue = function(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0, il=vars.length; i<il; i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
			return pair[1];
		}
	}
} 


// ------------------------ Input Tails ------------------------

cpbe.inputTail_init = function(){
	$('.inputTail').each(function(){
		var input = $(this).prev();
		
		input.data('inputTail', $(this).text())
		
		cpbe.inputTail(input);
		
		input.click(function(){
			if ($(this).hasClass('noVal') || $(this).hasClass('error')) {
				$(this).val('').removeClass('noVal').removeClass('error');
			}
		});
		
		input.blur(function(){
			cpbe.inputTail($(this));
		});
	});
};

cpbe.inputTail = function(me){
	if (me.val() == '' || me.val() == me.data('inputTail')) {
		me
			.val(me.data('inputTail'))
			.addClass('noVal');
	} else {
		me.removeClass('noVal');
	}
}

// ------------------------ Override AJAX hyperlinks ------------------------

cpbe.overrideAjax = function() {
    $('a[rel=ajax], a[rel=modal], a[rel=compo], a[rel=postRegForm], a[rel=finish], a[rel=postQuestionForm]').live('click', function(e) {
        if (e.button !== 2 && $(document.body).hasClass('modalAjax') === false) {
            $(this).trigger('customClick');
            $(this).trigger('liveClick');
            return false;
        }
    });
};

// ------------------------ Ajax Hyperlink ------------------------

cpbe.ajaxHyperlink = {};

cpbe.ajaxHyperlink.init = function() {
    $('a[rel=ajax]').live('liveClick', function() {

        var ajaxUrl = $(this).attr('href');

        $.ajax({
            url: ajaxUrl,
            type: 'GET',
            cache: false,
            success: function(data) {
                cpbe.scope.modals.find('.modal')
					.remove();

                cpbe.scope.modals
					.append($(data).find('.modal'));

                cpbe.modal.open(cpbe.scope.modals.find('.modal'));
            }
        });

    });
};

// ------------------------ Modal link ------------------------

cpbe.modallink = {};

cpbe.modallink.init = function() {
	
	$('#content a[rel=modal]').live('liveClick', function() {
		//cpbe.log('LIVECLICK - - - - modal');
        var modalId = $(this).attr('href');
		var waitCheck = $(this).parents('.wait');
		if (waitCheck.length == 0) {
			cpbe.deeplink.set('modal',modalId.replace('#',''));
		}
    });
	
	$('a[rel=compo]').live('liveClick', function() {
        var modalId = $(this).attr('href');
		var currentModal = $('.modal:visible')
        if (currentModal.length > 0) {
            $('.modal:visible').fadeOut('fast', function() {
				if ($(modalId))
                cpbe.modal.open($(modalId));
            });
        } else {
            cpbe.modal.open($(modalId));
        }
    });
	
	$('#modals a.prev[rel=modal]').live('liveClick', function() {
        var modalId = $(this).attr('href');
		var currentModal = $('.modal:visible')
        if (currentModal.length > 0) {
            $('.modal:visible').fadeOut('fast', function() {
				if ($(modalId))
                cpbe.modal.open($(modalId));
            });
        } else {
            cpbe.modal.open($(modalId));
        }
    });

    $('a.next[rel=modal]').live('liveClick', function() {
        var errorChk = cpbe.formErrorCheck($(this).parents('.modal').eq(0));

        if (errorChk == 0) {
            var modalId = $(this).attr('href');
			var currentModal = $('.modal:visible')
	        if (currentModal.length > 0) {
	            $('.modal:visible').fadeOut('fast', function() {
					if ($(modalId))
	                cpbe.modal.open($(modalId));
	            });
	        } else {
	            cpbe.modal.open($(modalId));
	        }

        } else {
			setTimeout(function(){
				$('.errorFlag.alert tt').fadeOut(1500,function(){
					$(this).parent().removeClass('alert');
					this.style.display = '';
				});
			},700);
		}
    });

    $('a[rel=finish]').live('liveClick', function() {
        var currentModal = $('.modal:visible');
        if (currentModal.hasClass('dontAsk') === false) {
            cpbe.errorMsg.show('errorMsg_0');
        } else {
			//cpbe.deeplink.set('modal',false);
        	cpbe.modal.close(currentModal);
        }
        return false;
    });
	
	$('#modals a[rel=print]').live('click', function() {
		window.print();
		return false;
	});
	
	$('#modals a[rel=share]').live('click', function() {
		cpbe.modal.close($('.modal:visible'));
		cpbe.shareFrame.show();
		return false;
	});
	
	
};


// ------------------------ postRegForm ------------------------

cpbe.postRegForm = {};

cpbe.postRegForm.init = function() {
    $('a[rel=postRegForm]').live('liveClick', function() {

		that = this;
		var errorChk = cpbe.formErrorCheck($(this).parents('.modal').eq(0));
		
		if (errorChk == 0) {
			result = {};
			
			$(document.body).addClass('modalAjax');
			cpbe.w8('start');
			//cpbe.oldCon.log('w8 started');
						
			$("input[name^=x_]:not(:radio):not(:checkbox)").each(function(){
				elem = $(this);
				//cpbe.oldCon.log('adding' + elem.val() + ' to ' + elem.attr("name"));
				result[elem.attr("name")] = elem.val();
			});
			
			$("input[name^=x_]:radio:checked").each(function(){
				elem = $(this);
				//cpbe.oldCon.log('adding' + elem.val() + ' to ' + elem.attr("name"));
				result[elem.attr("name")] = elem.val();
			});
			
			$("input[name^=x_]:checkbox:checked").each(function(){
				elem = $(this);
				//cpbe.oldCon.log('adding' + elem.val() + ' to ' + elem.attr("name"));
				result[elem.attr("name")] = elem.val();
			});
			
			$("select[name^=x_]").each(function(){
				elem = $(this);
				//cpbe.oldCon.log('adding' + elem.val() + ' to ' + elem.attr("name"));
				result[elem.attr("name")] = elem.val();
			});
			
			
			$.ajax({
				//type: 'GET',
				type: 'POST',
				url: "/Templates/Campaigns/SDC2010/Handlers/Register.ashx", // + resultStr,
				data: result,
				success: function(response){
					//cpbe.oldCon.log('SUCCESS! - ' + response);
					userInfo = eval("(" + response + ")");
					
					var modalId = $(that).attr('href');
					//cpbe.oldCon.log('modalId: ' + modalId);
					
					var currentModal = $('.modal:visible')
					if (currentModal.length > 0) {
						$('.modal:visible').fadeOut('fast', function(){
							cpbe.modal.open($(modalId));
						});
					}
					else {
						cpbe.modal.open($(modalId));
					}
					
					$(document.body).removeClass('modalAjax');
					cpbe.w8('stop');
					//cpbe.oldCon.log('success stopped');
				},
				complete: function() {
					//cpbe.oldCon.log('Complete!');
					$(document.body).removeClass('modalAjax');
					cpbe.w8('stop');
					//cpbe.oldCon.log('Complete stopped');
				}
			});
			
		}
	});
};

// ------------------------ postQuestionForm ------------------------

cpbe.postQuestionForm = {};

cpbe.postQuestionForm.init = function() {
    $('a[rel=postQuestionForm]').live('liveClick', function() {

        //cpbe.log('a[rel=postQuestionForm] clicked...');

        var modalId = $(this).attr('href');
        var result = [];

        $('input.hiddenPageId').each(function() {
            var currentModal = $(this).parents('.modal').eq(0);
            that = this;
            $("input[name^=quest]:radio:checked", currentModal).each(function() {
                elem = $(this);
                result.push($(that).val() + ':' + elem.val());
            });

        });



        var resultStr = 'answers=' + result.join(';');
        resultStr += '&uid=' + userInfo.uid;
        resultStr += '&checksum=' + userInfo.checksum;

        resultStr += '&x_email=' + $('[name=x_email]').val();
        resultStr += '&x_email2=' + userInfo.email;

        resultStr += '&x_emailSubject2=' + $('[name=x_emailSubject2]').val();
        resultStr += '&x_emailBody2=' + $('[name=x_emailBody2]').val();
        resultStr += '&x_numquestions=' + $('[name=x_numquestions]').val();
        resultStr += '&x_language=' + $('[name=x_language]').val();
        resultStr += '&x_stremailfrom=' + $('[name=x_stremailfrom]').val();
        resultStr += '&x_otherquestion=' + $('[name=x_otherquestion]').val();

        //cpbe.log(resultStr);

        cpbe.w8('start');

        $.ajax({
            //url: '/YETD/Register/Questions/' + resultStr,
            //type: 'GET',
            url: '/YETD/Register/Questions/',
            type: 'POST',
            data: resultStr,
            success: function() {

                var currentModal = $('.modal:visible');

                //cpbe.log('current visilbe is: ' + currentModal.length + ' / ' + currentModal.attr('id'));

                if (currentModal.length > 0) {
                    $('.modal:visible').fadeOut('fast', function() {
                        //cpbe.log('was visible');
                        cpbe.modal.open($("#success"));
                    });
                } else {
                    //cpbe.log('was not visible');
                    cpbe.modal.open($("#success"));
                }
            },
            complete: function() {
                cpbe.w8('stop');
            }
        });


    });
};


// ------------------------ form error handling ------------------------

cpbe.formErrorCheck = function(jQObj) {
    var errorCount = 0;
	var emailTest = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;

	// ---- throw error if the inputs are empty ----
    $('.errorFlag[title=notNull]', jQObj).each(function() {
        $(this).removeClass('alert');

        var currentError = 0;

        if ($("input[type=text][value=''], input[type=password][value='']", $(this).parent()).length > 0) {
            currentError++;
        }

        if ($("input[type=radio], input[type=checkbox]", $(this).parent()).length > 0 && $("input:checked", $(this).parent()).length == 0) {
            currentError++;
        }

        if ($("textarea:empty", $(this).parent()).length > 0) {
            currentError++;
        }

        if ($("select", $(this).parent()).length > 0 && $("select[value='']", $(this).parent()).length > 0) {
            currentError++;
        }

        if (currentError > 0) {
            $(this).addClass('alert');
            errorCount++;
        }
    });
	
	// ---- throw error if e-mail inputs are empty or has wrong format ----
	$('.errorFlag[title=email]', jQObj).each(function() {
        $(this).removeClass('alert');
        var currentError = 0;

		//cpbe.log('.errorFlag[title=email]');

        $("input[type=text]", $(this).parent()).each(function(i){
			var currentVal = $(this).val();
			//cpbe.log('nr ' + i + ', currentVal: ' + currentVal);
			//cpbe.log('emailTest.test(currentVal) = ' + emailTest.test(currentVal));
			if (currentVal == '' || emailTest.test(currentVal) == false) {
				currentError++;
			}
		});
		
		if (currentError > 0) {
            $(this).addClass('alert');
            errorCount++;
        }
    });

    return errorCount;
}

// ------------------------ Message box ------------------------

cpbe.errorMsg = {};

cpbe.errorMsg.init = function() {
    $('.msg', cpbe.scope.msg).bind('cancel', function() {
        cpbe.errorMsg.close();
    });

    $('.close', cpbe.scope.msg).click(function() {
        $('.msg:visible', cpbe.scope.msg).trigger('cancel');
        return false;
    });

    $('.ok', cpbe.scope.msg).click(function() {
        $(this).parent().trigger('ok');
        return false;
    });

    $('.cancel', cpbe.scope.msg).click(function() {
        $(this).parent().trigger('cancel');
        return false;
    });

    $('.true', cpbe.scope.msg).click(function() {
        $(this).parent().trigger('true');
        return false;
    });

    $('.false', cpbe.scope.msg).click(function() {
        $(this).parent().trigger('cancel');
        return false;
    });


    // ---- error messages, callbacks ----

    $('.errorMsg_0').bind('ok', function() {
        cpbe.modal.close(cpbe.scope.modals.find('.modal'));
		//cpbe.deeplink.set('modal',false);
        cpbe.errorMsg.close();
    }).bind('cancel', function() {
        cpbe.errorMsg.close();
    });
};

cpbe.errorMsg.show = function(errorClass) {
	var wTop = ($(window).scrollTop() == 0) ? ($(window).scrollTop()+170) : ($(window).scrollTop()+90);
	
	$('#msg').css({
		'top': wTop+'px'
	});
    $('#msgShade, #msg').show();
    $('.msg.' + errorClass, cpbe.scope.msg).show();
};

cpbe.errorMsg.close = function() {
    $('.msg:visible', cpbe.scope.msg).hide();
    $('#msgShade, #msg').hide();
	cpbe.deeplink.set('modal',false);
};

// ------------------------ Open links in new windows ------------------------

cpbe.relWindow = function() {
    $('a[rel=blank]').live('click', function() {
        window.open($(this).attr('href'));
        return false;
    });
};

// ------------------------ Open modal layers ------------------------

cpbe.modal = {};

cpbe.modal.open = function(jQobj) {
	//cpbe.log('modal.open: ' + jQobj.attr('id'));
	
	var wTop = ($(window).scrollTop() == 0) ? ($(window).scrollTop()+112) : ($(window).scrollTop()+30);
	
	$(jQobj).css({
		'top': wTop+'px'
	});
	
    jQobj.fadeIn('normal');
	
	AlignLabels($(jQobj).find('fieldset'), '.c-c_1 label, .c-c-c_1 label, .field_radio_2 strong');
	
    $(window).trigger('show.modalShade');	
    $(window).trigger('open.modal');
	
	if (jQobj.attr('id') == 'Competition') {
		cpbe.trackStats('/RegistrationForm');
	} else if (jQobj.attr('id') == 'modal_5') {
		cpbe.trackStats('/Competition');
	} else if (jQobj.attr('id') == 'mediaEmbedCode') {
		cpbe.trackStats('/Embed/'+cpbe.deeplink.get('media'));
	}

};

cpbe.modal.close = function(jQobj) {
	$(document.body).removeClass('modalAjax');
    jQobj.fadeOut('normal',cpbe.modal.cleanUp);

    $(window).trigger('close.modal');
    $(window).trigger('hide.modalShade');
};

cpbe.modal.cleanUp = function(){
	$('.requestedAtPageLoad').remove();
	//cpbe.log('cleaning up modals');
}

cpbe.modal.shade = function(onOff) {
    if (onOff === true) {
        if (cpbe.browser.ie) {
            cpbe.scope.modalShade.show();
        } else {
            cpbe.scope.modalShade.fadeIn('fast');
        }
    } else if (onOff === false) {
        if (cpbe.browser.ie) {
            cpbe.scope.modalShade.hide();
        } else {
            cpbe.scope.modalShade.fadeOut('fast');
        }
    };
};

cpbe.modal.init = function() {
    $(window).bind('show.modalShade', function() {
        cpbe.modal.shade(true);
    }).bind('hide.modalShade', function() {
        cpbe.modal.shade(false);
    });

    $('#modals .close').live('click', function() {
        var currentModal = $('.modal:visible');
        if (currentModal.hasClass('compo')) {
            cpbe.errorMsg.show('errorMsg_0');
        } else {
            cpbe.modal.close(currentModal);
			cpbe.deeplink.set('modal',false);
			//cpbe.log('//// modal close ////');
        }
        return false;
    });

    $('#modalShade').click(function() {
        var currentModal = $('.modal:visible');
        if (currentModal.hasClass('compo')) {
            cpbe.errorMsg.show('errorMsg_0');
        } else {
            cpbe.modal.close(currentModal);
			cpbe.deeplink.set('modal',false);
			//cpbe.log('//// shade close ////');
        }
        return false;
    });
};

// ------------------------ Allow action on input  ------------------------

cpbe.allowOnInput = {};

cpbe.allowOnInput.init = function() {
    $('.form_checkInputsThenAllow :text, .form_checkInputsThenAllow :password').keyup(function() {

        //cpbe.log($(this).val());

        var scope = $(this).parents('.form_checkInputsThenAllow');
        var buttons = $('.allowOnInput', scope);
        if ($(this).val() == '') {
            buttons.attr('disabled', 'disabled');
        } else {
            buttons.removeAttr('disabled');
        }
    });

    $('.allowOnInput').click(function() {
        var scope = $(this).parents('.form_checkInputsThenAllow');
        var input = $(':text, :password', scope).eq(0);

        //cpbe.log('input: ' + input.val());

        if (input.val() == '') {
            $(this).attr('disabled', 'disabled');
            return false;
        } else {
            $(this).removeAttr('disabled');
            $(this).trigger('allow');
            return false;
        }
    });

    $('.allowOnInput').bind('allow', function() {
        var resultStr = '';
		
		resultStr += 'x_emailShareSubject=' + $('[name=x_emailShareSubject]').val();
		resultStr += '&x_emailShareBody=' + $('[name=x_emailShareBody]').val();
		resultStr += '&x_baseUrl=' + $('[name=x_baseurl]').val();
		resultStr += '&tipsa=' + $('[name=tipsa]').val();
		resultStr += '&x_stremailfrom=' + $('[name=x_stremailfrom]').val();

        //cpbe.log(resultStr);

        $.ajax({
            //url: '/Templates/Campaigns/SDC2010/Handlers/Share.ashx' + resultStr,
            //type: 'GET',
			url: '/Templates/Campaigns/SDC2010/Handlers/Share.ashx',
            type: 'POST',
			data: resultStr,
            success: function() {
				if (window.thankYouShare) {
					alert(thankYouShare);
				}
				else {
					alert('An e-mail has been sent. Thank you!');
				}
			}
        });
		
        return false;
    });
};


// ------------------------ Check if we should go to the questions form  ------------------------

cpbe.check_gotoQuestions = function(modalJQObj) {
	var uid = cpbe.getQueryValue('uid');
	var checksum = cpbe.getQueryValue('checksum');
	var email = cpbe.getQueryValue('x_email');
	
	uid = (uid == undefined) ? '' : uid;
	checksum = (checksum == undefined) ? '' : checksum;
	email = (email == undefined) ? '' : email;
	
	if (uid !== '' && checksum !== '' && email !== '') {
		userInfo.uid = uid;
		userInfo.checksum = checksum;
		userInfo.email = email;
		cpbe.modal.open(modalJQObj);
	}
}

// ------------------------ Views ------------------------

cpbe.view = {};

cpbe.view.init = function() {
	$('[rel=view]',cpbe.scope.nav2).click(function(){
		var viewId = $(this).attr('href');
		cpbe.deeplink.set('view',viewId.replace('#',''));
		return false;
	});
};

// ------------------------ News listing ------------------------

cpbe.newsListing = {};

cpbe.newsListing.init = function() {
	//$('#content .modal.newsItem').appendTo('#modals');
	$('#content .modal.newsItem').each(function(){
		$(this).parent().data('newsId',$(this).attr('id'));
		//cpbe.log($(this).parent().data('newsId'));
		$(this).appendTo('#modals');
	});
	
	$('.newsListing .nav a').live('click',function(){
		cpbe.newsListing.load($(this).parents('.newsListing').eq(0),$(this).attr('href'));
		//cpbe.log('attempted list load: ' + $(this).attr('href'));
		return false;
	});
};

cpbe.newsListing.load = function(scope,pageUrl) {
	scope.addClass('wait');
	
	$.ajax({
		url: pageUrl,
		type: 'GET',
		success: function(data) {
			//cpbe.log('list load success');
			scope.find('ul').eq(0).find('li').each(function(){
				$('#'+$(this).data('newsId')).remove();
			});
			
			scope
				.find('ul, .nav')
					.remove()
					.end()
				.append(data)
				.find('.modal').each(function(){
					$(this).parent().data('newsId',$(this).attr('id'));
					$(this).appendTo('#modals');
				});
				
			MediaNewsAligner();
				
			scope.find('a[rel=modal]').each(function(){ // safeguard, if the HREF's have full URL's
				var href = $(this).attr('href');
				if (href.indexOf('#') != 0) {
					//cpbe.log('whoopws: ' + href);
					href = href.split('#');
					$(this).attr('href', '#' + href[href.length - 1]);
					//cpbe.log($(this).attr('href'));
				}
			}); 
			
			if (cpbe.browser.ie6) {
				cpbe.sixshooter.newsListing();
			}
			
			scope.removeClass('wait');
		},
		complete: function(){
			scope.removeClass('wait');
		}
	});
};

// ------------------------ deep linking ------------------------

cpbe.deeplink = {};
cpbe.deeplink.hash = '';

cpbe.deeplink.init = function() {
	$.historyInit(cpbe.deeplink.load);
	if (window.location.hash == '' || window.location.hash == '#') {
		cpbe.deeplink.load('FIRSTRUN');
	}
};

cpbe.deeplink.load = function(hash) {
	//cpbe.log('DEEPLINk.LOAD = = = = = hash: ' +hash );
	//window.location.hash == '';
	cpbe.deeplink.hash = hash;
	
	if (hash !== '') {
		if (hash === 'FIRSTRUN') {
			hash = '';
			cpbe.deeplink.hash = hash;
		}
		
		
		// ..... Handle modals .....
		var modalId = cpbe.deeplink.get('modal');
		if (modalId !== false) {
			var modalName = modalId.replace('id','');
			modalId = '#' + modalId;
			if ($(modalId).length == 0) { // modal not in HTML; request from server
			cpbe.w8('start');
				$.ajax({
					type: 'GET',
					url: '/Templates/Campaigns/SDC2010/Handlers/GetItem.aspx?sectionPageId='+modalName+'&lang='+lang,
					success: function (data) {
						//cpbe.log('success dude!');
						$('#modals').append(data);
						if ($(modalId).length > 0) { // to make sure we really got the right article
							$(modalId).addClass('requestedAtPageLoad');
							cpbe.modal.open($(modalId));
							cpbe.trackStats('/Article/'+modalId);
						}
					},
					complete: function () {
						//cpbe.log('completad dude!');
						cpbe.w8('stop');
					}
				});
			} else { // launch modal
				var currentModal = $('.modal:visible');
				if (currentModal.length > 0) {
					modalName = modalId.replace('#','');
					//cpbe.log('MODAL WAS VISIBLE - ' + currentModal.eq(0).attr('id') + ' / ' + modalName);
					if (currentModal.eq(0).attr('id') != modalName) { // safeguard for weird doublelaunch bug
						$('.modal:visible').fadeOut('fast', function(){
							if ($(modalId)) {
								cpbe.modal.open($(modalId));
								cpbe.trackStats('/Article/'+modalId);
							}	
						});
					}
				} else {
					//cpbe.log('opening modal from deeplink');
					cpbe.modal.open($(modalId));
					cpbe.trackStats('/Article/'+modalId);
				}
			}
		} else {
			$('.modal:visible, #modalShade').fadeOut('fast');
		}
		
		
		// ..... Handle views .....
		var viewId = cpbe.deeplink.get('view');
		if ($('#' + viewId).hasClass('active') == false) {
			$('.selected', cpbe.scope.nav2).removeClass('selected');
			$('.view', cpbe.scope.views).removeClass('active');
			if (viewId !== false) {
				$('[href*=#' + viewId + ']', cpbe.scope.nav2).parent().addClass('selected');
				$('#' + viewId).addClass('active');
				cpbe.trackStats('/view/'+viewId);
			} else {
				$('[rel=view]', cpbe.scope.nav2).eq(0).parent().addClass('selected');
				$('.view', cpbe.scope.views).eq(0).addClass('active');
			}
		}


		// ..... Handle media .....
		var mediaId = cpbe.deeplink.get('media');
		if (mediaId !== false) {
			//cpbe.log('FOUND MEDIA HASH: ' + mediaId);
			mediaId = parseInt(mediaId);
			cpbe.mediaPlayer.load(mediaId);
			cpbe.trackStats('/Loading/'+mediaId,mediaId);
		}
	}
};

cpbe.deeplink.set = function(name,val) {
	var hashmap = cpbe.deeplink.hash;
	
	//cpbe.log('.set getting map: '+hashmap);
	//cpbe.log('NAME:'+name+', VAL:'+val);
	if (hashmap === '') {
		if (val !== false) {
			//cpbe.log('hash was empty...');
			if (name == 'media') {
				cpbe.trackStats('/Loading/'+val,val);
			}
			hashmap = name + ':' + val;
		}
	} else {
		hashmap = hashmap.split('/');
		//cpbe.log('hashmap.length: '+hashmap.length);
		
		var foundCheck = false;
		
		for (var i = 0; i < hashmap.length; i++) {
			var currentPair = hashmap[i];
			currentPair = currentPair.split(':');
			//cpbe.log('COMPARING: '+ currentPair[0] + ' / ' + name);
			if (currentPair[0] === name) {
				if (val === false) {
					//cpbe.log('val is false, hashmap: ' + hashmap);
					hashmap.splice(i,1);
					//cpbe.log('val was false, hashmap: ' + hashmap);
				} else {
					currentPair[1] = val;
					hashmap[i] = currentPair.join(':');
				}
				foundCheck = true;
			}
		}
		
		if (foundCheck === false) { // if the name/val did't exist in the hash
			//cpbe.log('COULDnT FIND!');
			if (val !== false) {
				hashmap.push(name+':'+val);
			}
		}
		
		//cpbe.log('hashmap: '+hashmap);
	
		hashmap = hashmap.join('/');
	}
		
	
	//cpbe.log('will set hash map: '+hashmap);
	
	$.historyLoad(hashmap);
};

cpbe.deeplink.get = function(name) {
	var hashmap = cpbe.deeplink.hash;
	hashmap = hashmap.split('/');
	
	for (var i = 0, il = hashmap.length; i < il; i++) {
		var currentPair = hashmap[i];
		currentPair = currentPair.split(':');
		
		if (currentPair[0] === name) {
			return currentPair[1];
		}
	}
	return false;
};

// ------------------------ media player ------------------------

cpbe.mediaPlayer = {};
cpbe.mediaPlayer.available = 0;
cpbe.mediaPlayer.que = '';
cpbe.mediaPlayer.hashed = false;
cpbe.mediaPlayer.hashInitiated = false;
cpbe.mediaPlayer.allowEmbed = true;

cpbe.mediaPlayer.init = function() {

    if (window.media) {
	
		//cpbe.log('init flash 1st');
		swfobject.embedSWF("/Templates/Campaigns/SDC2010/Swf/mediaPlayer/includes/swf/unit_preloader.swf", "mediaFlash", "1000", "470", "9.0.0", "", media.flashvars, media.params, media.attributes,function(){
			//cpbe.log('1st flash inited!');
		});
		cpbe.mediaPlayer.available = 1;
	}
	
	cpbe.comments.init();
	
	$('#mediaSharing [rel=upload]').click(function(){
		$(window).trigger('show.modalShade');
		swfobject.embedSWF("http://www2.scania.com/flash_units/includes/swf/unit_share_upload.swf", "embedder", "621", "345", "9.0.0", "", embedder.flashvars, embedder.params, embedder.attributes);
		return false;
	});
	
	$('#mediaSharing [rel=embed]').click(function(){
		if (cpbe.mediaPlayer.allowEmbed === true) {
			cpbe.modal.open($('#mediaEmbedCode'));
		}
		return false;
	});
	
	$('#modalShade').click(function(){
		$('object#embedder, embed#embedder').replaceWith('<div id="embedder"></div>');
		return false;
	});
};

cpbe.mediaPlayer.load = function(itemId) {
	//cpbe.log('§§§§ cpbe.mediaPlayer.available §§§ : '+cpbe.mediaPlayer.available);
	if (cpbe.mediaPlayer.available === 2) {
		if (cpbe.mediaPlayer.que !== '') {
			//cpbe.log('|| |> '+cpbe.mediaPlayer.que);
			cpbe.getFlash('mediaFlash').showVideo(parseInt(cpbe.mediaPlayer.que));
			cpbe.mediaPlayer.que = '';
		} else {
			//cpbe.log('|> '+itemId);
			cpbe.getFlash('mediaFlash').showVideo(parseInt(itemId));
		}
	} else if (cpbe.mediaPlayer.available === 1) {
		//cpbe.log('setting que');
		cpbe.mediaPlayer.que = itemId;
	}
};

// ........................ JS-to-Flash ........................


//cpbe.getFlash('mediaFlash').showVideo(p_videoId);
//cpbe.getFlash('mediaFlash').changeLayout(p_layout);
//cpbe.getFlash('mediaFlash').playVideo();
//cpbe.getFlash('mediaFlash').pauseVideo();



// ........................ Flash-to-JS ........................

cpbe.mediaPlayer.onChangeVideoHandler = function(p_videoId, p_videoUrl, p_videoDescription, p_videoEmbedCode, p_videoMarket, p_videoLanguage) {	
	//cpbe.log('I CAN HAZ CALLBACK');

	if (cpbe.mediaPlayer.available < 2) {
		//cpbe.log('FIRST CALLBACK - ' + p_videoId + ' / ' +cpbe.mediaPlayer.que);
		cpbe.mediaPlayer.available = 2;
		
		if (cpbe.mediaPlayer.que != '') {
			var q = cpbe.mediaPlayer.que;
			var w8 = 0;
			setTimeout(function(){
				//cpbe.log('timeout from media load callback (flash->js), currently '+w8+' ms');
				cpbe.deeplink.set('media',q);
				cpbe.comments.list(q);
				//$('#embedData').text(q);
			},w8);
		} else {
			cpbe.comments.list(p_videoId);
		}
	} else {
		//cpbe.log('SECOND CALLBACK - ' + p_videoId + ' / ' +cpbe.mediaPlayer.que);
		p_videoId += '';
		var currentId = cpbe.deeplink.get('media');
		
		if (p_videoId !== currentId) {
			//cpbe.log('change!');
			if (cpbe.mediaPlayer.que != '') {
				cpbe.deeplink.set('media',cpbe.mediaPlayer.que);
				cpbe.comments.list(cpbe.mediaPlayer.que);
				//$('#embedData').text(cpbe.mediaPlayer.que);
			} else {
				cpbe.deeplink.set('media',p_videoId);
				cpbe.comments.list(p_videoId);
				//$('#embedData').text(p_videoEmbedCode);
			}
		}
	}
	
	var fileTypeCheck = p_videoUrl.substr((p_videoUrl.length - 4),4);
	if (fileTypeCheck != '.jpg') {
		cpbe.mediaPlayer.allowEmbedder(true);
	} else {
		cpbe.mediaPlayer.allowEmbedder(false);	
	}
	
	$('#embedData').text(p_videoEmbedCode);	
};
	
	

cpbe.mediaPlayer.onShareClickHandler = function(p_x, p_y, p_width, p_height) {
	cpbe.shareFrame.show();
};


cpbe.mediaPlayer.onEmbedClickHandler = function(p_embedCode) {
	cpbe.modal.open($('#mediaEmbedCode'));
};


cpbe.mediaPlayer.onFullScreenClickHandler = function() {};
cpbe.mediaPlayer.onVideoCompleteHandler = function() {};
cpbe.mediaPlayer.onLayoutChangeHandler = function(p_layout) {};

// ........................ Embed flash ........................

cpbe.mediaPlayer.allowEmbedder = function(setState){	
	if (setState === true) {
		cpbe.mediaPlayer.allowEmbed = true;
		$('#mediaSharing [rel=embed]').fadeTo(0, 1).css('cursor','pointer');
	} else if (setState === false) {
		cpbe.mediaPlayer.allowEmbed = false;
		$('#mediaSharing [rel=embed]').fadeTo(0, 0.5).css('cursor','default');
	}
};

cpbe.mediaPlayer.closeEmbedder = function(){
	$(window).trigger('hide.modalShade');
	setTimeout(function(){
		$('object#embedder, embed#embedder').replaceWith('<div id="embedder"></div>');
	},200);
};


// ------------------------ media player comments ------------------------

cpbe.comments = {};

cpbe.comments.chacheFix = '0';
cpbe.comments.goDown = false;
cpbe.comments.goUp = false;

cpbe.comments.init = function(){
	cpbe.inputTail_init();
	
	//cpbe.comments.hideScroll();
	
	$('#commenting a').click(function(){
		var commentingField = $('#commenting');
		if (commentingField.hasClass('wait') === false) {
			
			var comment = commentingField.find('textarea').val();
			var commentTail = commentingField.find('.inputTail').eq(0).text();
			var name = commentingField.find('input').val();
			var nameTail = commentingField.find('.inputTail').eq(1).text();
			
			if ((comment != '' && comment != commentTail) && (name != '' && name != nameTail)) {
				cpbe.comments.post(comment,name);
			} else {
				var btn = commentingField.find('a');
				btn.css('position','relative');
				var left = true;
				var timer = 0;
				
				cpbe.comments.shrug = setInterval(function(){
					if (timer == 6) {
						btn.css({
							left: '0px',
							position: 'static'
						});
						clearInterval(cpbe.comments.shrug);
					} else if (left == true) {
						btn.css('left','-3px');
						timer++;
						left = false;
					} else {
						btn.css('left','3px');
						left = true;
						timer++;
					}
				},80);
			}
		}
		return false;
	});
	
	$('#commentList .footer > a').live('click',function(){
		if ($('#commenting').hasClass('wait') === false) {
			var id = $(this).parents('li').eq(0).attr('id');
			cpbe.comments.report(id.replace('msg',''));
		}
		return false;
	});
	
	$('#commentList .up').mousedown(function(){
		if (cpbe.comments.goDown) {
			clearInterval(cpbe.comments.goDown);
		}
		cpbe.comments.goUp = setInterval(function(){
			var list = $('#commentList .\\+')[0];
			if (list.scrollTop == 0) {
				clearInterval(cpbe.comments.goUp);
			}
			list.scrollTop = list.scrollTop - 10;
		},50);
	}).mouseup(function(){
		clearInterval(cpbe.comments.goUp);
	}).mouseout(function(){
		clearInterval(cpbe.comments.goUp);
	}).click(function(){
		var list = $('#commentList .\\+')[0];
		list.scrollTop = list.scrollTop - 10;
		
		return false;
	});
	
	$('#commentList .down').mousedown(function(){
		if (cpbe.comments.goUp) {
			clearInterval(cpbe.comments.goUp);
		}
		cpbe.comments.goDown = setInterval(function(){
			var list = $('#commentList .\\+')[0];
			list.scrollTop = list.scrollTop + 10;
		},50);
	}).mouseup(function(){
		clearInterval(cpbe.comments.goDown);
	}).mouseout(function(){
		clearInterval(cpbe.comments.goDown);
	}).click(function(){
		var list = $('#commentList .\\+')[0];
		list.scrollTop = list.scrollTop + 10;
		return false;
	});
	
};

cpbe.comments.list = function(itemId) {
	$.ajax({
		url: 'http://www3.scania.com/Templates/Campaigns/SDC2010/Handlers/MediaComments.aspx?mediaid='+itemId,
		type: 'GET',
		dataType: 'html',
		cache: false,
		success: function(data) {
			//cpbe.log('listmsg success');
			cpbe.scope.commentList
				.find('ul')
					.remove()
					.end()
				.append(data);
			cpbe.comments.hideScroll();
		},
		error: function(_a,_b,_c) {
			//cpbe.log('listmsg ERROR ' + _b);
			//cpbe.log('listmsg ERROR ' + _c);
		}
	});
}

cpbe.comments.post = function(comment,name) {
	var mediaId = cpbe.deeplink.get('media');
	
	if (mediaId !== false) {
		$('#commenting').addClass('wait');
		var query = '?mediaid=' + mediaId;
		query += '&name=' + encodeURI(name);
		query += '&comment=' + encodeURI(comment);
		
		var ajaxUrl = 'http://www3.scania.com/Templates/Campaigns/SDC2010/Handlers/MediaComments.aspx' + query;
		
		$.ajax({
			url: ajaxUrl,
			type: 'GET',
			dataType: 'html',
			cache: false,
			success: function(data) {
				$('#commenting').removeClass('wait');
				cpbe.scope.commentList
					.find('ul')
						.remove()
						.end()
					.append(data);
				cpbe.comments.hideScroll();
				
				$('#commenting')
					.find('input[type=text]')
						.val('')
						.blur()
						.end()
					.find('textarea')
						.val('')
						.blur();
			}
		});
	}
}

cpbe.comments.report = function(commentId) {
	cpbe.comments.chacheFix += '0';
	
	var itemId = cpbe.deeplink.get('media');
	var vote = cpbe.comments.chacheFix + parseInt(commentId, 10);
	var ajaxUrl = 'http://www3.scania.com/Templates/Campaigns/SDC2010/Handlers/MediaComments.aspx?mediaId='+itemId+'&vote='+vote;
	
	//alert(ajaxUrl);
	
	$.ajax({
		url: ajaxUrl,
		type: 'GET',
		dataType: 'html',
		success: function(data) {
			//cpbe.log('report success');
			//alert(data);
			cpbe.scope.commentList
				.find('ul')
					.remove()
					.end()
				.append(data);
			cpbe.comments.hideScroll();
		},
		error: function(_a,_b,_c) {
			//alert('error');
			//cpbe.log('report ERROR ' + _b);
			//cpbe.log('report ERROR ' + _c);
		}
	});
}

cpbe.comments.hideScroll = function() {
	var commentList = $('#commentList');
	var commentArea = commentList.find('.\\+');
	var commentListContent = commentArea.find('ul').eq(0);
	
	commentArea.css('width','auto');
	
	if(commentListContent.height() > commentArea.height()) {
		commentList.addClass('long');
		var crouchingListHiddenScrollbar = commentList.width();
		crouchingListHiddenScrollbar = crouchingListHiddenScrollbar - commentListContent.outerWidth();
		crouchingListHiddenScrollbar += commentList.width();
		commentArea.width(crouchingListHiddenScrollbar);
	} else {
		commentList.removeClass('long');
	}
}

// ------------------------ share from an iframe ------------------------

cpbe.shareFrame = {};

cpbe.shareFrame.show = function(){
	var shareTarget = encodeURIComponent(window.location.href);
	shareTarget = $('#shareFrameUrlPrefix').html() + shareTarget;
	$('#shareFrame iframe').attr('src',shareTarget);
	cpbe.trackStats('/Share/' + window.location.hash);
	cpbe.modal.open($('#shareFrame'));
};

// ------------------------ Wait indicator/blocker ------------------------

cpbe.w8 = function(mode) {
	var minimumWaitPeriod = 1000;
	
	if (mode == 'start') {
		$('#w8Shade, #w8').show();
		cpbe.w8.holdIt = true;
		setTimeout(function(){
			cpbe.w8.holdIt = false;
		},minimumWaitPeriod);
	} else if (mode == 'stop') {
		if (cpbe.w8.holdIt == true) {
			cpbe.w8.interval = setInterval(function(){
				if (cpbe.w8.holdIt == false) {
					$('#w8Shade, #w8').hide();
					clearInterval(cpbe.w8.interval);
				}
			},100);
		} else {
			$('#w8Shade, #w8').hide();
		}
	}
}

cpbe.w8.holdIt = false;

// ------------------------ Adjust size of flash ad ------------------------

cpbe.flashAdSetSize = function(size) {
	$('.viewColumn > object').height(size);
}

/* ------------------------ Dynamic tracking for Google Analytics ------------------------ */

cpbe.trackStats = function(trackStr,prevCheck) {
	var path = window.location.pathname;
	if ($(document.body).hasClass('tmpl_page_main')) {
		path = '/Start' + path;
	}
	if (prevCheck !== undefined) {
		//cpbe.log('has prevCheck: ' + prevCheck);
		if (prevCheck == cpbe.trackStats.doubleTrackCheck) {
			//cpbe.log('prevCheck: ' + prevCheck + ' == ' + cpbe.trackStats.doubleTrackCheck);
			return;
		}
		cpbe.trackStats.doubleTrackCheck = prevCheck;
	}
	//cpbe.log('¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ GA ¤¤¤: '+path+trackStr); // test
	
	if (window.pageTracker && window.pageTrackerGlobal) {
		pageTracker._trackPageview();
		pageTrackerGlobal._trackPageview();
	} else {
		cpbe.log('Google Analytics not properly loaded - could not track.');
	}
}

cpbe.trackStats.doubleTrackCheck = '';

// ------------------------ IE 6 stuff ------------------------

cpbe.sixshooter = {};

cpbe.sixshooter.init = function() {
		
	var logoscope = $('#logos');

	$('a',logoscope)
		.eq(0)
			.addClass('first-child')
		.end()
			.each(function(){
				var imgUrl = $(this).find('img').attr('src');
				this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader (src='"+imgUrl+"', sizingMethod='crop');";
			});
	
	$('.date + .viewColumn, .viewColumn:first-child').addClass('first');
	
	$('.help').each(function(){
		$(this).find('b').eq(0).addClass('ie6');
	}).hover(function(){
		$(this).addClass('hover');
	},function(){
		$(this).removeClass('hover');
	});
	
	cpbe.sixshooter.newsListing();
}

cpbe.sixshooter.newsListing = function(){
	$('.newsListing > ul, .mediaListing > ul').addClass('ul_ie6');
	$('.newsListing > .nav, .mediaListing > .nav').addClass('nav_ie6');
}

cpbe.ie6Alpha = function(url, method){
	if (!method) { method = 'image'; }
	var replacement = '<span class="cpbeIe6Alpha" css="zoom:1;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod='
	+ method + ' src=\''
	+ url + '\');"></span>';
	return replacement;
}

// ======================== Page Load Event handlers ========================

$(document).ready(function() {
    cpbe.browser.init();
    cpbe.scope.init();
    cpbe.overrideAjax();
    cpbe.ajaxHyperlink.init();
    cpbe.modallink.init();
    cpbe.postRegForm.init();
    cpbe.postQuestionForm.init();
    cpbe.errorMsg.init();
    cpbe.relWindow();
    cpbe.modal.init();
	cpbe.view.init();
	
	$('.socialLink a',cpbe.scope.nav2).click(function(){
		cpbe.trackStats('/FacebookClub');
	});
	
	if($(document.body).hasClass('tmpl_page_media')) {
		cpbe.mediaPlayer.init();
		
		if (cpbe.getQueryValue('upload') == 'show') {
			$('#mediaSharing [rel=upload]').click();
		}
	} else {
		cpbe.newsListing.init();
	}

	if (cpbe.browser.ie6) {
		cpbe.sixshooter.init();
	}

	cpbe.deeplink.init();

    cpbe.allowOnInput.init();
	
	if($(document.body).hasClass('tmpl_page_main')) {
		cpbe.check_gotoQuestions($('#modal_5'));
		
		$('.welcomeBox a[href*=#Competition]').click(function(){
			cpbe.modal.open($(compoName));
			return false;
		})
	}
	
	goToCompo = function() {
		cpbe.modal.open($(compoName));
	};

	$('.ad img').click(function(){
		$(this).next().click();
	});
	
	cpbe.overridden = false;
	cpbe.override = function() {
		if (cpbe.overridden == false) {
			cpbe.overridden = true;
		} else {
			cpbe.overridden = false;
		}
		
	}
	if (window.stylingLoad) {
		stylingLoad();
	}

    $(document.body).removeClass('sys_pageLoad');
    document.body.onclick = '';
});


