﻿dojo.require("dojo.lang.common");
dojo.require("dojo.undo.browser");
dojo.require("dojo.io.*");
dojo.require("dojo.event.*");

var mouseInDiv = false;

function doSearch()
{
    prepareCookie(1);
}

function doSearch2(query)
{

    if(window.location.href.toLowerCase().indexOf('indexcn') != -1)
        url = 'searchcn.htm';
    else
        url = 'search.htm';
    url+= '?sq='+query;
    window.location.href=url;
}

function prepareCookie(type) // type:1 search; 2 login; 3 language change
{
    var sq = document.getElementById('search-q');
    
    //var st = dojo.byId('searchtype-select').value;
    var st = getSearchTypeValue();
    var sd = 'B';
    var sdc = document.getElementById('searchdefault-c');
    if(sdc.checked)
        sd = 'C';
    var url = '';
    if(type == 3)
    {
        if(window.location.href.toLowerCase().indexOf('indexcn') != -1)
            url = 'index.htm';
        else
            url = 'indexcn.htm';
    }
    else if(window.location.href.toLowerCase().indexOf('indexcn') != -1)
        url = 'searchcn.htm';
    else
        url = 'search.htm';
    if(type == 3)
    {
        addCookie('st', st, 24*30);
        addCookie('sd', sd, 24*30);
        addCookie('sq', sq.value, 24*30);
        window.location.href=url;
    }
    else if(!navigator.cookieEnabled)
    {
        url += '?st=' + st + '&sd=' + sd;
        if(type == 1)
            url += '&sq=' + encodeURI(sq.value);
        else if(type == 2)
            url += '&login=1';
        window.location.href=url;
    }
    else
    {
        addCookie('st', st, 24*30);
        addCookie('sd', sd, 24*30);
        if(type == 1)
            addCookie('sq', sq.value, 24*30);
        else if(type == 2)
            addCookie('login', '1', 24*30);
        window.location.href=url;
    }
}

function doFPLogin()
{
    prepareCookie(2);
}

function checkSearchKey(evt)
{
    evt = evt ? evt : (window.event ? window.event : null);
    if (evt.keyCode == 13) 
    {
        doSearch();
    }
}

function doChangeLanguage()
{
    prepareCookie(3);
}

function setSearchTypeCheckbox(idivalue)
{
    var searchtype = parseInt(idivalue);
    var p = dojo.byId('searchtype-p');//US Patent
    var a = dojo.byId('searchtype-a');//US Application
    var c = dojo.byId('searchtype-c');//CN
    var r = dojo.byId('searchtype-r');//Reference
    var e = dojo.byId('searchtype-e');//EP
    var w = dojo.byId('searchtype-w');//Web
    var s = dojo.byId('searchtype-s');//Schoolor
    var j = dojo.byId('searchtype-j');//JP
    var o = dojo.byId('searchtype-o');//WO
    var d = dojo.byId('searchtype-d');//User Document
    if(p != null && p.style.display == 'none' && (searchtype & 1) == 1)
        searchtype -= 1;
    if(a != null && a.style.display == 'none' && (searchtype & 2) == 2)
        searchtype -= 2;
    if(c != null && c.style.display == 'none' && (searchtype & 4) == 4)
        searchtype -= 4;
    if(r != null && r.style.display == 'none' && (searchtype & 8) == 8)
        searchtype -= 8;
    if(e != null && e.style.display == 'none' && (searchtype & 16) == 16)
        searchtype -= 16;
    if(j != null && j.style.display == 'none' && (searchtype & 32) == 32)
        searchtype -= 32;
    if(o != null && o.style.display == 'none' && (searchtype & 64) == 64)
        searchtype -= 64;
    if(d != null && d.style.display == 'none' && (searchtype & 128) == 128)
        searchtype -= 128;
    if(searchtype <= 0)
    {
        if(p != null && p.style.display == '')
            searchtype = 1;
        else if(a != null && a.style.display == '')
            searchtype = 2;
        else if(c != null && c.style.display == '')
            searchtype = 4;
        else if(r != null && r.style.display == '')
            searchtype = 8;
        else if(e != null && e.style.display == '')
            searchtype = 16;
        else if(j != null && j.style.display == '')
            searchtype = 32;
        else if(o != null && o.style.display == '')
            searchtype = 64;
        else if(d != null && d.style.display == '')
            searchtype = 128;
    }
    setSearchTypeCheckBoxByType(searchtype);
    setSearchTypeSpan(searchtype);
}

