/**
 * Template Collection Box Configuration
 */
var INT_TK_AFF_ID = 53967,
    INT_TK_WEBROOT = 'http://www.templatekingdom.com', //'http://www.templatekingdom.com',
    INT_TK_DATA_API_PATH = INT_TK_WEBROOT + '/feeds';
    INT_TK_DATA_API_URL = INT_TK_DATA_API_PATH + '/js.php';
/*******************************************************************************
 * Local Configuration
 ******************************************************************************/
/**
 * You can control how many templates are displayed in a row. you will need to
 * tweak the HTML and/or the css though.
 */
var numTemplatesInARow = 3;

var confTemplateListPageUrl = (location.hostname=='localhost'?'/templatedelight/':'/');
var confTemplateViewPageUrl = (location.hostname=='localhost'?'/templatedelight/':'/');

/*
 * System Variables
 */
var blnCategoryListDisplayed        = false,
    blnTemplateTypeListDisplayed    = false,
    blnMainContentDisplayed         = false,
    blnTemplateListDisplayed        = false,
    blnTemplateSummaryDisplayed     = false,
    blnFAQListDisplayed             = false;

var blnCurrentUriInitialized        = false,
    blnMenuCorrected                = false,
    currentUri                      = {},
    currentSearchParams             = {};
    aHTMLContent                    = {};

function initCurrentUri(locationHref) {

    if (!blnCurrentUriInitialized) {
				locationHref = (!locationHref ? location.href:locationHref)
        currentUri = INT.Uri.parse(locationHref);
        currentSearchParams = currentUri.queryKey;
        currentUri.pageType = null;
        currentUri.contentId = null;
        blnCurrentUriInitialized = true;
        //INT.debugObject(currentUri);
    }
}

function IncludeAffiliateData(options)
{
    initCurrentUri();
    INT.Uri.setTkDataApiUrl(INT_TK_DATA_API_URL);// Forward Compatibility
    dataUrl = INT.Uri.makeUrlTkDataApi(options);
    //INT.debugObject("Date Url is " + dataUrl);
    INT.Loader.include(dataUrl);
}

function IncludeDataCategoriesAndTypes(locationHref){
    initCurrentUri(locationHref);
    var oTKDataOptions = {
        manager: 'TemplateCategories',
        tkp: INT_TK_AFF_ID,
        host: currentUri.host
    };
    IncludeAffiliateData(oTKDataOptions);
    var oTKDataOptions = {
        manager: 'TemplateTypes',
        tkp: INT_TK_AFF_ID,
        host: currentUri.host
    };
    IncludeAffiliateData(oTKDataOptions);
}

function IncludeDataFAQList()
{
    //INT.logMessage('Including the FAQ Data from TK');
    initCurrentUri();
    currentUri.pageType = 'FAQ';
    var oTKDataOptions = {
        module: 'faq',
        manager: 'FAQ',
        tkp: INT_TK_AFF_ID,
        host: currentUri.host
    };
    IncludeAffiliateData(oTKDataOptions);
}

function IncludeContent(contentId)
{
    //INT.logMessage('Including the Content from TK');
    initCurrentUri();
    currentUri.pageType = 'Content';
    currentUri.contentId = contentId;
    var oTKDataOptions = {
        manager: contentId,
        tkp: INT_TK_AFF_ID,
        host: currentUri.host
    };
    IncludeAffiliateData(oTKDataOptions);
}

function IncludeDataTemplateList(locationHref) {
    initCurrentUri(locationHref);
    currentUri.pageType = 'Templates';
    var oTemplateListOptions = {
        manager: 'Templates',
        templateType: 'web-templates',
        perPage: 15,
        pageID: 1,
        tkp: INT_TK_AFF_ID,
        host: currentUri.host
    };
    for (var searchKey in currentSearchParams) {
        if (currentSearchParams[searchKey] != '') {
            switch(searchKey) {
                case 'category' :
                case 'templateType' :
                case 'priceLowerBound' :
                case 'priceUpperBound' :
                case 'templateCode' :
                case 'pageID' :
                    oTemplateListOptions[searchKey] = currentSearchParams[searchKey];
                    break;

                default:
                    break;
            }
        }
    }
    //INT.debugObject(oTemplateListOptions);
    IncludeAffiliateData(oTemplateListOptions);
}

