﻿//1-FieldName
//2-Relation(And,Or)
//3-Operator(EQ,NEQ,...)
//4-Value

var FiltercollectFieldName=new Array();
var FiltercollectFieldType=new Array();
var FiltercollectRelation=new Array();
var FiltercollectOperator=new Array();
var FiltercollectValue=new Array();
var flag = false;
window.onload = function ChangeDDLName()
                {                                       
                    var ddls = document.getElementsByTagName("select");
                    for(var i=0;i<ddls.length;i++)
                    {
                        if(ddls[i].name.indexOf("ViewOrder") != -1)
                        {
                            ddls[i].id = ddls[i].name.substr(ddls[i].name.indexOf("ViewOrder"));
                        }
                    }
                    
                    var inputs = document.getElementsByTagName("input");
                    for(var i=0;i<inputs.length;i++)
                    {
                        if(inputs[i].id.indexOf("DateTimeField_") != -1)
                        {
                            inputs[i].onpropertychange=function ()
                                {
                                    if(flag)
                                    {
                                        var internalName = this.id.substr(this.id.indexOf("DateTimeField_"));
                                        internalName = internalName.replace("DateTimeField_", "");
                                        if(internalName.indexOf("_") != -1)
                                        {
                                            internalName = internalName.substr(0,internalName.indexOf("_"));
                                        }
                                        
                                        var _RdbFillDateID = "FillDate_" + internalName + "_";
                                        FilterTXTChangeText("FiltercollectValue",this,internalName);
                                        CheckRDBDate(_RdbFillDateID);
                                    }
                                 }
                        } 
                    }
                    
                    flag = true;
                    
                    UpdateFilterCollection();
                }
                             
function GetIndexByFieldName(_FieldName)
{
    var indexToRemove = -1;
    for(var i=0;i<FiltercollectFieldName.length;i++)
    {
        if(FiltercollectFieldName[i].toString() == _FieldName)
        {
            indexToRemove = i;
            break;
        }
    }
    
    return indexToRemove;
}

Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

function RemoveIdFromCollection(_FieldName)
{
    var indexToRemove = GetIndexByFieldName(_FieldName);
    
    if(indexToRemove != -1)
    {
        FiltercollectFieldName.remove(indexToRemove);
        FiltercollectFieldType.remove(indexToRemove);
        FiltercollectRelation.remove(indexToRemove);
        FiltercollectOperator.remove(indexToRemove);
        FiltercollectValue.remove(indexToRemove);
        
        UpdateHiddenField("FiltercollectFieldName","hdn_FiltercollectFieldName");
        UpdateHiddenField("FiltercollectFieldType","hdn_FiltercollectFieldType");
        UpdateHiddenField("FiltercollectRelation","hdn_FiltercollectRelation");
        UpdateHiddenField("FiltercollectOperator","hdn_FiltercollectOperator");
        UpdateHiddenField("FiltercollectValue","hdn_FiltercollectValue");
    }
}

function UpdateFilter(Coll,HdnId)
{
    var hdn2 = document.getElementsByTagName("input");
    for(var i=0;i<hdn2.length;i++)
    {
        if(hdn2[i].id.indexOf(HdnId) != -1)
        {
            var value = hdn2[i].value.split(',');
            
            for(var j=0;j<value.length;j++)
            {
                switch(Coll)
                {
                    case "FiltercollectFieldName":
                         FiltercollectFieldName[j] = value[j];
                        break;
                    case "FiltercollectFieldType":
                        FiltercollectFieldType[j] = value[j];
                        break;
                    case "FiltercollectRelation":
                         FiltercollectRelation[j] = value[j];
                        break;
                    case "FiltercollectOperator":
                         FiltercollectOperator[j] = value[j];
                        break;
                    case "FiltercollectValue":
                         FiltercollectValue[j] = value[j];
                        break;
                    default:
                        break;
                }
            }
           break;
        }
    }
}

