﻿var config = {
    tabs: new Array(
		{
		    prefix: 'TopicBlock',
		    activeTag: 'li',
		    activeClass: 'active',
		    contentTag: 'div'
		}
	)
};

addEvent('load', initTabs);
var TabsToggler = {};
function initTabs() {
    if (!config.tabs) return;
    for (var i = 0; i < config.tabs.length; i++) {
        var tab = config.tabs[i];
        var menu = document.getElementById(tab.prefix + '_menu');
        var content = document.getElementById(tab.prefix + '_content');
        if (!menu || !content) continue;

        var oTab = tab;
        oTab.active = null;
        oTab.elements = {};

        var links = menu.getElementsByTagName("A");
        for (var j = 0; j < links.length; j++) {
            var linkEl = links[j];
            var activeEl = (tab.activeTag == 'this') ? linkEl : getParentByTag(linkEl, tab.activeTag);
            var tabID = linkEl.getAttribute('rel');
            if (activeEl.className.lastIndexOf(tab.activeClass) > -1) {
                oTab.active = tabID;
            }
            var tabContent = document.getElementById(tab.prefix + '_' + tabID);
            if (tabContent) {
                tabContent.style.display = (oTab.active && oTab.active == tabID) ? 'block' : 'none';
            }

            linkEl.setAttribute('prefix', tab.prefix);
            oTab.elements[tabID] = {
                tabID: tabID,
                linkEl: linkEl,
                activeEl: activeEl,
                content: tabContent
            };

            linkEl.onclick = function() {
                var prefix = this.getAttribute('prefix');
                var tabID = this.getAttribute('rel');
                var oTab = TabsToggler[prefix];

                var activeTab = oTab.elements[oTab.active];
                activeTab.activeEl.className = activeTab.activeEl.className.replace(' ' + oTab.activeClass, '').replace(oTab.activeClass, '');
                activeTab.content.style.display = 'none';

                oTab.active = tabID;
                var activeTab = oTab.elements[oTab.active];
                if (activeTab.activeEl.className.lastIndexOf(oTab.activeClass) == -1)
                    activeTab.activeEl.className += ' ' + oTab.activeClass;
                activeTab.content.style.display = 'block';

                return false;
            }
        } // end for( links )

        TabsToggler[tab.prefix] = oTab;

    } // end for( config.tabs )
}

function getParentByTag(node, tag) {
    if (typeof (node.tagName) != 'undefined') {
        if (node.tagName.toUpperCase() == tag.toUpperCase()) {
            return node;
        }
        else if (typeof (node.parentNode) != 'undefined') {
            return getParentByTag(node.parentNode, tag);
        }
    }
    return null;
}

/* common */
function addEvent(event, initMethod) {
    if (window.addEventListener) {
        window.addEventListener(event, initMethod, false);
    }
    else if (window.attachEvent) {
        window.attachEvent("on" + event, initMethod);
    }
}

function ExecuteWebService(params, url, callbackSuccess, callbackError) {
    $.ajax({
        async: false,
        type: "POST",
        url: url,
        cache: false,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: params,
        success: callbackSuccess,
        error: callbackError
    });
}

function ShowUSStates(CountryList, StateList, RegStateBox) {
    if (CountryList.value == "US") {
        StateList.style.display = "block";
        RegStateBox.style.display = "none";
    }
    else {
        StateList.style.display = "none";
        RegStateBox.style.display = "block";
    }
}

function HideContent(d) {
    document.getElementById(d).style.display = "none";
}
function ShowContent(d) {
    document.getElementById(d).style.display = "block";
}
function ReverseDisplay(d) {
    if (document.getElementById(d).style.display == "none") { document.getElementById(d).style.display = "block"; }
    else { document.getElementById(d).style.display = "none"; }
}

function CompareMail(s, UserID, ForUpdate) {
    var IsFreeMail = false;
    var params = "{'s':'" + escape(s) + "','UserID':'" + UserID + "','ForUpdate':'" + ForUpdate + "'}";
    ExecuteWebService(
        params,
        "../ReferralsUsService.asmx/SiteUser_CompareMail",
        function(result) {
            IsFreeMail = result;
        },
        function(XMLHttpRequest, textStatus, errorThrown) {
            alert('Error comparing e-mail');
            //document.body.appendChild("Error comparing e-amil");
        }
    );
    return (IsFreeMail);
}

function ComparePassword(UserID, UserPassword) {
    var IsEqual = false;
    var params = "{'UserID':'" + UserID + "','UserPassword':'" + escape(UserPassword) + "'}";
    ExecuteWebService(
        params,
        "../ReferralsUsService.asmx/SiteUser_ComparePassword",
        function(result) {
            IsEqual = result;
        },
        function(XMLHttpRequest, textStatus, errorThrown) {
            alert('Error comparing passwords');
            //document.body.appendChild("Error comparing e-amil");
        }
    );
    return (IsEqual);
}

function CompareOldPassword(UserID, UserPassword) {
    var IsEqual = false;
    var params = "{'UserID':'" + UserID + "','UserPassword':'" + escape(UserPassword) + "'}";
    ExecuteWebService(
        params,
        "../ReferralsUsService.asmx/SiteUser_CompareOldPassword",
        function(result) {
            IsEqual = result;
        },
        function(XMLHttpRequest, textStatus, errorThrown) {
            alert('Error comparing passwords');
            //document.body.appendChild("Error comparing e-amil");
        }
    );
    return (IsEqual);
}

function SiteUser_Get(KeyName, IsMail, UserPassword) {
    var su = false;
    var params = "{'KeyName':'" + KeyName + "','IsMail':'" + IsMail + "','UserPassword':'" + UserPassword + "'}";
    ExecuteWebService(
        params,
        "../ReferralsUsService.asmx/SiteUser_Get",
        function(result) {
            su = result;
        },
        function(XMLHttpRequest, textStatus, errorThrown) {
            alert('Database error');
        }
    );
    return (su);
}

function Admin_Get(AdminNameValue, AdminPasswordValue) {
    var su = false;
    var params = "{'AdminNameValue':'" + AdminNameValue + "','AdminPasswordValue':'" + AdminPasswordValue + "'}";
    ExecuteWebService(
        params,
        "../ReferralsUsService.asmx/Admin_Get",
        function(result) {
            su = result;
        },
        function(XMLHttpRequest, textStatus, errorThrown) {
            alert('Database error');
        }
    );
    return (su);
}

function trim(s) {
    return s.replace(/^\s*(.*?)\s*$/, "$1");
}