﻿
/*
========================================================================================================
Custom Form Validator
========================================================================================================
*/
//window.onload = xcm_FixWPPadding;

//function xcm_FixWPPadding()
//{
//    var oTbl = document.getElementsByTagName('TABLE');
//    var i=0;
//    for (i=0; i<oTbl.length; i++)
//    {
//        if (oTbl[i].id.indexOf('WebPart_') > -1)
//        {
//            try
//            {
//                var x=0;
//                //alert(oTbl[i].childNodes[0].tagName);
//                for (x=0; x<oTbl[i].childNodes[0].childNodes[0].childNodes.length; x++)
//                {
//                alert(oTbl[i].childNodes[0].childNodes[0].childNodes[x].innerHTML);
//                    oTbl[i].childNodes[0].childNodes[0].childNodes[x].style.padding = '0px';
//                    oTbl[i].childNodes[0].childNodes[0].childNodes[x].innerHTML = oTbl[i].childNodes[0].childNodes[0].childNodes[x].innerHTML.replace(/> <\/div>/ig, '></div>');
//                alert(oTbl[i].childNodes[0].childNodes[0].childNodes[x].innerHTML);                    
//                }
//            }
//            catch (e) { alert('err: ' + e);}
//        }
//    }
//}
window.onload = xcm_FixWPPadding;

function xcm_FixWPPadding() {
    var oTd = document.getElementsByTagName('td');
    var i = 0;
    for (i = 0; i < oTd.length; i++) {
        if (oTd[i].className == 'noPad' && oTd[i].style.padding == '5px') {

            //alert(oTd[i].style.padding);
            oTd[i].style.padding = '0px';
        }
    }

}

function xcm_SubmitCustomForm(targetFrameId)
{
    var sFormID = targetFrameId.replace(/xcmif_/,'');
    var sModeID = ('xcmcf_hid_{0}_mode').replace(/\{0\}/,sFormID);
    var sUrlID = ('xcmcf_hid_{0}_url').replace(/\{0\}/,sFormID);
    
    if (liValCustomForm())
    {
        var mode = document.getElementById(sModeID).value;
        var Url = (mode=='email') ? '/internal/handlers/SubmitCustomForm.ashx' : document.getElementById(sUrlID).value;
        
        if (mode != 'customurl')
        {
            document.forms[0].target = targetFrameId;
        }
        document.forms[0].action = Url + '?cfid=' + sFormID;
        document.forms[0].submit();
    }
}

function xcm_CustomFormReturn(Url)
{
    document.location.href = Url;
}

function liValCustomForm() 
{
    var bRetVal = true;
    var sMsg = '';
    var i = 0;
    var nChkCnt = 0;
    var sUsed = '';
    
    
    // do all the inputs firt
    var oInp = document.getElementsByTagName('INPUT');
    
    for (i=0; i<oInp.length; i++)
    { 
        if (oInp[i].cfReq && (oInp[i].cfReq=='1' || oInp[i].cfReq=='true'))
        {
            if ((oInp[i].type.toLowerCase() == 'radio' || oInp[i].type.toLowerCase() == 'checkbox') && sUsed.indexOf('|'+oInp[i].name+'|') < 0)
            {
                var sID = oInp[i].name;
                sUsed += '|' + sID + '|';
                nChkCnt = 0;
                var oChk = document.getElementsByName(sID);
                var x = 0;
                for (x=0; x<oChk.length; x++)
                {
                    if (oChk[x].checked) { nChkCnt++ }
                }
                
                if (nChkCnt == 0) { bRetVal = false; sMsg+= oInp[i].cfLabel + ' is required.\n'; }
            }
            else if (oInp[i].type=='text' || oInp[i].type=='file' || oInp[i].type=='password')
            {
                if (oInp[i].value == '') { bRetVal = false; sMsg+= oInp[i].cfLabel + ' is required.\n'; }
            }
        }
        
        // validation for data type, this only happens on text boxes.
        if (oInp[i].cfType && oInp[i].type.toLowerCase()=='text' && oInp[i].value.replace(/\s/,'') != '')
        {
            if (oInp[i].cfType=='-5') // meta tag
            {
                if (!liValMetaTag(oInp[i].id))
                {
                    bRetVal = false;
                    sMsg += 'Complete all fields for HTML META TAG: ' + oInp[i].cfLabel;
                }
            }
            else if (!liValDataType(oInp[i].value, oInp[i].cfType))
            {
                bRetVal = false;
                sMsg += oInp[i].cfLabel + ' contains invalid data.\n'
            }
        }
        
    }
        
    // select
    oInp = document.getElementsByTagName('SELECT');
    for (i=0; i<oInp.length; i++)
    {
        if (oInp[i].cfReq && oInp[i].cfReq=='1')
        {    
            if (oInp[i].options[oInp[i].selectedIndex].value == '')
            {
                bRetVal = false;
                sMsg+= oInp[i].cfLabel + ' is required.\n';
            }   
        }
    } 
    
    // textarea
    oInp = document.getElementsByTagName('TEXTAREA');
    for (i=0; i<oInp.length; i++)
    {
        if (oInp[i].cfReq && oInp[i].cfReq=='1')
        {   
            if (oInp[i].value == '') { bRetVal = false; sMsg+= oInp[i].cfLabel + ' is required.\n'; }        
        }
    }
               
    if (!bRetVal) { alert(sMsg); } 
    //alert(bRetVal);
    return bRetVal; 
} 