function UpdateFilterCollection()
{
    UpdateFilter("FiltercollectFieldName","hdn_FiltercollectFieldName");
    UpdateFilter("FiltercollectFieldType","hdn_FiltercollectFieldType");
    UpdateFilter("FiltercollectRelation","hdn_FiltercollectRelation");
    UpdateFilter("FiltercollectOperator","hdn_FiltercollectOperator");
    UpdateFilter("FiltercollectValue","hdn_FiltercollectValue");

    for(var k=0;k<FiltercollectFieldType.length;k++)
    {
        if(FiltercollectFieldType[k] == "")
        {
            continue;
        }
        
        var elemId = FiltercollectFieldType[k] + "_" + FiltercollectFieldName[k];
        var elem = null;
        var elems = null;
        
        switch(FiltercollectFieldType[k])
        {
            case "Lookup":
            case "Choice":
                elems = document.getElementsByTagName("select");
                break;
            case "Text":
            case "URL":
            case "Boolean":
                elems = document.getElementsByTagName("input");
                break;
            case "DateTime":
                elemId = "DateTimeField_" + FiltercollectFieldName[k];
                elems = document.getElementsByTagName("input");
                break;
            default:
                break;
        }
        
        if(elems == null)
        {
            continue;
        }
        
        for(var i=0;i<elems.length;i++)
        {
            if(elems [i].id.indexOf(elemId) != -1)
            {
                elem = elems[i];
                break;
            }
        }
            
        if(elem != null)
        {   
            switch(FiltercollectFieldType[k])
            {
                case "Lookup":
                case "Choice":
                        for(var i=0;i<elem.length;i++)
                        {
                            if(elem[i].value == FiltercollectValue[k])
                            {
                                elem.selectedIndex = i;
                                break;
                            }
                        }
                    break;
                case "Text":
                case "URL":
                        elem.value = FiltercollectValue[k];
                    break;
                case "Boolean":
                        if(FiltercollectValue[k] == "1")
                        {
                            elem.checked = true;
                        }
                        else
                        {
                            elem.checked = false;
                            //elem.checked = FiltercollectValue[k];
                        }
                    break;
                case "DateTime":
                        if(FiltercollectValue[k] != "-1" && FiltercollectValue[k] != "TODAY")
                        {
                            elem.value = FiltercollectValue[k];
                        }
                    break;
                default:
                    break;
            }
            
            var ddls =document.getElementsByTagName("select");
            var ddl= null;
            for(var d = 0; d<ddls.length;d++)
            {
                if(ddls[d].id.indexOf("DDLFilterOperator_" +FiltercollectFieldName[k]) != -1)
                {
                    ddl = ddls[d];
                    break;
                }
            }
            
            if(ddl != null)
            {
                //Getting TR
                ddl.parentElement.parentElement.style.display = "";
                //Getting CheckBox
                ddl.parentElement.parentElement.previousSibling.firstChild.firstChild.checked = true;
                for(var i=0;i<ddl.length;i++)
                {
                    if(ddl[i].value == FiltercollectOperator[k])
                    {
                        ddl.selectedIndex = i;
                        break;
                    }
                }
            }
        }
    }
}

function UpdateHiddenField(Coll,HdnId)
{
    var hdn2 = document.getElementsByTagName("input");
    for(var i=0;i<hdn2.length;i++)
    {
        if(hdn2[i].id.indexOf(HdnId) != -1)
        {
            switch(Coll)
            {
                case "FiltercollectFieldName":
                     hdn2[i].value = FiltercollectFieldName;
                    break;
                case "FiltercollectFieldType":
                    hdn2[i].value = FiltercollectFieldType;
                    break;
                case "FiltercollectRelation":
                     hdn2[i].value = FiltercollectRelation;
                    break;
                case "FiltercollectOperator":
                     hdn2[i].value = FiltercollectOperator;
                    break;
                case "FiltercollectValue":
                     hdn2[i].value = FiltercollectValue;
                    break;
                default:
                    break;
            }
           break;
        }
    }
}

function AddIdToCollection(_FieldName,_FieldType)
{
    var i = FiltercollectFieldName.length;
    FiltercollectFieldName[i] = _FieldName;
    FiltercollectFieldType[i] = _FieldType;
    FiltercollectRelation[i] = "And";
    FiltercollectOperator[i] = "Eq";
    FiltercollectValue[i] = "-1";
    
    UpdateHiddenField("FiltercollectFieldName","hdn_FiltercollectFieldName");
    UpdateHiddenField("FiltercollectFieldType","hdn_FiltercollectFieldType");
    UpdateHiddenField("FiltercollectRelation","hdn_FiltercollectRelation");
    UpdateHiddenField("FiltercollectOperator","hdn_FiltercollectOperator");
    UpdateHiddenField("FiltercollectValue","hdn_FiltercollectValue");
}

function FillCollWithValue(Coll,Value,index)
{
    switch(Coll)
    {
        case "FiltercollectRelation":
             FiltercollectRelation[index] = Value;
             UpdateHiddenField("FiltercollectRelation","hdn_FiltercollectRelation");
            break;
        case "FiltercollectOperator":
             FiltercollectOperator[index] = Value;
             UpdateHiddenField("FiltercollectOperator","hdn_FiltercollectOperator");
            break;
        case "FiltercollectValue":
             if(Value == "")
             {
                Value = "-1";
             }
             
             FiltercollectValue[index] = Value;
             UpdateHiddenField("FiltercollectValue","hdn_FiltercollectValue");
            break;
        default:
            break;
    }
}

