$(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);

});

   
    // 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;
            }
        }
    }
