﻿var pluckLoginOverrideCompleted = false;
var pluckLoginOverrideAttempts = 0;
var pluckLoginOverrideMaxAttempts = 30;
var pluckLoginOverrideTimer = null;
var enableConsoleLog = false;       //will use the console.log and console.dir code in FF. useful for debugging. not supported in IE!

if(enableConsoleLog)
    window.document.title = window.document.title  + " - WARNING!!! console log is enabled.";

function ExtractPluckContent(content)
{
    var tagDelimiter = '/script>';
    var index  = content.lastIndexOf(tagDelimiter);
    content = content.substr(index + tagDelimiter.length);
    
    return content;
}

function Batanga_ShowReportAbuse(e, docUrl, sitelifePostUrl)
{    
    //check to see if the user has logged in.     
    if(!IsUserLoggedIn())
    {
        showLoginDialog();            
        return false;
    }
    
    //call the sitelife function now...
    return ShowReportAbuse(e, docUrl, sitelifePostUrl);
}

function GetElementsByClassName(classname, node)  {
    if(!node)
    {
        log('node is null. using body');
        node = document.getElementsByTagName("body")[0];
    }
    
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
        
    log('a.length = ' + a.length);
    return a;
}

function getIframe(frameId)
{    
    var myTop;
    if (window.frameElement) {
        myTop = window.frameElement;
    } else if (window.top) {
        myTop = window.top;
    }
    var iFs = myTop.document.getElementsByTagName('iframe');
 
    var x, i = iFs.length;
    while ( i-- ){
        x = iFs[i];        
        if(x.id == frameId)
            return x;
    }
    
    return null;
}

function log(str)
{
    //alert(str);
    if(enableConsoleLog)
        console.log(str);
}

function logobj(obj)
{
    //alert(obj);
    if(enableConsoleLog)
        console.dir(obj);
}

function PluckLoginOverride(frameId, classIdToLookFor)
{           
    log('In PluckLoginOverride');
    //if the user is already logged in then just return. 
    if(IsUserLoggedIn())  
    {
        log('user already logged in..returning...');
        return;
    }
                
    if(pluckLoginOverrideCompleted || pluckLoginOverrideAttempts++ > pluckLoginOverrideMaxAttempts)
    {
        if(pluckLoginOverrideTimer != null)
            clearTimeout(pluckLoginOverrideTimer);
        log('PluckLoginOverride:done with no changes');
        return;
    }
    
    var ele = null;    
    log('calling GetElementsByClassName without iframe first');
    var eleLogin = GetElementsByClassName('SiteLife_Login', null);    
    try {
        if(eleLogin != null && eleLogin.length > 0 )
        {
            log('ele FOUND! without iframe');
            ele = eleLogin[0];
        }
        else
        {
            //if no frameId is passed then default to the comments iframe id.    
            frameId = frameId || 'commentsiframe';
            log('frameId = ' + frameId);
            
            //if no class id is passed then default to the sitelife login class id.    
            classIdToLookFor = classIdToLookFor || 'SiteLife_Login';
            log('classIdToLookFor = ' + classIdToLookFor);
        
            var iframeElem = parent.document.getElementById(frameId);
            if(iframeElem != null) {
                var doc;
                if(iframeElem.contentDocument && iframeElem.contentDocument != 'undefined')
                {
                    log('using contentDocument = ' + iframeElem.contentDocument);    
                    doc = iframeElem.contentDocument;       //FF...
                }
                else
                {
                    log('using contentWindow = ' + iframeElem.contentWindow);    
                    doc = iframeElem.contentWindow.document;         //IE
                }
                logobj(doc);
                
                eleLogin = GetElementsByClassName(classIdToLookFor, doc);    
                log('eleLogin.length  = ' + eleLogin.length);
                    
                if(eleLogin.length > 0 )
                {                
                    ele = eleLogin[0];
                    log('ele found USING iframe');
                }
            }
        }
    } catch (eleExcept) {}    
    if(ele == null) {
        log('PluckLoginOverride:setting timer again...');
        if(pluckLoginOverrideTimer != null)
            clearTimeout(pluckLoginOverrideTimer);
        pluckLoginOverrideTimer = setTimeout("PluckLoginOverride('" + frameId + "', '" + classIdToLookFor + "')", 2000);     //2 seconds
        return;
    }
    
    
    log('login div tag is ' + ele);
    logobj(ele);
        
    pluckLoginOverrideCompleted = true;
    var loginHtml;
    var language = getLanguage();
    if(language == "ES")
        loginHtml = "Debes entrar para poder hacer un comentario. ";
    else
        loginHtml = "You must be logged in to leave a comment. ";
        
    loginHtml += "<a onclick=\" parent.showLoginDialog(); return false;\" href=\"#\">";
    if(language == "ES")
        loginHtml += "Entrar";
    else
        loginHtml += "Log In";
    loginHtml += "</a>";
    
    loginHtml += " | ";
    loginHtml += "<a onclick=\" parent.signupUser(470, 470); return false;\" href=\"#\">";
    if(language == "ES")
        loginHtml += "Regístrate GRATIS >";
    else
        loginHtml += "Join for FREE >";
    loginHtml += "</a>";
    
    ele.innerHTML = loginHtml;
        
    if(pluckLoginOverrideTimer != null)
        clearTimeout(pluckLoginOverrideTimer);
}

