jQuery.noConflict();


//GLOBALS
var sort;
var filter = '';
var limit = 0;
var download = 0;
var originalnamespace = '';
var namespace;
var clearfilter;
var url = '';
var listposition;
var library = '';
var baseurl = '';
var formList = 0;
var module;
var scriptlocation;
var categoryname;
var subcategory = '';
var usecategory;
var categorytype;
var foldername = 'medium';
var tagtype;
var tagStr = '';
var categoryStr = '';
var hideHeaderRow = 0;
var categoryArray = new Array();
var tagArray = new Array();
var pageIds = new Array();
var tickedSize = '';
var subcat = '';
var listTag = '';
var listType = '';

var namespacePath = '';


var mmToMonth = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");


jQuery(function()
{
    //getFileList();
    showOverlay();
    showList();
    navClickEventHandler();
    loadListeners();

});

function showLocalDate(timestamp)
{
  if(timestamp!=null) {
      var dt = new Date(timestamp * 1000);
      var mm = mmToMonth[dt.getMonth()];
      return dt.getDate() + "-" + mm + "-" + dt.getFullYear() + " " + dt.getHours() + ":" + dt.getMinutes();
  } else {
      return '';
  }
}

function getActiveState(active)
{
    switch(active)
    {
        case '1':
            return '<img src="/skins/elementsv1/images/layout/tick.png" alt="On" />';
            break;
        case '0':
        case null:
            return '<img src="/skins/elementsv1/images/layout/cross.png" alt="Off" />';
            break;
        default:
            return '';
    }
}

function showList()
{

    namespace = jQuery('span#namespace').attr('value');
    clearfilter = jQuery('span#clearfilter').attr('value');
    listposition = jQuery('span#listposition').attr('value');
    originalnamespace = namespace;
    if(namespace=='stock') { namespace = 'product'; }
    library = jQuery('span#library').attr('value');
    hideHeaderRow = jQuery('span#hideHeaderRow').attr('value');
    formList = jQuery('span#formList').attr('value');
    downloadParam = jQuery('span#download').attr('value');
    if(downloadParam!='') {
        download = downloadParam;
    }
    listType = jQuery('span#listtype').attr('value');
    listTag = jQuery('span#listtag').attr('value');

    baseurl = jQuery('span#baseurl').attr('value');
    if(baseurl=='' || baseurl=='undefined' || baseurl==null) {
        baseurl = '';
    }
    scriptlocation = jQuery('span#scriptlocation').attr('value');
    categoryname = jQuery('span#category').attr('value');
    usecategory = jQuery('span#usecategory').attr('value');
    if(usecategory!='' || usecategory!='undefined' || usecategory!==null) {
        url = categoryname + '/';
    }

    subcat = jQuery('span#subcategory').attr('value');
    if(subcat!='' && subcat!=undefined && subcat!==null) {
        categoryStr = subcat;
        url = url + subcat + '/';
    }

    getfolder = jQuery('span#foldername').attr('value');
    limit = jQuery('span#limit').attr('value');
    sort = jQuery('span#order').attr('value');
    if(getfolder!='' && getfolder!='undefined' && getfolder!=null) {
        foldername = getfolder;
    }


    if(namespace=='' || namespace=='undefined' || namespace==null) {
        url = jQuery(location).attr('href');
        urlBits = url.split('/');
        n = 0;
        var length = urlBits.length;
        for(var i = 0; i < length; i++) {
            if(urlBits[i] == 'namespace') {
                n = i + 1;
                namespace = urlBits[n];
            }
            if(urlBits[i] == 'module') {
                n = i + 1;
                module = urlBits[n];
            }
        }
    }

    switch(namespace)
    {
    case 'news':
      namespacePath = '/press/news/';

      break;
    case 'events':
      namespacePath = '/press/events/';
      break;
    case 'faq':
      namespacePath = '/content/faq/';
      break;
    case 'banner':
      namespacePath = '/advert/banner/';
      break;
    case 'blog':
      namespacePath = '/content/blog/';
      break;
    case 'product':
        if(typeof(module)!='undefined') {
            namespacePath = '/'+module+'/product/';
        } else {
            namespacePath = '/products/product/';
        }
      break;
    case 'document':
        if(typeof(module)!='undefined') {
            namespacePath = '/'+module+'/document/';
        } else {
            namespacePath = '/documents/document/';
        }
      break;
    case 'testimonial':
      namespacePath = '/content/testimonial/';
      break;
    case 'project':
      namespacePath = '/content/project/';
      break;
    case 'category':
      namespacePath = '/categories/category/';
      break;

    case 'webpage':
    default:
      namespacePath = '/content/page/';
    }

    // Add baseurl for language (if no language set this will be '')
    namespacePath = baseurl + namespacePath;

    var data  = {
            "library" : library,
            "categoryname" : categoryname,
            "categorytype" : categoryStr,
            "sort" : sort

    };


    switch(namespace) {
        case 'category':
            controllerActionUrl = '/categories/category';
            break;

        case 'formCategoryList':
            controllerActionUrl = '/categories/category/formlist';
            break;
        default:
            controllerActionUrl = '/page/getjsonlist/namespace/'+namespace;

    }

    jQuery.ajax({
        type: 'POST',
        url: controllerActionUrl,
        data: data,
        success: function(resp)
        {
            getFileList(resp);

        },
        dataType: 'json'
    });

    return false;
}

