﻿var appPath               = '';
var NoValidation          = false;
var IsLogged              = false;
var HideAfterEvaluate     = false;
var HideAfterEvaluateCont = null;

function GoBack()
{
    history.back();
    return false;
}

function Evaluate (pSource, pArgs)
{
    var IsValid;
    pArgs.IsValid   = true;
    elems           = document.forms[0].elements;

    if (NoValidation)
    {
        return;
    }

    IsValid = ValidateAll(pArgs);

    if (HideAfterEvaluate)
    {
        if (IsValid)
        {
            HideContainer(HideAfterEvaluateCont);
        }
    }
                
    if ( !pArgs.IsValid )
    {
        Page_Validators[0].innerHTML = '<div class="ErrorCont">Fields indicated with red border are invalid</div>';
    }
}

function ValidateAll(pArgs)
{
    var i;
    var count;
    var elems;
    var elem;
    var IsValid;

    IsValid = true;
    elems   = document.forms[0].elements;
    count   = elems.length;

    for (i = 0; i < count; i++)
    {
        elem = document.forms[0].elements[i];

        if (elem.getAttribute('Required') != null)
        {
            elem.parentNode.style.border = '';
            if (elem.getAttribute('Required') == 'True')
            {
                if (Validate(elem))
                {
                    if (pArgs != null)
                    {
                        pArgs.IsValid = false;
                    }

                    elem.parentNode.style.border = 'solid 1px red';
                    IsValid = false;
                }
            }
        }
    }

    return IsValid;    
}

function Validate ( pElem )
{
    var res;
    var ReqType;
    
    res     = true;
    ReqType = pElem.getAttribute('ReqType');
    
    switch ( ReqType )
    {
        case 'Text' : res = pElem.value.length == 0;
                      break;

        case 'Number' : res = (isNaN(pElem.value) || (pElem.value.length == 0))
                        break;

        case 'Integer' : res = (isNaN(pElem.value) || (pElem.value.length == 0) || (pElem.value.indexOf('.') != -1))
                         break;

        case 'Combo': res = pElem.value == '-1';
                      break;
                      
        case 'Email': res = pElem.value.length == 0;
                      if ( !res )
                      {
                          res = pElem.value.indexOf('@') < 0;
                        
                          if ( !res )
                          {
                              res = pElem.value.indexOf('.') < 0;
                          }
                      }
                      break;
                      
    }
    
    return res;
}

function TabClick ( pObj )
{
    var i;
    var count;
    var Tabs;
    var cell;
    
    Tabs  = document.getElementById('Tabs');
    count = Tabs.rows[0].cells.length;
    
    for ( i = 0; i < count; i++ )
    {
        cell = Tabs.rows[0].cells[i];
        
        if ( cell.firstChild != null )
        {
            cell.firstChild.className = 'TabItem';
            document.getElementById(cell.firstChild.id + 'Cont').style.display = 'none';
        }
    }
    
    pObj.className = 'TabItemSelect';
    document.getElementById(pObj.id + 'Cont').style.display = '';
    document.getElementById(TabPageId).value = pObj.id;
}

function checkAll(pObjChkAll, pObjContainerId)
{
    var i;
    var count;
    var arrChks;
    var grdDownList;

    grdDownList = document.getElementById(pObjContainerId);
    arrChks     = grdDownList.getElementsByTagName('input');
    count       = arrChks.length;

    for (i = 0; i < count; i++)
    {
        if (arrChks[i].getAttribute('type') == 'checkbox')
        {
            arrChks[i].checked = pObjChkAll.checked;
        }
    }
}

function GetRandomNumber()
{
    return Math.floor(Math.random() * 11)
}

function ShowExclusivity( pObj )
{
    var ex;
    var txt;

    ex  = '2';
    txt = $(pObj).text();

    if ((txt == 'Exclusive ?') || (txt == 'Exclusive Logo Design'))
    {
        ex = '1';
    }

    ShowModal(330, 140, 'Exclusivity.aspx?ex=' + ex);
    
    return false;
}

function AddFavorite(pObj)
{
    if (!IsLogged)
    {
        document.location = appPath + 'login.aspx?RetUrl=' + document.location;
        return false;
    }

    ShowModal('300px', '100px');

    $('#btnClose').css('display', 'none');

    $.ajax({
        url    : appPath + "Process.aspx",
        cache  : false,
        type   : "POST",
        data   : ({ action: 'AddFavorite', param: $(pObj).attr('param') }),
        async  : true,
        success: handleResponse
    });

    return false;
}

