﻿//
// Make sure that the following colors match the schemes defined in
// css/color_scheme.css! Note that array indices start with 0, so a
// color for index N in schemeColors matches the main color of the
// CSS class scheme_<N+1>.
//
var schemeColors = [
    '#9AABBB',
    '#42AEA5',
    '#1B87C5',
    '#ffc501',//'#9C0000',
    '#86571B',
    '#94B263',
    '#994480',
    '#C6D3EF'
];


var email_pattern = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/gi;


//
// Called when the print icon is clicked.
//
function printPage()
{
	window.print();
}


function closeAllPopups()
{
    $('div.container_popup:visible').fadeOut("fast");
}


function openPopup(popupId)
{
    closeAllPopups();
    $('#' + popupId).fadeIn("fast")
        .find('div.popup_close_button').click(closeAllPopups).end();
}


//
// Initialize sIFR (replace HTML headlines with flash movies w/ embedded
// custom font)
//
function initSIFR()
{
    var bodyClass = $('body').attr('class');
    var schemeIndex = 0;
    if (bodyClass.search(/scheme_([0-9]+)/) >= 0)
        schemeIndex = (parseInt(RegExp.$1) - 1);

    var color = schemeColors[schemeIndex];
    sIFR.replaceElement(named({sSelector:".sabon", sFlashSrc:"/flash/sabon.swf",
        sColor:color, sWmode:"transparent"}));
}


//
// Dummy function, will be replaced within initFlyouts()
//
var triggerFlyout = function(blockId)
{
}


//
// Initialize flyouts
//
function initFlyouts(flyoutContainer)
{
    var container = $('#'+flyoutContainer);
	// 20080224 mh: default is first visible xtra_block:
    var activeBlock = $('div.xtra_block:visible:first', container);
    if ( $('div.xtra_block.hideme', container).size() == 1) {
		activeBlock = $('div.xtra_block.hideme', container);
	}

    var cancel = null;

    if (!container.length) {
        return;
	}

    function isActiveBlock(block)
    {
        return block && activeBlock
            && (1 == block.length == activeBlock.length)
            && (activeBlock[0] == block[0]);
    }

    triggerFlyout = function(blockId)
    {
        var block = $("#" + blockId);
        if (!block.length || isActiveBlock(block)) {
            return;
		}

        if (cancel)
            cancel();

        var cancelled = false;
        var localCancel = cancel;
        cancel = function() {
            cancelled = true;
            if (localCancel)
                localCancel();
        }

        var fadeIn = function() {
            if (!cancelled)
            {
                activeBlock = block;
                block.fadeIn("fast");
            }
        }

        if (activeBlock) {
            activeBlock.fadeOut("fast", fadeIn);
		}
        else {
            fadeIn();
		}
    }
}


function initLocationMaps()
{
    $('div.locationMap')
        .find('div.marker').click(function() {
            var panel = $(this.nextSibling);
            if (!panel.is('div.panel') || panel.is(':visible'))
                return;

            var marker = $(this);

            var map = $(this.parentNode);
            $('div.panel:visible', map).fadeOut("fast");

            var mapOffset = map.offset();
            var markerOffset = marker.offset();

            var mapWidth = map.width();
            var mapHeight = map.height();
            var panelWidth = panel.width();
            var panelHeight = panel.height();

            var left = markerOffset.left - mapOffset.left;
            var top = markerOffset.top - mapOffset.top;

            var gap = 2;

            var x = left - Math.round(panelWidth / 2);
            if (x < gap)
                x = gap;
            else if (x + panelWidth + gap > mapWidth)
                x = mapWidth - panelWidth - gap;

            var y = top - gap - panelHeight;
            if (y < 0)
            {
                y = top + marker.height() + gap;
                if (y + panelHeight > mapHeight)
                    y = mapHeight - panelHeight - gap
            }

            panel.css({left: x + "px", top: y + "px"});
            panel.fadeIn("fast");
        })
        .end()
        .find('div.panel').each(function() {
            var panel = $(this);
            $('div.closeButton', this).click(function() {
                panel.fadeOut("fast");
            });
        })
        .end();
		
		
		$('div.locationMap.locMap_v2 div.marker').unbind('click').click(function() {
			$.fancybox({
				'width'				: '700px',
				'height'			: 'auto',
				'autoScale'     	: false,
				'transitionIn'		: 'none',
				'transitionOut'		: 'none',
				'type'				: 'iframe',
				'href'				: 'http://geo-teamsite01.ads.mckinsey.com:82/html/karriere/mckinsey_treffen/uni-veranstaltungen/event.asp'
			});
		});
}


//
// Initialization code.
//