function getFileList(resp)
{
        // Elements
        if(scriptlocation != 'frontend'){
            if(download!=1) {
                if(listType=='') {
                    jQuery("#pageList").empty();
                    if(hideHeaderRow != 1) {
                        jQuery("#pageList").append('<tr><th>Name</th><th>Active</th><th>Last Modified</th><th style="text-align:right;">Action</th></tr>');
                    }
                    for(var i = 0; i< resp.files.length;i++)
                    {

                            //jQuery("#pageList").append('<li><a href="/content/page/edit/id/'+resp.files[i].id+'">'+resp.files[i].name+'</a></li>');
                            if(formList != 1) {
                                jQuery("#pageList").append('<tr style="background-color:#1D1D1D;"><td><span class="edit hide">'+resp.files[i].id+'</span><a href="'+namespacePath+'edit/id/'+resp.files[i].id+'">'+resp.files[i].name+'</a></td><td>'+getActiveState(resp.files[i].active)+'</td><td>'+showLocalDate(resp.files[i].date_modified)+'</td><td width="45"><a href="'+namespacePath+'edit/id/'+resp.files[i].id+'" class="edit"><img src="/skins/elementsv1/images/layout/document--pencil.png" alt="Update" title="Update" /></a>&nbsp;<a href="'+namespacePath+'delete/id/'+resp.files[i].id+'" onclick="return confirm(\'Are you sure you want to delete?\')"><img src="/skins/elementsv1/images/layout/cross-circle.png" alt="Delete" title="Delete" /></a></td></tr>');
                            } else {
                                jQuery("#pageList").append('<tr style="background-color:#1D1D1D;"><td>'+resp.files[i].name+'</td><td width="45"><a href="#" class="addCategoryLink">[Select]<span class="link hide">'+resp.files[i].addLinkName+'</span></a></td></tr>');
                            }


                    }
                } else {
                    jQuery("#pageList").empty();
                    if(hideHeaderRow != 1) {
                        if(originalnamespace=='stock') {
                            jQuery("#pageList").append('<tr><th>Product Name</th><th>Colour</th><th>Size</th><th>Quantity</th><th style="text-align:right;">Action</th></tr>');

                        } else {
                            jQuery("#pageList").append('<tr><th>Product Name</th><th>Active</th><th>Retail Cost</th><th style="text-align:right;">Action</th></tr>');
                        }
                    }
                    for(var i = 0; i< resp.files.length;i++)
                    {

                        if(listType=='stock') {
                            if(originalnamespace=='stock') {
                                jQuery("#pageList").append('<tr style="background-color:#1D1D1D;"><td>'+resp.files[i].name+'</td><td><select><option value="">-select one-</option></select></td><td><select><option value="">-select one-</option></select></td><td><input type="text" size="2" /></td><td><input type="button" value="Add to basket" /></td></tr>');
                            } else {
                                jQuery("#pageList").append('<tr style="background-color:#1D1D1D;"><td>'+resp.files[i].name+'</td><td><input type="checkbox" /></td><td>0.00</td><td><a href="'+namespacePath+'edit/id/'+resp.files[i].id+'" class="edit"><img src="/skins/elementsv1/images/layout/document--pencil.png" alt="Update" title="Update" /></a></td></tr>');
                            }
                        } else {
                        //jQuery("#pageList").append('<li><a href="/content/page/edit/id/'+resp.files[i].id+'">'+resp.files[i].name+'</a></li>');
                            if(formList != 1) {
                                jQuery("#pageList").append('<tr style="background-color:#1D1D1D;"><td><span class="edit hide">'+resp.files[i].id+'</span><a href="'+namespacePath+'edit/id/'+resp.files[i].id+'">'+resp.files[i].name+'</a></td><td>'+getActiveState(resp.files[i].active)+'</td><td>'+showLocalDate(resp.files[i].date_modified)+'</td><td width="45"><a href="'+namespacePath+'edit/id/'+resp.files[i].id+'" class="edit"><img src="/skins/elementsv1/images/layout/document--pencil.png" alt="Update" title="Update" /></a>&nbsp;<a href="'+namespacePath+'delete/id/'+resp.files[i].id+'" onclick="return confirm(\'Are you sure you want to delete?\')"><img src="/skins/elementsv1/images/layout/cross-circle.png" alt="Delete" title="Delete" /></a></td></tr>');
                            } else {
                                jQuery("#pageList").append('<tr style="background-color:#1D1D1D;"><td>'+resp.files[i].name+'</td><td width="45"><a href="#" class="addCategoryLink">[Select]<span class="link hide">'+resp.files[i].addLinkName+'</span></a></td></tr>');
                            }
                        }
                    }
                }
            } else {
                jQuery("#pageList").empty();
                jQuery("#pageList").append('<tr><th>Name</th><th>Description</th><th style="text-align:right;">Action</th></tr>');
                for(var i = 0; i< resp.files.length;i++)
                {
                    //jQuery("#pageList").append('<li><a href="/content/page/edit/id/'+resp.files[i].id+'">'+resp.files[i].name+'</a></li>');
                    jQuery("#pageList").append('<tr style="background-color:#1D1D1D;"><td><span class="edit hide">'+resp.files[i].id+'</span>'+resp.files[i].name+'</td><td>'+resp.files[i].description+'</td><td width="45"><a href="'+resp.files[i].media+'" class="edit" target="_blank">download</a></td></tr>');
                }
            }
            jQuery("#pageList").append('<div class="clear"></div>');
        }else{
            /**
             * DYNAMIC FILTER
             * Fire off another ajax page request to find all assoicated
             * child categories of size / colour
             *
             *
             *
             */
            var numRows = jQuery("#pageList").attr('rel');

            //init filter to frontend
            jQuery(".narrow-by-list").addClass(jQuery("#pageList").attr('class')); //light or dark filter
            jQuery("#pageList").empty();

            var i = 0;
            var j = 0;
            var k = 0;
            for(i in resp.files) {

               if(resp.files[i].active==1) {
                    pageIds.push(resp.files[i].id);
                    var rows = parseInt(numRows);
                    var position = (j==(rows-1)) ? "last left col" + numRows : "left col" + numRows;

                    if(resp.files[i].image!='' && resp.files[i].image!='undefined' && resp.files[i].image!=null) {
                        var imageName = resp.files[i].image;
                        imageName = imageName.replace("images/upload/", "images/upload/"+foldername+"/");
                    } else {
                        var imageName = '';
                    }
                    if(categoryStr!='') {
                        subnav = categoryStr+'/';
                    } else {
                        subnav = '';
                    }

                   if(listTag=='li') {
                        jQuery("#pageList").append('<li class="productItem '+ position +'"><a href="/products/'+url+subnav+resp.files[i].name+'"><div><img src="' + imageName + '" alt="'+resp.files[i].name+'" /></div><h3>'+resp.files[i].name+'</h3><p>'+resp.files[i].description+'</p></a><div class="addToCart"><div class="price">'+resp.files[i].price+'</div><button onClick="window.location=\'/commerce/basket/add/id/'+resp.files[i].id+'/\'" >add to cart</button></div></li>');
                    } else {
                        jQuery("#pageList").append('<div class="productItem '+ position +'"><a href="/products/'+url+encodeURIComponent(resp.files[i].prettyurl)+'"><div><img src="' + imageName + '" /></div><h3>'+resp.files[i].name+'</h3><p>'+resp.files[i].description+'</p></a><div class="addToCart"><div class="price">'+resp.files[i].price+'</div><button onClick="window.location=\'/commerce/basket/add/id/'+resp.files[i].id+'/\'" >add to cart</button></div></div>');
                    }

                    if(j==(rows-1)){
                       j = 0;
                    }else{
                       j++;
                    }
                    k++;
                    if(limit!=0) {
                        if(limit==k) {
                            break;
                        }
                    }
               }


            }
            // Sets number of products to be display on webpage
            setNumOfProducts(k);

            // Build the refine by lists
            setSizeFilter();
            //setColourFilter();
        }
        //ajax finished callback
        pageListGetFileListEnd();
        hideOverlay();
}

