﻿//Variable Declaration.
var request;

//Loading and setting XMLHttpRequest.
function setXmlHTTPRequest()
{              
    var xmlHttp;
    try
    {  // Firefox, Opera 8.0+, Safari  
        xmlHttp=new XMLHttpRequest();
        request = xmlHttp;  
    }
    catch (e)
    {  // Internet Explorer 
        try
        {    
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            request = xmlHttp;     
        }
        catch (e)
        {    
            try
            {      
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
                request = xmlHttp;      
            }
            catch (e)
            {      
                alert("Your browser does not support AJAX!");      
                return false;      
            }    
        }  
    }                
}


function  EditFields(controlArray, value)
{
    for(index = 0; index < controlArray.length; index++)
    {  
        var ddlObject = getObject(controlArray[index]);
        if(ddlObject != null)
        {
            ddlObject.disabled = !value;          
        }
    }        
}

function getDocument(isXMLString, value)
{
    var xDocument = null;

    try //Internet Explorer
    {
        xDocument = new ActiveXObject("Microsoft.XMLDOM");
        xDocument.async = false;
       if(xDocument != null)
       {
            if(isXMLString)
            {
                xDocument.loadXML(value);
            }
            else
            {
                xDocument.load(value);
            }
       }
    }
    catch(e)
    {
       try //Firefox, Mozilla, Opera, etc.
       {  
           if(value == 'undefined')
           {
                return null;
           }                               
           if(isXMLString)
            {
               var parser = new DOMParser();  
               xDocument = parser.parseFromString(value,"text/xml");
            }
            else
            {
                xDocument = document.implementation.createDocument("", "", null);
                xDocument.async = false;
                xDocument.load(value);
            }
           
       }
       catch(e) 
       {
            alert(e.message);
       }
    }
   return xDocument;
}

//XSL Transform function.
function transformHtml(xmlNodeToBeTransformed, xslDocument)
{           
    if(xmlNodeToBeTransformed)
    {    
        return xmlNodeToBeTransformed.transformNode(xslDocument);
    }
    return '';
}

//Sending XMLHTTPRequest
function SendRequest(requestBody, requestURL, requestHeader, functionCallBack)
{
    try
    {
        setXmlHTTPRequest();        
        if(request != null)
        {
            request.open("POST", requestURL);
            request.onreadystatechange = functionCallBack;
            request.setRequestHeader(requestHeader, "true");
            request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            request.send(requestBody);
        }
    }
    catch(ex)
    {
        alert("SendRequest:" + ex.message);
    }
}

//Retrieving the control value based on control id and type.
function getValue(controlID, controlType)
{
    var controlObject = getObject(controlID);
    var value = null;
    if(controlObject == null)
    {
        return value;
    }
    switch(controlType)
    {
        case "text": value = controlObject.value; break;
        case "checkbox": value = controlObject.checked; break;
        case "select": value = controlObject.options[controlObject.selectedIndex].value; break;
        case "label":  value = controlObject.innerText; break;
        case "hidden": value = controlObject.value; break;
        case "attribute": value = controlObject.getAttribute("value");
        case "txtattribute": value = controlObject.getAttribute("id");
        default:return value;
    }
    return value;
}

//Getting the control based on control id from the document.
function getObject(controlID)
{
    if(document == null) 
    {
        return null;
    }
    
    var controlObject = document.getElementById(controlID);
    if(controlObject == null)
    {
        var controlObjects = document.getElementsByName(controlID);
        if (controlObjects != null && controlObjects.length != 0) {
            controlObject = controlObjects[0];
        }
    }
    return controlObject;
}

function setValue(controlID, controlType, value)
{
    var controlObject = getObject(controlID);
    if(controlObject == null)
    {
        return;
    }
    if(value == 'null' || value == null)
    {
        value = '';
    }    
    switch(controlType)
    {
        case "text": controlObject.value = value; break;
        case "checkbox": controlObject.checked = value; break;
        case "select": 
                    for(optionIndex = 0; optionIndex < controlObject.options.length; optionIndex++)
                    {
                        if(controlObject.options[optionIndex].text == value || controlObject.options[optionIndex].value == value )
                        {
                            controlObject.options[optionIndex].selected = true;
                            //controlObject.selectedIndex = optionIndex;
                            break;
                        }
                    }
                    break;
        case "label":  controlObject.innerText = value; break;
        case "hidden": controlObject.value = value; break;     
        case "attribute": controlObject.setAttribute("value", value);   
        case "txtattribute": controlObject.setAttribute("id", value); 
    }
   
}

