// JScript File

//operatorsToHideTheControl
//operatorsToShowValue2Controls

//value 1 control
    //regular expression control
    
//value 2 control
    //child controls
    //regular expression control

function Operators(nullOperatorsString, betweenOperatorsString, operatorSep, selectedOperator)
{    
    this.NullOperators = ParseOperatorString(nullOperatorsString, operatorSep);
    this.BetweenOperators = ParseOperatorString(betweenOperatorsString, operatorSep); 
    this.LastOperator = selectedOperator;
}    


//parses the operators and returns as an array
function ParseOperatorString(operatorsString, operatorSep)
{
    var operatorArray = new Array();    
    if(operatorsString != null && operatorSep != null)
    {
        var operatorInfo = operatorsString.split(operatorSep);	//character used to separate operatorsList    
        for (i=0;i<operatorInfo.length;i++)
        {        
            if (operatorInfo[i] != "")
            {            
                operatorArray.push(operatorInfo[i]);
            }
        }
    }     
    return operatorArray;
}

//check if current value is NULL &&
function ColumnOperatorClicked(comboElement, operatorsObj)
{    
    
    if(comboElement != null && operatorsObj != null)
    {            
        var isLastValueExistInNullOpers = IsValueExitsInArray(operatorsObj.LastOperator, operatorsObj.NullOperators);
        var isLastValueExistInBetweenOpers = IsValueExitsInArray(operatorsObj.LastOperator, operatorsObj.BetweenOperators);
     
        var isCurrentValueExistInNullOpers = IsValueExitsInArray(comboElement.value, operatorsObj.NullOperators);
        var isCurrentValueExistInBetweenOpers = IsValueExitsInArray(comboElement.value, operatorsObj.BetweenOperators);   
               
        //if the last operator is does not exists in NullOperator/BetweenOperator && the currentOperator exist (Null/between) then postback the form  (ie, from EQUAL to NULL)
        //check whether the last opvalue is a exits in NullOperators//BetweenOperators then postback the form (i.e, from NULL to EQUAL)       
        if(
            (isLastValueExistInBetweenOpers && isCurrentValueExistInBetweenOpers)
            ||
            (isLastValueExistInNullOpers && isCurrentValueExistInNullOpers)
          )
       {        
            return;   
       }
        
        if( 
            ( 
                (!isLastValueExistInNullOpers || !isLastValueExistInBetweenOpers) && 
                (isCurrentValueExistInNullOpers || isCurrentValueExistInBetweenOpers)
             ) 
             
             || 
             
             ( 
                (isLastValueExistInNullOpers || isLastValueExistInBetweenOpers) && 
                (!isCurrentValueExistInNullOpers || !isCurrentValueExistInBetweenOpers)
             )                           
          )
          {
                __doPostBack(comboElement.id,'');
        
          //  document.forms[0].submit();
          }      
        operatorsObj.LastOperator = comboElement.value;
    } 
}

function IsValueExitsInArray(value, arrayItems)
{
    var valueExists = false;    
    if( value != null && arrayItems != null)
    {                
        for(i=0; i<arrayItems.length; i++)
        {            
            if(arrayItems[i] != null && arrayItems[i] == value)
            {               
                valueExists = true;  
                break; 
            }
        }        
    }
        
    return valueExists;
}

//Old Function Definition
//drp_onchange(elemObj, operatorsObj, element1, elemRegExpCtrls1, spanId, element2, elemRegExpCtrls2, regExpIdSep, sampleValSpanId1, sampleValSpanId2)
function drp_onchange(elemObj, operatorsObj, element1, spanId, element2, sampleValSpanId1, sampleValSpanId2)
{   
    if(elemObj != null && operatorsObj != null)
    {            
        var value1Obj = document.getElementById(element1);
        var sampleValue1Obj = document.getElementById(sampleValSpanId1);         
        if(value1Obj != null)
        {                                
            var isValueExistInNullOpers = IsValueExitsInArray(elemObj.value, operatorsObj.NullOperators);
            var isValueExistInBetweenOpers = IsValueExitsInArray(elemObj.value, operatorsObj.BetweenOperators);                        
            if(isValueExistInNullOpers)
            {
                HideElement(value1Obj);                
                //HideRegExprElement(elemRegExpCtrls1, regExpIdSep);
                //hide sample value1                
                if(sampleValue1Obj != null)
                {
                    HideElement(sampleValue1Obj);
                }
                  
                ShowOrHideValue2Operators(false, spanId, element2, sampleValSpanId2);
            }
            else if(isValueExistInBetweenOpers)
            {            
                ShowElement(value1Obj);  
                ShowElement(sampleValue1Obj);                                      
                ShowOrHideValue2Operators(true, spanId, element2, sampleValSpanId2);
            }
            else
            {
                ShowElement(value1Obj);                        
                ShowElement(sampleValue1Obj);                        
                ShowOrHideValue2Operators(false, spanId, element2, sampleValSpanId2);
            }
        }
    }
}

function ShowOrHideValue2Operators(bflag /*true -show the controls|false -hide the controls.*/, spanId, element2, sampleValue2)
{
    var boolVal = new Boolean(bflag);             
    var spanElem = document.getElementById(spanId);
    var value2Obj = document.getElementById(element2);
    var sampleValue2Obj = document.getElementById(sampleValue2);
    if(spanElem != null && value2Obj != null)
    {                        
        if(boolVal == true)
        {                                            
            ShowElement(spanElem);                    
            ShowElement(value2Obj);            
            ShowElement(sampleValue2Obj);            
        }
        else
        {                    
            HideElement(spanElem);                    
            HideElement(value2Obj);
            HideElement(sampleValue2Obj);   
        }
    }
}