function IncludeDataTemplateSummary(locationHref)
{
    initCurrentUri(locationHref);
    currentUri.pageType = 'VIEW';
    templateId = 0;
    if (currentUri.templateId) {
        templateId = currentUri.templateId;
    } else {
        //INT.logMessage('@todo The Template Id is not Provided, what to do??');
    }
    var oTemplateSummaryOptions = {
        manager: 'Templates',
        action: 'view',
        tkp: INT_TK_AFF_ID,
        host: currentUri.host
    };
    for (var searchKey in currentSearchParams) {
        if (currentSearchParams[searchKey] != '') {
            switch(searchKey) {
                case 'category' :
                case 'templateType' :
                case 'priceLowerBound' :
                case 'priceUpperBound' :
                case 'templateId' :
                    oTemplateSummaryOptions[searchKey] = currentSearchParams[searchKey];
                    break;

                default:
                    break;
            }
        }
    }
    //INT.debugObject(oTemplateSummaryOptions);
    IncludeAffiliateData(oTemplateSummaryOptions);
}

function updateContent(locationHref)
{
    initCurrentUri(locationHref);
    INT.Uri.setTemplateListUrl(confTemplateListPageUrl);
    INT.Uri.setTemplateViewtUrl(confTemplateViewPageUrl);
    //INT.logMessage('Update call, ensure that all data is loaded');
    var blnCategoryListLoaded = (Boolean(typeof aAllTemplateCategories != 'undefined' && aAllTemplateCategories));
    var blnTemplateTypeListLoaded = (Boolean(typeof aAllTemplateTypes != 'undefined' && aAllTemplateTypes));
    var blnPagedTemplateListLoaded = (Boolean(typeof aPagedTemplateList != 'undefined' && aPagedTemplateList));
    var blnFAQListLoaded = (Boolean(typeof aAllFaqs != 'undefined' && aAllFaqs));
    var blnTemplateSummaryLoaded = (Boolean(typeof oTemplate != 'undefined' && oTemplate));
    var blnContentLoaded = (Boolean(currentUri.contentId && typeof aHTMLContent[currentUri.contentId] != 'undefined' && aHTMLContent[currentUri.contentId]));

    //Display Categories
    if (!blnCategoryListDisplayed && blnCategoryListLoaded) {
        displayCategoryList(locationHref);
    } else {
        //INT.logMessage('Can not display Categories, data is not loaded');
    }

    //Display Template Types
    if (!blnTemplateTypeListDisplayed && blnTemplateTypeListLoaded) {
        displayTemplateTypes(locationHref);
    } else {
        //INT.logMessage('Can not display Template Type List, data is not loaded');
    }

    if (!blnMainContentDisplayed) {
        switch(currentUri.pageType) {
            case 'Templates' :
                if (!blnTemplateListDisplayed && blnPagedTemplateListLoaded) {
                    displayTemplateList(locationHref);
                } else {
                    //INT.logMessage('Can not display Templates.. data is not loaded');
                }
            break;

            case 'VIEW' :
                if (!blnTemplateSummaryDisplayed && blnTemplateSummaryLoaded) {
                    displayTemplateSummary(locationHref);
                } else {
                    //INT.logMessage('Can not display Templates.. data is not loaded');
                }
            break;

            case 'FAQ' :
                if (!blnFAQListDisplayed && blnFAQListLoaded) {
                    displayFAQList(locationHref);
                } else {
                    //INT.logMessage('Can not display Templates.. data is not loaded');
                }
            break;

            case 'Content' :
                if (blnContentLoaded) {
                    displayContent(locationHref);
                } else {
                    //INT.logMessage('Can not display Templates.. data is not loaded');
                }
            break;
        }
    }
    if (blnCategoryListDisplayed && blnTemplateTypeListDisplayed && blnMainContentDisplayed) {
        //INT.logMessage('clearing the Time Out');
        window.clearInterval(updaterProcessId);
    } else {
        //INT.logMessage('Will come back');
    }
    return;
}

