﻿
/************* Menu selector code. ********************************************/

var BrandIQMenuTabCount = 3;
var BrandIQMenuTabPrefix = 'MMTab_';
var BrandIQMenuSubNavPrefix = 'MMSubNav_';

// The hiddenMenuSelectorClientId value is assigned server-side by the master page.
var hiddenMenuSelectorClientId;

function showHide(elId)
{
        var el = document.getElementById(elId);
        if (el)
            el.style.display = (el.style.display != 'block' ? 'block' : 'none');
}

function BrandIQSetMenuTab(tabId)
{
    writeCookie(tabId);
    var hidSelector = GetHiddenTabSelector();
    if (hidSelector == null) return;
    hidSelector.value = tabId;
    SetActiveMenuTab();
}


function SetActiveMenuTab()
{
    var hidSelector = GetHiddenTabSelector();
    if (hidSelector == null) return;
    //var tabId = hidSelector.value;
    
    var tabId = readCookie();  
    if (tabId == null) tabId=0; 
    
    for (var i = 0; i < BrandIQMenuTabCount; i++)
    {
        var tabElementId = BrandIQMenuTabPrefix + i;
        var subNavElementId = BrandIQMenuSubNavPrefix + i;
            
        var tabElement = BrandIQGetElementById(tabElementId);
        if (tabElement == null) return;
        
        if (i == tabId) tabElement.className = 'select';
        else tabElement.className = '';            
        
        var subNavElement = BrandIQGetElementById(subNavElementId);
        if (subNavElement == null) return;

        if (i == tabId) subNavElement.style.display = 'block';
        else subNavElement.style.display = 'none';
    }
    
     
}

