﻿var DatabaseString = "";
var CurDabaseIndex = "";
var SelectedStatus = 0;
var MaxSelectable = "10";  
var SelectedDatabasesString = "";
var sType, Docs;
var uniSearchArgs="";

function OnClientClick(e)
{
    var keyTexts=$F('keyTextBox1') +  $F('keyTextBox2')  + $F('keyTextBox3')  + $F('keyTextBox4') + $F('keyTextBox5');         
    if(keyTexts.blank() && DatabaseString.blank())
    {
        alert("请选择搜索库,并输入搜索词！"); 
        if (e && e.preventDefault)
            e.preventDefault(); // DOM style
        else
            return false; // IE style
    }
    else if(keyTexts.blank())
    {
        alert("请输入搜索词！");
        if (e && e.preventDefault)
            e.preventDefault(); // DOM style
        else
            return false; // IE style
    }
    else if(DatabaseString.blank())
    {
        alert("请选择搜索库！");
        if (e && e.preventDefault)
            e.preventDefault(); // DOM style
        else
            return false; // IE style
    }
    else
    {
        var ResIDs = DatabaseString.split(",");
        var ResNames = '';
        var objReses = {};
        objReses['SupportComboSearch'] = true;
        ResIDs.each(function(node){
            if(node!=''){
                objReses['res_' + node] = window['ResInfo']['res_' + node];
                ResNames += objReses['res_' + node].ResName + ',';
                var val = window['ResInfo']['res_' + node].SupportComboSearch;
                if ("False" == val && objReses['SupportComboSearch']) {
                    objReses['SupportComboSearch'] = false;
                }                
            }
        });
        var keys="";
        $R(1,5).each(function(n){
            if(!$F('keyTextBox'+n).blank())
            {
                keys+=$F('keyTextBox'+n).replace(/\"/g,"");
                keys=keys.replace("'","&#39;");
            }            
            if(n<5)
            {
               keys+=",";
            }
            //alert(keys);
        });
        var logics= $F('LogicSelectBox1') + ',' + $F('LogicSelectBox2') + ',' + $F('LogicSelectBox3') + ',' + $F('LogicSelectBox4');
        var fields=$F('fieldSelectBox1') + ',' + $F('fieldSelectBox2') + ',' + $F('fieldSelectBox3') + ',' + $F('fieldSelectBox4') + ',' + $F('fieldSelectBox5');
        uniSearchArgs=Object.toJSON(objReses)+'@'+DatabaseString+'@'+sType+'@'+keys+'@'+logics+'@'+fields+'@'+ResNames;
        //window.open($(MainContentId+"ResultUrl").innerText,"_blank");
        goSubmit();
        return true;
    } 
}
function OnSingleClientClick(e)
{
    DatabaseString=$(MainContentId+'hdnDatabaseString').value;
    var sType=$(MainContentId+'hdnType').value;
    var keyTexts=$F('keyTextBox1') +  $F('keyTextBox2')  + $F('keyTextBox3')  + $F('keyTextBox4') + $F('keyTextBox5');         
    if(keyTexts.blank())
    {
        alert("请输入搜索词！");
        if (e && e.preventDefault)
            e.preventDefault(); // DOM style
        else
            return false; // IE style
    }
    else
    {
        var ResIDs = DatabaseString.split(",");
        var ResNames = '';
        var objReses = {};
        ResIDs.each(function(node){
            if(node!=''){
                objReses['res_' + node] = window['ResInfo']['res_' + node];
                ResNames += objReses['res_' + node].ResName + ',';
            }
        });
        var keys="";
        $R(1,5).each(function(n){
            if(!$F('keyTextBox'+n).blank())
            {
                keys+=$F('keyTextBox'+n).replace(/\"/g,"");
                keys=keys.replace("'","&#39;");
            }            
            if(n<5)
            {
               keys+=",";
            }
            //alert(keys);
        });
        
        var logics= $F('LogicSelectBox1') + ',' + $F('LogicSelectBox2') + ',' + $F('LogicSelectBox3') + ',' + $F('LogicSelectBox4');
        var fields=$F('fieldSelectBox1') + ',' + $F('fieldSelectBox2') + ',' + $F('fieldSelectBox3') + ',' + $F('fieldSelectBox4') + ',' + $F('fieldSelectBox5');
        uniSearchArgs=Object.toJSON(objReses)+'@'+DatabaseString+'@'+sType+'@'+keys+'@'+logics+'@'+fields+'@'+ResNames;
        //window.open($(MainContentId+"ResultUrl").innerText,"_blank");
        goSubmit();
        return true;
    } 
}

function OnReferenceClientClick(e)
{
    var keyTexts=$F('keyTextBox1');        
    if(keyTexts.blank() && DatabaseString.blank())
    {
        alert("请选择搜索库,并输入搜索词！"); 
        if (e && e.preventDefault)
            e.preventDefault(); // DOM style
        else
            return false; // IE style
    }
    else if(keyTexts.blank())
    {
        alert("请输入搜索词！");
        if (e && e.preventDefault)
            e.preventDefault(); // DOM style
        else
            return false; // IE style
    }
    else if(DatabaseString.blank())
    {
        alert("请选择搜索库！");
        if (e && e.preventDefault)
            e.preventDefault(); // DOM style
        else
            return false; // IE style
    }
    else
    {
        var ResIDs = DatabaseString.split(",");
        var ResNames = '';
        var objReses = {};
        ResIDs.each(function(node){
            if(node!=''){
                objReses['res_' + node] = window['ResInfo']['res_' + node];
                ResNames += objReses['res_' + node].ResName + ',';
            }
        });
		var keys=keyTexts+',,,,';
		var logics='and,and,and,and';
		var fields=$(MainContentId+'hfSelectedFields').value;
		sType='Reference';
		objReses['SupportComboSearch'] = false;
        uniSearchArgs=Object.toJSON(objReses)+'@'+DatabaseString+'@'+sType+'@'+keys+'@'+logics+'@'+fields+'@'+ResNames;
        //window.open($(MainContentId+"ResultUrl").innerText,"_blank");
        goSubmit();
        return true;
    } 
}

function goSubmit()
{
    var resultUrl=$(MainContentId+"ResultUrl").innerText;

	var f = document.createElement("<form name='Outline' ACTION='"+resultUrl+"' METHOD='post' target='_blank'>");
	var j = document.createElement("<input type='text' id='uniSearchArgs' name='uniSearchArgs' value='"+uniSearchArgs+"' />");
	f.appendChild(j);
	document.appendChild(f);
	f.submit(); 
}

function goReferenceSubmit()
{
    var resultUrl=$(MainContentId+"ResultUrl").innerText;

	var f = document.createElement("<form name='Outline' ACTION='"+resultUrl+"' METHOD='post' target='_blank'>");
	var j = document.createElement("<input type='text' id='uniSearchArgs' name='uniSearchArgs' value='"+uniSearchArgs+"' />");
	var k = document.createElement("<input type='text' id='searchType' name='searchType' value='reference' />");
	f.appendChild(j);
	f.appendChild(k);
	document.appendChild(f);
	f.submit(); 
}

function ShowMetaType()
{
    if (DatabaseString.blank())
        return 'default';

    var retVal = 'default';
    
    var ids = DatabaseString.split(",");
    
    if (ids.length==1)
        retVal = 'Originality';
    else
    {
        var aid = window['ResInfo']['res_' + ids[0]].MetaType;
        retVal = 'Group';            
        for(i=0; i<ids.length;i++)
        {
            if (window['ResInfo']['res_' + ids[i]].MetaType != aid)
            {
                retVal = 'Sys';
                break;
            }
        }
    }
    
    return retVal;
} 


function OnDatabasesChange(checkbox)
{
    var index;
    if (checkbox)
    {
        index = checkbox.id.split('_');
        var length=index.length;
        CurDabaseIndex = index[length-2] + '_' + index[length-1];
    }  
    // 引用代表明细库的所有的checkbox控件
    var oBoxs = document.body.getElementsByTagName("input");
    if(oBoxs)
    {
        DatabaseString = "";
        var reg;
        var checkedBoxId;
        var IsMatchId;
        for(var i=0; i<oBoxs.length; i++)
        {
            if(oBoxs[i].type == "checkbox" && oBoxs[i].name.indexOf("Res_")>-1 && oBoxs[i].checked)
            {
                checkedBoxId=$(oBoxs[i]).up().alt;
                if(DatabaseString.blank())
                {
                    DatabaseString = checkedBoxId;                    
                }
                else
                {  

                   reg=new RegExp(checkedBoxId);
                   IsMatchId=DatabaseString.search(reg);
                   if(IsMatchId>-1)    //说明有重复的库
                   {   
                        alert("同一个库不能选多次！");
                        oBoxs[i].checked=false; 
                                                                     
                   }
                   else
                   {
                        DatabaseString = DatabaseString + "," + checkedBoxId;
                   }
                  // alert(DatabaseString);
                }
                 
            }
        }  
          
        // 检查选择的数据库数量是否超过限定
        if (DatabaseString.split(',').length > MaxSelectable)
        {
            SelectedStatus = 1;
            window.alert("最多可以选择"+MaxSelectable+"个数据库，您所选择的数量超过了这个限定！");
            RollbackSelectDB();
            //return;
        }
        //更新检索区域
        sType = ShowMetaType();

        UpdateConditionUI(sType);            
    }
}
//当资源库为表格形式显示时，点击CheckBox触发的事件
function TableOnDatabasesChange(checkbox)
{
    var oBoxs = document.body.getElementsByTagName("input");
    if(oBoxs)
    { 
        DatabaseString = "";    
        for(var i=0; i<oBoxs.length; i++)
        {
            if(oBoxs[i].type == "checkbox" && oBoxs[i].checked)
            {
              if(DatabaseString.blank())
              {
                DatabaseString = oBoxs[i].name;                    
              }
              else
              {
                DatabaseString = DatabaseString + ","+ oBoxs[i].name; 
              }
            }
        }
    }    
    // 检查选择的数据库数量是否超过限定
    if (DatabaseString.split(',').length > MaxSelectable)
    {
        SelectedStatus = 1;
        checkbox.checked=false;
        DatabaseString=DatabaseString.substring(0,DatabaseString.length-37);
        window.alert("最多可以选择"+MaxSelectable+"个数据库，您所选择的数量超过了这个限定！");
        
    }
    
    //更新检索区域
    sType = ShowMetaType();
    UpdateConditionUI(sType);            
}

function UpdateConditionUI(type) {
    var ids = DatabaseString.split(",");
    switch (type) {
        case 'default':
            for(var j=1;j<=5;j++){ 
                $('fieldSelectBox' + j).length = 0;          
                $('fieldSelectBox' + j).options[$('fieldSelectBox' + j).length] = new Option("全部字段","all");
            }       
            break;
        case 'Originality':
            for(var j=1;j<=5;j++){ 
                $('fieldSelectBox' + j).length = 0;          
                $('fieldSelectBox' + j).options[$('fieldSelectBox' + j).length] = new Option("全部字段","all");
            }       
            for(var j=1;j<=5;j++){
                for(var i=0;i<window['ResInfo']["res_" + DatabaseString]['OriginalityFields'].length;i++){
                    $('fieldSelectBox' + j).options[$('fieldSelectBox' + j).length] = 
                        new Option(window['ResInfo']["res_" + DatabaseString]['OriginalityFields'][i].DisplayName,
                            window['ResInfo']["res_" + DatabaseString]['OriginalityFields'][i].Value);
                }
            }
            break;
        case 'Group':
            var result = [];
            for(i=0; i<ids.length;i++)
            {
	            if(i==0)//第一遍循环,把第一个值设为交集结果					    
		            result=window['ResInfo']['res_' + ids[0]].GroupFields;
	            else
		            result=GetIntersection(result,window['ResInfo']['res_' + ids[i]].GroupFields);
            }
            for(var j=1;j<=5;j++){ 
                $('fieldSelectBox' + j).length = 0;          
                $('fieldSelectBox' + j).options[$('fieldSelectBox' + j).length] = new Option("全部字段","all");
            }       
            for(var j=1;j<=5;j++){ 
                for(var i=0;i<result.length;i++){
                    $('fieldSelectBox' + j).options[$('fieldSelectBox' + j).length] = 
                        new Option(result[i].DisplayName,result[i].Value);
                }
            }                
            break;
        case 'Sys':
            var result = [];
            for(i=0; i<ids.length;i++)
            {
	            if(i==0)//第一遍循环,把第一个值设为交集结果					    
		            result=window['ResInfo']['res_' + ids[0]].SysFields;
	            else
		            result=GetIntersection(result,window['ResInfo']['res_' + ids[i]].SysFields);
            }
            for(var j=1;j<=5;j++){ 
                $('fieldSelectBox' + j).length = 0;          
                $('fieldSelectBox' + j).options[$('fieldSelectBox' + j).length] = new Option("全部字段","all");
            }       
            for(var j=1;j<=5;j++){ 
                for(var i=0;i<result.length;i++){
                    $('fieldSelectBox' + j).options[$('fieldSelectBox' + j).length] = 
                        new Option(result[i].DisplayName,result[i].Value);
                }
            }
            break;
    }
    var SupportComboSearch = true;
    for (i = 0; i < ids.length; i++) {
        if (ids[i].blank()) break;
        var val = window['ResInfo']['res_' + ids[i]].SupportComboSearch;
        if ("False" == val) {
            SupportComboSearch = false;
        }
    }
    if (SupportComboSearch) {
        if (!$('ConditionHandle').visible()) $('ConditionHandle').show();
    }
    else {
        $('ConditionHandle').hide();
        $('keyTextBox2').value = '';
        $('keyTextBox3').value = '';
        $('keyTextBox4').value = '';
        $('keyTextBox5').value = '';
        if ($('Condition2').visible()) $('Condition2').hide();
        if ($('Condition3').visible()) $('Condition3').hide();
        if ($('Condition4').visible()) $('Condition4').hide();
        if ($('Condition5').visible()) $('Condition5').hide(); 
        boxNum=1;       
    }
}

function GetIntersection(arr1,arr2)
{
    var arrResult=new Array();//要返回的结果
    for(var i=0;i<arr1.length;i++){
	    for(var j=0;j<arr2.length;j++){
		    if(arr1[i].Value==arr2[j].Value){
			    arrResult.push(arr1[i]);			
			    break;	
		    }
	    }
    }
    return arrResult;
}

//检查父数据库类的复选框状态
//如果子数据库类都已经不勾选了，那么同步父类为不勾选状态。
//如果子数据库勾选了一部分，那么父类为disable状态。
//如果子数据库全部勾选，那么父类为enable状态。

function CheckParentStatus(itemIndex)
{
    var parentCheckBox = document.getElementById(MainContentId+itemIndex);
    if (null==parentCheckBox)
        parentCheckBox = document.getElementById(MainContentId+itemIndex.split('_')[0])
    var hasChecked = false;
    var hasUnChecked = false;
    for(var i=0; ; i++)
    {
        var item = document.getElementById(MainContentId+"Res_" + itemIndex + "_" + i);
        if(item)
        {
            if(item.checked)
                hasChecked = true;
            else
                hasUnChecked = true;
        }
        else
            break;
    }
    
    if(hasChecked && hasUnChecked)
    {
        parentCheckBox.checked = true;
        parentCheckBox.disabled = false;
    }
    else
    {
        if(hasChecked)
            parentCheckBox.checked = true;
        else if(hasUnChecked)
            parentCheckBox.checked = false;
        parentCheckBox.disabled = false;
    }
}    

//
// 勾选/取消全部子数据库类检查框
// 
function checkedChilddren(checkbox)
{
    var checkboxId=checkbox.id;
    var checkboxIdLen=checkboxId.length;
    var checkboxIdBegin=checkboxId.lastIndexOf("_")+1;
    checkboxId=checkboxId.substring(checkboxIdBegin,checkboxIdLen);

    // 引用代表明细库的所有的checkbox控件
    var oBoxs = document.body.getElementsByTagName("input");
    if(oBoxs)
    {
        for(var i=0; i<oBoxs.length; i++)
        {   
            //checkbox.id.substring(29,38)是dnn_ctr531_ViewuniSearchRes_001001002中的001001002
            if(oBoxs[i].type == "checkbox" && oBoxs[i].id.indexOf("Res_" + checkboxId)>-1)
            {   
                var specialClick=oBoxs[i].onclick+""; //把对象字符化,判断是否为不可检索                
                if(specialClick.indexOf("return false")<0)
                {
                    oBoxs[i].checked = checkbox.checked;
                }
            }
        }
    }
}
//
// 勾选满最大数的子数据库类检查框
// 
function checkedChilddren2(checkbox,num)
{
    var checkboxId=checkbox.id;
    var checkboxIdLen=checkboxId.length;
    var checkboxIdBegin=checkboxId.lastIndexOf("_")+1;
    checkboxId=checkboxId.substring(checkboxIdBegin,checkboxIdLen);

    // 引用代表明细库的所有的checkbox控件
    var oBoxs = document.body.getElementsByTagName("input");
    if(num==0)   //说明当前已经选了最大数的数据库了
    {
       return false;    
    }
    else
    {
        checkbox.checked=true;
        if(oBoxs)
        {
            DatabaseString="";
            var reg;
            var checkedBoxId;
            var IsMatchId;
            for(var i=0; i<oBoxs.length; i++)
            {   //不是当前的分类并且已选的都加到DatabaseString
                if(oBoxs[i].type == "checkbox" && oBoxs[i].name.indexOf("Res_")>-1 && oBoxs[i].checked)
                {
                    checkedBoxId=$(oBoxs[i]).up().alt;
                    if(DatabaseString.blank())
                        DatabaseString=checkedBoxId; 
                    else                                  
                        DatabaseString = DatabaseString + "," + checkedBoxId;                                        
                }
                //从当前选择的分类中再选择库加入，个数是剩余可选个数。
                if(oBoxs[i].type == "checkbox" && oBoxs[i].id.indexOf("Res_" + checkboxId)>-1)
                { 
                   checkedBoxId=$(oBoxs[i]).up().alt; 
                   reg=new RegExp(checkedBoxId);
                   IsMatchId=DatabaseString.search(reg);
                   if(IsMatchId==-1)
                   {
                        var specialClick=oBoxs[i].onclick+""; //把对象字符化,判断是否为不可检索                
                        if(specialClick.indexOf("return false")<0)
                        {
                            if(DatabaseString.blank())
                                DatabaseString=checkedBoxId; 
                            else                                  
                                DatabaseString = DatabaseString + "," + checkedBoxId;                        
                            oBoxs[i].checked = true;
                            num--;
                            if(num<1)
                            {   
                              return true;  
                            }  
                        }                     
                   }  

                }
            }
        }
    }
}
          
function flipFlop(eTarget) {

    if (document.getElementById(eTarget).style.display=='')//已经打开
    {
	    document.getElementById(eTarget).style.display='none';
	    document.getElementById("img_"+eTarget).src='/Images/plus.gif';
    }
    else//已经关闭
    {
	    document.getElementById(eTarget).style.display='';
	    document.getElementById("img_"+eTarget).src='/Images/minus.gif';
    }
}

var boxNum=2; //搜索框的个数
function AddConditionBox(tableID)
{    
    var conditionTable = document.getElementById(tableID);
    if(conditionTable && conditionTable.rows && conditionTable.rows.length>2)
    {
        for(var i=1; i<conditionTable.rows.length; i++)
        {
            
            var conditionRow = conditionTable.rows[i];
            if(conditionRow.style.display && conditionRow.style.display=="none")
            {
                conditionRow.style.display = "block";
                boxNum++;
                break;
            }
        }
    }
}

function RemoveConditionBox(tableID)
{    
    var conditionTable = document.getElementById(tableID);
    if(conditionTable && conditionTable.rows && conditionTable.rows.length>2)
    {
        for(var i=conditionTable.rows.length-1; i>0; i--)
        {
            var conditionRow = conditionTable.rows[i];
            if(conditionRow.style.display=="" || conditionRow.style.display=="block")
            {
                conditionRow.style.display = "none";
                $('LogicSelectBox'+(boxNum-1)).selectedIndex=0;
                $('fieldSelectBox'+boxNum).selectedIndex=0;
                $('keyTextBox'+boxNum).value="";
                boxNum--;
                break;
            }
        }        
    }
}            
    
// 回滚
function RollbackSelectDB()
{
    var selectedNum=0;
	var oBoxs = document.body.getElementsByTagName("input");
	var curCheckBox = document.getElementById(MainContentId+"Res_" + CurDabaseIndex);
	if (curCheckBox.type != "checkbox")
	    curCheckBox = document.getElementById(MainContentId+CurDabaseIndex);
	if (null==curCheckBox)
	{
	    curCheckBox = document.getElementById(MainContentId+"Res_" + CurDabaseIndex);
	}    
    if (null!=curCheckBox && curCheckBox.checked)
    {
       curCheckBox.checked = false;
       // 如果当前勾选的checkbox是库类别选项
       if (curCheckBox.id.indexOf("Res") == -1)
          {        
                checkedChilddren(curCheckBox);       
                for(var j=0; j<oBoxs.length; j++)
                {
                    if(oBoxs[j].type == "checkbox" && oBoxs[j].name.indexOf("Res")>-1 && oBoxs[j].checked)
                    {    
                       selectedNum+=1;                 
                    }
                }
                selectedNum=MaxSelectable-selectedNum;
                if(checkedChilddren2(curCheckBox,selectedNum)) //说明DatabaseString已经取完值
                    return;
           }
       else
          CheckParentStatus(CurDabaseIndex);
    }
    
    DatabaseString = "";
    for(var i=0; i<oBoxs.length; i++)
    {
       if(oBoxs[i].type == "checkbox" && oBoxs[i].name.indexOf("Res")>-1 && oBoxs[i].checked)
       {
          if(DatabaseString.blank())
             DatabaseString = $(oBoxs[i]).up().alt;
          else
             DatabaseString = DatabaseString + "," + $(oBoxs[i]).up().alt;
       }
    }
    SelectedStatus = 0;
    return;    
} 

//singleSearch
function UpdateListByEnableFLD()
{
    //可检字段获取可检字段
    var strField=document.getElementById(MainContentId+"hdnFields").value; 
    var resId=document.getElementById(MainContentId+"hdnDatabaseString").value; 
    var fields=StringToArray(strField);
    for(var k=1;k<6;k++)
    {    
        var arrList=document.getElementsByName("fieldSelectBox"+k);//获取所有的下拉菜单    
        for(var j=0;j<arrList.length;j++){ 
            arrList[j].length = 0;          
            arrList[j].options[arrList[j].length] = new Option("全部字段","all");
        }       
        for(var j=0;j<arrList.length;j++){           
            for(var i=0;i<fields.length;i++){                    
                arrList[j].options[arrList[j].length] = new Option(window['ResInfo']["res_" + resId]['OriginalityFields'][i].DisplayName,window['ResInfo']["res_" + resId]['OriginalityFields'][i].Value);
            }
        }
    }
}
function StringToArray(str)
{
    var arrResult=str.split(",");
	    for(var j=0;j<arrResult.length;j++){
		    if(arrResult[j]==""){//去掉最后一个空格元素
			    arrResult = arrResult.splice( 0, j );				
		    }
	    }
    return arrResult;
} 
