﻿// Silver Pride Software Limited
// (c) 2008 - All rights reserved
//
// http://www.silver-pride.com
//
// Please note: This code is still under development.  Express permission must be
// obtained from Silver Pride Software before use.
// 

/// <reference path="jquery.intellisense.js"/>

$(document).ready(function() {
    $('ul#quickmenu-data').QuickMenu()
});

jQuery.fn.QuickMenu = function() {

    $('ul.quickmenu-data li').addClass('quickmenuitem');

    $('ul.quickmenu-data li:has(ul)').addClass('quickmenuitem-haschildren');

    $('ul.quickmenu-data, ul.quickmenu-data ul')
            .each(assigneachPaneId);

    $('ul.quickmenupane').each(addNavigationLinks);

    $('.quickmenuitem a').wrapInner('<div class="item"></div>')

    $('.quickmenupane').appendTo('#menuholder');

    $('#quickmenupane0').show();
}

function addNavigationLinks() {
    
    var parentPageId = $(this).attr('id');

    $(this).children('li has(ul)').each(function() {

        var parentCallback = 'unshowPane(\'#' + parentPageId + '\', \'#' + $(this).children('ul:first').attr('id') + '\')';
        var parentName = $(this).children('a:first').text();
        var linkId = parentPageId + '_link';
        
        $(this).children('ul').prepend('<div onclick="' + parentCallback + '" class="parentLink">' + parentName + '</div>');
    });

}

var n = 0;
var paneId = 0;

function assigneachItem() {
    this.id = 'quickmenuitem' + n++;
}

function assigneachPaneId() {
     var newId = 'quickmenupane' + paneId++;
    this.id = newId;

    $(this).addClass('quickmenupane');
    $(this).css('display', 'none');
    
    var callback = 'showPane(\'#' + newId + '\');';

    // Add display event handler to parent item
    var linkId = newId + '_link';
    $(this).parent().append('<div class="showchild" id="' + linkId + '" >&nbsp;</div>');
    $('#' + linkId).click(function() { eval(callback); });

    // setup hoverintent
    var config = {
        sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)    
        interval: 150, // number = milliseconds for onMouseOver polling interval    
        over: function() { eval(callback); }, // function = onMouseOver callback (REQUIRED)    
        timeout: 0, // number = milliseconds delay before onMouseOut    
        out: function() {  } // function = onMouseOut callback (REQUIRED)    
    };

$('#' + linkId).hoverIntent(config);
  
}

function debugeach() {
    alert(this.innerText + " id = " + this.id);
}

function showPane(paneId) {

    $(paneId).menuLeft(200, '', '');

}

jQuery.fn.menuLeft = function(speed, easing, callback) {
    $(this).css("width", "0px");
    $(this).css("margin-left", "220px");
    $(this).show();
    return $(this).animate({ width: "220px", marginLeft: "0px" }, speed);
}

jQuery.fn.menuRight = function(speed, easing, callback) {
    $(this).css("width", "0px");
    $(this).css("margin-right", "0px");
    return $(this).animate({ width: "220px", marginRight: "220px" }, speed, null, callback);
}

function unshowPane(paneId, unshowpaneId) {

    // Fly old menu out to right
    $(unshowpaneId).fadeOut(200);
    $(paneId).fadeIn(200);        
}