function displayCategoryList(locationHref)
{
    //INT.logMessage('displaying Category List');
      var objUiCategoryList = document.getElementById('categorylist');
    var objUiSelectCategory = document.search.category;
    var objUiCategoryListItem = null;
    var objUiCategoryAnchor = null;
    var objDataTemplateCategory = null;
    var blnTemplateCategorySelected = false;
    for (var templateCategoryId in aAllTemplateCategories) {
        objDataTemplateCategory = aAllTemplateCategories[templateCategoryId];
        blnTemplateCategorySelected = objDataTemplateCategory.sef_category_alias == currentSearchParams.category;
          objUiCategoryListItem = document.createElement("li");
        objUiCategoryAnchor = document.createElement("a");
        var oCategoryUrlParams = {category: objDataTemplateCategory.sef_category_alias, templateType: 'web-templates'}
				
        objUiCategoryAnchor.setAttribute('href', locationHref+'web-templates/'+objDataTemplateCategory.sef_category_alias);
        objUiCategoryAnchor.innerHTML = objDataTemplateCategory.category_title + ' (' + objDataTemplateCategory.quantity + ')';
        objUiCategoryListItem.appendChild(objUiCategoryAnchor);
        objUiCategoryList.appendChild(objUiCategoryListItem);
        objUiSelectOptionCategory = new Option(objDataTemplateCategory.category_title, objDataTemplateCategory.sef_category_alias, blnTemplateCategorySelected);
        objUiSelectCategory.options[objUiSelectCategory.options.length] = objUiSelectOptionCategory;
    }
    blnCategoryListDisplayed = true;
}

function displayTemplateTypes(locationHref)
{
    //INT.logMessage('displaying Category List');
    var objUiULTemplateTypeList = document.getElementById('templateTypeList');
    var objUiSelectTemplateType = document.search.templateType;
    var objDataTemplateType = null;
    var blnTemplateTypeSelected = false;
    var aUiULChildTemplateTypes = new Array();
    objUiSelectTemplateType.options.length = 0;
    strHtmlUiSearch_TemplateType = '';

    for (var templateTypeId in aAllTemplateTypes) {
        objDataTemplateType = aAllTemplateTypes[templateTypeId];
        strHtmlOptionIsSelected = '';

        // Populate the Select Drop Down
        blnTemplateTypeSelected = objDataTemplateType.sef_title_alias == currentSearchParams.templateType;
        spacer = '';
        level = parseInt(objDataTemplateType.level_id, 10) - 1;
        while (level-- > 0) {
            spacer += '&nbsp;&nbsp;&nbsp;';
            //spacer += '   ';
        }
        if (blnTemplateTypeSelected) {
            strHtmlOptionIsSelected = ' selected="selected"';
        }
        templateTypeTitle = spacer + objDataTemplateType.title;
        //objUiSelectOptionTemplateType = new Option(templateTypeTitle,
        //                                    objDataTemplateType.sef_title_alias,
        //                                    blnTemplateTypeSelected);
        //objUiSelectTemplateType.options[objUiSelectTemplateType.options.length] = objUiSelectOptionTemplateType;
        strHtmlUiSearch_TemplateType += '\n  <option value="'
            + objDataTemplateType.sef_title_alias + '"'
            + strHtmlOptionIsSelected
            + '>' + templateTypeTitle + '</option>';

        // Now work for the Template Type Tree
        levelId = parseInt(objDataTemplateType.level_id, 10);
        var oTemplateTypeUrlParams = {
            templateType: objDataTemplateType.sef_title_alias
        }
        objUiLITemplateType = document.createElement('li');
        if (levelId == 1) {
            continue;
        }
				tempLink = '';
				if(objDataTemplateType.sef_title_alias == 'website-templates') {
					tempLink = '';
				} else if(objDataTemplateType.sef_title_alias == 'css-templates') {
					tempLink = 'templates/css';
				} else if(objDataTemplateType.sef_title_alias == 'full-websites') {
					tempLink = 'templates/full-website';
				} else if(objDataTemplateType.sef_title_alias == 'wordpress-themes') {
					tempLink = 'templates/wordpress';
				} else if(objDataTemplateType.sef_title_alias == 'joomla-templates') {
					tempLink = 'templates/joomla';
				} else if(objDataTemplateType.sef_title_alias == 'newsletter-templates') {
					tempLink = 'templates/newsletter';
				}
        objUiAnchorTemplateType = document.createElement("a");
				objUiAnchorTemplateType.setAttribute('href', locationHref+tempLink);
        objUiAnchorTemplateType.innerHTML = objDataTemplateType.title;
        objUiLITemplateType.appendChild(objUiAnchorTemplateType);

        if (levelId == 2) {
            objUiULChildTemplateTypes = document.createElement('ul');
            objUiLITemplateType.appendChild(objUiULChildTemplateTypes);
            objUiULTemplateTypeList.appendChild(objUiLITemplateType);
            aUiULChildTemplateTypes[templateTypeId] = objUiULChildTemplateTypes;
        }

        if (levelId == 3) {
            aUiULChildTemplateTypes[objDataTemplateType.parent_id].appendChild(objUiLITemplateType);
        }
    }
    objUiSelectTemplateType.innerHTML = strHtmlUiSearch_TemplateType;
    correctTreeMenu();
    blnTemplateTypeListDisplayed = true;
}

