//if( !console || console == undefined || console == null  )
//{
//    function consoleWriter(){ }
//    consoleWriter.prototype.messageBody = "";
//    consoleWriter.prototype.log = function( msg ) { this.messageBody = msg + "<br>" + this.messageBody; $('#consoleOutput').html(this.messageBody)}
//    var console = new consoleWriter();
//
//   $(document).ready(function() {
//        $("<div id='consoleOutput' title='Output Console'></div>").dialog({'position': 'bottom','width':'100%', 'autoOpen': false });
//    });
//}

var __asvar_fddreg = {};
var __fddCtrlKeyActive = false;
var __ignoredDD = '';


function _fdClrSlctn(id) {
        $("#"+id ).val("");
        $("#"+id+"_display").html("");
        $("#fancyDD_"+id+"_panel .fddLink").removeClass("fddSelection");
        _fdSlctnsCntr['fancyDD_'+id].current	= 0;
        _fdSlctnsCntr['fancyDD_'+id].selections	= [];
        TriggerEvent('FDDSelectionCleared',[ {'DDID': id},'FDDSelectionCleared' ]);

}

function _fdWrtSlctns(id) {

        var max = _fdSlctnsCntr['fancyDD_'+id].max; //this let's us know the maximum amount of selections

        if( _fdSlctnsCntr['fancyDD_'+id].selections.length < 1 )
        {//no selections
                $('#'+id+'_display').html('');
                $('#'+id).val('');
        } else if( max == 1 ){
                //most FDDs allow a single selection
                $('#'+id).val(_fdSlctnsCntr['fancyDD_'+id].selections[0][0]);
                $('#'+id+'_display').html( "<a href='javascript: _fdClrSlctn(\""+id+"\"); void(0);' style='color: red; font-weight: bold; font-size: 10px;'>x</a>" + _fdSlctnsCntr['fancyDD_'+id].selections[0][1] );

        } else if(_fdSlctnsCntr['fancyDD_'+id].selections.length > 0)
        {	//1 or more selections; this is a multi-selector type (max > 1 )

                var valString = "[";
                var labelString = '';
                for(var i=0;i<_fdSlctnsCntr['fancyDD_'+id].selections.length;i++)
                {
                        valString += _fdSlctnsCntr['fancyDD_'+id].selections[i][0] +',';
                        labelString += _fdSlctnsCntr['fancyDD_'+id].selections[i][1] + ',';
                }
                valString = valString.substr(0,valString.length-1);
                valString += ']';

                $('#'+id).val(valString);
                $('#'+id+'_display').html( "<a href='javascript:  _fdClrSlctn(\""+id+"\"); void(0);' class='fdClrLk'>x</a>" + labelString );
        }
        $('#'+id+'_display').css('width',$('#'+id+'_display').html().length); //adjust the field width
}

var _fdSlctnsCntr = [];
function _fdClsMltSlctr(id) {
        __asvar_fddreg["fancyDD_"+id+"_panel"]=0;
        TriggerEvent("HideFDDPanel",[ {"DDID": "fancyDD_"+id},"HideFDDPanel" ]);

        _fdWrtSlctns(id);

}

function _fdClk(id, value, label, controlIndex ) {

        var max = _fdSlctnsCntr['fancyDD_'+id].max;
        var current = _fdSlctnsCntr['fancyDD_'+id].current;

        if( max > 1 && current > 0)
        {
                /* check to see if the item is in the list; if so remove it and return; */
                for( var i=0; i < _fdSlctnsCntr['fancyDD_'+id].selections.length;i++)
                {
                        if( _fdSlctnsCntr['fancyDD_'+id].selections[i][0] == value )
                        {
                                _fdSlctnsCntr['fancyDD_'+id].current--;
                                _fdSlctnsCntr['fancyDD_'+id].selections.splice(i,1);
                                $('#fdLk'+id+'_'+controlIndex ).removeClass('fddSelection');

                                return false;
                        }
                }
        } else if (max == 1 )
        {

                $("#fancyDD_"+id+"_panel > div > ul > li > a").removeClass("fddSelection");

                if( _fdSlctnsCntr['fancyDD_'+id].selections.length > 0
                && _fdSlctnsCntr['fancyDD_'+id].selections[0][0] == value )
                {//if the item in a single selecter is clicked again; "unselect" it
                        _fdSlctnsCntr['fancyDD_'+id].selections.splice(0,1);

                        return false;
                }
        }

        $('#fdLk'+id+'_'+controlIndex ).addClass('fddSelection');

        if( max == 1 )
        { //there can only be one selection; do it!
                _fdSlctnsCntr['fancyDD_'+id].selections[0] = [value,label];
        } else
        {


                if( _fdSlctnsCntr['fancyDD_'+id].selections.length> max )
                { //if there are more selections than the max selection, we need to replace a selection; the last by default
                        _fdSlctnsCntr['fancyDD_'+id].selections[max-1]		= [value, label];
                } else  _fdSlctnsCntr['fancyDD_'+id].selections[_fdSlctnsCntr['fancyDD_'+id].selections.length] = [value,label];
        }

        if( ++current >= max  )
        {

                // this block allows us to count the current number of selections
                //in the current dropdown

                _fdWrtSlctns(id);
                __asvar_fddreg['fancyDD_'+id+'_panel']=0;

                TriggerEvent('HideFDDPanel',[ {'DDID': 'fancyDD_'+id},'HideFDDPanel' ]);
                TriggerEvent('FDDItemSelected',[ {'DDID': id,'ID': value},'FDDItemSelected' ]);

                var i = 1+1;
        } else
        {
                _fdSlctnsCntr['fancyDD_'+id].current = current;
        }

        return false;
}

