debugmode = false;

var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++)    {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
        {     string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {        // for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        {         // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};
BrowserDetect.init();

function validateUser (username) {
    var username = $F('itemOwner');
        if (username !=  null && username.length > 0) {
        // check for invalid names
        if (debugmode) { console.log("validating owner with regexp"); }
        if (!username.match(/^[a-z][_a-z0-9\-]{1,14}$/i)) {
                setStatus('itemOwner', 'text bad');
                $('ownercheck').setAttribute('src', 'http://cdn.last.fm/depth/forms/incorrect_new.gif');
                $('ownercheckHolder').show();
            } else {
                setStatus('itemOwner', 'text');
                if (debugmode) { console.log('ajax request starts'); }
                var myAjax = new Ajax.Request('/gallery/validateUser/', {
                    method: 'post',
                    parameters: Form.Element.serialize('itemOwner'),
                    onLoading: function() {
                        //http://cdn.lst.fm/depth/forms/correct_new.gif
                        if (debugmode) { console.log('validating username: ' + username); }
                        $('ownercheck').setAttribute('src', 'http://cdn.last.fm/depth/global/progress.gif');
                        $('ownercheckHolder').show();
                    },
                    onComplete: function (response) {
                        // name does not exist
                        if (response.responseText == 'false') {
                            if (debugmode) { console.log("response: " + req.responseText); }
                            setStatus('itemOwner', 'text bad');
                            $('ownercheck').setAttribute('src', 'http://cdn.lst.fm/depth/forms/incorrect_new.gif');
                            $('ownercheckHolder').show();
                            new Effect.Pulsate($("ownercheck"), {duration: 2});
                        }
                        else if (response.responseText == 'true') {
                            // name exists, ok!
                            $('ownercheck').setAttribute('src', 'http://cdn.lst.fm/depth/forms/correct_new.gif');
                            // new Effect.Pulsate($("ownercheck"), {duration: 3});
                        }
                        else { }

                    },
                    onFailrue: function () { alert("failed"); }
                });
            }
        } else { $('itemOwner').focus(); }
}

function setStatus(element, status) {
    $(element).className = status;
}

function getItem(itemID) {
	window.location = "/item/" + itemID;
}

function showHint(element) {
    $('hint_' + element).addClassName("on");
}
function hideHint(element) {
    $('hint_' + element).removeClassName("on");
}

Event.observe(window, 'load', function() {
    
    // fix IE6's missing :hover support
    // if ((BrowserDetect.browser == 'Explorer') && (BrowserDetect.version == 6)) {
    //         $$('div#overview li.item').each(function (item) {
    //             Event.observe(item, 'mouseover', function() {
    //                 Event.findElement(event, "li").addClassName('hover');
    //             });
    //             Event.observe(item, 'mouseout', function() {
    //                 Event.findElement(event, "li").removeClassName('hover');
    //             });
    //         });
    //     }
    setupSearch();

});
