﻿// JScript File

function getConditions()
{
        UI.ShowProgressBar("Parsing...");
        var parameters = "";
        parameters +="<PXOML>";
        parameters +=RemoveLineBreaks(Serialize());
        parameters +="</PXOML>";
        parameters +="<PRULES>";
        parameters += rules;
        parameters +="</PRULES>";
        var actTree = document.getElementById("ActivityTree")        
        actTree.innerHTML = "";            
        makePOSTRequest("GetConditions.aspx", parameters, alertConditions);
}

var conditions = new Array()
var conditionNames = new Array()

function getNewConditionId()
{
        var inc = 0;
        var found = false;
        do
        {
            found = false;
            inc++;
            for(var coni=0;coni<conditionNames.length;coni++)
            {
                if (conditionNames[coni] == "Condition"+inc)
                {
                    found=true
                    break
                }                   
            }            
        }   
        while(found)           
        return "Condition"+inc;
}


function CloseConditionDialog()
{
    if(conditionNames.length>0)
    {
        if (selectedGridItem!=null)
        {
            conditionElement.value = selectedGridItem.innerText;
        }
    }
    
    var selActivity = Quanticks.activityFactory().getActivity(selectedElement)
    setProperty(selActivity.Properties["Name"],conditionProperty,conditionElement.value)
    activityBind.style.visibility = "hidden"
    drappery.style.visibility = "hidden"
    document.getElementById("AddConditionButton").style.visibility = "hidden"
    document.getElementById("RemoveConditionButton").style.visibility = "hidden"    
     
}

function ShowConditionForm(title)
{
    document.getElementById("conditionTitle").innerText=title;
    conditionForm.style.visibility = "visible";
    drappery2.style.visibility = "visible";
}

var conditionID;
var expression;

function OKConditionForm()
{
    conditionID = getNewConditionId();
    expression = document.getElementById("conditionTextBox").value;
    addCondition(conditionID,expression);
}

function CancelConditionForm()
{
     conditionForm.style.visibility = "hidden";
     drappery2.style.visibility = "hidden";  
}

function AddCondition()
{
    document.getElementById("conditionTextBox").value = "";
    document.getElementById("FormOKButton").onclick = OKConditionForm;    
    ShowConditionForm("Condition");
}

function RemoveCondition()
{
        if (selectedGridItem!=null)
        {
            var cname = selectedGridItem.innerText;
            removeCondition(cname);
        }
}

function DisplayReturnedConditions()
{
    var returnedConditionsReader = returnedConditions;
    conditions = new Array();
    var startCond = returnedConditionsReader.indexOf("<CONDITION>");
    var endCond = returnedConditionsReader.indexOf("</CONDITION>");
    conditionNames = new Array();
    var conditionCount = 0;
    while(startCond >=0)
    {
        var condXML = returnedConditionsReader.substring(startCond+11,endCond);  
        var startCname = condXML.indexOf("<CNAME>");
        var endCname = condXML.indexOf("</CNAME>");      
        var startExp = condXML.indexOf("<CEXP>");
        var endExp = condXML.indexOf("</CEXP>");
        var cname = condXML.substring(startCname+7,endCname);
        var cexp = condXML.substring(startExp+6,endExp);        
        returnedConditionsReader = returnedConditionsReader.substring(endCond+12);  
        conditionNames[conditionCount]=cname;
        conditionCount++;
        conditions[cname] = cexp;
        startCond = returnedConditionsReader.indexOf("<CONDITION>");
        endCond = returnedConditionsReader.indexOf("</CONDITION>");
    }    
    
}

function FillConditionForm()
{
    var ConditionsHTML="";
    for (var fcfi=0;fcfi<conditionNames.length;fcfi++)
    {    
        ConditionsHTML+="<tr><td><div id='"+conditionNames[fcfi]+"conditiondiv' class=\"griditem\" onclick=\"selectGridItem(this)\">"+conditionNames[fcfi]+"</div></td></tr>"
    }
    var actTree = document.getElementById("ActivityTree")
    actTree.innerHTML = "<table cellspacing=0 cellpadding=0>"
    actTree.innerHTML += "<tr><td>"
    actTree.innerHTML += ConditionsHTML;
    actTree.innerHTML += "</table>";
    if(conditionNames.length>0)
    {
        selectedGridItem = document.getElementById(conditionNames[0]+"conditiondiv");
        selectedGridItem.className="selectedgriditem";
    }
}