function __bindFancyDDObjects() {
        $('#fancyDD > .fancyDDButton').mouseover(function(){__asvar_fddreg[this.id+'_panel']+=1;});
        $('#fancyDD > .fancyDDButton').mouseout(function(){__asvar_fddreg[this.id+'_panel']-=1;});

        $('.fancyDD').mouseover(function(){

                __asvar_fddreg[this.id+'_panel'] += 1;
                $('#'+this.id+' > .fancyDDButton').addClass('fancyDDButton_over');
        });
        $('.fancyDD').mouseout(function(){
                $('#'+this.id+' > .fancyDDButton').removeClass('fancyDDButton_over');
                __asvar_fddreg[this.id+'_panel'] -= 1;
                setTimeout( "TriggerEvent('HideFDDPanel',[{ 'DDID': '"+this.id+"' },'HideFDDPanel' ])",500);
        });

        $('.fancyDDButtonLabel').click(function(){

                __ignoredDD = '';
                if( $(this).parent().children().hasClass('fancyDDButton_on') )
                { //if the dropdown link was clicked again; close the window

                        $(this ).parent().children().removeClass('fancyDDButton_over');
                        __asvar_fddreg[this.parentNode.id+'_panel'] = 0;
                        TriggerEvent('HideFDDPanel',[{'DDID': this.parentNode.id},'HideFDDPanel' ]);

                        __ignoredDD = this.parentNode.id;
                        return;
                }

        });

        $('.fancyDDButton').click(function(){

                __ignoredDD = '';
                if( $(this).hasClass('fancyDDButton_on') )
                { //if the dropdown link was clicked again; close the window

                        $(this ).parent().removeClass('fancyDDButton_over');
                        __asvar_fddreg[this.parentNode.id+'_panel'] = 0;
                        TriggerEvent('HideFDDPanel',[{'DDID': this.parentNode.id},'HideFDDPanel' ]);

                        __ignoredDD = this.parentNode.id;
                        return;
                }

        });


        $('.fancyDD').click(function(){
            $(this).addClass('fdpFix'); //this fixed a stupid bug in IE that was causing the panel to draw incorrectly
                if( __ignoredDD != this.id )
                {
                        $('#'+this.id+' > .fancyDDButton').addClass('fancyDDButton_on');
                        var o = $(this).offset();
                        var x,y;
                        x = o.left;y = o.top+20;
                        var panel_width = $('#'+this.id+'_panel').width()+20;
                        var panel_height = $('#'+this.id+'_panel').height()+20;

                        if( x+panel_width > $(window).width() )
                        {
                                x -= (x+panel_width) - $(window).width();
                        }

                        if( y+panel_height > $(window).height()+$(window).scrollTop()  )
                        {
                                y -= y+panel_height - (  $(window).height()+$(window).scrollTop()  );
                              //  x = o.left+ $(this).width();
                        }

                        $('#'+this.id+'_panel').css({'left': x, 'top': y});
//                                        $('#'+this.id+'_panel').slideDown(250);
                }
            $(this).removeClass('fdpFix'); //remove the fix

        });
}


$(document).ready(function(){


                $(document).bind('HideFDDPanel',function(e, args) {
                        if( __asvar_fddreg[args.DDID+'_panel'] < 1 )
                        {
                                $('#'+args.DDID+' > .fancyDDButton').removeClass('fancyDDButton_on');
//                                $('#'+args.DDID+'_panel').fadeOut(250);
                                $('#'+args.DDID+'_panel').css({"left": "-10000px"});
                                __asvar_fddreg[args.DDID+'_panel'] = 0;


                                _fdWrtSlctns(args.DDID.replace('fancyDD_','') );
                        }
                });


                __bindFancyDDObjects();

});
