$(function () {
    var _Netscience = function () {
        var obj = this;
        obj.pageX = undefined;
        obj.pageY = undefined;

        obj.init = function () {
            // listen to mouse movements
            $(document).mousemove(function (e) {
                obj.pageX = e.pageX;
                obj.pageY = e.pageY;
            });

            // default ajax settings
            $.ajaxSetup({
                async: true,
                //timeout:	 1000,
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                dataFilter: obj.ajax_data_filter,
                beforeSend: function () { },
                complete: function () { },
                error: function (XMLHttpRequest, textStatus, errorThrown) { obj.ajax_error(XMLHttpRequest, textStatus, errorThrown); }
            });
        }

        obj.ajax_error = function (XMLHttpRequest, textStatus, errorThrown) {
            var msg = "";
            switch (XMLHttpRequest.status) {
                // request ok                                                                                   
                case 200:
                case 201:
                case 202:
                case 203:
                case 204:
                case 205:
                case 206:
                    return;
                    break;
                case 403:
                    msg = "The page you have requested requires you to be authenticated. Please reload the page in your browser to perform authentication.";
                    break;
                default:
                    msg = "The page you have requested has generated a fatal error (status code: " + XMLHttpRequest.status + ")";
                    break;
            }
            var p = $(document.createElement('p'));
            p.attr('class', 'error-message');
            p.text(msg);
            $.Overlay.dialog(p);
        };

        obj.ajax_data_filter = function (data, type) {
            var correct = true;
            switch (type) {
                case 'json':
                    data = eval('(' + data + ')');
                    if (typeof data != 'object') {
                        correct = false;
                        break;
                    }

                    data = eval('(' + data.d + ')');

                    if (typeof data != 'object') {
                        correct = false;
                        break;
                    }
                    break;
                case 'xml':
                case 'html':
                case 'script':
                default:
                    break;
            }
            if (!correct) {
                return false;
            } else {
                return data;
            }
        };

        obj.init();
    }

    // extends jquery
    $.extend({
        Netscience: new _Netscience()
    });


    var loginToolSubmit = function (e) {
        var user = $("#txtToolUserName").val();
        var pass = $("#txtToolPass").val();
        if (e.keyCode == 13) {
            if (user.length > 0 && pass.length > 0) {
                e.preventDefault();
                e.stopPropagation();
                $("#btnToolLogin").click();
            } else {
                alert("You must insert your credentials to login.");
            }

            return false;
        }

        return true;
    };

    /* search form  */
    $("#txtToolUserName").keypress(loginToolSubmit);
    $("#txtToolPass").keypress(loginToolSubmit);

    /* asp.net checkboxlist messy fix */
    $(".checkboxList_js").each(function () {
        $("label", $(this)).each(function (i, el) {
            $(el).data('checkbox', $("#" + $(el).attr('for'), $(el).parent()));
            $(el).data('checked', $(el).data('checkbox').attr('checked') == true);

            var changeLabelStatus = function (el) {
                if (el.data('checked') == true) {
                    el.data('checked', false);
                    el.css({
                        'fontWeight': 'normal',
                        'textDecoration': 'none'
                    });
                } else {
                    el.data('checked', true);
                    el.css({
                        'fontWeight': 'bold',
                        'textDecoration': 'underline'
                    });
                }
            };

            $(el).click(function () {
                $(this).data('checkbox').change();
                changeLabelStatus($(this));
            });

            $(el).data('checkbox').change(function () {
                changeLabelStatus($(el));
            });

            if ($(el).data('checked') == true) {
                $(el).data('checked', true);
                $(el).css({
                    'fontWeight': 'bold',
                    'textDecoration': 'underline'
                });
            }
        });
    });

    /* column width fix*/
    /*
    columnStyle_single: 1 colonna
    columnStyle_double: 2 colonne fallback
    columnStyle_doubleWithLeft: 2 colonne con colonna sx
    columnStyle_doubleWithRight: 2 colonne con colonna dx
    columnStyle_triple: 3 colonne
    */
    if ($(".fixColumn_js_content").length > 0) {
        var columnsNumber = 1;
        var leftColExists = false;
        var rightColExists = false;
        if ($(".fixColumn_js_columnLeft").length > 0) {
            if ($(".fixColumn_js_columnLeft").children().length > 0) {
                columnsNumber++;
                leftColExists = true;
            } else {
                $(".fixColumn_js_columnLeft").hide();
            }

        }
        if ($(".fixColumn_js_columnRight").length > 0) {
            if ($(".fixColumn_js_columnRight").children().length > 0) {
                columnsNumber++;
                rightColExists = true;
            } else {
                $(".fixColumn_js_columnRight").hide();
            }
        }

        switch (columnsNumber) {
            case 1: $(".fixColumn_js_content").addClass("columnStyle_single"); break;
            case 2:
                var cssclass;
                if (leftColExists) cssclass = "columnStyle_doubleWithLeft";
                else if (rightColExists) cssclass = "columnStyle_doubleWithRight";
                else cssclass = "columnStyle_double";

                $(".fixColumn_js_content").addClass(cssclass);
                break;
            case 3: $(".fixColumn_js_content").addClass("columnStyle_triple"); break;
        }
    }

    $("#loginLink").click(function (e) {
        var link = $(e.target).attr('href');
        $.Overlay.dialog("", {
            width: "540px",
            height: "200px"
        }, function (dialog, content) {
            var frame = $("<iframe>").attr({
                src: link,
                width: '540px',
                height: '200px',
                frameborder: 0
            });

            if ($.browser.msie) {
                frame.attr('allowtransparency', true);
            }

            content.children().remove();
            content.append(frame);
        });

        e.preventDefault();
        e.stopPropagation();
        return false;
    });

    $('#language-switcher').change(function () {
        var url = $(this).val();
        if (confirm('Do you really want to switch to the ' + $('option[selected]' + this).text() + ' version?')) {
            window.location.href = url;
            return false;
        }
    });
});

   
    // TODO: integrate into treeview widget
    // used by admin/menu.aspx sort
    function updateOrder(idsArray, section){
        currentOrder=document.getElementById("ddl"+section).value;
        values=new Array(idsArray.length);		// The key is the sorting value, if the value is null, then it's the missing one!
        oldOrder=0;
        toReplace=null;
        for(var i=0; i<idsArray.length; ++i){			// Loop through all dropdowns
            ddl=document.getElementById("ddl"+idsArray[i]);
            values[ddl.value-1]="";		// The order's value has been found
            if((idsArray[i]!=section) && (ddl.value==currentOrder)){
                toReplace=ddl;		// This is the control to update
                cId=idsArray[i];
            }
        }
        for(var i=0; i<values.length; ++i){
		    if(values[i]==null){		// Then this value wasn't found
                toReplace.options[i].selected=true;
                break;
            }
        }
    }
