/* Client-side support for the Download centre */

var hasW3CDOM = document.createElement && document.getElementsByTagName;
var uilang = 'en';
var sorg = '';
var hasXMLHTTP = false;
var resultRequest;
var resultTimer;
var modelRequest;

var searchlinkHtml
 = '<div class="style_gotonavi">'
 + '<div class="go_next">'
 + '<div class="gotoWrapper">'
 + '<a id="searchbtn" href="#"><span id="searchtxt" class="inner"></span></a>'
 + '<div class="mask">'
 + '<div class="tl">'
 + '</div>'
 + '<div class="tr">'
 + '</div>'
 + '<div class="bl">'
 + '</div>'
 + '<div class="br">'
 + '</div>'
 + '</div>'
 + '</div>'
 + '</div>'
 + '</div>'

function myInit() {
	if (!hasW3CDOM) return;

// Check for XMLHTTP
    var req
    try { req = HTTP.newRequest(); } catch(e) {}
    if (req) hasXMLHTTP = true;
    
    var e;    	
   	var f = document.forms[0];
   	
    uilang = f.elements['uilang'].value;
    sorg = f.elements['sorg'].value;
    
	if (!document.getElementById('submitter')) {
        e = document.createElement('input');
        e.type = 'hidden';
        e.id = 'submitter';
        e.name = 'submitter';
        f.appendChild(e);
	}
	
	e = document.getElementById('searchpos');
	if (e) {
	    e.innerHTML = searchlinkHtml;
	}
	
	e = document.getElementById('searchbtn');
	if (e) {
	    e.onclick = onSearchClick;
	}
	
	e = document.getElementById('searchtxt');
	if (e) {
        e.innerHTML = getLocalizedString('Search');
	}

	e = document.getElementById('byDate');
	if (e) {
	    e.onclick = onByDateClick;
	}
	
    if (f.elements['group']) {
	    f.elements['group'].onchange = onGroupChange;
	    f.elements['subGroup'].onchange = onSubGroupChange;
	    f.elements['model'].onchange = onModelChange;
	    f.elements['docType'].onchange = onDocTypeChange;
    	
        // Set focus
        scroll(0,0);
        if (document.getElementById('step1').className == 'nextstep') {
            f.elements['group'].focus();
        }
        else if (document.getElementById('step2').className == 'nextstep') {
            f.elements['subGroup'].focus();
        }
        else if (document.getElementById('step3').className == 'nextstep') {
            f.elements['model'].focus();
        }
    }
        
    // Hook in our onsubmit handler
   	oldOnSubmit = f.onsubmit;
    f.onsubmit = myOnSubmit;
    
    loaded = true;
}

function myOnSubmit() {
    var ret = true;
    
	if (oldOnSubmit) {
	    ret = oldOnSubmit();
	}
	
	return ret;
}

function doSub(submitter) {
	var e = document.getElementById('submitter');
	if (e) {
	    e.value = submitter;
	}
	
	var f = document.forms[0];
    if (!f.onsubmit || (f.onsubmit() != false)) {
        f.submit();
    }
}

function submitFromLink() {
    doSub(this.id);
}

function getLocalizedString(key) {
    try
    {
        var ret = localizedStrings[key];
        if (ret === undefined) ret = key;
        return ret;
    } catch (ex) {}
    return key;
}

function openWindow(theURL) {
	window.open(theURL,'_blank','width=600,height=800,scrollbars=yes,resizable=yes,status=yes');
}

function openContactUsWindow(theURL) {
	window.open(theURL,'contactus','width=1024,height=800,scrollbars=yes resizable=yes status=yes');
}

function setPageNo(pageno)
{
	e = document.forms[0]['dtpage'];
	if (e)
	{
	    e.value = pageno.toString();
    }
}

function getPageNo()
{
    var pno = 0;
    
	e = document.forms[0]['dtpage'];
	if (e)
	{
	    pno = parseInt(e.value);
        if (isNaN(pno)) pno = 0;
    }
    return pno;
}

function setNextStep(n)
{
    document.getElementById('step1').className = '';
    document.getElementById('step2').className = '';
    document.getElementById('step3').className = '';
    document.getElementById('step4').className = '';
    switch (n)
    {
        case 1: document.getElementById('step1').className = 'nextstep'; break;
        case 2: document.getElementById('step2').className = 'nextstep'; break;
        case 3: document.getElementById('step3').className = 'nextstep'; break;
        case 4: document.getElementById('step4').className = 'nextstep'; break;
    }
}

function setHideId(ele,hide)
{
	setHide(document.getElementById(ele),hide);
}

function setHide(ele,hide)
{
	if (hide)
	{
		ele.style.display='';
		ele.className='';
	}
	else
	{
		ele.style.display='none';
	}
}

