﻿/**
 * Commerzbank AG - JavaScript
 *
 * Code licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * @project    www.commerzbank.de/com
 * @copyright  Copyright (c) 2010, Commerzbank AG. All rights reserved.
 * @copyright  Copyright (c) 2010, Namics (Deutschland) GmbH. All rights reserved.
 * @site       http://www.commerzbank.de/
 * @date       2010-06-17
 * @author     Thomas Dausner <thomas.dausner@commerzbank.com>, Commerzbank AG
 * @author     Eduard Seifert <eduard.seifert@namics.com>, Namics (Deutschland) GmbH
 */

// global cookie name
var cookie_name = 'eurohypo-cookie';

var COBA = {
	// Variables
	
	// Initialize
	init: function() {
		COBA.initTriggers();
		COBA.initToggleWrapper();
		
	},
	
	// Functions

	

	/**
	 * initTriggers
	 * @note onclick handler added for all "trigger" class elements
	 * @note special trigger for .service .dropdown and #navQuick .trigger
	 */
	initTriggers: function() {
		$('.trigger').click(function() {
			var clicked = $(this).add(
				$(this).siblings('.trigger')
			);
			var triggers = [];
			// collect all triggers related to trigger clicked
			if ($(this).closest('.leftCol').length != 0) {
				// only .leftCol trigger
				triggers = $('.leftCol .service .dropdown .trigger');
			} else if ($(this).closest('.service, #navQuick ').length != 0) {
				// right col .service and #navQuick trigger
				triggers = $('.homepage .service .dropdown .trigger, .twoColPage #main .service .dropdown .trigger, #navQuick .trigger');
				// deactivate and close all #navQuick inner slides
				$('#navQuick dt').removeClass('active');
				$('#navQuick dd').hide();
			}
			// close all service triggers but trigger clicked
			$(triggers).each(function() {
				if ($(clicked).filter(this).length == 0) {
					// this not in clicked
					$(this)
						.addClass('closed')
						.closest('.toggle')
							.find('.target').first()
								.hide()
								.addClass('closed')
					;
				}
			});
			
			// toggle trigger clicked and all corresponding targets
			$(clicked)
				.toggleClass('closed');
			$(this)
				.closest('.toggle').find('.target').first()
					.slideToggle('fast')
					.toggleClass('closed')
					.siblings('.target')
						.slideToggle('fast')
						.toggleClass('closed')
			;
		});
	}, // END initTriggers
		
	
		
	/**
	 * initToggleWrapper
	 * @note onclick handler added for all "trigger" class elements
	*/
	initToggleWrapper: function() {
		$('.opener').click(			
			function() {
				$(this).closest('.toggleWrapper').find('.trigger')
					.addClass('closed')
					.siblings('.target')
						.show('fast')
						.removeClass('closed');
			}
		);
		$('.closer').click(
			function() {
				$(this).closest('.toggleWrapper').find('.trigger')
					.removeClass('closed')
					.siblings('.target')
						.hide('fast')
						.addClass('closed');
			}
		);
	}, // END initToggleWrapper 
	
	/**
	 * evenHeights / even height of sibling elements
	 * @note works on child elements class="evenHt" with same tag name of parent class="evenHt"
	 */
	evenHeights: function() {
		$('.evenHt').each(function() {
			var maxHt = [];
			// get real heights of child elements with class="evenHt", indexed by tag name
			$('.evenHt', $(this)).each(function(i) {
				var tagNm = this.tagName;
				if (typeof(maxHt[tagNm]) == 'undefined') {
					maxHt[tagNm] = 0;
				}
				var thisHeight = $.support.boxModel ? $(this).height() : $(this).outerHeight();
				maxHt[tagNm] = Math.max(thisHeight,maxHt[tagNm]);
				if($.browser.msie && $.browser.version === '6.0') {
					$(this).children().each(function(i) {
						if($(this).get(0).tagName.toLowerCase() === 'ul') {
							maxHt[tagNm] += 3;
						}
					});
				}
				if (!($.support.boxModel)) {
					$(this).css('overflow', 'hidden');
				}
			});
			
			// set calculated max heights into child elements with class="evenHt"
			$('.evenHt', $(this)).each(function(i) {
				$(this).height(maxHt[this.tagName]);
			});
		});
	}, // END evenHeights
	
	// slide functions used in meta navigation
	slideMetaInit: function() {

		var clickedElem = $('#navMeta ul li a.navMetaTrigger');
		
		clickedElem.click(
			function() {
				$(this).toggleClass('open');
				$('#navMeta ul li ul.navMetaSlide').slideToggle('fast');
			}
		);
	},
	
	/*
	 * Enhanced cookie attribute handling
	 */
	cookieOps: function(attrib, value) {
		var cookie = jQuery.cookie(cookie_name);
		if (cookie == null) cookie = '';
		var tmp = cookie.split(':');
	    if (typeof value != 'undefined') { // attrib and value given, set cookie attribute value
			if (tmp.length < 2) { // no or empty cookie
				tmp = new Array(attrib, value);
			} else { // replace value for attrib
				for (var i = 0; i < tmp.length; i += 2) {
					if (tmp[i] == attrib) {
						tmp[i + 1] = value;
						break;
					}
				}
				if (i == tmp.length) { // attrib not present, add
					tmp [i++] = attrib;
					tmp [i] = value;
				}
			}
			jQuery.cookie(cookie_name, tmp.join(':'), { expires: 99999, path: '/' });
		} else {  // attrib only given, get cookie attribute value
			value = null;
			for (var i = 0; i < tmp.length; i += 2) {
				if (tmp[i] == attrib) {
					value = tmp[i + 1];
					break;
				}
			}
		}
		return value;
	}
}