function doOnload()
{
    var com1 = new ACComponent('search-q', 'popupdiv-searchhelp', '/', true, doSearch);
    var st = getCookie('st');
    var sd = getCookie('sd');
    var sq = getCookie('sq');
     SetInitConfig();
    if(!isNullorEmpty(st))
    {
        setSearchTypeCheckbox(st);
    }
    else
    {
        setSearchTypeCheckbox(1);
    }
    if(sd == 'C')
        document.getElementById('searchdefault-c').checked = true;
    else
        document.getElementById('searchdefault-b').checked = true;
    if(sq != null && sq != '' && sq != 'undefined')
        document.getElementById('search-q').value = sq;
    getUserLoginState();
}

function getUserLoginState()
{
    var dive = dojo.byId('login-result-div');
    dive.style.display = 'inline';
    
    var url = c_sUserGet + '&it=1&random=' + Math.random();
    var request = new dojo.io.Request(url, 'text/json', null, false);
	dojo.lang.mixin(request, {
	    encoding: g_encoding,
		load: function(type, evaldObj){
			var ret = eval(evaldObj);
			if(ret.Error != null) // error occurs
			{
			    dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
			    alert(ret.Error);
			}
			else if(ret.User != null) 
			{
			    dive.style.display = 'inline';
			    dive.innerHTML = '<b><span>' + ret.User.Name + '</span></b>&nbsp;<span class="anchor"  onclick="doLogOff();">' + c_sSignOff + '</span>';
			}
			else
			{
			    dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
			    doLoginFormCookie();
			}	    
		},
		error: function(type, error) { 
		    dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
		    alert(error.message);
		}
	});         
    dojo.io.bind (request);
}

function deleteLoginCookie()
{
    deleteCookie('id');
    deleteCookie('pwd');
}

function doLogOff()
{
    var dive = dojo.byId('login-result-div');
    dive.style.display = 'inline';
    dive.innerHTML = 'Waiting...';
    var url = c_sUserLogin + '&random=' + Math.random();
    var request = new dojo.io.Request(url, 'text/json', null, false);
	dojo.lang.mixin(request, {
	    encoding: g_encoding,
		load: function(type, evaldObj){
		    dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
		    deleteLoginCookie();
		},
		error: function(type, error) { 
		    dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
		}
	});         
    dojo.io.bind (request);
}

function doLoginFormCookie()
{
    var id = getCookie('id');
    var pwd = getCookie('pwd');
    if(id != null && id != '' && pwd != null && pwd != '')
    {
        var dive = dojo.byId('login-result-div');
        dive.style.display = 'inline';
        dive.innerHTML = 'Waiting...';
        var url = c_sUserLogin + '&sid=' + id + '&spwd=' + pwd + '&random=' + Math.random();
        var request = new dojo.io.Request(url, 'text/json', null, false);
	    dojo.lang.mixin(request, {
	        encoding: g_encoding,
		    load: function(type, evaldObj){
			    var ret = eval(evaldObj);
			    if(ret.Error != null)
			    {
			        dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
			    }
			    else
			    {
			        dive.innerHTML = '<b><span>' + ret.User.Name + '</span></b>&nbsp;<span class="anchor" onclick="doLogOff();">' + c_sSignOff + '</span>';
			    }  	    
		    },
		    error: function(type, error) { 
		        dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
		    }
	    });         
        dojo.io.bind (request);
    }
    else
    {
        var dive = dojo.byId('login-result-div');
        dive.innerHTML = '<span class="anchor" onclick="doFPLogin();">' + c_sSignIn + '</span>';
        dive.style.display = 'inline';
        
    }
}

function doSearchHelpSelect(obj)
{
    var popupDiv = dojo.byId('popupdiv-searchhelp');
    popupDiv.comObject.selectRowFunction(obj);
}

function doSelectSearchHelpRow(rowobj)
{
    var popupDiv = dojo.byId('popupdiv-searchhelp');
    popupDiv.comObject.enterRowFunction(rowobj, popupDiv.comObject.selectedRowIndex);
}

//function getSearchTypeValue()
//{
//    return dojo.byId('searchtype-select').value;
//}

function setHomePage(obj){ 
    try{
       obj.style.behavior='url(#default#homepage)';
       obj.setHomePage('http://patentics.vicp.net');
    }
    catch(e){
       if(window.netscape) {
         try {
          netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
         }
         catch (e) {
          alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将[signed.applets.codebase_principal_support]设置为'true'");
         }
         var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
         prefs.setCharPref('browser.startup.homepage','http://patentics.vicp.net');
        }
    }
} 