function onGroupChange()
{
	document.forms[0]['modelcode'].value='';
	
	var g = document.forms[0]['group'];
	var sg = document.forms[0]['subGroup'];
	var m = document.forms[0]['model'];
	sg.options.length = 0;
	sg.disabled = true;
	m.options.length = 0;
	m.disabled = true;
	if (g.selectedIndex > 0)
	{
		sg.disabled = false;
		sg.options[0] = new Option(getLocalizedString('OptionSelect'), '' );
		var sgArr = sgArrs[g.selectedIndex];
   		for (var i=0; i<sgArr.length; i++ )
   		    sg.options[i+1] = new Option(sgArr[i][1],sgArr[i][0]);
   		    
    	setNextStep(2);
	}
	else
	{
    	setNextStep(1);
    }
}

function onSubGroupChange()
{
	document.forms[0]['modelcode'].value='';
	
    if (hasXMLHTTP)
    {
	    var g = document.forms[0]['group'];
	    var sg = document.forms[0]['subGroup'];
	    var m = document.forms[0]['model'];
	    m.options.length = 0;
	    m.disabled = true;
	    if (g.selectedIndex > 0)
	    {
            var group = g.options[g.selectedIndex].value;
    	    if (sg.selectedIndex > 0)
    	    {
                var subGroup = sg.options[sg.selectedIndex].value;
                var params = new Object();
                params['uilang'] = uilang;
                params['group'] = group;
                params['subgroup'] = subGroup;
                params['subForm'] = 'modelsel';
                if (sorg) params['sorg'] = sorg;
                
                HTTP.get('default.aspx', setModelSel, { timeout: 15000, parameters: params });
                setPageNo(0);
                fetchResults();
            }
            else
            {
		        m.disabled = true;
    	        setNextStep(2);
            }
	    }
	    else
	    {
		    m.disabled = true;
		    sg.disabled = true;
    	    setNextStep(1);
        }
	    document.forms[0].modelcode.value='';
    }
    else
    {
        // no XMLHTTP available so just post back
        setPageNo(0);
	    document.forms[0].modelcode.value='';
    	doSub('subGroup');
    }
}

function onModelChange()
{
	document.forms[0]['modelcode'].value='';
	
    setPageNo(0);
    if (hasXMLHTTP)
    {
        fetchResults();
        setNextStep(4);
    }
    else
    {
        // no XMLHTTP available so just post back
	    document.forms[0].modelcode.value='';
    	doSub('model');
    }
}

function onDocTypeChange()
{
    setPageNo(0);
    if (hasXMLHTTP)
    {
        fetchResults();
    }
    else
    {
        // no XMLHTTP available so just post back
    	doSub('docType');
    }
}

function onPreviousClick()
{
    var pageno = getPageNo() - 1;
    if (pageno < 1) pageno = 1;
    setPageNo(pageno);
        
    if (hasXMLHTTP)
    {
        fetchResults();
    }
    else
    {
        // no XMLHTTP available so just post back
    	doSub('prev');
    }
    return false;
}

function onNextClick()
{
    var pageno = getPageNo();
    if (pageno < 1) pageno = 1;
    ++pageno;
    setPageNo(pageno);
    
    if (hasXMLHTTP)
    {
        fetchResults();
    }
    else
    {
        // no XMLHTTP available so just post back
    	doSub('next');
    }
    return false;
}

function onSearchClick()
{
    var e = document.forms[0].hideheader;
    if (e) e.value = 'true';
    
	if (document.forms[0].modelcode.value)
	{
        setPageNo(0);
        
        if (hasXMLHTTP)
        {
	        var g = document.forms[0]['group'];
	        var sg = document.forms[0]['subGroup'];
	        var m = document.forms[0]['model'];
	        g.selectedIndex = 0;
	        sg.selectedIndex = 0;
	        sg.disabled = true;
	        m.options.length = 0;
	        m.disabled = true;
            setNextStep(1);
	
            fetchResults();
            
    	    return true;
        }
        else
        {
            // no XMLHTTP available so just post back
    	    doSub('search');
    	    return true;
        }
	}
	
	alert(getLocalizedString('SearchError'));
	return false;
}

function onByDateClick()
{
    setPageNo(0);
    if (hasXMLHTTP)
    {
        fetchResults();
    }
    else
    {
        // no XMLHTTP available so just post back
       	doSub('byDate');
    }
}

function setModelSel(response)
{
    if (response)
    {
        var wrapperpos = response.indexOf('<span');
        if (wrapperpos >= 0)
        {
            var spos = response.indexOf('<select', wrapperpos);
            var epos = response.lastIndexOf('</span>');
            if (spos >= 0 && epos > spos)
            {
                var oe = document.getElementById('modelwrapper');
                oe.innerHTML = response.substring(spos,epos);
                
    	        var e = document.forms[0].elements['model'];
    	        if (e && e.options.length > 1)
    	        {
    	            e.onchange = onModelChange;
                    e.disabled = false;
   	                setNextStep(3);
   	            }
   	            else
   	            {
                    e.disabled = true;
   	                setNextStep(2);
   	            }
            }
        }
    }
}