function pageListGetFileListEnd(){}

function setSizeFilter() {
    var data  = {
            "pageIds" : pageIds
    };

    jQuery.ajax({
      type: 'POST',
      url: '/page/setsizefilter',
      data: data,
      success: function(resp)
      {
        buildSizeFilter(resp);

      },
      dataType: 'json'
    });

    return false;
}

function setColourFilter() {
    var data  = {
            "pageIds" : pageIds
    };

    jQuery.ajax({
      type: 'POST',
      url: '/page/setcolourfilter',
      data: data,
      success: function(resp)
      {
        buildSizeFilter(resp);

      },
      dataType: 'json'
    });

    return false;
}

function buildSizeFilter(resp) {
    jQuery("#refine-by-size").empty();

    var html = '';
    var i = 0;
    var listLength = jQuery("#refine-by-size li").length;
    if(listLength == 0){
        for(i in resp) {
                html += '<li id="_'+i+'" rel="'+resp[i].prettyurl+'"><a href="#" class="enabled">'+resp[i].category_name+'</a></li>';
        }
    }

    jQuery("#refine-by-size").append(html);
    populateSizeOptions();
}

function buildColourFilter() {
    jQuery(".narrow-by-list").empty();
}

function populateSizeOptions()
{


    jQuery('ul#refine-by-size li').each(function(){
        for(var j = 0; j < tickedSize.size(); j++){
            if(jQuery(this).attr('rel') == tickedSize.eq(j).attr('rel')){
                jQuery(this).children('a.enabled').addClass('selected');
            }
        }
    });
    //jQuery('ul#refine-by-size li[rel="'+ tickedSize +'"] a.enabled').addClass('selected');
    jQuery('ul#refine-by-size').parent('dd').parent('dl').addClass("open").css({'display':'block'});
}