function liValMetaTag(id)
{
    var rdoId = 'rdo_' + id;
    var nameId = 'metaname_' + id;
    
    var bRetVal = true;
    
    var oRdo = document.getElementsByName(rdoId);
    if (!oRdo[0].checked || !oRdo[1].checked)
    {
        bRetVal = false;
    }
    
    if (document.getElementById(nameId).value.replace(/\s/,'') == '')
    {
        bRetVal = false;
    }
    
    return bRetVal;        
}

function liValDataType(value, type)
{
    //5 - True False
    var resVal = true;
    
    switch (type)
    {
        case 'text': //'text':            
            break;
        case '2': //'text':            
            break;            
        case 'num': //'Numeric':
            resVal = (!isNaN(value));
            break;
        case '3': //'Numeric':
            resVal = (!isNaN(value));
            break;            
        case 'date': //'Date':
            resVal = value.match(/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}/);
            break;
        case '4': //'Date':
            resVal = value.match(/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}/);
            break;            
        case 'email': //'Email':
            var re = new RegExp(/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/);
            if (!re.test(value)) 
            {
                resVal = false;
            }
            break;            
//        case '5': //'true false':
//            resVal = value.match(/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}/);
//            break;                                  
        default:
            resVal = true;
            break;        
    }
    
    return resVal;
}

var collZoom = null;
var bUseInternalViewer = false;

function liShowCollectionItem(cvID, ctID, lPg)
{
    if (bUseInternalViewer)
    {
        if (document.getElementById('xcmDivColItem'))
        {
            var oDiv = document.getElementById('xcmDivColItem');
            var oIF = document.getElementById('xcmifColItem');
            
            oDiv.style.top = parseInt(document.body.scrollTop) + 'px';
            oDiv.style.left = '0px';
            oDiv.style.width = '100%';
            oDiv.style.height = parseInt(cH)-50;
            //oIF.style.zoom = '4%';
            oDiv.style.display ='block';        
            
            oIF.style.position = 'relative';
            oIF.style.top = '50px';
            oIF.style.left = '50px';
            oIF.style.width = parseInt(oDiv.offsetWidth)-100;
            oIF.style.height = parseInt(oDiv.offsetHeight)-100;
            oIF.style.border = '2px #000000 solid';
            oIF.style.zIndex = '30000';
            oIF.style.filter = 'progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#4F4F4F,strength=6);';
            
            oIF.src = '/internal/handlers/ShowCollectionItem.ashx?cvid=' + cvID + '&ctid=' + ctID;
            
            oDiv.style.display = 'inline';
            oIF.style.display = 'inline';
            //collZoom = setInterval('liDoZoom(\'1\')',1);
        }
    }
    else
    {
        document.location.href = lPg + '?cvid=' + cvID + '&ctid=' + ctID;
    }
}

function liDoZoom(mode)
{
    var oIF = document.getElementById('xcmifColItem');
    
    switch (mode)
    {
        case '1': //open
            if (parseInt(oIF.style.zoom) < 100)
            {
                oIF.style.zoom = (parseInt(oIF.style.zoom)+4) + '%';
            }
            else
            {
                clearInterval(collZoom);
            }
            break;
        case '2':  //close
            if (parseInt(oIF.style.zoom) > 4)
            {
                oIF.style.zoom = (parseInt(oIF.style.zoom)-4) + '%';
            } 
            else
            {
                document.getElementById('xcmDivColItem').style.display = 'none';
                clearInterval(collZoom);
            }                  
            break;
    }
}

