﻿
var state = new Ext.state.CookieProvider({
    expires: new Date(new Date().getTime()+(1000*60*60*24*365))
});

if (!Ext.getUrlParam('saveMode')) {
    Ext.QuickTips.init();
}

function logout() {
    setCookie('userId', '', -1);
    setCookie('guestRequestId', '', -1);
    window.location.href = window.location.href;
}

if (Ext.getUrlParam('recommendee'))
    setCookie('recommendee', Ext.getUrlParam('recommendee'), 99 * 365);

function SetUrlParameter(parameterName, parameterValue) {
    /*if (parameterValue == null) {
        document.location.href = document.location.href.replace(/(.*parameterName=)([^&]*)(.*)/, '$1' + '$3')
    }
    else */
    if (document.location.href.indexOf(parameterName + '=') >= 0) {
        document.location.href = document.location.href.replace(new RegExp('(.*' + parameterName + '=)([^&]*)(.*)'), '$1' + parameterValue + '$3');
    } else if (document.location.href.indexOf('?') >= 0) {
        document.location.href = document.location.href + '&' + parameterName + '=' + parameterValue;
    } else {
        document.location.href = document.location.href + '?' + parameterName + '=' + parameterValue;
    }
}

if (isRegister == 'True') {

    Ext.Ajax.request({
        url: 'accountDataHandler.ashx?type=getUserMessages',
        success: function(result) {

            result = Ext.decode(result.responseText)

            if (result.success && result.data && result.data.length > 0) {
                var curMsg = 1;
                var msgCount = result.data.length;

                var tip = new Ext.Window({
                    html: '<div id="userMessage">' + result.data[0].message + '</div><center><div id="tip-next-button" style="padding: 5px 0px 3px 0px;"></div></center>',
                    title: '<span id="messageTitle">Message(s) for ' + userEmail + '</span>',
                    width: 700,
                    closable: false,
                    modal: true
                });

                tip.show();

                new Ext.Button({
                    text: curMsg == msgCount ? 'Close' : 'Next Message',
                    handler: function() {
                        Ext.Ajax.request({
                            url: 'accountDataHandler.ashx?type=setUserMessageReaded&messageId=' + result.data[curMsg - 1].id
                        });

                        curMsg++;
                        if (curMsg > msgCount) {
                            tip.hide();
                        } else {
                            //tip.setTitle('<span id="messageTitle">Message ' + curMsg + ' of ' + msgCount + '</span>');
                            Ext.getDom('userMessage').innerHTML = result.data[curMsg - 1].message;

                            if (curMsg == msgCount) {
                                this.setText('Close');
                            }
                        }
                    }
                }).render('tip-next-button');
            }
        },
        failure: function() { Ext.Msg.alert('Error', 'Cannot get user messages.'); }
    });
}

function checkForRegistration()
{
    if (isRegister == "False")
    {
       var fullReportUnregForm = new Ext.form.FormPanel({
        url: 'default.aspx?login=true',
        region: 'center',
        width: 350,
        border: false,
        monitorValid: true,
        monitorPoll: 250,
        margins: '3 0 3 3',
        cmargins: '3 3 3 3',
        labelWidth: 70,
        bodyStyle: 'background: #EDD4C3; padding-top: 10px; padding-left: 5px;',
        defaultType: 'textfield',
        items: [{
            xtype: 'label',
            html: '<table width="100%"><tr><td align="center" style="text-align: center;">The full report is for registered members only.<br>Please login or register.</td></tr></table>',
            style: 'font-size:12px;'
        }],       
        buttons: [{
            text: 'Login',
            //formBind: true,
            handler: function() {
                Ext.getCmp('quickReport').setValue(true);
                Ext.getCmp('fullReport').setValue(false);
                loginPopupShow();
            }
        }, {
            text: 'Register',
            handler: function() {
                Ext.getCmp('quickReport').setValue(true);
                Ext.getCmp('fullReport').setValue(false);
                RegisterWindowShow();
            }
        }, {
            text: 'Cancel',
            handler: function() {
                Ext.getCmp('quickReport').setValue(true);
                Ext.getCmp('fullReport').setValue(false);
                fullReportUnregWindow.hide();
            }
        }]
    });

    var fullReportUnregWindow = new Ext.Window({
        title: 'Information',
        width: 350,
        height: 120,
        //border : false,
        plain: true,
        layout: 'border',
        modal: true,
        resizable: false,
        items: [fullReportUnregForm]
    });

    fullReportUnregWindow.show();

    }
}

function changeSettings() {
    var reportSettingsPanel = Ext.getCmp('report-settings-panel');
    
    if (reportSettingsPanel.collapsed)
        reportSettingsPanel.expand(true);
    else
        reportSettingsPanel.collapse(true);
}