function navClickEventHandler(){

    /*jQuery('ul.navList li > ul li a').click(function(){
        var ref = jQuery(this).attr('href');
    });*/

    //shows and removes tick from tick box
   jQuery('.category-list ul li a.enabled, #narrow-by-list-category ul li a.enabled').live('click',function(event) {
            if(typeof(clearfilter) !== 'undefined' && clearfilter != null) {

                jQuery('.category-list ul li a.enabled, #narrow-by-list-category ul li a.enabled').removeClass('selected');
                showOverlay();
                categorytype = jQuery(this).parent('li').attr('rel');
                categoryStr = categorytype;
                url = categoryname + '/' + categorytype + '/';
                jQuery(this).addClass('selected');
                filterList();
            } else {

                if(!jQuery(this).hasClass('selected')){
                showOverlay();
                jQuery(this).addClass('selected');
                categorytype = jQuery(this).parent('li').attr('rel');
                url = categoryname + '/' + categorytype + '/';
                categoryArray.push(categorytype);
                categoryStr = categoryArray.join('<>');
                tickedSize = jQuery('a.enabled.selected').parent('li');
                filterList();

                }else{
                showOverlay();
                jQuery(this).removeClass('selected');
                categorytype = jQuery(this).parent('li').attr('rel');
                url = categoryname + '/' + categorytype + '/';
                //var idx = categoryArray.indexOf(categorytype); // Find the index
                var idx = jQuery.inArray(categorytype, categoryArray);
                if(idx!=-1) categoryArray.splice(idx, 1);
                categoryStr = categoryArray.join('<>');
                //jQuery(this).parent('li').parent('ul').empty();
                filterList();


                }
            }

    }
    );

    jQuery('.category-list ul#refine-by-size li a.enabled, #narrow-by-list-category ul#refine-by-size li a.enabled').toggle(function(){
            showOverlay();
            jQuery(this).addClass('selected');
            categorytype = jQuery(this).parent('li').attr('rel');
            categoryArray.push(categorytype);
            categoryStr = categoryArray.join('<>');
            filterList();

        }, function(){
            showOverlay();
            jQuery(this).removeClass('selected');
            categorytype = jQuery(this).parent('li').attr('rel');

            //var idx = categoryArray.indexOf(categorytype); // Find the index
            var idx = jQuery.inArray(categorytype, categoryArray);
            if(idx!=-1) categoryArray.splice(idx, 1);
            categoryStr = categoryArray.join('<>');
            filterList();

        }
    );
    jQuery('#narrow-by-list-tag ul li a.enabled').toggle(function(){
            showOverlay();
            jQuery(this).addClass('selected');
            tagtype = jQuery(this).parent('li').attr('rel');
            tagArray.push(tagtype);
            tagStr = tagArray.join('<>');
            filterList();

        }, function(){
            showOverlay();
            jQuery(this).removeClass('selected');
            tagtype = jQuery(this).parent('li').attr('rel');
            var idx = tagArray.indexOf(tagtype); // Find the index
            if(idx!=-1) tagArray.splice(idx, 1);
            tagStr = tagArray.join('<>');
            filterList();

        }
    );
    /*jQuery('dl#narrow-by-list dd > ul li').click(function() {
        producttype = jQuery(this).attr('rel');
        filterList();
    });*/
}