function clearItemsFromDropDown(controlID, defaultText, defaultValue)
{    
    var dropDownObject = getObject(controlID);
    if(dropDownObject != null)
    {               
        dropDownObject.innerHTML = '';                                 
        var optionTag = document.createElement("option");
        optionTag.text = defaultText;
        optionTag.value = defaultValue;
        dropDownObject.options.add(optionTag);
    }
}

function addItemsToDropDown(response, ddlObject, useAttributes)
{
    if(response != null && response.xml != "")
    {
        var xmlDocument;
        xmlDocument = getDocument(true, response.xml);
        var root;
        var NodeList = null;
        var node;
        root = xmlDocument.documentElement;
        NodeList = root.childNodes;
        for (var i=0; i<NodeList.length; i++) 
        {
            node = (useAttributes) ? NodeList[i].attributes : NodeList[i].childNodes;
            addItems(node, ddlObject, useAttributes);
        }
    }
}

function addItems(node, ddlObject, useAttributes)
{
    try
    {
        var optionElement = document.createElement("option");        
        optionElement.text = (useAttributes) ? node.getNamedItem("name").text : node.item(0).text;
        optionElement.value = (useAttributes) ? node.getNamedItem("name").text : node.item(0).text;        
        if(node.item(1))
        {
            optionElement.value = (useAttributes) ? node.getNamedItem("id").text : node.item(1).text;        
        }
        ddlObject.options.add(optionElement);
    }
    catch(ex)
    {
    
    }
}

function isNullOrEmpty(value)
{   
    if(value != null && value.length > 0)
    {
        return false;
    }
    else
    {
        return true;
    }
}

function setNodeData(node, xpath, value)
{
    var tempNode = getNode(node, xpath);
    if(tempNode != null)
    {
        setNodeValue(tempNode, value);
    }
}

function setNodeValue(node, value)
{
    if(node != null && value != null)
    {
        node.text = value;
    }
}

function getNode(node, xpath)
{
    return (node != null) ? node.selectSingleNode(xpath) : null;  
}

function getNodes(node, xpath)
{
    return (node != null) ? node.selectNodes(xpath) : null;  
}

function getNodeValue(node, xpath)
{
    var tempNode = getNode(node, xpath);
    return (tempNode != null) ? tempNode.text : null;  
}

function ShowMessage(message, title, messageTypeID)
{
    execScript("msgBoxResult = msgbox('"+ message +"'," + messageTypeID + ",'" + title + "')","vbscript");
    return msgBoxResult;
}

function ShowOrHide(controlID, isVisible)
{
    var control = getObject(controlID);
    if(control != null)
    {   
        control.style.display = (isVisible) ? '' : 'none';
    }
}

function ChangeText(control)
{    
    if((control.value == "[Please enter a unique name for the project]") && (control.id == "txtProjectName"))
    {
        control.style.color = 'black';
        control.value = '';
        control.text = '';
    }
    else if((control.value == "") && (control.id == "txtProjectDesc"))
    {
        control.style.color = 'black';
        control.value = '';
        control.text = '';
    }
}

function RestoreText(control)
{
    if((control.value == null) || (control.value == ""))
    {
        if(control.id == "txtProjectName")
        {
            control.value = "[Please enter a unique name for the project]";
            control.style.color = '#808080';
        }
        if(control.id == "txtProjectDesc")
        {
            control.value = "";
            control.style.color = '#808080';
        }
    }
}

function IsInt(value)
{
    var isInteger = false;
    try
    {
        if(!isNullOrEmpty(value))
        {
            isInteger = parseInt(value);
            if(isNaN(isInteger))
            {
                isInteger = false;
            }
            else
            {
                 isInteger = true;
            }
        }        
    }
    catch(e)
    {
         isInteger = false; 
    }
    return isInteger;
}

//function DisableOrEnableFields(id, value)
//{
//    var parentObject = getObject(id);
//    for(index = 0; index < parentObject.all.length; index++)
//    {  
//        var object = parentObject.all[index];
//        if(object != null)
//        {
//            object.disabled = !value;          
//        }
//    }  
//}