function extractPageNameFromUrl(url) {
    var parts = url.split('/');
    var page = parts.length > 0 ? parts[parts.length - 1] : '';
    parts = page.split('?');
    return parts.length > 0 ? parts[0] : '';
}

function setQuickReportState() {
    //state.set('reportTypeFullState', false);
}

Ext.onReady(function() {

    if (isRegister == "True") {
        var appnav = document.getElementById('appnav');
        appnav.style.marginTop = 0;

        var loginwrapper = document.getElementById('loginwrapper');
        loginwrapper.style.marginTop = 0;
    } else {

        var login = Ext.getUrlParam('login');

        if (login && login == 'true') {
            loginPopupShow(window.location.href);
        }
    }

    var menuContainer = Ext.getDom('l1nav');
    if (menuContainer) {
        var menuLinks = menuContainer.getElementsByTagName('a');

        var currentPage = extractPageNameFromUrl(window.location.href);

        for (var i = 0; i < menuLinks.length; i++) {
            if (extractPageNameFromUrl(menuLinks[i].href) == currentPage) {

                var imgElement = menuLinks[i].innerHTML;
                var onMouseOverUrl = imgElement.match(/onmouseover="javascript:this.src='([^'"]{0,50})/)[1];
                imgElement = imgElement.replace(/onmouseout="[^"]*"/, '');
                imgElement = imgElement.replace(/onmouseover="[^"]*"/, '');
                imgElement = imgElement.replace(/ilo-full-src="[^"]*"/, '');
                imgElement = imgElement.replace(/pointer/, 'default');
                imgElement = imgElement.replace(/src="[^"]*"/, 'src="' + onMouseOverUrl + '"');

                menuLinks[i].parentNode.innerHTML = imgElement;
            }
        }
    }

    if (Ext.getDom('report-settings')) {

        if (Ext.getUrlParam('saveMode'))
            return;
            
        var settingsPanel = new SettingsPanel({ id: 'report-settings-panel', width: 588, renderTo: 'report-settings' });

        settingsPanel.updateState = false;

        Ext.getCmp('googleCheckbox').setValue(state.get('googleState', true));
        Ext.getCmp('yahooCheckbox').setValue(state.get('yahooState', false));
        var countryState = state.get('countryState', 'US');
        var regionState = state.get('regionState', '');
        var cityState = state.get('cityState', '');

        Ext.getCmp('countryCombo').setValue(countryState);
        var regionCombo = Ext.getCmp('regionCombo');
        var cityCombo = Ext.getCmp('cityCombo');

        if (countryState == '') {
            settingsPanel.updateState = true;
            settingsPanel.updateTitle();
        }
        else {
            regionCombo.emptyText = 'Loading...';
            regionCombo.reset();

            //regionCombo.getEl().up('.x-form-item').down('label').dom.innerHTML = record.data.region + ':';
            regionCombo.store.on('load', function() {

                regionCombo.emptyText = 'All regions within this country';
                if (regionCombo.store.getCount() == 0)
                    regionCombo.setDisabled(true);
                if (regionState == '') {
                    //regionCombo.setDisabled(true);
                    regionCombo.reset();
                    settingsPanel.updateState = true;
                    settingsPanel.updateTitle();
                }
                else
                    regionCombo.setValue(regionState);

            }, regionCombo, { single: true });

            regionCombo.store.load({ params: { country: countryState} });
        }

        if (regionState == '') {
            settingsPanel.updateState = true;
            settingsPanel.updateTitle();
        }
        else {
            cityCombo.emptyText = 'Loading...';
            cityCombo.reset();

            //regionCombo.getEl().up('.x-form-item').down('label').dom.innerHTML = record.data.region + ':';
            cityCombo.store.on('load', function() {
                cityCombo.emptyText = 'All cities within this region';

                if (cityCombo.store.getCount() == 0)
                    cityCombo.setDisabled(true);

                if (cityCombo == '') {
                    cityCombo.reset();
                }
                else
                    cityCombo.setValue(cityState);

                settingsPanel.updateState = true;
                settingsPanel.updateTitle();

            }, cityCombo, { single: true });

            cityCombo.store.load({ params: { region: regionState} });
        }

        settingsPanel.updateTitle();

        var searchText = Ext.getDom('searchText');

        var searchTextState = state.get('searchTextState', '');

        if (searchTextState == '') {
            inputResetTxt();
        } else {
            inputClearTxt();
            searchText.value = searchTextState;
        }

        searchText.onkeyup = function() {
            state.set('searchTextState', searchText.value);
        };
    }

    /*var rootTabsItems = [{
    title: 'Research Competitors<sup>&nbsp;</sup>',
    page: 'KeywordResearchTool.aspx',
    layout: 'fit'
    }, {
    title: 'Monitoring Competitors<sup>(beta)</sup>',
    page: 'CompetitorMonitoringTool.aspx',
    layout: 'fit'
    }
    ];

    if (menuContainer) {
    if (isRegister == "True") {
    rootTabsItems.push({
    title: 'Account<sup>&nbsp;</sup>',
    page: 'account.aspx',
    layout: 'fit'
    });
    }

        var activeTabIndex = 0;
    var href = window.location.href.split('#');
    href = href.length > 0 ? href[0].split('?') : href;
    href = href.length > 0 ? href[0].split('&') : href;

        var pages = href.length > 0 ? href[0].split('/') : '';
    var page = pages.length > 0 ? pages[pages.length - 1] : '';

        for (activeTabIndex = 0; activeTabIndex < rootTabsItems.length; activeTabIndex++) {
    if (rootTabsItems[activeTabIndex].page == page) {
    rootTabsItems[activeTabIndex].contentEl = 'active-tab-content';
    break;
    }
    }

        var rootTabs = new Ext.TabPanel({
    id: 'root-tab-panel',
    activeTab: activeTabIndex,
    width: 850,
    height: 1200,
    style: 'padding-bottom: 20px;',
    items: rootTabsItems
    });

        if (activeTabIndex == rootTabsItems.length) {
    Ext.getDom('active-tab-content').className = '';
    }
    else {
    rootTabs.render('root-tabs-container');
    }

        rootTabs.on('beforetabchange', function(tabPanel, newTab, currentTab) {
    window.location.href = newTab.initialConfig.page;
    return false;
    });
    }*/
});

