﻿/*Global Instantiations:*/
var domain = window.location.href.split('/')[2];
var feedback = null;
var pageContent = null;
var obj = null;
var pid = null;
var sid = null;
var uid = null;
var email = null;
var initialized = false;

/*Assign page content to variable:*/
pageContent = 
'<div id="docHead"><div id="logo">Logo Image</div><div id="feedback"><div id="feedbackImageContainer">' + 
'<img id="feedbackImage" width="24" height="24" src="" alt="" /></div><div id="feedbackContent" '+
'onclick="fnFeedbackMoreInfo(this)" style="cursor: pointer;"><span id="feedbackMessage"></span></div>' + 
'</div><div id="misc"><img id="messageAlert" width="20" height="20" src="Images/attention_red.gif" ' + 
'alt="" /></div><div class="clearFloats">&nbsp;</div></div><div id="docLeftPanel">&nbsp;</div><div ' + 
'id="docContent"><div id="guests" align="center"><div style="font-style: italic; text-align: center;">' + 
'<div style="font-size: xx-large; font-weight: bold;">Don\'t work hard, work smart...</div><div ' + 
'style="font-size: x-large; margin-top: 2px;">Use Resume Smarts and find your next job with ease!</div>' + 
'</div><div id="inputForm"><div id="toggleForms"><div id="lblRegisterHere" onclick="fnRegisterHere()">' + 
'Register Here</div><div id="lblLoginHere" onclick="fnLoginHere()">Login Here</div><div ' + 
'class="clearFloats">&nbsp;</div></div><div id="formInputControls"><div id="divName"><span id="lblName" ' + 
'class="label">Name:</span><input id="txtName" class="textbox" type="text" /></div><div id="divEmail">' + 
'<span id="lblEmail" class="label">Email:</span><input id="txtEmail" class="textbox" type="text" /></div>' + 
'<div id="divPassword"><span id="lblPassword" class="label">Password:</span><input id="txtPassword" ' + 
'class="textbox" type="password" /></div><div id="passwordSent"></div></div><div id="formButtons"><input ' + 
'id="btnSubmit" value="Register" type="button" onclick="fnSubmit()" /><input id="btnClear" type="button" ' + 
'value="Clear" onclick="fnReset()" /><div class="clearFloats">&nbsp;</div></div><div id="forgotPassword" ' + 
'onclick="fnForgotPassword()">Forgot Password?</div><div id="btnSendPassword"><button onclick=' + 
'"fnSendPassword()"><div style="line-height: 20px; text-align: center; margin-top: 2px;">Please</div><div ' + 
'style="line-height: 20px; text-align: center; margin-bottom: 2px;">Send Me My Password</div></button>' + 
'</div></div><div id="apps" align="center"><table id="appsTable" summary="Application Icons" border="0" ' + 
'cellpadding="0" cellspacing="0"><tbody><tr style="text-align: center;"><td class="td"><div ' + 
'id="firstAppIcon" class="appIcon" onclick="fnAppIcon__click(this)" onmouseover="fnAppIcon__mOver(this);">' + 
'<img src="Images/collaborator.gif" alt="Collaborator" /><div>Collaborator</div></div></td><td class="td">' + 
'<div class="appIcon" onclick="fnAppIcon__click(this)" onmouseover="fnAppIcon__mOver(this);"><img ' + 
'src="Images/customizer.gif" alt="Customizer" /><div>Customizer</div></div></td><td class="td"><div ' + 
'class="appIcon" onclick="fnAppIcon__click(this)" onmouseover="fnAppIcon__mOver(this);"><img ' + 
'src="Images/tracker.gif" alt="Tracker" /><div>Tracker</div></div></td><td class="td"><div class="appIcon" ' + 
'onclick="fnAppIcon__click(this)" onmouseover="fnAppIcon__mOver(this);"><img class="appIcon" ' + 
'src="Images/syndicator.gif" alt="Syndicator" /><div>Syndicator</div></div></td></tr></tbody></table><div ' +
'id="appDesc"> </div></div></div>' +

