﻿var timer = new Array()

// Saves specification XML that is stored in session to Elevation
function SaveSpecification(id, changedElem, specDiv) {
    var specChanged = document.getElementById(changedElem);

    if(specChanged.innerHTML) {    
        ShowElement("processingScreenSplash",null);        
        XmlHttp.get(saveCB, "SpecificationWorker.aspx?t=s&id=" + id, changedElem, specDiv);
    }
}

function moveCB(res, changedElem, div) {
    
    var specDiv = document.getElementById(div);    
    var specChanged = document.getElementById(changedElem);
    var splash = document.getElementById("processingScreenSplash");
     
    if (res.status == 200 && specDiv.innerHTML.toString() != res.responseText.toString()) {
        specDiv.innerHTML = res.responseText;    
        specChanged.innerHTML = "*";    
    }
    
    HideElement("processingScreenSplash", null);
}

function saveCB(res, changedElem, div) {
    
    var specDiv = document.getElementById(div);    
    var specChanged = document.getElementById(changedElem);
        
    if (res.status == 200) {
        if(specDiv != null) {
            specDiv.innerHTML = res.responseText;
        }  
        specChanged.innerHTML = "";         
    }    
    
    HideElement("processingScreenSplash", null);
}

function toggle(res, changedElem, div) {
    
    if (res.status != 200) {
       alert("Unable to save Tree node visibility change.");     
    }    
}

function OpenPopupWindow(sUrl) {
    window.open(sUrl, 'helpWin', 'width=1013,height=719,menubar=no,resizable=yes,titlebar=no,toolbar=no,scrollbars=yes');
}

function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  }
}

function CancelTimer(t) {
    window.clearTimeout(timer[t]);
}

function HideElementTimed(id, time, t) {
    timer[t] = window.setTimeout('HideElement("' + id + '", null)', time);
}

function ShowElement(id, elem) {
    if(!elem) {
        elem = document.getElementById(id);
    }
    
    if(elem) { 
        elem.style.visibility = "visible"; 
        elem.style.display = "block";
    }
}

function HideElement(id, elem) {
    if(!elem) {
        elem = document.getElementById(id);
    }
    
    if(elem) {     
        elem.style.visibility = "hidden"; 
        elem.style.display = "none";
    }
}

function ToggleTreeNode(image, elem, guid, id) {
    
    if(elem) {   
        if(elem.className == 'visible') {   
            elem.className = 'hidden';
            image.src = 'images/icon-plus.gif';
            
            XmlHttp.get(toggle, "SpecificationWorker.aspx?t=h&id=" + id + "&guid=" + guid, null, null);
        }
        else {
            elem.className = 'visible';
            image.src = 'images/icon-minus.gif';
            
            XmlHttp.get(toggle, "SpecificationWorker.aspx?t=v&id=" + id + "&guid=" + guid, null, null);
        }
    }
}

