
/* - cochin_common.js - */

var cochin = {};

cochin.init = function() {
    cochin.wrapButtons(document);
    var node = document.getElementById('booking-filter');
    if (node != null) {
        var isIE = navigator.appName == 'Microsoft Internet Explorer' ? 1 : 0;

        if (isIE) {
	          node.onpropertychange = function() {
	              cochin.wrapButtons(node);};
	      } else {
            node.addEventListener("DOMAttrModified", function (event) {
                if (!arguments.callee.flag) {
                  arguments.callee.flag = true;
                  cochin.wrapButtons(document);
                }
                arguments.callee.flag = false;
            }, false);
	      }
    }

    cochin.menu.init();
    cochin.dropdown.init();
    cochin.justify.init();
};

cochin.justify = {};

/* Add justify class for align left and right attributes */
cochin.justify.init = function() {

	var node = document.getElementById('parent-fieldname-text');

	if (node == null) return false;

	var paragraph = node.getElementsByTagName('p');

	for (var i=0; i<paragraph.length;i++) {
		var p = paragraph[i];

		if (p.getAttribute("align","false") == 'right' ||
			p.getAttribute("align","false") == 'left' ||
			p.getAttribute("align","false") == null ||
			p.getAttribute("align","false") == ''){
			oldClass = p.className; // Keep old class
			p.className = oldClass + ' justify';
		}
	}
};

cochin.wrapButtons = function(node) {
    /* Wrap all input buttons to use a nice skinned background */
    var inputs = node.getElementsByTagName('INPUT');

    for (var i = 0;i < inputs.length; ++i) {
        var input = inputs[i];
        if (input.type == 'button' || input.type == 'submit') {
            if (input.parentNode.className != 'button-wrapper') {
		            var wrapper = document.createElement('SPAN');
		            input.parentNode.insertBefore(wrapper, input);
		            wrapper.appendChild(input);
		            wrapper.className = 'button-wrapper';
		        }
        }
    }
}

cochin.menu = {};

cochin.menu.over = function(node) {
    addClassName(node, "over");
};

cochin.menu.out = function(node) {
    removeClassName(node, "over");
};

cochin.menu.init = function() {
    var nodes = document.getElementsByTagName('UL');

    for (var i=0; i<nodes.length; ++i) {
        var node = nodes[i];

        if (hasClassName(node, 'dropdown-menu')) {
            var li_nodes = node.getElementsByTagName('LI');

				    for (var j=0; j<li_nodes.length; ++j) {
				        var li_node = li_nodes[j];
				        li_node.onmouseover = function() {
                    cochin.menu.over(this);};
				        li_node.onmouseout = function() {
                    cochin.menu.out(this);};
				    }
        }
    }
};


cochin.dropdown = {
    lists: []
}

cochin.dropdown.closeLists = function() {
    var lists = cochin.dropdown.lists;
    for (var i = 0;i < lists.length;++i)
        removeClassName(lists[i].menuNode, 'opened');
    unRegisterEventListener(window, 'click', cochin.dropdown.closeLists);
    return false;
}

cochin.dropdown.toggle = function(e) {
    e = e || window.event;
    var target = e.target || e.srcElement;
    while (target.nodeName != 'DL')
        target = target.parentNode;

    var menu = target.menuNode;
    if (hasClassName(menu, 'opened')) {
        removeClassName(menu, 'opened');
        return true;
    } else {
        addClassName(menu, 'opened');
        window.setTimeout(function() {
            registerEventListener(window, 'click', cochin.dropdown.closeLists);
        }, 0);

    }
    return false;
}

cochin.dropdown.selectItem = function(e) {
    e = e || window.event;
    var target = e.target || e.srcElement;
    if (target.nodeName != 'A') {
        return false;
    }
    var dropdown = target.parentNode.parentNode;
    dropdown.nextSibling.selectedIndex = target.optionIndex;
    dropdown.titleNode.innerHTML = target.innerHTML;
    return true;
}

cochin.dropdown.transformDropdownLists = function(container) {
    var nodes = container.getElementsByTagName('SELECT');
    for (var i = 0;i < nodes.length;++i) {
        var dropdown = document.createElement('DL');
        dropdown.className = 'dropdown-list';
        var dropdownTitle = document.createElement('DT');
        dropdown.appendChild(dropdownTitle);
        var dropdownMenu = document.createElement('DD');
        dropdown.appendChild(dropdownMenu);

        var options = nodes[i].options;
        var title = options[nodes[i].selectedIndex].innerHTML;
        dropdownTitle.innerHTML = title;

        for (var j = 0;j < options.length;++j) {
            var anchor = document.createElement('A');
            anchor.innerHTML = options[j].innerHTML;
            anchor.href = options[j].value;
            anchor.optionIndex = j;
            anchor.onclick = cochin.dropdown.selectItem;
            dropdownMenu.appendChild(anchor);
        }[0]

        dropdown.style.width = nodes[i].offsetWidth + 'px';
        nodes[i].style.display = 'none';
        nodes[i].parentNode.insertBefore(dropdown, nodes[i]);

        cochin.dropdown.lists.push(dropdown);

        dropdown.titleNode = dropdownTitle;
        dropdown.menuNode = dropdownMenu;

        dropdown.onclick = cochin.dropdown.toggle;
    }
}

cochin.dropdown.init = function(nodes) {

	// Get all 'dl' tag
	var tag = document.getElementsByTagName('dl');

	// For each tag
	for (var i=0; i < tag.length;i++){

		// If 'dl' tag = dropdown portlet class : apply style
		var container = tag[i];
		if (container.className == 'portlet portletDropDownNavigationTree'){
			cochin.dropdown.transformDropdownLists(container);
		}
	}
};


registerPloneFunction(cochin.init);