function readCookie() 
{
    var nameEQ = 'tabId=';
	var ca = document.cookie.split(';');
	
	
	for(var i=0;i < ca.length;i++) {
	    var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
	return null; 
	
}


function writeCookie(cookieValue) 
{
	document.cookie = "tabId="+cookieValue+"; path=/";
}

function BrandIQGetElementById(elementId)
{
    if (typeof(elementId) == 'undefined')
    {
        alert('Internal error! BrandIQGetElementById called with undefined element id.');
        return null;
    }
    var ctrl = document.getElementById(elementId);
    if (ctrl == null)
    {
        alert("Internal error! Cannot locate the control identified by '" + elementId + "'.");
        return null;
    }
    return ctrl;
}

function GetHiddenTabSelector()
{
    if (typeof(hiddenMenuSelectorClientId) == 'undefined')
    {
        alert('Internal error! The hiddenMenuSelectorClientId variable had not been assigned a value by the server-side code. Cannot set the correct menu tab.');
        return null;
    }

    var hidSelector = document.getElementById(hiddenMenuSelectorClientId);
    if (hidSelector == null)
    {
        alert("Internal error! Cannot locate the hidden menu selector control identified by '" + hiddenMenuSelectorClientId + "' Cannot set the correct menu tab.");
        return null;
    }
    return hidSelector;
}



/************* End region menu selector code. ********************************************/

function HTMLEncode(t) {
    return t.toString().replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
}

/// Returns the text description for a value in a select list.
function TextForSelectedOption(selectControl, val)
{
    if (typeof(selectControl) == 'undefined' || selectControl == null)
    {
        alert("Internal error! The selectControl argument to TextForSelectedOption is null or undefined.");
        return 'error';        
    }
    
    if (typeof(val) == 'undefined' || val == null)
    {
        alert("Internal error! The val argument to TextForSelectedOption is null or undefined.");
        return 'error';        
    }

    if (val.length == 0) return '';
    
    for (var i = 0; i < selectControl.options.length; i++)
    {
        if (selectControl.options[i].value == val) return selectControl.options[i].text;
    }
    return 'unknown value';
}

function UTCDateTime(dmyDate)
{
    var thisDate = ParseDMYDate(dmyDate);
    if (isNaN(thisDate)) return '';
    return thisDate.toUTCString();
}

function UniversalSortableDateTime(dmyDate)
{
    var thisDate = ParseDMYDate(dmyDate);
    if (isNaN(thisDate)) return '';
    return thisDate.getFullYear() + '-' 
        + (thisDate.getMonth()+1) + '-' 
        + thisDate.getDate() + ' ' 
        + thisDate.getHours() + ':' 
        + thisDate.getMinutes() + ':' 
        + thisDate.getSeconds() + 'Z';
}

// Note that we are only interested in the date portion - time will always end up zero.
function ParseDMYDate(dmyDate)
{
	//if (dmyDate.match == null) return NaN;
	
    var re = /(\d+)[\.\-\/\s]+(\d+)[\.\-\/\s]+(\d+)/;
    if (dmyDate.match(re))
    {
        return new Date(RegExp.$2 + '/' + RegExp.$1 + '/' + RegExp.$3);
	}
	else return NaN;
}

function ParseUniversalSortableDateTimeAsDMY(usdt)
{
    if (usdt == 'undefined') return '';
    if (usdt.length == 0) return '';
    usdt = usdt.substring(0, usdt.indexOf(' '));       
    if (usdt.length == 0) return '';
    var values = usdt.split('-');
    if (values.length < 3) return '';
    return values[2] + '/' + values[1] + '/' + values[0];
}

function BrandIQSetFocus(clientId)
{
    if (typeof(clientId) == 'undefined') return;
    var ctrl = document.getElementById(clientId);
    if (ctrl == null) return;
    eval('ctrl.focus()');
}

// This function solves the problem when your default button
// only fires the first time. I found the solution on this web page:
// http://weblogs.asp.net/bstahlhood/. Add this OnClientClick to your
// default button: OnClientClick="BrandIQResetDefaultFormButton"
function BrandIQResetDefaultFormButton()
{
    if (typeof(__defaultFired) != 'undefined') __defaultFired = false;
}

function BrandIQSetInnerText(obj, newVal)
{
    if (obj.innerText != null) obj.innerText = newVal;     // IE or Safari.
    else 
    {
        if (obj.textContent != null) obj.textContent = newVal; // FireFox.
        else alert("Internal Error! Cannot locate innerText property or its equivalent. This is a browser incompatibility.");
    }
}

// Submit handler to call for file uploads.
function ValidateUploadFileType(inputId, overwriting)
{
      
    var badExts = 'ade,adp,app,bas,bat,chm,class,cmd,com,cpl,crt,dll,exe,fxp,hlp,hta,ins,isp,jse,lnk,mda,mdb,mde,mdt,mdw,mdz,msc,msi,msp,mst,ops,pcd,pif,prf,prg,reg,scf,scr,sct,shb,shs,url,vb,vbe,vbs,wsc,wsf,wsh';
    var beArray = badExts.split(',');

    if (inputId == null || typeof(inputId) == 'undefined')
    {
        alert('Internal error! This function must be called with the id of a text input control.');
        return false;
    }

    var ctrl = document.getElementById(inputId);
    if (ctrl == null)
    {
        alert('Internal error! Cannot locate control ' + inputId + ' in the DOM.');
        return false;
    }
    
    var filename = ctrl.value;
    if (filename == null || filename.trim().length == 0) return true;
    filename = filename.trim();
    
    var ppos = filename.lastIndexOf('.');
    if (ppos < 0 || ppos > filename.length-4)
    {
        alert('You cannot upload a file unless it has a valid file extension such as .doc, .pdf, etc.');
        return false;
    }
    
    var ext = filename.substring(ppos+1).toLowerCase();

    for (var i = 0; i < beArray.length; i++)
    {
        var badExt = beArray[i].toLowerCase();
        if (badExt == ext)
        {
            alert('You cannot upload a file with .' + badExt + ' extension.');
            return false;
        }        
    }
    
    if (overwriting) return confirm('Do you want to overwrite your existing file?');
    else return true;
}

    function toggleDivPanel(divid)
    {
       var mydiv = document.getElementById('collapsed' + divid);
       var myimg = document.getElementById('img' + divid);
       var persister = document.getElementById('ctl00_txtPanelStates');
       var panelstring = new String(persister.value);
       var re = new RegExp(divid + ',', 'igm');
       
       
       if (mydiv && mydiv.style)
       {
            if (mydiv.style.display == 'block')
            {
                mydiv.style.display = 'none';
                myimg.src = myimg.src.replace(/-off\./, '-on.');
                panelstring = panelstring.replace(re, '');
            }
            else
            {
                mydiv.style.display = 'block';
                myimg.src = myimg.src.replace(/-on\./, '-off.');
                panelstring = panelstring + divid + ',';
                
            }
            persister.value = panelstring;
       }
    }
    
    function CallPostback(PostbackGenrator, ElementCheck)
    {
        var btn = $get(PostbackGenrator);
        var alreadyrun = $get(ElementCheck);
        
        if(!alreadyrun){
            btn.click();
        }
    }
    
    function ShowProgress(UpdateProgressID, ControlPanelID)
    {
            //IE animation bug.  Reset the inner html to allow the animated gif to work properly.
            document.getElementById(ControlPanelID).style.display = 'none';
            document.getElementById(UpdateProgressID).innerHTML = document.getElementById(UpdateProgressID).innerHTML;
            document.getElementById(UpdateProgressID).style.display = "inline";
    }