function ProcessToolBox(curImage,id,addNewProduct,addNewCompletedClause,copyMultipleRows,reselectProduct,reselectCompletedClause,paste,nbscode) {

    var popup = document.getElementById('toolPopup');    
    var guid = id;
    
    if (popup['guid'] == guid){
        ToggleElementVisibilityWIframe('toolPopup');
    }
    else{
        popup['guid'] = guid;
        
        var links = popup.getElementsByTagName('a');
        var match;
        
        // adding guid attribute for links according to item which has been clicked by user
        for (var i=0;i<links.length;i++){
            links[i]['guid'] = guid;
            match = /(guid|addLocGuid|repLocGuid)=([\w\d-]*)$/.exec(links[i].href);
            
            if (match) {   
                links[i].href = links[i].href.replace(match[2], guid);  
            }
        }
        
        var divs = popup.getElementsByTagName('div');
        
        for (var i=0;i<divs.length;i++){   
            
            // if we will show the toolbox of specication's rootnode, we don't want to show some links or headings. 
            if (divs[i].id == 'moveItem' || divs[i].id == 'copyItem' || divs[i].id == 'copyMultipleRows' || divs[i].id == 'copyHeading' || divs[i].id == 'moveHeading'){
                if (curImage.name == 'rootNode'){
                    divs[i].style.display = "none";
                }
                else{
                    divs[i].style.display = "block";
                }
            }
            
            // Examine div ids and show only necessary divs.
            if (divs[i].id == 'addNewProduct'){
                if (addNewProduct == '1'){    
                    divs[i].style.display = "block";
                }
                else{         
                    divs[i].style.display = "none";
                }
            }
            else if (divs[i].id == 'addNewCompletedClause'){
                if (addNewCompletedClause == '1'){    
                    divs[i].style.display = "block";
                }
                else{
                    divs[i].style.display = "none";
                }
            }
            else if (divs[i].id == 'copyMultipleRows' && curImage.name != 'rootNode'){
                if (copyMultipleRows == '1'){
                    divs[i].style.display = "block";
                }
                else{
                    divs[i].style.display = "none";
                }
            }
            else if (divs[i].id == 'reselectProduct'){
                if (reselectProduct == '1'){
                    divs[i].style.display = "block";
                }
                else{
                    divs[i].style.display = "none";
                }
            }
            else if (divs[i].id == 'reselectCompletedClause'){
                if (reselectCompletedClause == '1'){
                    divs[i].style.display = "block";
                }
                else{
                    divs[i].style.display = "none";
                }
            }
            else if (divs[i].id == 'viewHeading'){
                if (reselectCompletedClause == '1'){
                    divs[i].style.display = "block";
                }
                else{
                    divs[i].style.display = "none";
                }
            }
            else if (divs[i].id == 'viewNbsDetails'){
                if (reselectCompletedClause == '1'){
                    divs[i].style.display = "block";
                    
                    var specId = divs[i].getAttribute('specId');
                    
                    divs[i].firstChild.onclick = function(){OpenNbsDetails(specId,nbscode)};
                }
                else{
                    divs[i].style.display = "none";
                }
            }
            else if (divs[i].id == 'paste'){
                if (paste == '1'){
                    divs[i].style.display = "block";
                }
                else{
                    divs[i].style.display = "none";
                }
            }    
        }
        
        // insert toolbox to corresponding location in html.
        curImage.parentNode.insertBefore(popup, curImage.nextSibling);
        if (popup.visibility == 'visible'){
            // Hide previous toolbox first and then open the new one.
            // (this has to be done, otherwise weird things might happen)
            popup.style.visibility = "hidden"; 
            HideLayer('toolPopup');
            popup.style.visibility = "visible"; 
            ShowLayer('toolPopup');
        }
        else{
            popup.style.visibility = "visible"; 
            ShowLayer('toolPopup');
        }
    }
    
}

function OpenNbsDetails(spId, nbsCode){
    ToggleElementVisibilityWIframe('toolPopup');
    HideElement('NBSLoosewareDiv',null);
    HideElement('NBSPanelwareDiv',null);
    window.open("NbsDetails.aspx?id=" + spId + "&nbscode=" + nbsCode,'NBSDetails',"toolbar=0,menubar=0,scrollable=1,resizable=1,width=640,height=480"); 
}