// popup window function used by popupInit()
function popup(url, width, height /* scroll, resize, name, center */) {

	var scroll = 'no';
	if (popup.arguments.length > 3) {
		scroll = popup.arguments[3];
	}
	var resize = 'yes';
	if (popup.arguments.length > 4) {
		resize = popup.arguments[4];
	}
	var name = 'PopupWindow';
	if (popup.arguments.length > 5) {
		name = popup.arguments[5];
	}
	var center = 'no';
	if (popup.arguments.length > 6) {
		center = popup.arguments[6];
	}
	var w = parseInt(width);
	var h = parseInt(height);
	var pos = '';
	var left, top;
	if (center == 'screen') {
		left = parseInt((screen.availWidth  - w) / 2);
		top  = parseInt((screen.availHeight - h) / 2)
		pos += ',left=' + left >= 0 ? left : 0;
		pos += ',top='  + top  >= 0 ? top  : 0;
	}

	var win = window.open(url, name, 'width='+w+',height='+w+',status=yes,location=no,scrollbars='+scroll+',resizable='+resize+pos);
	if (win) {
		if (center == 'parent') {
			if (typeof window.innerWidth == 'number') {
				// non IE
				left = (window.innerWidth  - win.outerWidth)  / 2;
				top  = (window.innerHeight - win.outerHeight) / 2;
			} else {
				// IE
				left = (window.document.documentElement.clientWidth  - win.document.documentElement.clientWidth)  / 2;
				top  = (window.document.documentElement.clientHeight - win.document.documentElement.clientHeight) / 2;
			}
			win.moveTo(left >= 0 ? left : 0, top >= 0 ? top : 0);
		}
		win.focus();
	}
};
/*
// shadowbox download-disclaimer test / vh
function showInfo() {
	var infoStatus = $("#sb-container .flyout .imgcopy").css("display");
	alert("display: " + infoStatus);
	if (infoStatus == "none") {
		jQuery("#sb-container .flyout .imgcopy").show(500);
	} else {
		jQuery("#sb-container .flyout .imgcopy").hide(500);
	}
return false;  
};*/

/**
 * DOM Ready | start the scripts when DOM ready
 * @note same as window.onload = function() {}
 */
$(document).ready(function() {
	COBA.init();
});