function displayTemplateList(locationHref)
{
    //INT.logMessage('displaying Template List');
    var oDataTemplateItem = null;
    var objUiTemplateList = document.getElementById('tblTemplateList');
    //INT.debugObject(objUiTemplateList);
    var objUiCurrentRow = null;
    var objUiTemplateItem = null;
    var templateCount = 0;
    var aTemplateList = aPagedTemplateList.data;
    var resultCount = parseInt(aPagedTemplateList.resultCount);
    for (var templateId in aTemplateList) {
        templateCount++;
        // Create a new Row if this is the last item for the row
        if ((templateCount - 1) % numTemplatesInARow == 0) {
            objUiCurrentRow = objUiTemplateList.insertRow(objUiTemplateList.rows.length);
        }

        oDataTemplateItem = aTemplateList[templateId];
        objUiCellTemplateItem = objUiCurrentRow.insertCell(objUiCurrentRow.cells.length);
        populateUiCellTemplateItem(objUiCellTemplateItem, oDataTemplateItem, locationHref);

        // Display Template Item Separator
        if (templateCount % numTemplatesInARow != 0) {
            objUiCellTemplateItemSeparator = objUiCurrentRow.insertCell(objUiCurrentRow.cells.length);
            populateUiCellTemplateItemSeparator(objUiCellTemplateItemSeparator);
        }

        //Fill empty tds if applicable
        // @todo Separator Corresponding to the Template Item Separator need to be considered
        if ((templateCount == resultCount) && (templateCount % numTemplatesInARow != 0)) {
            for (var i = (templateCount % numTemplatesInARow); i < numTemplatesInARow; i ++) {
                objUiEmptyCell = objUiCurrentRow.insertCell(objUiCurrentRow.cells.length);
                objUiEmptyCell.innerHTML = '&nbsp;';
            }
        }

        // Display the Row Separator
        if (   (templateCount == resultCount) || templateCount %  numTemplatesInARow == 0) {
            var objUiRowSeparatorRow = objUiTemplateList.insertRow(objUiTemplateList.rows.length);
            var objUiCellSeparatorRow = objUiRowSeparatorRow.insertCell(objUiRowSeparatorRow.cells.length);
            populateUiCellSeparatorRow(objUiCellSeparatorRow);
            objUiCellSeparatorRow.height = 30;
            objUiCellSeparatorRow.align = 'left';
            objUiCellSeparatorRow.vAlign = 'top';
            objUiCellSeparatorRow.colSpan = (2 * numTemplatesInARow - 1);
            objUiCellSeparatorRow.innerHTML = '<img src="images/blank.gif" alt="" width="1" height="1" />';
        }
    }
    displayPager(locationHref);
    blnTemplateListDisplayed = true;
    blnMainContentDisplayed = true;
}