// This function is some sort of partial fix for IE, which is not capable of finding elements
// when using the general getElementsByName-function.
function getElementsByName_iefix(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

// This function gets element by custom attribute named "type".
function getElementsByType_iefix(tag, type) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("type");
          if(att == type) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

function ToggleElementVisibility(id) {

    var elem = document.getElementById(id);   
    
    if(elem) {   
        if(elem.style.visibility == "visible") {   
             HideElement('', elem);
        }
        else {
            elem.style.visibility = "visible"; 
            ShowElement('', elem);
        }
    }
}

function ToggleElementVisibilityWIframe(id) {
    var elem = document.getElementById(id);   
      
    if(elem) { 
        if(elem.style.visibility == "visible") {   
            elem.style.visibility = "hidden"; 
             HideLayer(id);
        }
        else {
            elem.style.visibility = "visible"; 
            ShowLayer(id);
        }
    }
}

//ToggleElementDisplayStyleWIframe(id){
//     var elem = document.getElementById(id);   
//      
//    if(elem) { 
//        if(elem.style.display != "none") {   
//            elem.style.display = "none"; 
//             HideLayer(id);
//        }
//        else {
//            elem.style.display = "block"; 
//            ShowLayer(id);
//        }
//    }

//}

function ToggleOtherFieldVisibility(dd, id) {
    if(dd.selectedIndex + 1 == dd.options.length) {
        ShowElement(id,null);
    }
    else {
        HideElement(id,null);
    }
}

function ToggleColorHighlight(item, colournameitem, colourcodeitem) {  
    var colourTrs = item.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("tr");
        
    var colourName = document.getElementById(colournameitem);    
    colourName.value = item.title;
    
    var colourCode = document.getElementById(colourcodeitem);    
    colourCode.value = item.id;
    
    for(var k = 0; k < colourTrs.length; k++) {
        var colourTds = colourTrs.item(k).getElementsByTagName("td");                 
        for(var j = 0; j < colourTds.length; j++) {   
            colourTds.item(j).style.border='1px solid white';        
        }
    }
    
    item.parentNode.parentNode.style.border='1px solid red';
}

function toggleControlGroups(enabledControls, disabledControls) {
    if (enabledControls)
    {
        for(var i = 0; i < enabledControls.length; i++) {
            var eElem = document.getElementById(enabledControls[i]); 
           
            if (eElem) {
                if(eElem.type == "RADIO" && eElem.length > 0)
                {
                    for(var j=0; j < eElem.length; j++)
                    eElem[j].disabled = false;
                }
                eElem.disabled = false;
            }
        }
     }
     
     if (disabledControls)
     {
        for(var i = 0; i < disabledControls.length; i++) {
            var dElem = document.getElementById(disabledControls[i]); 
            
            if (dElem) {
                dElem.disabled = true;
            }
        }
     }
 }
 
 function controlInGroupIsChecked(controls) {
    if (controls)
    {
        for(var i = 0; i < controls.length; i++) {
            var eElem = document.getElementById(controls[i]); 
           
            if (eElem) {
                if(eElem.type == "RADIO" && eElem.length > 0)
                {
                    for(var j=0; j < eElem.length; j++)
                    if (eElem[j].checked == true) return true;
                }
                if (eElem.checked == true) return true;
            }
        } 
     }
     return false;
 }
 
 function UnSelect(elem) {
    var temptext = elem.value;
    elem.value = "";
    elem.value = temptext;
 }
 
 function getQueryStringVariable(getKey) {
        var query = window.location.search.substring(1);
        if (!query) return '';
        var parms = query.split('&');
        if (!parms || parms.length < 1) return '';
        for (var i=0; i<parms.length; i++) {
            var pos = parms[i].indexOf('=');
            if (pos > 0) {
                var key = parms[i].substring(0,pos);
                if (key == getKey) {
                    var val = parms[i].substring(pos+1);
                    if (!val) return '';
                    return val;
                }
            }
        }
        return '';
}
 
function moveToConfirmationPage(redirUrl,cancelMode)
{
    var cleaned = window.location.href;
    cleaned = cleaned.replace("#","");
    var fromUrl = URLEncode(cleaned);

    redirUrl = URLEncode(redirUrl);
    window.location =  "Confirmation.aspx?id=" + getQueryStringVariable('id') + "&rdUrl=" + redirUrl + "&fromUrl=" + fromUrl; + '&cm=' + cancelMode
}
 
function URLEncode(inputString)
{
	if (!inputString) return '';
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = inputString;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for
	return encoded;
}
 

function ShowLayer(divId) {
    // show layer
    var layer = document.getElementById(divId);
    if (layer) {
        layer.style.display = 'block';
        layer.visibility = 'visible';
    }
    // show IFRAME
    var iframe = document.getElementById('iframe');
    if (iframe && layer) {
        iframe.style.display = 'block';
        iframe.style.width = layer.offsetWidth;
        iframe.style.height = layer.offsetHeight;
        iframe.style.left = layer.offsetLeft;
        iframe.style.top = layer.offsetTop;
    }
}

function HideLayer(divId) {
    // hide IFRAME
    var iframe = document.getElementById('iframe');
    if (iframe) {
    iframe.style.display = 'none';
    // hide layer
    }
    var layer = document.getElementById(divId);
    if (layer) {
        //layer.style.display = 'none';
        layer.visibility = 'hidden';
    }
}

function showDown(evt) { 
    evt = (evt)? evt : ((event)? event : null); 
    if (evt) { 
        if (event.keyCode == 8 && (event.srcElement.type!= "text" && event.srcElement.type!= "textarea" && event.srcElement.type!= "password")) { 
            // When backspace is pressed but not in form element 
            cancelKey(evt); 
        } 
        else if (event.keyCode == 116) { 
            // When F5 is pressed 
            cancelKey(evt); 
        } 
        else if (event.keyCode == 122) { 
            // When F11 is pressed 
            cancelKey(evt); 
        } 
        else if (event.ctrlKey && (event.keyCode == 78 || event.keyCode == 82)) { 
            // When ctrl is pressed with R or N 
            cancelKey(evt); 
        } 
        else if (event.altKey && event.keyCode==37 ) { 
            // stop Alt left cursor 
            return false; 
        } 
    } 
} 

function cancelKey(evt) { 
    if (evt.preventDefault) { 
        evt.preventDefault(); 
        return false; 
    } 
    else { 
        evt.keyCode = 0; 
        evt.returnValue = false; 
    } 
}

function enableOrDisableRegisterButton(rbId, regButtonId)
{
    if(document.getElementById(rbId).checked){
        document.getElementById(regButtonId).disabled = false;
    }
    else {
        document.getElementById(regButtonId).disabled = true;
    }
}

function ToggleProjectVisibility(curImg)
{   
    var elem = curImg.parentNode.parentNode;
    var tmpNode = null;
    //alert (elem.firstChild.nextSibling.firstChild.nodeType);
    
    if (curImg.getAttribute("src").indexOf('images/icon-plus.gif')!=-1)
    {
        while ((elem.nextSibling && elem.nextSibling.nodeType == 1 && elem.nextSibling.getAttribute("name") == elem.getAttribute("name")) || (elem.nextSibling && elem.nextSibling.nextSibling.nodeType==1 && elem.nextSibling.nextSibling.getAttribute("name") == elem.getAttribute("name"))) {
            if (elem.nextSibling.nodeType == 3){
                elem.nextSibling.nextSibling.style.visibility = "visible";
                elem.nextSibling.nextSibling.style.display = "block";
                elem.nextSibling.nextSibling.firstChild.nextSibling.firstChild.nextSibling.style.visibility = "hidden";
                elem.nextSibling.nextSibling.firstChild.nextSibling.firstChild.nextSibling.style.display = "none";
                elem = elem.nextSibling.nextSibling; 
            }
            else
            {        
                elem.nextSibling.style.visibility = "visible";
                elem.nextSibling.style.display = "block";
                elem.nextSibling.firstChild.firstChild.style.visibility = "hidden";
                elem.nextSibling.firstChild.firstChild.style.display = "none";
                elem = elem.nextSibling;    
            }          
        }
        curImg.src = 'images/icon-minus.gif';
    }
    else
    {
        while ((elem.nextSibling && elem.nextSibling.nodeType == 1 && elem.nextSibling.getAttribute("name") == elem.getAttribute("name")) || (elem.nextSibling && elem.nextSibling.nextSibling.nodeType==1 && elem.nextSibling.nextSibling.getAttribute("name") == elem.getAttribute("name"))) {
            if (elem.nextSibling.nodeType == 3){
                elem.nextSibling.nextSibling.style.visibility = "hidden";
                elem.nextSibling.nextSibling.style.display = "none";
                elem = elem.nextSibling.nextSibling; 
            }
            else
            {        
                elem.nextSibling.style.visibility = "hidden";
                elem.nextSibling.style.display = "none";
                elem = elem.nextSibling;    
            }          
        }
        curImg.src = 'images/icon-plus.gif';
    }
}
function ProjectReporting_ClearSelections()
{
    var usrList = document.getElementById("ctl00_ContentPlaceHolder_LoginView_userList");
    usrList.selectedIndex = -1;
    
    document.getElementById("ctl00_ContentPlaceHolder_LoginView_CreateReport").disabled = true;
}

function ProjectReporting_SelectAll()
{
    var usrList = document.getElementById("ctl00_ContentPlaceHolder_LoginView_userList");
    for (var i=0; i<usrList.length;i++)
    {
        usrList.options[i].selected = true;
    }
    document.getElementById("ctl00_ContentPlaceHolder_LoginView_CreateReport").disabled = false;
}

function ProjectReporting_ItemSelected()
{
    var usrList = document.getElementById("ctl00_ContentPlaceHolder_LoginView_userList");
    if (usrList.selectedIndex > -1){
        document.getElementById("ctl00_ContentPlaceHolder_LoginView_CreateReport").disabled = false;
    }
    else{
        document.getElementById("ctl00_ContentPlaceHolder_LoginView_CreateReport").disabled = true;
    }
}

function ProjectReporting_HideValidatorText(strDateTextBox)
{
    if (strDateTextBox == 'from')
    {
        if (document.getElementById("ctl00_ContentPlaceHolder_LoginView_FromDateValidator") != null){
            document.getElementById("ctl00_ContentPlaceHolder_LoginView_FromDateValidator").style.display = "none";
        }
    }
    else if (strDateTextBox == 'to')
    {
        if (document.getElementById("ctl00_ContentPlaceHolder_LoginView_ToDateValidator") != null){
            document.getElementById("ctl00_ContentPlaceHolder_LoginView_ToDateValidator").style.display = "none";
        }
    }
    else
    {
        if (document.getElementById("ctl00_ContentPlaceHolder_LoginView_FromDateValidator") != null){
            document.getElementById("ctl00_ContentPlaceHolder_LoginView_FromDateValidator").style.display = "none";
        }
        if (document.getElementById("ctl00_ContentPlaceHolder_LoginView_ToDateValidator") != null){
            document.getElementById("ctl00_ContentPlaceHolder_LoginView_ToDateValidator").style.display = "none";
        }
    }
}

function ProjectReporting_TogglePriceWarning()
{
    if (document.getElementById("ctl00_ContentPlaceHolder_LoginView_IncludePrices").checked)
    {
        document.getElementById("PriceSelectionWarning").style.display = "block";
    }
    else
    {
        document.getElementById("PriceSelectionWarning").style.display = "none";
    }

}

  