function liCloseColWin()
{
    if (document.getElementById('xcmDivColItem'))
    {
        document.getElementById('xcmDivColItem').style.display = 'none';
        document.getElementById('xcmifColItem').style.display = 'none';
        //collZoom = setInterval('liDoZoom(\'2\')',1);
    }
}
function xcmOpenModalDialog(sUrl,bSmall)
{
    var sHeight = (bSmall) ? 250 : parseInt(cH)-25;
    if (sHeight=='undefined' || sHeight < 0) { sHeight = 600; }
    var sWidth = (bSmall) ? 400 : parseInt(cW)-25;
    if (sWidth == 'undefined' || sWidth < 0) { sWidth = 800; }
    var dlgArgs = new Array(sUrl,sHeight-65,sWidth-20);
    
    sDlgFeats = 'dialogHeight: ' + sHeight + 'px; dialogWidth: ' + sWidth + 'px;';
    
    var retVal = window.showModalDialog('/internal/ModalWrap.htm', dlgArgs, sDlgFeats);
    
    if (retVal && retVal.indexOf('|') > -1)
    {
        var aryRet = retVal.split('|');
        
        switch (aryRet[0])
        {
            case 'loadpage':
                xcmLaunchNewPage(aryRet[1]);
                break;
            default:
                break;
        }
    }
    else if (retVal) // just a value
    {
        switch (retVal)
        {
            case 'reload':
                document.forms[0].submit()
                break;
            default:
                break;
        }
    }
}

function xcmHtmlEncode(sVal)
{
    return sVal.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); //.replace(/\s{2}/g,' ');
}

function xcmHtmlDecode(sVal)
{
    return sVal.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
}

function xcmOpenModalEditor(sUrl, sCtlId)
{
    var sHeight = parseInt(window.dialogHeight)-25;
    var sWidth = parseInt(window.dialogWidth)-25;
    var dlgArgs = new Array(sUrl,sHeight-20,sWidth-20, sCtlId, xcmHtmlEncode(document.getElementById(sCtlId).value));
    
    sDlgFeats = 'dialogHeight: ' + sHeight + 'px; dialogWidth: ' + sWidth + 'px;';
    
    var retVal = window.showModalDialog('/internal/ModalEditorWrap.htm', dlgArgs, sDlgFeats);
    
    if (retVal && retVal != 'cx_proc')
    {
        document.getElementById(sCtlId).value = xcmHtmlDecode(retVal);
        document.getElementById('xcmdiv_'+sCtlId).innerHTML = xcmHtmlDecode(retVal);
    }
}

function xcmLaunchNewPage(sUrl)
{
    if (parent)
    {
        parent.document.location.href = sUrl;
    }
    else
    {
        document.location.href = sUrl;
    }
}

function xcmFindCtlByTagName(tagNm, idEndsWith)
{
    var oCtl = document.getElementsByTagName(tagNm);
    var i=0;
    var objCtl = null;
    
    for (i=0; i<oCtl.length; i++)
    {
        if (oCtl[i].id.indexOf(idEndsWith) == (oCtl[i].id.length-idEndsWith.length))
        {
            //alert(idEndsWith + ' :: ' + oCtl[i].id + ' :: ' + oCtl[i].id.indexOf(idEndsWith));
            objCtl = oCtl[i];
        }
    }
    return objCtl;
}

// settings for the screen and stuff
// the document body reference
var dB = (document.documentElement) ? document.documentElement : document.body;

var sW = parseInt(screen.availWidth);
var sH = parseInt(screen.availHeight);
var cW = parseInt(dB.clientWidth);
var adjW = cW - ((!(parseInt(dB.style.marginLeft))?10:parseInt(dB.style.marginLeft))+(!(parseInt(dB.style.marginRight))?10:parseInt(dB.style.marginRight)));
var cH = parseInt(dB.clientHeight);    
var scrTop = dB.scrollTop;
//alert('sW: ' + sW + '; sH: ' + sH + '; cW: ' + cW + '; cH: ' + cH + '; scrTop: ' + scrTop);
//alert(adjW);
var adjH = cH;