function SetRootTabHeight(height) {
    Ext.onReady(function() {

        var rootTabPanel = Ext.getCmp('root-tab-panel');

        if (rootTabPanel) {
            rootTabPanel.setHeight(height);
        }
    });
}

var waitPayPalApprove = Ext.getUrlParam('waitPayPalApprove');
var payPalApproveTries = 60;

function WaitPayPal() {
    if (payPalApproveTries > 0) {
        payPalApproveTries--;
        Ext.Ajax.request({
            url: 'accountDataHandler.ashx?type=waitPayPalApprove',
            success: function(result) {
                if (result.responseText == 'true')
                    window.location.href = window.location.href.replace(/[\?\&]waitPayPalApprove=true/, '');
                else {
                    setTimeout(WaitPayPal, 5000);
                }
            },
            failure: function() { Ext.Msg.alert('Error', 'Cannot send the report.'); }
        });
    } else {
        Ext.Msg.alert('Error', 'We have not received transaction confirmation from PayPal.<br>' +
            'Please contact <a href="mailto:support@keywordcompetitor.com">support@keywordcompetitor.com</a> for checking it manually.');
    }
}
Ext.onReady(function() {

    if (waitPayPalApprove == 'true') {
        Ext.Msg.wait('Waiting for transaction approvement from PayPal...', 'Please wait...');
        WaitPayPal();
    }
});

function ValidateForm(form) {

    var isValid = true;

    form.items.each(function(f) {
        if (isValid && f.validate && !f.validate()) {

            if (f.fieldLabel) {

                var message = f.el.dom.qtip.replace(/this field/i, f.fieldLabel + ' field');

                if (f.fieldLabel.indexOf('What\'s') == 0) {
                    message = message.replace('What\'s ', '').replace(' field', '');
                    message = message.substring(0, 1).toUpperCase() + message.substring(1, message.length);
                }

                Ext.Msg.alert('Error', message);
            } else {
                Ext.Msg.alert('Error', f.el.dom.qtip);
            }
            isValid = false;
        }
    });

    return isValid;
}

function resendValidation() {
    Ext.Msg.prompt('Email', 'Please enter your email:', function(btn, text) {
        if (btn == 'ok') {

            if (!Ext.form.VTypes.email(text)) {
                Ext.Msg.alert('Error', Ext.form.VTypes.emailText, resendValidation);
            } else {
                Ext.Ajax.request({
                    url: 'activate.aspx?forgot=' + escape(text),
                    success: function(result) {
                        if (result.responseText == '{ success: true }') {
                            Ext.MessageBox.alert('Information', 'Your login information was successfully sent.');
                        } else {
                            Ext.MessageBox.alert('Error', 'Email is not valid. Maybe you are not registered.');
                        }
                    },
                    failure: function() { Ext.Msg.alert('Error', 'Cannot send login information.'); }
                });
            }
        }
    });

}

function showAccountNotActivatedMessage() {
    Ext.MessageBox.alert('',
        'You have not activated your account.<br>' +
        'Did you receive an activation email from us, yet? <br>' +
        'If you have, please click on the link below to<br>' +
        'activate and begin your subscription. If you did not <br>' +
        'receive your activation email, please click <a href="javascript:resendValidation()">here</a><br>' +
        'to resend the activation email or let us know<br>' +
        'by contacting us at <a href="mailto:support@keywordcompetitor.com">support@keywordcompetitor.com</a>.'
    );
}