function AddCart(pObj)
{
    ShowModal('300px', '100px');

    $('#btnClose').css('display', 'none');

    $.ajax({
        url    : appPath + "Process.aspx",
        cache  : false,
        type   : "POST",
        data   : ({ action: 'AddCart', param: $(pObj).attr('param') }),
        async  : true,
        success: handleResponse
    });

    return false;
}

function AddCheckedToCart(pContainerId)
{
    var i;
    var count;
    var Prod;
    var ProdIds;
    var chkbox;
    var chkboxes;

    chkboxes = $(pContainerId).find('input:type="checkbox"');
    count    = chkboxes.length;
    ProdIds = '';

    for (i = 0; i < count; i++)
    {
        chkbox = $('#' + chkboxes[i].id);

        if (chkbox.attr('checked') == false)
        {
            continue;
        }

        Prod = chkbox.parent();

        if (Prod.attr('ProductId') != null)
        {
            ProdIds += Prod.attr('ProductId') + ';';
        }

        chkbox.attr('checked', false);
    }

    if (ProdIds.length == 0)
    {
        return false;
    }
    
    ShowModal('300px', '200px');

    $('#btnClose').css('display', 'none');

    $.ajax({
        url    : appPath + "Process.aspx",
        cache  : false,
        type   : "POST",
        data   : ({ action: 'AddCheckedCart', param: ProdIds }),
        async  : true,
        success: handleResponse
    });

    return false;
}

function RemoveFromCart(pObj) 
{
    $.ajax({
        url    : appPath + "Process.aspx",
        cache  : false,
        type   : "POST",
        data   : ({ action: 'RemoveFromCart', param: $(pObj).attr('ProductId') }),
        async  : true,
        success: handleResponse
    });
    
    return false;
}

function RemoveCheckedFromCart(pProdIds)
{
    $.ajax({
        url    : appPath + "Process.aspx",
        cache  : false,
        type   : "POST",
        data   : ({ action: 'RemoveCheckedFromCart', param: pProdIds }),
        async  : true,
        success: handleResponse
    });

    return false;
}


function handleResponse(msg)
{
    var data;

    timeoutId = setTimeout(CloseModal, 2000);

    data = msg.split(':');

    if (data.length == 0)
    {
        $('#divMsg').text(msg);
        $('#btnClose').css('display', '');
        return;  
    }

    switch (data[1])
    {
        case 'fr': $('#divProd' + data[2]).remove();
            break;

        case 'ca': $('#' + lnkCartListId).text(data[3] + ' Item(s)');
            break;
            
        case 'cca': $('#' + lnkCartListId).text(data[2] + ' Item(s)');
            break;

        case 'ra': document.location = ReloadRndPage(document.location + '');
            break;

        case 'rca': document.location = ReloadRndPage(document.location + '');
            break;            
    }

    $('#divMsg').text(data[0]);
    $('#btnClose').css('display', '');
}

function ReloadRndPage(pURL)
{
    var url;
    
    if (pURL.indexOf('rnd=') == -1)
    {
        url = pURL + '?rnd=' + GetRandomNumber();
    }
    else
    {
        url = pURL.substring(0, pURL.indexOf('rnd='));
        url = url + 'rnd=' + GetRandomNumber();
    }
    
    return url;
}

function CheckOut(pObj)
{
    document.location = '/PayTransaction.aspx?pid=' + $(pObj).attr('param');
    return false;
}

function ClosePage(pURL)
{
    document.location = pURL;
    return false;
}

function OpenWindow(url, height, width)
{
    var centerWidth  = (window.screen.width - width) / 2;
    var centerHeight = (window.screen.height - height) / 2;

    var wnd = window.open(url, 'pixellogo', 'Height=' + height + ',Width=' + width + ',Left=' + centerWidth + ',Top=' + centerHeight);
    
    return false;
}

function HideContainer(pContainer)
{
    pContainer.style.display = 'none';
}

function ExpandCollapse(pObj)
{
    var row = $(pObj).parent().parent().parent().parent().parent().next();
    var img = $(pObj).children(0);

    if (row.css('display') == 'none')
    {
        row.css('display', '')
        img.attr('src', img.attr('src').replace('right', 'down'));
    }
    else
    {
        row.css('display', 'none')
        img.attr('src', img.attr('src').replace('down', 'right'));
    }
}