function FilterFieldChecked(_FieldId,_FieldName,_FieldType)
{
    var row; 
    var rows = document.getElementsByTagName('tr');
    for(var i=0; i<rows.length;i++)
    { 
        if(rows[i].id.indexOf("RowFilter_" + _FieldId) != -1)
        {
            row = rows[i];
            break;
        }
    }
    
    if(row == null)
    {
        return;
    }
    
    if(row.style.display == 'none') 
    {
        row.style.display = '';
        AddIdToCollection(_FieldName,_FieldType);
    } 
    else 
    {
        row.style.display = 'none';
        RemoveIdFromCollection(_FieldName);
    }
}

function FilterRDBDateChangeChecked(Coll,rdbObj,_FieldName,rdbType,dtID)
{
    var indexToRemove = GetIndexByFieldName(_FieldName);
    if(indexToRemove != -1)
    {
        if((rdbObj.checked && rdbType == "TODAY") || (!rdbObj.checked && rdbType != "TODAY"))
        {
            FillCollWithValue(Coll,"TODAY",indexToRemove);
        }
        else
        {
            var dts = document.getElementsByTagName("input");
            var dt = null;
            for(var i=0;i<dts.length;i++)
            {
                if(dts[i].id.indexOf(dtID) != -1)
                {
                    dt = dts[i];
                    break;
                }
            }
            
            if(dt != null)
            {
                FillCollWithValue(Coll,dt.value,indexToRemove);
            }
        }
    }
}

function CheckRDBDate(rdbID)
{
    var inputs = document.getElementsByTagName("input");
    var input = null;
    for(var i=0;i<inputs.length;i++)
    {
        if(inputs[i].id.indexOf(rdbID) != -1)
        {
            input = inputs[i];
            break;
        }
    }
    
    if(input != null)
    {
        input.checked = true;
    }
}

function FilterCBXChangeChecked(Coll,cbxObj,_FieldName)
{
    var indexToRemove = GetIndexByFieldName(_FieldName);
    if(indexToRemove != -1)
    {
        FillCollWithValue(Coll,cbxObj.checked,indexToRemove);
    }
}

function FilterTXTChangeText(Coll,txtObj,_FieldName)
{
    
    var indexToRemove = GetIndexByFieldName(_FieldName);
    if(indexToRemove != -1)
    {
        FillCollWithValue(Coll,txtObj.value,indexToRemove);
    }
}

function FilterDDlChangeChecked(Coll,ddlObj,_FieldName)
{
    var indexToRemove = GetIndexByFieldName(_FieldName);
    if(indexToRemove != -1)
    {
        FillCollWithValue(Coll,ddlObj[ddlObj.selectedIndex].value,indexToRemove);
    }
}

function SetOrderDDL(eSelect, iCurrentField, numSelects)
{
	var eForm = eSelect.form;
	var iNewOrder = eSelect.selectedIndex + 1;
	var iPrevOrder;
	var positions = new Array(numSelects);
	var ix;
	for (ix = 0; ix < numSelects; ix++)
	{
		positions[ix] = 0;
	}
	for (ix = 0; ix < numSelects; ix++)
	{
		positions[eSelect.form["ViewOrder" + ix].selectedIndex] = 1;
	}
	for (ix = 0; ix < numSelects; ix++)
	{
		if (positions[ix] == 0)
		{
			iPrevOrder = ix + 1;
			break;
		}
	}
	if (iNewOrder != iPrevOrder)
	{
		var iInc = iNewOrder > iPrevOrder? -1:1
		var iMin = Math.min(iNewOrder, iPrevOrder);
		var iMax = Math.max(iNewOrder, iPrevOrder);
		for (var iField = 0; iField < numSelects; iField++)
		{
			if (iField != iCurrentField)
			{
				if (eSelect.form["ViewOrder" + iField].selectedIndex + 1 >= iMin &&
					eSelect.form["ViewOrder" + iField].selectedIndex + 1<= iMax)
				{
					eSelect.form["ViewOrder" + iField].selectedIndex += iInc;
				}
			}
		}
	}
}

function OpenCloseSpan(obj,cliendId,pnlId)
{
    var row; 
    var rows = document.getElementsByTagName('tr');
    for(var i=0; i<rows.length;i++)
    {
        if(rows[i].id.indexOf(cliendId + "_" + pnlId) != -1)
         {
            row = rows[i]; 
            break; 
         }
     }
     
     if(row == null)
     {
        return;
     }

     if(row.style.display == 'none')
     {
        row.style.display = ''; 
        obj.firstChild.src ="/_layouts/images/TPMin2.gif";
     }
     else
     {
        row.style.display = 'none';
        obj.firstChild.src ="/_layouts/images/TPMax2.gif";    
     }
}