function displayPager(locationHref) {
	var paging_str = ''
	paging_str = (aPagedTemplateList.links).replace(/\?templateType=/g, locationHref+'page/');
	paging_str = (paging_str).replace(/&amp;category=/g, '/');
	paging_str = (paging_str).replace(/&amp;perPage=/g,'/');
	paging_str = (paging_str).replace(/&amp;pageID=/g,'/');
	var objUiPager = document.getElementById('pager');
	var strPagerLinksHTML = aPagedTemplateList.links;
	var strPagerHTML = '<span class="results">' + aPagedTemplateList.pagerDescription + '</span>';
	if (aPagedTemplateList.pager) {
			strPagerHTML += ' <span class="pageLinks"> '
					+ paging_str
					+ ' </span>'
	}
	objUiPager.innerHTML = strPagerHTML;
}

function displayTemplateSummary(locationHref)
{
    //INT.logMessage('Displaying Template Summary');
    var oDataTemplateSummary = oTemplate;
    //INT.debugObject(oDataTemplateSummary);
    //INT.logMessage('get Action for Template Summary');
    var objUiTemplateSummary = document.getElementById('uiPlaceHolderTemplateSummary');
    objUiTemplateSummary.innerHTML = parseTemplateSummary(oTemplate, locationHref)
    blnTemplateSummaryDisplayed = true;
    blnMainContentDisplayed = true;
}

function displayFAQList()
{
    //INT.logMessage('displaying FAQ List');
    var objDataFAQItem = null;
    var objUiFaqQuestions = document.getElementById('tdFaqQuestions');
    var objUiFaqAnswers = document.getElementById('tdFaqAnswers');
    var faqSerial = 0;
    for (var index = 0, length = aAllFaqs.length; index < length; index ++) {
        objDataFaqItem = aAllFaqs[index];
        faqSerial =  index + 1;
        objUIFaqQuestion = document.createElement('h3');
        objUIFaqQuestionAnchor = document.createElement('a');
        objUIFaqQuestionAnchor.setAttribute('href', '#a' + faqSerial);
        objUIFaqQuestionAnchor.innerHTML = objDataFaqItem.question;
        objUIFaqQuestion.appendChild(objUIFaqQuestionAnchor);
        objUiFaqQuestions.appendChild(objUIFaqQuestion);
        // Done with Adding the UI for the Question
        objUIFaqAswerSectionQuestionAnchor = document.createElement('a');
        objUIFaqAswerSectionQuestionAnchor.setAttribute('name', 'a' + faqSerial);
        objUIFaqAswerSectionQuestion = document.createElement('h4');
        objUIFaqAswerSectionQuestion.innerHTML = '<span>' + objDataFaqItem.question + '</span>';
        objUIFaqAswerSectionAnswer = document.createElement('h4');
        objUIFaqAswerSectionAnswer.innerHTML = objDataFaqItem.answer;

        objUiFaqAnswers.appendChild(objUIFaqAswerSectionQuestionAnchor);
        objUiFaqAnswers.appendChild(objUIFaqAswerSectionQuestion);
        objUiFaqAnswers.appendChild(objUIFaqAswerSectionAnswer);
    }
    blnFAQListDisplayed = true;
    blnMainContentDisplayed = true;
}

function displayContent()
{
    var objUiMainContent = document.getElementById('tdMainContent');
    objUiMainContent.innerHTML = aHTMLContent[currentUri.contentId];
    blnMainContentDisplayed = true;
}

function buildUrlTemplateView(oTemplateItem)
{
    var urlTemplateViewPage = '';
    if (confTemplateViewPageUrl) {
        urlTemplateViewPage = confTemplateViewPageUrl + 'view/' +  oTemplateItem.template_id;

    } else {
        urlTemplateViewPage = INT_TK_WEBROOT + '/'
            + oTemplateItem.sef_list_class_name
            + '/' +  oTemplateItem.template_category_sef_alias
            + '/' +  oTemplateItem.template_id
            + '/tkp/' +  INT_TK_AFF_ID + '/';
    }
    return urlTemplateViewPage;
}

/**
 * Parses and returns the HTML for the Cell where template Item is displayed
 *
 * @param oDataTemplateItem
 *            an Object with the Properties of Template Item
 * @return string the HTML code
 */