$(document).ready(function()
{
	if (typeof sIFR == "function")
		initSIFR();
    initFlyouts('container_xtra');
    initFlyouts('flyouts_content');

    initLocationMaps();

    // Accordion
    if (typeof $.fn.accordion == "function")
    {
        $("ul.accordion")
			.accordion({
				header: '.accordion_header',
				active: '.accordion_active',
				collapsible: true,
				autoHeight:true
			})
			.bind('accordionchangestart',function(event,ui){
				$(this).children('li').removeClass('selected');
				ui.newHeader.parent().addClass('selected');
			})
			.find('.accordion_active').parent().addClass('selected');
		
    }
	try{
		$('.inline_popup').fancybox({
			autoScale : false,
			onClosed : function(){$('.tabs').tabs();},
			/*scrolling: 'no',*/
			margin : 5,
			autoDimensions: true
		});
	}catch(e){}
	
	$('a.thickbox').each(function(){
		var href_params = $(this).attr('href').split('?');
		if(typeof href_params[1] === 'undefined') return;
		
		href_params = href_params[1].split('&');
		
		var fancybox_params = {};
		for (var i in href_params){
			href_params[i] = href_params[i].split('=');
			var parsed_val = parseInt(href_params[i][1]);
			fancybox_params[href_params[i][0]] = !isNaN(parsed_val) ? parsed_val : href_params[i][1];
		}
		
		if(typeof fancybox_params['TB_iframe']!== 'undefined'){
			fancybox_params['type'] = 'iframe'; 
			delete fancybox_params['TB_iframe'];
		}
		fancybox_params.autoScale = false;
		fancybox_params.margin = 5;

		$(this).data(fancybox_params).fancybox(fancybox_params);
	});
	
    // Tabs
    if (typeof $.fn.tabs == "function")
    {
        $(".tabs").tabs();
    }

	// init contact popups:
	$('div.contact_popup').each(function() {
		if (this.id.search(/contact_(.+)/) >= 0) {
			var contact_id = parseInt(RegExp.$1);
			console.log('getting AHAH for ID ' + contact_id);
			$(this).load(
				"/include/AHAH.asp"
				, { type:'contact', id:contact_id }
				//, callback()
			);
		}
		else {
			// pattern id="contact_ID" not found
		}
	});
	
	// Uni events
	$('.uni_event .event_tabs a').click(function(e){
		e.preventDefault();
	
		$('.uni_event .event_tabs a').removeClass('active');
		$(this).addClass('active');
		
		$('.uni_event').find('.event_content').hide().end().find($(this).attr('href')).show();
	})
	.eq(0).click();
});


var emailPattern = /^[^@]+@([^@\.]+\.)*[^@\.]{2,}\.[a-zA-Z]{2,6}$/gi;


function validateContactField() {
    var field = $(this);
    var error = null;
    var value = $.trim(field.val());
	var name  = field.attr("name");
	var type  = field.attr("type");
	var label = $("label[for=" + name + "]");
	
    if (value == '' ||  (field.attr('def') !== "undefined" && value == $.trim(field.attr('def'))) || (type == "radio" && $("input[name=" + name + "]:checked").length == 0) ){
        error = 'Dieses Feld muss angegeben werden.';
    } else if ((this.name.toLowerCase().indexOf('email') >= 0)
            && (!value.match(emailPattern))) {
        error = 'Bitte geben Sie eine gültige E-Mail-Adresse an.';
    }
    //var errorView = $('div.errorView', this.parentNode);
    if (error) {
        //if (errorView.length) {
        //    errorView.text(error).show();
        //} else {
        //    field.after('<div class="errorView">' + error + '</div>');
        //}
        field.addClass("invalidField").attr("title", error);
        field.parent().addClass("hasInvalidFields").find("label").attr("title", error);
        return false;
    } else {
        field.val(value).removeClass("invalidField").attr("title", "");
        field.parent().removeClass("hasInvalidFields").find("label").attr("title", "");
        //errorView.hide();
        return true;
    }
}

function validateContactForm(form) {
    var fieldQuery = '.required select, .required input, .required textarea';
    var valid = true;
	$(fieldQuery, form)
        .blur(validateContactField)
        .each(function() {
            if (!validateContactField.call(this))
                valid = false;
        });
    return valid;
}

function validateOrderForm(form) {
    var fieldQuery = '.required select, .required input, .required textarea';
    var valid = true;
	$(fieldQuery, form)
        .blur(validateContactField)
        .each(function() {
            if (!validateContactField.call(this))
                valid = false;
        });
    return valid;
}


function validate_contact_form(obj_form) {
	var aryErrors = new Array();
	$('.required select, .required input, .required textarea', $(obj_form)).each (
		function() {
			if ($.trim($(this).val()) == "") {
				aryErrors.push($(this).parent().find('label').html());
				console.log($(this).parent().find('label').html() + " -> " + $(this).val() + " :: leerer Wert nicht zugelassen");
			}
			else {
				if (this.id.indexOf('email') > 0 && !email_pattern.test($(this).val())) {
					aryErrors.push("Bitte geben Sie eine gültige E-Mail Adresse an");
					console.log($(this).parent().find('label').html() + " -> " + $(this).val() + " :: ist keine gültige E-Mail");
				}

			}
//~ 			console.log(this.id + " -> " + $(this).val());
		}
	);
	if (aryErrors.length > 0) {
		alert ("Bitte überprüfen Sie die Felder \n- " + aryErrors.join("\n- "));
		return false;
	}
	return true;
}



//
// Match.
//
function openMatch() {
	$("#match_active").show();
}

function closeMatch() {
	$("#match_active").hide();
}

function trackInterest(i_array) {

}


// MH: dummy to avoid IE throwing errors for "console.log" statements:
if (!("console" in window) || !("firebug" in console))
{
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];

    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}

function sM(pr,po,lt,cl) {
	return ('<a '+(cl?'class="'+cl+'"':'')+'href="mailto:' + pr + '&#x40;' + po + '" onfocus="if(this.blur)this.blur()">' + lt + '</a>')
}
function eM(po,pr,lt,cl) {
	document.write(sM(pr,po,lt,cl));
}
