addEvent(window, "load", setView);
var notesCleared = 0;

function setView() 
{
    document.getElementById("model").focus();
    if (window.showFallback) {
        showFallback();
    }

    addEvent(document.getElementById("search"), "submit", validateQuery);
    addEvent(document.getElementById("date"), "focus", clearDefault);
    addEvent(document.getElementById("notes"), "focus", clearDefault);
    if (document.getElementById("productcodeinput")) {
        addEvent(document.getElementById("productcodeinput"), "focus", clearDefault);
        addEvent(document.getElementById("collapse"), "click", collapse);
        addEvent(document.getElementById("sendproductcodes"), "click", sendProductCodes);
    }

    if (document.getElementById("position") && document.getElementById("chart")) {
        if (document.getElementById("position").title.length > 1) {
            doScrollLeft(document.getElementById("scroll"), document.getElementById("chart").getAttribute("width") - document.getElementById("scroll").offsetWidth);
        }  
    }
    else {
        if (document.getElementById("chart") && 
            (navigator.userAgent.indexOf("Opera/8") == -1 || navigator.userAgent.indexOf("Opera/8"))) { 
            doScrollLeft(document.getElementById("scroll"), document.getElementById("chart").getAttribute("width") - document.getElementById("scroll").offsetWidth);
        }
    }

    if (document.getElementById("closelink")) {
        addEvent(document.getElementById("closelink"), "click", closeVariant);
    }
}

function doScrollLeft(element, x)
{
    element.scrollLeft = x;
}

function validateQuery() {
    var model = document.getElementById("model");
    model.value = model.value.replace(/nokia\s{0,1}/i, "");
    model.value = model.value.replace(/^n/, "N");
    model.value = model.value.replace(/^e/, "E");
    return true;
}

function clearDefault(e)
{
    if (!e) var e = window.event;
    var target;
    if (e.target) target = e.target;
    else if (e.srcElement) target = e.srcElement;

    if (target.removeEventListener) {
        target.removeEventListener("focus", clearDefault, false);
    }
    else if (target.detachEvent) {
        target.detachEvent("onfocus", clearDefault);
    }


    target.value = "";
}

function closeVariant() {
    document.getElementById("variantcontainer").style.display = "none";
}

function collapse(e) {
    if (!e) var e = window.event;
    if (document.getElementById("productcodecontainer").style.display == "none") {
        document.getElementById("productcodecontainer").style.display = "block";
        document.getElementById("collapse").firstChild.nodeValue = "\u25BC";
        document.getElementById("collapse").title = "Collapse";
    }
    else {
        document.getElementById("productcodecontainer").style.display = "none";
        document.getElementById("collapse").firstChild.nodeValue = "\u25BA";
        document.getElementById("collapse").title = "Expand";
    }
    if (e.preventDefault) {
        e.preventDefault(); e.stopPropagation();
    } else {
        e.cancelBubble = true; e.returnValue = false;
    } 
    return false;
}

function sendProductCodes() {
    var postData = 'type=' + document.getElementById("ptype").value + '&content=' +
                    escape(document.getElementById("productcodeinput").value);
    sendRequest('/nokia/firmware/saveproductcodes.php', handleRequest, postData);
}

function handleRequest(req) {
    document.getElementById("productcodeinput").value = req.responseText;
}

function sendRequest(url,callback,postData) {
    var req = createXMLHTTPObject();
    if (!req) return;
    var method = (postData) ? "POST" : "GET";
    req.open(method,url,true);
    req.setRequestHeader('User-Agent','XMLHTTP/1.0');
    if (postData)
        req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    req.onreadystatechange = function () {
        if (req.readyState != 4) return;
        if (req.status != 200 && req.status != 304) {
//          alert('HTTP error ' + req.status);
            return;
        }
        callback(req);
    }
    if (req.readyState == 4) return;
    req.send(postData);
}

var XMLHttpFactories = [
    function () {return new XMLHttpRequest()},
    function () {return new ActiveXObject("Msxml2.XMLHTTP")},
    function () {return new ActiveXObject("Msxml3.XMLHTTP")},
    function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
    var xmlhttp = false;
    for (var i=0;i<XMLHttpFactories.length;i++) {
        try {
            xmlhttp = XMLHttpFactories[i]();
        }
        catch (e) {
            continue;
        }
        break;
    }
    return xmlhttp;
}