function fetchResults()
{
	var group = '';
	var subGroup = '';
	var model = '';
	var modelCode = '';
	var docType = '';
	var byDate = false;
	var page = 1;
	
	var e = document.forms[0]['group'];
	if (e.selectedIndex > 0)
	{
        group = e.options[e.selectedIndex].value;
    }
    
	e = document.forms[0]['subGroup'];
    if (e.selectedIndex > 0)
    {
        subGroup = e.options[e.selectedIndex].value;
    }
    
	e = document.forms[0]['model'];
    if (e.selectedIndex > 0)
    {
        model = e.options[e.selectedIndex].value;
    }
    
	e = document.forms[0]['modelcode'];
    if (e)
    {
        modelCode = e.value;
    }
    
	e = document.forms[0]['docType'];
    if (e.selectedIndex > 0)
    {
        docType = e.options[e.selectedIndex].value;
    }
    
	e = document.forms[0]['byDate'];
    if (e.checked)
    {
        byDate = true;
    }
    
	e = document.forms[0]['dtpage'];
	if (e)
	{
	    page = parseInt(e.value);
        if (isNaN(page)) page = 1;
    }
    
    if (subGroup != '' || model != '' || modelCode != '')
    {
        var params = new Object();
        
        if (page < 1) page = 1;
           
        if (group != '')
            params['group'] = group;
            
        if (subGroup != '')
            params['subgroup'] = subGroup;
            
        if (modelCode != '')
        {
            params['modelcode'] = modelCode;
        }
        else
        {
            if (model != '')
                params['model'] = model;
        }
        
        if (docType != '')
            params['docType'] = docType;
            
        if (page > 1)
            params['dtpage'] = page.toString();
            
        if (byDate)
            params['byDate'] = 'ON';

        params['uilang'] = uilang;
        if (sorg) params['sorg'] = sorg;
        params["subForm"] = "results";

//      Set the results to "Fetching data..."
        setResultMessage('<img alt="" src="../images/indicator.gif" /><span class=\"ajaxmsg\">' + getLocalizedString('FetchingData') + '</span>');

        sendResultRequest(params);
    }
}

function sendResultRequest(params)
{
//  HTTP.get("default.aspx", setResults, { timeout: 60000, parameters: params });

    if (resultRequest)
    {
        resultRequest.onreadystatechange = function() {};
        resultRequest.abort();
    }

    if (resultTimer) clearTimeout(resultTimer);
        
    resultRequest = HTTP.newRequest();
    // timeout after 60 seconds
    var resultTimer = setTimeout(function() {
                                resultRequest.onreadystatechange = function() {};
                                resultRequest.abort();
                                resultTimeoutHandler();
                           },
                           60000);

    resultRequest.onreadystatechange = function() {
        if (resultRequest.readyState == 4) {
            if (resultTimer) clearTimeout(resultTimer);
            if (resultRequest.status == 200) {
                setResults(HTTP._getResponse(resultRequest));
            }
            else {
                resultErrorHandler(resultRequest.status,
                                   resultRequest.statusText);
            }
        }
    }

    var target = "default.aspx";
    if (params)
        target += "?" + HTTP.encodeFormData(params);
    resultRequest.open("GET", target);
    resultRequest.send(null);
}

function setResults(response)
{
    if (response)
    {
        var wrapperpos = response.indexOf('resultswrapper');
        if (wrapperpos >= 0)
        {
            var spos = response.indexOf('>', wrapperpos) + 1;
            var epos = response.lastIndexOf('</div>');
            if (spos >= 0 && epos > spos)
            {
                var oe = document.getElementById('resultswrapper');
                oe.innerHTML = response.substring(spos,epos);
            }
        }
    }
}

function resultErrorHandler(status, statusText)
{
    var msg;
    if (status || statusText) {
        msg = 'HTTP ';
        if (status) {
            msg += status;
        }
        
        if (statusText) {
            msg += ' - ';
            msg += statusText;
        }
    }
    else {
        msg = getLocalizedString('HttpError');
    }
    
    setResultErrorMessage(msg);
}

function resultTimeoutHandler()
{
    setResultErrorMessage(getLocalizedString('ResponseTimeout'));
}

function setResultMessage(msg)
{
    var oe = document.getElementById('resultswrapper');
    oe.innerHTML = '<div id=\"resultsmsg\">' + msg + '</div>';
}

function setResultErrorMessage(msg)
{
    setResultMessage('<span class=\"ajaxerrmsg\">' + msg + '</span>');
}

/* Simple event handling */
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}
	
function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}

/* Hook in the init function */
addEventSimple(window,'load',myInit);