function parseTemplateItem(oDataTemplateItem, locationHref)
{
    var urlTemplateViewPage = buildUrlTemplateView(oDataTemplateItem);
    var urlTemplateBuyPage = INT_TK_WEBROOT + '/Cart/action/add/templateId/' +  oDataTemplateItem.template_id + '/tkp/' +  INT_TK_AFF_ID + '/';
    var oCategoryUrlParams = {category: oDataTemplateItem.template_category_sef_alias, templateType: 'web-templates'}
		var urlTemplateCategory = locationHref+'web-templates/'+oDataTemplateItem.template_category_sef_alias;
    strHTML = '';
    strHTML +=
      '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
        + '<tr>'
            + '<td align="left" valign="bottom"><a '
   + ' title="' + oDataTemplateItem.template_category_title + ' '
            + oDataTemplateItem.template_type_title_singular + ' '
            + oDataTemplateItem.template_code_uc + '"'
   + ' href="' + urlTemplateViewPage + '"><img'
   + ' alt="' + oDataTemplateItem.template_category_title + ' '
            + oDataTemplateItem.template_type_title_singular + ' '
            + oDataTemplateItem.template_code_uc + '"'
   + ' src="' + INT_TK_WEBROOT + '/' + oDataTemplateItem.template_image_thumbnail + '"'
   + '  /></a></td>'
        + '</tr>'
        + '<tr>'
            + '<td align="left" valign="top">'
                + '<ul class="designDetails">'
                    + '<li>' + oDataTemplateItem.template_type_title_singular + '</li>'
                    + '<li>Category: <a '
   + ' href="' + urlTemplateCategory + '"'
   + ' title="' + oDataTemplateItem.template_category_title + ' '
        + oDataTemplateItem.template_type_title + '"'
   + '>' + oDataTemplateItem.template_category_title + '</a></li>'
                    + '<li>Code: <span>' + oDataTemplateItem.template_code_uc + '</span></li>'
                    + '<li>Price: <span>' + smartTemplatePrice(oDataTemplateItem) + '</span></li>'
                + '</ul>'
                + '<ul class="buy">'
                    + '<li><a href="' + urlTemplateViewPage + '" class="previewIcon">Preview</a></li>'
                    + '<li>|</li>'
                    + '<li><a href="' + urlTemplateBuyPage + '" class="buyIcon" rel="nofollow">Buy Now</a></li>'
                + '</ul>'
            + '</td>'
        + '</tr>'
    + '</table>';
    return strHTML;
}

/**
 * Parses and returns the HTML for the Cell where template Item is displayed
 *
 * @param oDataTemplateItem
 *            an Object with the Properties of Template Item
 * @return string the HTML code
 */
function parseTemplateSummary(oDataTemplateItem, locationHref)
{
    var urlTemplateViewPage = buildUrlTemplateView(oDataTemplateItem);
    var urlTemplateBuyPage = INT_TK_WEBROOT + '/Cart/action/add/templateId/' +  oDataTemplateItem.template_id + '/tkp/' +  INT_TK_AFF_ID + '/';
    var urlTemplateDownloadPage = INT_TK_WEBROOT + '/' + oDataTemplateItem.sef_list_class_name + '/' +  oDataTemplateItem.template_category_sef_alias + '/' +  oDataTemplateItem.template_id + '/tkp/' +  INT_TK_AFF_ID + '/';
    var oCategoryUrlParams = {category: oDataTemplateItem.template_category_sef_alias,templateType: 'web-templates'}
    var urlTemplateCategory = locationHref+'web-templates/'+oDataTemplateItem.template_category_sef_alias;
    strHTML = '';
    strHTML += ''
      + '<ul class="designDetails">'
       + '<li>' + oDataTemplateItem.template_type_title_singular + '</li>'
       + '<li>Category: <a '
       + ' href="' + urlTemplateCategory + '"'
       + ' title="' + oDataTemplateItem.template_category_title + ' '
       + oDataTemplateItem.template_type_title + '"'
       + '>' + oDataTemplateItem.template_category_title + '</a></li>'
       + '<li>Code: <span>' + oDataTemplateItem.template_code_uc + '</span></li>'
       + '<li>Price: <span>' + smartTemplatePrice(oDataTemplateItem) + '</span></li>'
   + '</ul>';


    strHTML += ''
    + '<ul class="actions">';

        if (oDataTemplateItem.liveDemoUrl) {
            strHTML += ''
                + '<li><a href="' + oDataTemplateItem.liveDemoUrl + '" class="demo">View Live Demo</a></li>';
        }

        if (oDataTemplateItem.is_free == 1) {
            strHTML += ''
                + '<li><a href="' + urlTemplateDownloadPage + '" class="download">Download</a></li>';
        } else {
            strHTML += ''
                + '<li><a href="' + urlTemplateBuyPage + '" class="buy" rel="nofollow">Buy Now</a></li>';
        }

        strHTML += ''
    + '</ul>';


    strHTML += ''
    + '<p><a '
    + ' title="' + oDataTemplateItem.template_category_title + ' '
    + oDataTemplateItem.template_type_title_singular + ' '
    + oDataTemplateItem.template_code_uc + '"'
    + ' href="' + urlTemplateViewPage + '"><img'
    + ' alt="' + oDataTemplateItem.template_category_title + ' '
    + oDataTemplateItem.template_type_title_singular + ' '
    + oDataTemplateItem.template_code_uc + '"'
   + ' src="' + INT_TK_WEBROOT + '/' + oDataTemplateItem.template_image_big + '"'
   + ' /></a></p>'

    return strHTML;
}