'<div id="txtPid"></div><div id="txtSid"></div>' + 

'</div><div id="docRightPanel">&nbsp;</div><div id="docStatus" ' + 
'align="center"><span style="border: 0px;" onclick="fnMore(this)"><img id="imgContact" ' + 
'src="Images/keys.jpg" width="11" height="11" alt="Agreement" /> EULA</span><span onclick="fnMore(this)">' + 
'<img id="imgContact" src="Images/restricted.jpg" width="8" height="11" alt="Privacy" /> Privacy ' + 
'Policy</span><span onclick="fnMore(this)"><img id="imgContact" src="Images/security.gif" width="11" ' + 
'height="11" alt="Security" /> Security Policy</span><span onclick="fnMore(this)"><img id="imgContact" ' + 
'src="Images/light.jpg" width="11" height="11" alt="About" /> About</span><span onclick="fnMore(this)">' + 
'<img id="imgContact" src="Images/email.jpg" width="11" height="11" alt="Contact" /> Contact</span></div>';

/*TODO: These variables to be moved to database so that modification does not require application QA.*/
var collaborator = "Need help with your resume? Invite your friends to offer suggestions, and select the modifications that you wish to keep. <span class='readMoreAppInfo' onclick='fnMoreAppInfo(this)'>Click to read more.</span>";
var customizer = "Want to quickly customize your resume to address a position's requirements? Instantly modify, send and track your resume. <span class='readMoreAppInfo' onclick='fnMoreAppInfo(this)'>Click to read more.</span>";
var tracker = "Need to know who received your resume, and what it contained? Want to keep track of follow-ups? Easily recall your interactions with recruiters and companies. <span class='readMoreAppInfo' onclick='fnMoreAppInfo(this)'>Click to read more.</span>";
var syndicator = "Want your resume presented directly to those who are looking for you? Syndicate your resume and be found, while concealing your private information. <span class='readMoreAppInfo' onclick='fnMoreAppInfo(this)'>Click to read more.</span>";

/*Instantiate variables for use with Tab and Slider objects:*/
var arrLeftPanelGroup = new Array(), arrRightPanelGroup = new Array();
var selectedAppIcon = new Image(24, 24), selectedAppColor = "";
var leftPanel, rightPanel;