function xcmSetConsoleItems()
{
       
    // Top edit console
    if (document.getElementById('divEditConsoleOuter')) // Main Console
    {
        document.getElementById('divEditConsoleOuter').style.left = xcmPx('0');
        document.getElementById('divEditConsoleOuter').style.top = xcmPx((scrTop-44));
        document.getElementById('divEditConsoleOuter').style.width = xcmPx(adjW); //'100%'; //xcmPx(cW);        	        
        adjH = cH - parseInt(document.getElementById('divEditConsoleOuter').offsetHeight);
    }
    
    
    
        // floating console:
    if (document.getElementById('xcmdiv_FloatConsole'))
    {
    //alert('its here: ' + adjH);
        try
        {
            document.getElementById('xcmdiv_FloatConsole').style.left = xcmPx((getCookie('dragX')==''?'0':getCookie('dragX')));       
            document.getElementById('xcmdiv_FloatConsole').style.top = xcmPx((getCookie('dragY')==''?'0':getCookie('dragY')));       
        }
        catch (e) {}
    }
    
    // wizard page covers
    var aryWiz = new Array('SmallWizardPageCover','WizardPageCover');
    var i=0;
    for (i=0; i<aryWiz.length; i++)
    {
        if (document.getElementById(aryWiz[i]))
        {
            document.getElementById(aryWiz[i]).style.width = xcmPx(adjW); //'100%'; //xcmPx(cW);
            document.getElementById(aryWiz[i]).style.height = xcmPx(adjH);
            document.getElementById(aryWiz[i]).style.top = xcmPx(scrTop);
        }
    }
    
    // Dialog Windows
    var aryDlg = new Array('xcmdiv_SmallWizardDialog','xcmdiv_AdminConsoleDialog');
    for (i=0; i<aryDlg.length; i++)
    {
        if (document.getElementById(aryDlg[i]))
        {
            document.getElementById(aryDlg[i]).style.width = xcmPx(adjW-40); //'100%'; //xcmPx(cW);
            document.getElementById(aryDlg[i]).style.height = xcmPx(adjH-40);
            document.getElementById(aryDlg[i]).style.top = xcmPx((parseInt(document.getElementById(aryWiz[i]).offsetTop)+20)-parseInt(document.body.scrollTop));        
            document.getElementById(aryDlg[i]).style.left = xcmPx('20');
        }
    }  
    if (document.getElementById('ifrmAdminWizard'))
    {
        document.getElementById('ifrmAdminWizard').style.height = xcmPx(adjH-100);
    }  
    
    // Catalog Zone
    if (xcmFindCtlByTagName('TABLE', 'xcmWebPartCatalog'))
    {
        var cz = xcmFindCtlByTagName('TABLE', 'xcmWebPartCatalog');
        cz.style.left = (parseInt(cW)/2)-250;
	    cz.style.top = ((parseInt(cH)/2)-250)+parseInt(scrTop);	
    }
}

var dragapproved=false
var z,x,y, temp1, temp2
var dragX, dragY, srcEl
function move(){
    var setX = temp1+event.clientX-x;
    var setY = temp2+event.clientY-y;
    var origX = z.style.pixelLeft;
    var origY = z.style.pixelTop;
    
    if (event.button==1&&dragapproved){
        if (parseInt(setX) <= (cW-200))
        {
            z.style.pixelLeft= (setX<0) ? 0 : setX;
            dragX = z.style.pixelLeft;
        }
        if (parseInt(setY) <= (cH-parseInt(srcEl.offsetHeight)))
        {
            z.style.pixelTop= (setY<0) ? 0 : setY;        
            dragY = z.style.pixelTop;
        }  
        
        // one more check
        //if (z.style.pixelTop < 0) { z.style.pixelTop = 0; }          
        return false;
    }
}

function drags(){
    srcEl = event.srcElement;
    //if (srcEl.tagName.toLowerCase == 'a') { return; }
    
   

    while (srcEl && srcEl.tagName.toLowerCase()!='div') { srcEl = srcEl.parentElement; }
    //alert(srcEl.tagName);
    
    if (srcEl && srcEl.className=="DragFloatConsole"){
    //alert('approved');
        dragapproved=true;
        z= srcEl; //event.srcElement
        temp1=z.style.pixelLeft;
        temp2=z.style.pixelTop;
        x=event.clientX;
        y=event.clientY;
        document.onmousemove=move;
    }
    else
    {
        return true;
        }
}
document.onmousedown=drags;
document.onmouseup=xcmSetEndDrag;