/*
 * Sets the attribute for the Cell where the individual Template Item is
 * displayed..
 *
 * @param objUiCellTemplateItem HTML TableCell Object @param oDataTemplateItem
 * an Object with the Properties of Template Item @return void
 */
function populateUiCellTemplateItem(objUiCellTemplateItem, oDataTemplateItem, locationHref)
{
    objUiCellTemplateItem.width = 144;
    objUiCellTemplateItem.align = 'left';
    objUiCellTemplateItem.vAlign = 'bottom';
    objUiCellTemplateItem.innerHTML = parseTemplateItem(oDataTemplateItem, locationHref);
}

function populateUiCellTemplateItemSeparator(objUiCellTemplateItemSeparator)
{
    objUiCellTemplateItemSeparator.width = 20;
    objUiCellTemplateItemSeparator.align = 'left';
    objUiCellTemplateItemSeparator.vAlign = 'top';
    objUiCellTemplateItemSeparator.innerHTML =
        '<img src="images/blank.gif" alt="" width="1" height="1" />';
}

function populateUiCellSeparatorRow(objUiCellSeparatorRow)
{
    objUiCellSeparatorRow.height = 30;
    objUiCellSeparatorRow.align = 'left';
    objUiCellSeparatorRow.vAlign = 'top';
    objUiCellSeparatorRow.colSpan = (2 * numTemplatesInARow - 1);
    objUiCellSeparatorRow.innerHTML = '<img src="images/blank.gif" alt="" width="1" height="1" />';
}

function checkVar(what)
{
    return Boolean(typeof what != 'undefined' && what);
}

function smartTemplatePrice(oDataTemplateItem)
{
    if (oDataTemplateItem.is_free == "1") {
        return '<b>Free</b>';
    } else {
        return 'US$ ' + oDataTemplateItem.template_price;
    }
}

function correctTreeMenu()
{
    if (!blnMenuCorrected) {
        var lastNodeIndex = -1;
        var objPanel = document.getElementById('typeArea');
        var arrPanelObjects = objPanel.childNodes;
        for (var i=0; i <arrPanelObjects.length; i++)
        {
            if (arrPanelObjects[i].nodeName == 'UL')
            {
                arrList = arrPanelObjects[i].getElementsByTagName('ul');
                for (var j=0; j<arrList.length; j++)
                {
                    arrListElements = arrList[j].getElementsByTagName('li');
                    if (arrListElements)
                    {
                        lastNodeIndex = arrListElements.length - 1;
                        if (lastNodeIndex >= 0)
                        {
                            arrListElements[lastNodeIndex].className = 'last';
                        }
                    }
                }
            }
        }
    }
    blnMenuCorrected = true;
}