function GetLanguageStrippedUrl()
{
    var pageUrl = window.location.href;
    pageUrl = pageUrl.toLowerCase();
    pageUrl = pageUrl.replace('/es/', '/');
    pageUrl = pageUrl.replace('/en/', '/');
    
    log('GetLanguageStrippedUrl :' + pageUrl);
    return pageUrl;
}


//NOTE: This following two function are replacement for the pluck implementation to GetReviews.
//The need for this is to strip the language portion from the url that is being saved into pluck.
//In order to include this call, the plucks sitelifeproxy script MUST be included before.

function Review(parentKeyType, parentKey, reviewedTitle, reviewCategory, pageSize, sort, currentPage) {
    log("Review");
    var divId = "Reviews_Container";
    gSiteLife.WriteDiv(divId);
    return GetReviews(parentKeyType, parentKey, reviewedTitle, reviewCategory, pageSize, sort, currentPage);
}


//SiteLifeProxy.prototype.GetReviews = function(parentKeyType, parentKey, reviewedTitle, reviewCategory, pageSize, sort, currentPage) {
function GetReviews(parentKeyType, parentKey, reviewedTitle, reviewCategory, pageSize, sort, currentPage) {
    parentKeyType = parentKeyType || "ExternalResource";
    parentKey = gSiteLife.EscapeValue(parentKey) || gSiteLife.EscapeValue(gSiteLife.__StripAnchorFromUrl(window.location.href));
    reviewedTitle = gSiteLife.EscapeValue(reviewedTitle) || gSiteLife.EscapeValue(document.title);
    reviewCategory = reviewCategory || "Uncategorized";
    pageSize = pageSize || 10;
    sort = sort || "TimeStampAscending";
    currentPage = currentPage || 0;
    var url = gSiteLife.__baseUrl + '/Review/Reviews?plckElementId=Reviews_Container' +
        '&plckTargetKey=' + parentKey + 
        '&plckTargetKeyType=' + parentKeyType +
        '&plckReviewedTitle=' + reviewedTitle +
        '&plckReviewCategory=' + reviewCategory +
        '&plckSort=' + sort +         
        '&plckParentUrl=' + gSiteLife.EscapeValue(gSiteLife.__StripAnchorFromUrl(GetLanguageStrippedUrl())) + 
        '&plckParentTitle=' + gSiteLife.EscapeValue(document.title) +
        '&plckCurrentPage=' + currentPage +
        '&plckPageSize=' + pageSize;
    log(url);
    gSiteLife.__Send(url);
    return false;   
}