function loadListeners() {
    jQuery("#sort").live('change',function(event) {
        sort = jQuery("#sort").val();
        filterList();
        return false;
    });

    if(scriptlocation != 'frontend'){

        jQuery("#pageList").sortable({
            revert: true,
            stop: function(event, ui){
                showOverlay();
                var order = 0;
                var filesArr = [];
                var data  = {
                        "keyword" : filter,
                        "sort" : sort,
                        //"categoryname" : categoryname,
                        "categorytype" : categoryStr,
                        "tagtype" : tagStr,
                        "reorder" : 1,
                        "files" : ''
                };
                jQuery("#pageList tr").each(function()
                {
                    var id = jQuery(this).find('.edit').text();
                    if(id!='') {
                        filesArr.push(
                            order +'*'+ id
                        );
                        //if(order<5) { alert(order + ' ' + id)}
                        order++;
                    }
                });

                data.files = filesArr.join('<>');

                jQuery.ajax({
                  type: 'POST',
                  url: controllerActionUrl,
                  data: data,
                  success: function(resp)
                  {
                    getFileList(resp);

                  },
                  dataType: 'json'
                });

                return false;

            }
        });
    }

    jQuery("#searchButton").live('click',function()
    {
        filter = jQuery("#keywords").val();
        filterList();
        return false;
    });
}

function showOverlay(){

  if(jQuery(".contentBox").size() > 0){
    jQuery(".contentBox").parent().css('position','relative');
    jQuery(".contentBox").parent().append('<div class="ajaxOverlay"></div>');
    jQuery('.ajaxOverlay').height(jQuery(".contentBox").parent().height());
  }else{
     jQuery("#product-list").css({"display":"block", "position":"relative", "min-height": "240px" , "min-width": "100%"});
     jQuery("#product-list").append('<div class="ajaxOverlay"></div>');
     if((jQuery("#pageList").size() > 0)&&(jQuery('#pageList').hasClass('dark'))){
        jQuery('.ajaxOverlay').css({"background": "url(/skins/elementsv1/images/layout/filters/ajax-loader.gif) center 99px no-repeat #FFFFFF"});
     }
     jQuery('.ajaxOverlay').height(jQuery("#product-list").height());
  }
}

function hideOverlay(){
    jQuery('.ajaxOverlay').remove();
}

function filterList()
{


    var data  = {
            "keyword" : filter,
            "sort" : sort,
            "categoryname" : categoryname,
            "categorytype" : categoryStr,
            "tagtype" : tagStr

    };

    jQuery.ajax({
      type: 'POST',
      url: controllerActionUrl,
      data: data,
      success: function(resp)
      {
        getFileList(resp);

      },
      dataType: 'json'
    });

    return false;
}

function setNumOfProducts(num){
  if(jQuery("#numProducts").length > 0){
    jQuery("#numProducts").html(num + " Products");
  }
}