/*Filter out incompatible browser and versions:*/
(function($) { $.browserTest = function(a, z) { var u = 'unknown', x = 'X', m = function(r, h) { for (var i = 0; i < h.length; i = i + 1) { r = r.replace(h[i][0], h[i][1]); } return r; }, c = function(i, a, b, c) { var r = { name: m((a.exec(i) || [u, u])[1], b) }; r[r.name] = true; r.version = (c.exec(i) || [x, x, x, x])[3]; if (r.name.match(/safari/) && r.version > 400) { r.version = '2.0'; } if (r.name === 'presto') { r.version = ($.browser.version > 9.27) ? 'futhark' : 'linear_b'; } r.versionNumber = parseFloat(r.version, 10) || 0; r.versionX = (r.version !== x) ? (r.version + '').substr(0, 1) : x; r.className = r.name + r.versionX; return r; }; a = (a.match(/Opera|Navigator|Minefield|KHTML|Chrome/) ? m(a, [[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''], ['Chrome Safari', 'Chrome'], ['KHTML', 'Konqueror'], ['Minefield', 'Firefox'], ['Navigator', 'Netscape']]) : a).toLowerCase(); $.browser = $.extend((!z) ? $.browser : {}, c(a, /(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/, [], /(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/)); $.layout = c(a, /(gecko|konqueror|msie|opera|webkit)/, [['konqueror', 'khtml'], ['msie', 'trident'], ['opera', 'presto']], /(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/); $.os = { name: (/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase()) || [u])[0].replace('sunos', 'solaris') }; if (!z) { $('html').addClass([$.os.name, $.browser.name, $.browser.className, $.layout.name, $.layout.className].join(' ')); } }; $.browserTest(navigator.userAgent); })(jQuery);

/*Notify pre-IE v8 users of upgrade requirement:*/
if ($.browser.name != 'msie' || ($.browser.name == 'msie' && $.browser.versionNumber > 8)) {
    $(window).resize(function() {
        fnPageSetup();
    });
} else {
    alert('Upgrade your browser now to optimize your browsing experience.');
}
    
function fnLoad() {
    $('html').css('overflow', 'auto');

    if (!initialized) {
        leftPanel = null;
        rightPanel = null;
        uid = new String($('#uid').val());
        sid = new String($('#sid').val());
        pid = new String($('#pid').val());
        initialized = true;
        feedback = new oFeedback('', '', '', '');
    }
    /*Initialize GUI structure:*/
    fnPageSetup();
    
    return;
}

function fnPageSetup() {
    /*Instantiations:*/
    var availHeight, onePercentOfHeight, availWidth, onePercentOfWidth;
    var docHeadHeight, docHeadWidth, docHeadBorderSidesWidth;
    var logoWidth, totalLogoWidth, totalLogoBorderSidesWidth;
    var feedbackWidth, feedbackBorderSidesWidth;
    var miscWidth, totalMiscWidth, totalMiscBorderSidesWidth;
    var leftPanelHeight, leftPanelExtraHeight, leftPanelWidth, leftPanelBorderSidesWidth;
    var contentHeight, contentExtraHeight, contentWidth, contentSideBordersWidth;
    var rightPanelHeight, rightPanelExtraHeight, rightPanelWidth, rightPanelBorderSidesWidth;
    var accessControlsWidth, minWidth, quarterWidth, docStatusHeight;
    
    /*Prime GUI dimensions:*/
    $('#page').html(' ');
    $('#page').height(30);
    $('#docLeftPanel').height(10);
    $('#docRightPanel').height(10);
    availWidth = $('body').width();
    availHeight = fnAvailableHeight(availWidth);
    $('#hidWidth').val(availWidth);
    $('#hidHeight').val(availHeight);
    $('#page').height(availHeight);
    onePercentOfWidth = Math.floor(availWidth / 100);
    onePercentOfHeight = Math.floor(availHeight / 100);

    /*Header setup:*/
    $('#page').html(pageContent);
    docStatusHeight = fnObjectHeight('#docStatus');
    docHeadHeight = fnObjectHeight('#docHead');
    docHeadBorderSidesWidth = fnObjectBorderSidesWidth('#docHead');
    docHeadWidth = availWidth - docHeadBorderSidesWidth;
    $('#docHead').width(docHeadWidth);
    totalLogoBorderSidesWidth = fnObjectBorderSidesWidth('#logo');
    logoWidth = (onePercentOfWidth * 30) - totalLogoBorderSidesWidth;
    $('#logo').width(logoWidth);
    totalLogoWidth = logoWidth + totalLogoBorderSidesWidth;
    totalMiscBorderSidesWidth = fnObjectBorderSidesWidth('#misc');
    miscWidth = (onePercentOfWidth * 30) - totalMiscBorderSidesWidth;
    $('#misc').width(miscWidth);
    totalMiscWidth = miscWidth + totalMiscBorderSidesWidth;
    feedbackBorderSidesWidth = fnObjectBorderSidesWidth('#feedback');
    feedbackWidth = docHeadWidth - (feedbackBorderSidesWidth + totalLogoWidth + totalMiscWidth);
    $('#feedback').width(feedbackWidth);
    $('#feedbackContent').width($('#feedback').width() - $('#feedbackImageContainer').width());

    /*Page setup:*/
    leftPanelBorderSidesWidth = fnObjectBorderSidesWidth('#docLeftPanel');
    leftPanelWidth = $('#docLeftPanel').width() + leftPanelBorderSidesWidth;
    leftPanelExtraHeight = fnObjectExtraHeight('#docLeftPanel');
    rightPanelBorderSidesWidth = fnObjectBorderSidesWidth('#docRightPanel');
    rightPanelWidth = parseInt($('#docRightPanel').width()) + rightPanelBorderSidesWidth;
    rightPanelExtraHeight = fnObjectExtraHeight('#docRightPanel');
    contentSideBordersWidth = fnObjectBorderSidesWidth('#docContent');
    contentWidth = availWidth - (leftPanelWidth + contentSideBordersWidth + rightPanelWidth);
    contentExtraHeight = fnObjectExtraHeight('#docContent');
    contentHeight = availHeight - (docHeadHeight + docStatusHeight + contentExtraHeight);
    leftPanelHeight = contentHeight - leftPanelExtraHeight;
    rightPanelHeight = contentHeight - rightPanelExtraHeight;
    $('#docContent').width(contentWidth);
    $('#docContent').height(contentHeight);
    $('#docLeftPanel').height(leftPanelHeight);
    $('#docRightPanel').height(rightPanelHeight);

    /*Instantiate Panel objects:*/
    var tabHeight = 38;
    if (leftPanel == null)
        leftPanel = new oPanel('#docLeftPanel', leftPanelWidth,
            parseInt($('#docLeftPanel').css('margin-right')), 'left', tabHeight, 
            docHeadHeight, 0, (contentWidth - leftPanelWidth), (contentHeight - 2));
    else {
        leftPanel.ResetSliderParameters((contentHeight - 2), 0, contentWidth - leftPanelWidth);
        if (leftPanel.TabCount() > 0) leftPanel.Render(leftPanel.ExtendedSlider());
    }
    if (rightPanel == null)
        rightPanel = new oPanel('#docRightPanel', rightPanelWidth, 
            parseInt($('#docRightPanel').css('margin-left')), 'right', tabHeight, 
            docHeadHeight, availWidth, (contentWidth - rightPanelWidth), (contentHeight - 2));
    else {
        rightPanel.ResetSliderParameters((contentHeight - 2), availWidth, contentWidth - rightPanelWidth);
        if (rightPanel.TabCount() > 0) rightPanel.Render(rightPanel.ExtendedSlider());
    }

    /*Guest setup:*/
    minWidth = 200;
    $('#inputForm').width((onePercentOfWidth * 40) < minWidth ? minWidth : (onePercentOfWidth * 40));
    quarterWidth = Math.floor($('#inputForm').width() / 4);
    $('#toggleForms').width($('#inputForm').width());
    $('#lblRegisterHere').width((Math.floor($('#inputForm').width() / 2)));
    $('#lblLoginHere').width($('#registerHere').width());
    $('#formInputControls').width(quarterWidth * 3);
    $('#formInputControls').css('margin-left', (Math.floor(quarterWidth / 2)) + 'px');
    $('#formInputControls').css('margin-right', $('#formInputControls').css('margin-left'));
    $('#formInputControls').css('text-align', 'left');
    var additionalBrowserPixels =
        ($.browser.name == 'msie' || $.browser.name == 'firefox') ? 1 : $.browser.webkit ? -3 : 0;
    var inputExtraWidth =
        (isNaN(parseInt($('#txtEmail').css('margin-left'))) ? 0
            : parseInt($('#txtEmail').css('margin-left')) * 2) +
        (isNaN(parseInt($('#txtEmail').css('padding-left'))) ? 0
            : parseInt($('#txtEmail').css('padding-left')) * 2) +
        (isNaN(parseInt($('#txtEmail').css('border-left-width'))) ? 0
            : parseInt($('#txtEmail').css('border-left-width')) * 2) +
        additionalBrowserPixels;
    inputExtraWidth = (isNaN(inputExtraWidth) ? 0 : inputExtraWidth);
    $('#txtName').width($('#formInputControls').width() - $('#lblName').width() - inputExtraWidth);
    $('#txtEmail').width($('#formInputControls').width() - $('#lblEmail').width() - inputExtraWidth);
    $('#txtPassword').width($('#formInputControls').width() - $('#lblPassword').width() - inputExtraWidth);
    $('#divPassword').css('display', 'none');
    $('#btnSubmit, #btnClear').width(70);
    $('#btnSubmit, #btnClear').css('text-align', 'center');
    $('#formButtons').width($('#formInputControls').width());
    $('#formButtons').css('margin-left margin-right', $('#formInputControls').css('margin-left'));
    $('#appsTable').width($('#inputForm').width());
    var twentiethOfTableWidth = Math.floor($('#appsTable').width() / 20);
    $('.td img').width(twentiethOfTableWidth * 3);
    var fullInputFormWidth = Math.floor($('#inputForm').width() + fnObjectBorderSidesWidth('#inputForm'));
    $('#appDesc').width(fullInputFormWidth - 12);
    $('#guests').css('margin-top', Math.floor(($('#docContent').height() - $('#guests').height()) / 3));
    fnAppIcon__mOver('#firstAppIcon');
    $('#appDesc').css('visibility', 'hidden');
    /*
    $('#txtPid').html('pid = ' + pid);
    $('#txtSid').html('sid = ' + sid);
    */
    
    return;
}

function fnAvailableHeight(AvailWidth) {
    var sectionHeight = 0;
    while($('body').width() == AvailWidth) {
        sectionHeight = $('#page').height();
        
        /*Increase height by one px:*/
        $('#page').height(sectionHeight + 1);
    }
    return sectionHeight;
}

function fnObjectHeight(ObjectId) {
    var returnValue = 
        $(ObjectId).height() +
        (isNaN(parseInt($(ObjectId).css('padding-top'))) ? 0 :
            parseInt($(ObjectId).css('padding-top'))) +
        (isNaN(parseInt($(ObjectId).css('padding-bottom'))) ? 0 :
            parseInt($(ObjectId).css('padding-bottom'))) +
        (isNaN(parseInt($(ObjectId).css('border-top-width'))) ? 0 :
            parseInt($(ObjectId).css('border-top-width'))) +
        (isNaN(parseInt($(ObjectId).css('border-bottom-width'))) ? 0 :
            parseInt($(ObjectId).css('border-bottom-width'))) +
        (isNaN(parseInt($(ObjectId).css('margin-top'))) ? 0 :
            parseInt($(ObjectId).css('margin-top'))) +
        (isNaN(parseInt($(ObjectId).css('margin-bottom'))) ? 0 :
            parseInt($(ObjectId).css('margin-bottom')));
    return returnValue;
}
function fnObjectBorderSidesWidth(ObjectId) {
    return (
        (isNaN(parseInt($(ObjectId).css('padding-left'))) ? 0 :
            parseInt($(ObjectId).css('padding-left'))) +
        (isNaN(parseInt($(ObjectId).css('padding-right'))) ? 0 :
            parseInt($(ObjectId).css('padding-right'))) +
        (isNaN(parseInt($(ObjectId).css('border-left-width'))) ? 0 :
            parseInt($(ObjectId).css('border-left-width'))) +
        (isNaN(parseInt($(ObjectId).css('border-right-width'))) ? 0 :
            parseInt($(ObjectId).css('border-right-width'))) +
        (isNaN(parseInt($(ObjectId).css('margin-left'))) ? 0 :
            parseInt($(ObjectId).css('margin-left'))) +
        (isNaN(parseInt($(ObjectId).css('margin-right'))) ? 0 :
            parseInt($(ObjectId).css('margin-right')))
    );
}
function fnObjectExtraHeight(ObjectId) {
    return (
        (isNaN(parseInt($(ObjectId).css('padding-top'))) ? 0 :
            parseInt($(ObjectId).css('padding-top'))) +
        (isNaN(parseInt($(ObjectId).css('padding-bottom'))) ? 0 :
            parseInt($(ObjectId).css('padding-bottom'))) +
        (isNaN(parseInt($(ObjectId).css('border-top-width'))) ? 0 :
            parseInt($(ObjectId).css('border-top-width'))) +
        (isNaN(parseInt($(ObjectId).css('border-bottom-width'))) ? 0 :
            parseInt($(ObjectId).css('border-bottom-width'))) +
        (isNaN(parseInt($(ObjectId).css('margin-top'))) ? 0 :
            parseInt($(ObjectId).css('margin-top'))) +
        (isNaN(parseInt($(ObjectId).css('margin-bottom'))) ? 0 :
            parseInt($(ObjectId).css('margin-bottom')))
    );
}

function fnAppIcon__mOver(Caller) {
    $('#appDesc').css('visibility', 'visible');
    selectedAppIcon.src = $(Caller).children('img')[0].src;
    switch ($(Caller).children('div').text()) {
        case "Collaborator":
            selectedAppColor = '#E7E';
            $('#appDesc').html(collaborator);
            break;
        case "Customizer":
            selectedAppColor = '#AEE';
            $('#appDesc').html(customizer);
            break;
        case "Tracker":
            selectedAppColor = '#EE4';
            $('#appDesc').html(tracker);
            break;
        case "Syndicator":
            selectedAppColor = '#BE6';
            $('#appDesc').html(syndicator);
            break;
    }
    /*TODO: Move apps and their icons and colors to DB so that modifying them does not require application QA.*/
    $('#appDesc').css('borderColor', selectedAppColor);

    return;
}

function fnAppIcon__click(Caller) {
    feedback.Wipe();
    $('#appDesc span:eq(0)').click();

    return;
}

function fnFeedbackMoreInfo(Caller) {
    var helpId = feedback.code;
    selectedAppIcon.src = $(Caller).prev().children('img')[0].src;
    selectedAppColor = 'Transparent';
    $('#appDesc').css('visibility', 'hidden');
    fnNewTab('left', 'ErrorMessageInfo', selectedAppColor);

    return;
}

function fnMoreAppInfo(Caller) {
    switch (Caller.parentNode.innerHTML.substr(0, 36)) {
        case collaborator.substr(0, 36):
            fnNewTab('left', 'Collaborator', selectedAppColor);
            break;
        case customizer.substr(0, 36):
            fnNewTab('left', 'Customizer', selectedAppColor);
            break;
        case tracker.substr(0, 36):
            fnNewTab('left', 'Tracker', selectedAppColor);
            break;
        case syndicator.substr(0, 36):
            fnNewTab('left', 'Syndicator', selectedAppColor);
            break;
    }

    return;
}

function fnNewTab(Side, Title, Color) {
    feedback.Wipe();
    var panel = Side == 'left' ? leftPanel : rightPanel;
    var newTabSlider = panel.CreateNewTab(Title, selectedAppIcon.src, Color);
    if (newTabSlider != null) panel.Render(Title);

    return;
}

function fnMore(Caller) {
    if (Caller.nodeName == 'IMG') Caller = Caller.parentNode;
    var text = $(Caller).text(), re = /\s+/g;
    text = text.replace(re, '');
    selectedAppIcon.src = Caller.children[0].src;
    selectedAppColor = 'Transparent';
    $('#appDesc').css('visibility', 'hidden');
    fnNewTab('right', text, selectedAppColor);

    return;
}

function fnCloseTabAndSlider(Caller, Side, Title, SliderReference) {
    feedback.Wipe();
    var panel = Side == 'left' ? leftPanel : rightPanel;
    var panelReference = Side == 'left' ? '#docLeftPanel' : '#docRightPanel';
    var i = 0, tabCount = panel.TabCount();

    /*Delete tab and slider:*/
    for (i = 0; i < tabCount; i++) {
        if (panel.tabs[i].title == Title) {
            /*Retract slider if extended:*/
            if (panel.tabs[i].isExtended) {
                panel.tabs[i].ToggleSlider();
            }
            /*Remove tab from array:*/
            panel.tabs.splice(i, 1);
            $(SliderReference).remove();
            $(Caller).parent().remove();
            break;
        }
    }

    return;
}

function fnToggleSlider(Side, Title) {
    feedback.Wipe();
    var caller = null, panel = Side == 'left' ? leftPanel : rightPanel;
    for (i = 0; i < panel.TabCount(); i++) {
        if (panel.tabs[i].title == Title) {
            caller = panel.tabs[i];
            break;
        }
    }
    if (!caller.isExtended) {
        /*Retract extended slider:*/
        leftPanel.RetractAllSliders();
        rightPanel.RetractAllSliders();
    }
    caller.ToggleSlider();

    return;
}

/*DHTML - Adjust styles for login:*/
function fnLoginHere() {
    feedback.Wipe();
    if ($('#divPassword').css('display') == 'block') return;
    $('#lblLoginHere').css('text-decoration', 'none');
    $('#lblLoginHere').css('cursor', 'default');
    $('#lblLoginHere').css('font-weight', 'bold');
    $('#lblRegisterHere').css('text-decoration', 'underline');
    $('#lblRegisterHere').css('cursor', 'pointer');
    $('#lblRegisterHere').css('font-weight', 'normal');
    $('#divEmail').css('display', 'block');
    $('#divName').css('display', 'none');
    $('#divPassword').css('display', 'block');
    $('#formButtons').css('display', 'block');
    $('#btnSubmit').val('Login');
    $('#forgotPassword').css('visibility', 'visible');
    $('#btnSendPassword').css('display', 'none');
    $('#passwordSent').html('');
    $('#passwordSent').css('display', 'none');

    return;
}

/*DHTML - Adjust styles for registration:*/
function fnRegisterHere() {
    feedback.Wipe();
    if ($('#divName').css('display') == 'block') return;
    $('#lblRegisterHere').css('text-decoration', 'none');
    $('#lblRegisterHere').css('cursor', 'default');
    $('#lblRegisterHere').css('font-weight', 'bold');
    $('#lblLoginHere').css('text-decoration', 'underline');
    $('#lblLoginHere').css('cursor', 'pointer');
    $('#lblLoginHere').css('font-weight', 'normal');
    $('#divName').css('display', 'block');
    $('#divEmail').css('display', 'block');
    $('#divPassword').css('display', 'none');
    $('#formButtons').css('display', 'block');
    $('#btnSubmit').val('Register');
    $('#btnSendPassword').css('display', 'none');
    $('#forgotPassword').css('visibility', 'hidden');
    $('#passwordSent').html('');
    $('#passwordSent').css('display', 'none');

    return;
}

/*DHTML - Adjust styles for password retrieval:*/
function fnForgotPassword() {
    feedback.Wipe();
    $('#lblRegisterHere').css('text-decoration', 'underline');
    $('#lblRegisterHere').css('cursor', 'pointer');
    $('#lblRegisterHere').css('font-weight', 'normal');
    $('#lblLoginHere').css('text-decoration', 'underline');
    $('#lblLoginHere').css('cursor', 'pointer');
    $('#lblLoginHere').css('font-weight', 'normal');
    $('#formButtons').css('display', 'none');
    $('#forgotPassword').css('visibility', 'hidden');
    $('#divPassword').css('display', 'none');
    $('#divName').css('display', 'none');
    $('#btnSendPassword').css('display', 'block');

    return;
}

/*TODO: AJAX call for password:*/
function fnSendPassword() {
    //Scrub email:
    feedback.Wipe();
    var email = $('#txtEmail').val();
    if (!fnScrub('Empty', email)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Enter your email address to proceed.');
        feedback.Commit();
        return;
    }
    if (!fnScrub('Email', email)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Your email address is malformed.');
        feedback.Commit();
        return;
    }
    $('#toggleForms').css('display', 'block');
    $('#lblRegisterHere').css('text-decoration', 'underline');
    $('#lblRegisterHere').css('cursor', 'pointer');
    $('#lblLoginHere').css('text-decoration', 'underline');
    $('#lblLoginHere').css('cursor', 'pointer');
    $('#divEmail').css('display', 'none');
    $('#btnSendPassword').css('display', 'none');
    feedback = new oFeedback('Images/attention_green.gif', pid, 
        'Your password has been sent to your email address.');
    feedback.Commit();

    return;
}

function fnReset() {
    feedback.Wipe();
    $('#txtName').val('');
    $('#txtEmail').val('');
    $('#txtPassword').val('');

    return;
}

function fnSubmit() {
    if ($('#divPassword').css('display') == 'block') fnLogin();
    else if ($('#divName').css('display') == 'block') fnRegister();

    return;
}

function fnLogin() {
    /*Instantiations and initializations:*/
    var email = $('#txtEmail').val(), pwd = $('#txtPassword').val(), args = '';

    /*Validate user entries:*/
    if (!fnScrub('Empty', email)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Fill out the form to log in.');
        feedback.Commit();
        return;
    }
    if (!fnScrub('Email', email)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Email address is malformed.');
        feedback.Commit();
        return;
    }
    if (!fnScrub('Empty', pwd)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Fill out the form to log in.');
        feedback.Commit();
        return;
    }
    if (!fnScrub('Password', pwd)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 
            'The password that you entered was incorrect.');
        feedback.Commit();
        return;
    }
//    $.post("WebX/Default.asmx/LogIn", "SessionId=" + sid + "&Email=" + email + "&Password=" + pwd,
//        function(data) { $("#feedback").html(data.text); $("#content2").html(data.text); });
    return;
}

function fnRegister() {
    /*Instantiations and initializations:*/
    var name = $('#txtName').val(), email = $('#txtEmail').val(), args = '';
    
    /*Validate user entries:*/
    if (!fnScrub('Empty', name) || !fnScrub('Empty', email)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Fill out the form to register.');
        feedback.Commit();
        return;
    }
    if (!fnScrub('Name', name)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Your name is misspelled.');
        feedback.Commit();
        return;
    }
    if (!fnScrub('Email', email)) {
        feedback = new oFeedback('Images/attention_red.gif', pid, 'Email address is malformed.');
        feedback.Commit();
        return;
    }

    args = 'SessionId=' + sid + '&PID=' + pid + '&Name=' + name + '&Email=' + email;
    fnCallAJAX("WebX/Default.asmx/Register", args);
    return;
    //    $.post("WebX/Default.asmx/Register", "SessionId="+sid+"&Name="+name+"&Email="+email, 
    //        function(data){ 
    //            var feedback = new oFeedback("fnRegister Succeeded", "Images/cn.ico", "ADFG%^$#GF", data.text);
    //            feedback.Commit();
    //        function(data){ 
    //            alert(data.text);
    //    } );
}

/*Initiate all AJAX calls:*/
function fnCallAJAX(MethodUrl, Args) {
    /*Clear feedback:*/
    feedback.Wipe();

    //$.post(temp, Args, function(data) { if (data != null && data.text.length > 0) CommitCommands(data.text); });

    $.post(MethodUrl, Args, function(data) { if (data != null && data.text.length > 0) alert(data.text); });
}

/*Process all AJAX callbacks:*/
function CommitCommands(response) {
    alert(response); return;
    //Get response:
    var args = "SessionId=" + sid + "&ProcessId=" + Pid;
    $.post("WebX/Default.asmx/GetResponse", args,
        function(data) {
            var commandArray = new Array(data);
            for (var i = 0; i < commandArray.length; i++) {
                eval("obj = new " + commandArray[i] + ";");
                obj.Commit();
            }
        });
}