function xcmSetEndDrag()
{    
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+1);

    dragapproved=false;
    document.cookie = 'dragX=' + dragX + '; ';
    document.cookie = 'dragY=' + dragY + '; ';
}

function getCookie(c_name)
{
    if (document.cookie.length>0)
      {
      c_start=document.cookie.indexOf(c_name + "=");
      if (c_start!=-1)
        {
        c_start=c_start + c_name.length+1;
        c_end=document.cookie.indexOf(";",c_start);
        if (c_end==-1) c_end=document.cookie.length;
        return unescape(document.cookie.substring(c_start,c_end));
        }
      }
    return "";
}


function xcmPx(val)
{
    return parseInt(val ) + 'px';
}

function xcmSwitchColTab(mode)
{
    document.getElementById('xcmTrColSec').style.display = (mode=='prop') ? 'none' : 'inline';
    document.getElementById('xcmTrColProp').style.display = (mode=='prop') ? 'inline' : 'none';
    document.getElementById('xcmColTabProp').className = (mode=='prop') ? 'xcmColTab xcmColTabOn' : 'xcmColTab xcmColTabOff';
    document.getElementById('xcmColTabSec').className = (mode=='prop') ? 'xcmColTab xcmColTabOff' : 'xcmColTab xcmColTabOn';
    
}
function xcmShowCssTab(visDiv)
{
    var oDiv = document.getElementsByTagName('DIV');
    var i = 0;
    
    for (i=0; i< oDiv.length; i++)
    {
        oDiv[i].style.display = (oDiv[i].id.indexOf('xcmcssdiv_') > -1) ? 'none' : oDiv[i].style.display 
    }
    if (document.getElementById(visDiv))
    {
        document.getElementById(visDiv).style.display = 'inline';
    }
}

function xcmResetCssValue(vId)
{
    if (vId && vId != '')
    {
        var oEl = document.getElementById(vId);
        if (oEl.tagName.toLowerCase() == 'select')
        {
            oEl.selectedIndex = 0;
        }
        if (oEl.tagName.toLowerCase() == 'input')
        {
            switch (oEl.type.toLowerCase())
            {
                case 'text':
                    oEl.value = '';
                    break;
                default:
                    break;
            }  
        }
    }  
}

function xcmCbAll(cbId, isCheck)
{
    var oC = document.getElementsByTagName('INPUT');
    var i = 0;
    
    for (i=0; i<oC.length; i++)
    {
        if (oC[i].id.indexOf(cbId) > -1)
        {
            oC[i].checked = isCheck;
        }
    }
  
}

function xcm_FindInputControlID(tagName, endsWith)
{
    endsWith = '_' + endsWith;
    var retId = '';
    
    var i = 0;
    var oEl = document.getElementsByTagName(tagName);
    
    for (i=0; i<oEl.length; i++)
    {
        if (oEl[i].id.indexOf(endsWith) > -1)
        {
            retId = oEl[i].id;
        }
    }
    
    return retId;
}


/*
=====================================================================
Methods for keeping the user session alive
=====================================================================
*/
var xUserUpdateReq = false;


function liUpdateUserSession()
{
    var sHandlerUrl = "/internal/handlers/SessionUpdate.ashx";
    //window.status = 'Call';
    if(window.XMLHttpRequest) { xUserUpdateReq = new XMLHttpRequest(); }                                                              
                                                                                                  
    if(xUserUpdateReq && xUserUpdateReq.readyState < 4) { xUserUpdateReq.abort(); }
    if(!window.XMLHttpRequest && window.ActiveXObject) { xUserUpdateReq = new ActiveXObject('Microsoft.XMLHTTP'); } 
    
    
  
    // define the function to use
    xUserUpdateReq.onreadystatechange = function() { if (xUserUpdateReq.readyState == 4 && xUserUpdateReq.status == '200') { window.status = xUserUpdateReq.responseText; xUserUpdateReq = false; }} ; // liTransformXml(sSpanId, xmlDoc, sXslUrl) } };
    
    xUserUpdateReq.open('GET', sHandlerUrl)
    xUserUpdateReq.send(null);           
}

var tUserUpdate = null;

function liSetSessionUpdate()
{
    //window.status = 'Load';
    tUserUpdate = setInterval(liUpdateUserSession, 60000);
}    