function alertAddCondition() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
        //alert(http_request.responseText);
        result = http_request.responseText;
        var errorsStart = result.indexOf("<ERRORS>")
        var errorsEnd = result.indexOf("</ERRORS>")
        
        var rulesStart = result.indexOf("<RULES>")
        var rulesEnd = result.indexOf("</RULES>")            
        rules = result.substring(rulesStart+7,rulesEnd);
        errors = result.substring(errorsStart+8,errorsEnd);                      
        DisplayEncodedRules();
        var actTree = document.getElementById("ActivityTree")
        if (errors.indexOf("<ERROR>")>=0)
        {

            var errorReader = errors;
            var errorMessage = "";
            var startError = errorReader.indexOf("<ERROR>");
            var endError = errorReader.indexOf("</ERROR>");
            while(startError >=0)
            {
                errorMessage += errorReader.substring(startError+7,endError)+"\n";
                errorReader = errorReader.substring(endError+8);
                startError = errorReader.indexOf("<ERROR>");
                endError = errorReader.indexOf("</ERROR>");
            }    
            alert(errorMessage);
            UI.HideProgressBar();                  
        }
        else
        {
            actTree.innerHTML = "";
            conditionNames[conditionNames.length] = conditionID;
            conditions[conditionID] = expression;
            conditionForm.style.visibility = "hidden";
            drappery2.style.visibility = "hidden";            
            FillConditionForm();
            selectGridItem(document.getElementById(conditionID+"conditiondiv"));
            UI.HideProgressBar();
        } 
        statusBar.innerHTML = "Ready";
     } else {
        alert('There was a problem with the request. Status '+http_request.responseText);
        statusBar.innerHTML = "Ready";
        UI.HideProgressBar();
     }
  }
}
   
var returnedConditions=null;   
function alertConditions() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
        //alert(http_request.responseText);
        result = http_request.responseText;
        var errorsStart = result.indexOf("<CONDITIONS>")
        var errorsEnd = result.indexOf("</CONDITIONS>")         
        returnedConditions = result.substring(errorsStart+12,errorsEnd);           

        DisplayReturnedConditions();  
        FillConditionForm();  
        UI.HideProgressBar();
     } else {
        alert('There was a problem with the request. Status'+http_request.responseText);
        UI.HideProgressBar();
     }
  }
}
   
function addCondition(cname, condition)
{    
        UI.ShowProgressBar("Validating...");
        var parameters = "";
        parameters +="<PXOML>";
        parameters +=RemoveLineBreaks(Serialize());
        parameters +="</PXOML>";
        parameters +="<PRULES>";
        parameters += rules;
        parameters +="</PRULES>";
        parameters +="<CNAME>";
        parameters += cname;
        parameters +="</CNAME>";
        parameters +="<PCONDITION>";
        parameters += condition;
        parameters +="</PCONDITION>";
            
        makePOSTRequest("addcondition.aspx", parameters, alertAddCondition);    
}

function removeCondition(cname)
{    
        conditionID = cname;
        UI.ShowProgressBar("Removing...");
        var parameters = "";
        parameters +="<PXOML>";
        parameters +=RemoveLineBreaks(Serialize());
        parameters +="</PXOML>";
        parameters +="<PRULES>";
        parameters += rules;
        parameters +="</PRULES>";
        parameters +="<CNAME>";
        parameters += cname;
        parameters +="</CNAME>";
            
        makePOSTRequest("removecondition.aspx", parameters, alertRemoveCondition);    
}

function alertRemoveCondition() 
{
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            result = http_request.responseText;
            var errorsStart = result.indexOf("<ERRORS>")
            var errorsEnd = result.indexOf("</ERRORS>")
            
            var rulesStart = result.indexOf("<RULES>")
            var rulesEnd = result.indexOf("</RULES>")            
            rules = result.substring(rulesStart+7,rulesEnd);
            errors = result.substring(errorsStart+8,errorsEnd); 
            if (errors.indexOf("<ERROR>")>=0)
            {
                DisplayErrors();
                UI.HideProgressBar();                  
            }
            else
            {
                DisplayEncodedRules();
                var newconditionNames = new Array();
                for(var coni=0;coni<conditionNames.length;coni++)
                {
                    if (conditionNames[coni] != conditionID)
                    {
                        newconditionNames[newconditionNames.length]=conditionNames[coni];
                    }                   
                } 
                conditionNames=newconditionNames;
                conditions[conditionID] = "";
                FillConditionForm();
                UI.HideProgressBar(); 
            } 
            statusBar.innerHTML = "Ready";
         } else {
            alert('There was a problem with the request. Status'+http_request.responseText);
            statusBar.innerHTML = "Ready";
            UI.HideProgressBar();
         }
      }
}