function HideElement(elementObj)
{
    if(elementObj != null)
    {
        if(elementObj.type == "text")
        {
            elementObj.value = "";
        }        
        if(elementObj.tagName == "SELECT")
        {                        
            HideDropdownControl(elementObj);
        }
        else
        {
            elementObj.style.visibility = "hidden";
            elementObj.style.display = "none";
        }
    }
}

function ShowElement(elementObj)
{
    if(elementObj != null)
    {            
        if(elementObj.tagName == "SELECT")
        {             
            ShowDropdownControl(elementObj);
        }
        else
        {
            elementObj.style.visibility = "visible";
            elementObj.style.display = "block";
        }
    }
}

//Added by Sandeep Tuli for ASPCompositeColumn drop down control
function CompositeColoumn_drp_onchange(comboElement, operatorsObj, subColumnsObjs, subColumnsObjsSep , subColumnsRegExprIds, subColumnsRegExpSep)
{   
    if(comboElement != null && operatorsObj != null)
    {            
        if(subColumnsObjs != null)
        {
            var isLastValueExistInNullOpers = IsValueExitsInArray(operatorsObj.LastOperator, operatorsObj.NullOperators);
            
            var isCurrentValueExistInNullOpers = IsValueExitsInArray(comboElement.value, operatorsObj.NullOperators);
               
            if(isLastValueExistInNullOpers && isCurrentValueExistInNullOpers)
            {
                return;   
            }
            else if((!isLastValueExistInNullOpers) && (!isCurrentValueExistInNullOpers))
            {
                return;
            }
            else
            {
                   if(isCurrentValueExistInNullOpers)
                   { 
                        //Hide controls
                        var subColObjsArray = ParseOperatorString(subColumnsObjs, subColumnsObjsSep);
                
                        if(subColObjsArray != null && subColObjsArray.length > 0)
                        {        
                            for(i=0; i< subColObjsArray.length; i++)
                            {
                                if(subColObjsArray[i] != null)
                                {
                                    var subColObj = document.getElementById(subColObjsArray[i]);
                                    if(subColObj != null)
                                    {
                                        HideSubElement(subColObj); 
                                    }
                                }
                            }
                        }
                        
                        //Hide regular expression operators
                        HideRegExprElement(subColumnsRegExprIds, subColumnsRegExpSep);
                        
                    }
                    else
                    {
                        var subColObjsArray = ParseOperatorString(subColumnsObjs, subColumnsObjsSep);
                
                        if(subColObjsArray != null && subColObjsArray.length > 0)
                        {        
                            for(i=0; i< subColObjsArray.length; i++)
                            {
                                if(subColObjsArray[i] != null)
                                {
                                    var subColObj = document.getElementById(subColObjsArray[i]);
                                    if(subColObj != null)
                                    {
                                        ShowElement(subColObj); 
                                    }
                                }
                            }
                        }
                         //Hide regular expression operators
                        HideRegExprElement(subColumnsRegExprIds, subColumnsRegExpSep);
             
                    }
            }        
            operatorsObj.LastOperator = comboElement.value;
        }
    }
}
function HideSubElement(elementObj)
{
    if(elementObj != null)
    {
        if(elementObj.tagName == "SELECT")
        {                        
            HideDropdownControl(elementObj);
        }
        else
        {
            elementObj.style.visibility = "hidden";
            elementObj.style.display = "none";
        }
    }
}

function ValidateColumn(src,expression,ignoreCase,message,errDiv)
{	
	var re = null;	
	if (ignoreCase != null && ignoreCase.toLowerCase() == "true")	
		re = new RegExp(expression,"i");
	else
		re = new RegExp(expression);

	if (re.test(src.value))
	{		
		var errEle = document.getElementById(errDiv);
		if (errEle)
		{
			errEle.innerHTML = "";
			errEle.style.display = "none";
		}
	}
	else
	{		
		var errEle = document.getElementById(errDiv);
		if (errEle)
		{
			errEle.innerHTML = message;
			errEle.style.display = "block";
			errEle.style.color = "red";
		}
	}
}

var m_fileUploadFrameId = 'FileUploadFrame';
function ShowFileUploadWindow(columnId)
{	
	var url;
    var fileUploadPage = NGServerUrl()+ "/Webpages/Editor/FileUpload.aspx?COLUMNID=" + columnId;
    try
    {
		var frame = document.getElementById(_UploadFileLayer);
        if (frame!=null)
        {
            ShowLayer(_UploadFileLayer,null,null);
            frame.style.visibility = 'visible'; 
            PopulateiFrame(m_fileUploadFrameId,fileUploadPage,null,null);
        }
    }
    catch(e){} 
}

function HideUploadWindow()
{
	if(m_fileUploadFrameId != null && _UploadFileLayer != null)
	{
		var _iFrame = document.getElementById(m_fileUploadFrameId);
		
		var _iFrameLayer = document.getElementById(_UploadFileLayer);
		
		if (_iFrameLayer!=null)
		{
			HideLayer(_UploadFileLayer,null,null);
			_iFrameLayer.style.visibility='hidden';            
		}		  
		if (_iFrame!=null)
		{
			_iFrame.style.display = 'none';	       
		} 
	}
}