//
//  MyRealTown Scripts
//  Copyright (c) 2007 InternetCrusade.com
//  All Rights Reserved
//
//  

var ajaxMain = '/myrealtown/myrealtown_ajax.php';
var ajaxMail = '/myrealtown/mail.ajax.php';

function showSidePanel(elemID) {
    if(elemID && $(elemID) && $('allImages')) {
        $('allImages').style.display = 'block';
        if($('divMyImagesC')) {
            $('divMyImagesC').innerHTML = $(elemID).innerHTML;
        }
        //resizeSidePanel();
        if(elemID == 'divSelector' && $('divSelImg')) {
            var handlerFunc = function(t) {
                $('divSelImg').innerHTML = t.responseText;
            }
            
            var errFunc = function(t) {
                alert('Error ' + t.status + ' -- ' + t.statusText);
            }
            var postData = 'show=myimages';
            new Ajax.Request(ajaxMain, {method:'post', postBody:postData, onSuccess:handlerFunc, onFailure:errFunc});
        }
        var dragAllImages = new Draggable('allImages', {handle:'divMyImagesT',starteffect:'',endeffect:''});
    }
}

function resizeSidePanel() {
    if($('divImgTool')) {
        $('divMyImagesC').style.height = $('divImgTool').getHeight() - 24;
    }
}

function addEmailAddress(fieldEmailAddress) {
    if(fieldEmailAddress && $(fieldEmailAddress) && $(fieldEmailAddress).value && $(fieldEmailAddress).value.length > 0) {
        var handlerFunc = function(t) {
            strResponse = t.responseText;
            if(strResponse.substr(0, 5) == 'pass:' || strResponse.substr(0, 5) == 'fail:') {
                alert(strResponse.substr(5));
                if($('addEmail') && strResponse.substr(0, 5) == 'pass:') {
                    $(fieldEmailAddress).value = '';
                    $('addEmail').style.display = 'none';
                }
            } else {
                alert('There was an error processing your request.\nPlease try again latger.');
            }
            return true;
        }
        
        var errFunc = function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }

        var postData  = 'task=addemail';
            postData += '&strEmail=' + encodeURIComponent($(fieldEmailAddress).value);
        new Ajax.Request(ajaxMain, {method:'post', postBody:postData, onSuccess:handlerFunc, onFailure:errFunc});
    } else {
        alert('Please enter an email address.');
    }
}

function previewArticle(pkArticleID) {
    if(pkArticleID && $('previewArticle')) {
        $('previewArticle').style.display = 'block';
        if($('divLoading')) {
            $('previewArticle').innerHTML = "<div style='text-align: center; margin: 10px auto;'>" + $('divLoading').innerHTML + "<br />Loading article, please wait...</div>";
        }
        
        
        var handlerFunc = function(t) {
            $('previewArticle').innerHTML = "<h1>Article Preview*</h1>";
            $('previewArticle').innerHTML += t.responseText;
            $('previewArticle').scrollTo();
            return true;
        }
        
        var errFunc = function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }

        var postData  = 'get=article';
            postData += '&id=' + encodeURIComponent(pkArticleID);
        new Ajax.Request(ajaxMain, {method:'post', postBody:postData, onSuccess:handlerFunc, onFailure:errFunc});
    }
}

function imageZoom(elemID, factor) {
    if(elemID && factor && $(elemID) && $(elemID).src) {
        var imageZoomConfig = new Array();
        imageZoomConfig['minWidth'] = 40;
        imageZoomConfig['minHeight'] = 90;
        imageZoomConfig['maxWidth'] = 300;
        imageZoomConfig['maxHeight'] = 500;
        
        
        intWidth = $(elemID).getWidth();
        intHeight = $(elemID).getHeight();
        switch(factor) {
            case '+':
                intNewWidth = Math.ceil(intWidth * 1.5);
                intNewHeight = Math.ceil(intHeight * 1.5);
                break;
                
            case '-':
                intNewWidth = Math.ceil(intWidth / 1.5);
                intNewHeight = Math.ceil(intHeight / 1.5);
                break;
               
            case '0':
                intNewWidth = 180;
                intNewHeight = Math.ceil((intHeight / intWidth) * 180);
                break;
            
            default:
                intNewWidth = intWidth;
                intNewHeight = intHeight;
        }
        if(intNewWidth < imageZoomConfig['maxWidth'] && intNewHeight < imageZoomConfig['maxHeight'] && intNewWidth > imageZoomConfig['minWidth'] && intNewHeight > imageZoomConfig['minHeight']) {
            $(elemID).style.width = intNewWidth;
            // $(elemID).style.height = intNewHeight;
        }
    }
}

function checkCountry() {
    if(formProfile && formProfile.strCountryCode && formProfile.strStateID && formProfile.intCountyID) {
        if(formProfile.strCountryCode.value == 'US') {
            formProfile.strStateID.disabled = false;
            formProfile.intCountyID.disabled = false;
        } else {
            formProfile.strStateID.value = 0;
            formProfile.intCountyID.value = 0;
            formProfile.strStateID.disabled = true;
            formProfile.intCountyID.disabled = true;
        }
    }
}




//-------------------------
// My RealTown Mail Scripts
//-------------------------

function mailFolderClass(strFolder) {
    if($('rtmailtb' + strFolder)) {
        // Clear out any other folders with the class name 'mailFolderSel'
        //var theFolders = $('rtmailtblmenu').getElementsByClassName('mailFolderSel');
        var theFolders = $C('mailFolderSel', 'rtmailtblmenu');
        if(theFolders.length) {
            for(var i = 0; i < theFolders.length; i++) {
                theFolders[i].removeClassName('mailFolderSel');
            }
        }
        $('rtmailtb' + strFolder).addClassName('mailFolderSel');
        if($('strSearchFolder')) {
            $('strSearchFolder').value = strFolder;
        }
    }
}

function mailViewFolder(strFolder, intPage, boolSearch) {
    if(strFolder && $('rtmailmsg') && $('rtmailmenu')) {
        if($('formWriteMessage') && FCKeditorAPI.GetInstance('strMessage')) {
            var fckMessageEditor = FCKeditorAPI.GetInstance('strMessage');
            if(fckMessageEditor.IsDirty()) {
                if(!confirm("Your message has not been saved!\nAny changes since your last save will be discarded.\nAre you sure you want to continue to the selected folder?")) {
                    return;
                }
            }
        }
        
        showLoading();
        var mailViewFolderHandler = function(t) {
            hideLoading();
            $('rtmailmsg').innerHTML = t.responseText;
            mailFolderClass(strFolder);
        }
        
        var mailViewFolderError = function(t) {
            hideLoading();
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }

        var postData  = 'task=list';
        
        if(boolSearch && $('strSearchMail')) {
            postData += '&strSearchMail=' + encodeURIComponent($('strSearchMail').value);
        } else {
            if($('strSearchMail')) {
                $('strSearchMail').value = '';
            }
        }

            postData += '&folder=' + encodeURIComponent(strFolder);

        if(intPage) {
            postData += '&page=' + encodeURIComponent(intPage);
        }

        
        
        new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:mailViewFolderHandler, onFailure:mailViewFolderError});
        mailShowNotice();
    }
}

function mailViewMessage(intMessageID) {
    if(intMessageID && $('rtmailmsg') && $('rtmailmenu')) {
        var handlerFunc = function(t) {
            $('rtmailmsg').innerHTML = t.responseText;
            mailUpdateFolderCounts();
        }
        
        var errFunc = function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
        
        
        var postData  = 'task=message';
            postData += '&intMessageID=' + encodeURIComponent(intMessageID);
        
        new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:handlerFunc, onFailure:errFunc});
        mailShowNotice();
    }
}

function mailWrite(intToUserID, intOriginalMsgID, enumType) {
    var handlerFunc = function(t) {
        $('rtmailmsg').innerHTML = t.responseText;
        mailFolderClass('write');
        if($('setAutoSaveDrafts')) {
            var autoSaveDrafts = new PeriodicalExecuter(mailAutoSaveDraft, 10);
        } else {
            if(autoSaveDrafts) {
                autoSaveDrafts = false;
            }
        }
    }
    
    var errFunc = function(t) {
        alert('Error ' + t.status + ' -- ' + t.statusText);
    }
        
    
    var postData  = 'task=write';
    if(intToUserID) {
        postData += '&intToUserID=' + encodeURIComponent(intToUserID);
    }
    if(intOriginalMsgID) {
        postData += '&intOriginalMsgID=' + encodeURIComponent(intOriginalMsgID);
    }
    if(enumType) {
        // reply || forward || draft
        postData += '&type=' + encodeURIComponent(enumType);
    }
    
    
    new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:handlerFunc, onFailure:errFunc});
    mailShowNotice();
}

function mailStarMessage(intMessageID, boolClearUnStarred) {
    if(intMessageID) {
        var mailStarMessageHandler = function(t) {
            var response = t.responseText;
            if($('imgStarMsg' + intMessageID)) {
                if(response == 'fail') {
                    alert("You are not allowed to star that message.");
                    return;
                }
                if(response == 1) {
                    $('imgStarMsg' + intMessageID).src = 'img/buttons/star_on.png';
                    if($('msgRow' + intMessageID)) {
                        $('msgRow' + intMessageID).addClassName('starred');
                    }
                } else {
                    if(boolClearUnStarred) {
                        if($('msgRow' + intMessageID)) {
                            $('msgRow' + intMessageID).style.display = 'none';
                        }
                    } else {
                        $('imgStarMsg' + intMessageID).src = 'img/buttons/star_off.png';
                        if($('msgRow' + intMessageID)) {
                            $('msgRow' + intMessageID).removeClassName('starred');
                        }
                    }
                }
            }
            mailUpdateFolderCounts('starred');
        }
        
        var mailStarMessageError = function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
            
        
        var postData  = 'task=star';
            postData += '&intMessageID=' + encodeURIComponent(intMessageID);
        
        new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:mailStarMessageHandler, onFailure:mailStarMessageError});
    }
}

function mailMsgStatus(intMessageID, strStatus) {
    if(intMessageID && strStatus) {
        switch(strStatus) {
            case 'delete':
                var strConfirmMessage = 'Are you sure you want to delete this message?';
                var strSuccessMessage = 'This message has been deleted.';
                var strFailureMessage = 'Sorry, there was an error while deleting this message.\nPlease try again later.';
                break;
            
            case 'flag':
                var strConfirmMessage = 'Are you sure you want to flag this message for moderator review?';
                var strSuccessMessage = 'This message has been flagged.';
                var strFailureMessage = 'Sorry, there was an error while flagging this message.\nPlease try again later.';
                break;
                
            case 'undelete':
                var strConfirmMessage = 'Are you sure you want to undelete this message?';
                var strSuccessMessage = 'This message has been restored.';
                var strFailureMessage = 'Sorry, there was an error while restoring this message.\nPlease try again later.';
                break;
                
                
            case 'read':
                
                break;
                
            case 'unread':
                
                break;
                
            default:
                // Error
                return false;
        }
        // Confirm message status change
        
        if(strConfirmMessage && !confirm(strConfirmMessage)) {
            return false;
        }
        
        // showLoading();
            
        var mailMsgStatusHandler = function(t) {
            var response = t.responseText;
            if(arrResponse = response.evalJSON(true)) {
                if(arrResponse.pass && arrResponse.pass == 'true') {
                    //alert(strSuccessMessage);
                    mailUpdateFolderCounts();
                    if(arrResponse.folder) {
                        mailViewFolder(arrResponse.folder, 1);
                    }
                    if(strStatus == 'read') {
                        if(arrResponse.status == 'read') {
                            if($('msgRow' + intMessageID)) {
                                $('msgRow' + intMessageID).removeClassName('unread');
                                if($('msgRowStatus' + intMessageID)) {
                                    $('msgRowStatus' + intMessageID).innerHTML = 'Read';
                                }
                            }
                            if($('imgIcon' + intMessageID)) {
                                $('imgIcon' + intMessageID).src = '/img/icons/mail_read_16.png';
                            }
                        } else if(arrResponse.status == 'unread') {
                            if($('msgRow' + intMessageID)) {
                                $('msgRow' + intMessageID).addClassName('unread');
                                if($('msgRowStatus' + intMessageID)) {
                                    $('msgRowStatus' + intMessageID).innerHTML = 'Unread';
                                }
                            }
                            if($('imgIcon' + intMessageID)) {
                                $('imgIcon' + intMessageID).src = '/img/icons/mail_unread_16.png';
                            }
                        }
                    }
                    if(arrResponse.notice) {
                        mailShowNotice(arrResponse.notice);
                    }
                    mailUpdateFolderCounts();
                } else {
                    alert(strFailureMessage);
                }
            }
        }
        
        var mailMsgStatusError = function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
            
        
        var postData  = 'task=changestatus';
            postData += '&intMessageID=' + encodeURIComponent(intMessageID);
            postData += '&strNewStatus=' + encodeURIComponent(strStatus);
        
        new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:mailMsgStatusHandler, onFailure:mailMsgStatusError});
        
    }
}

function mailShowNotice(strNotice) {
    if($('mailNotice')) {
        if(strNotice && strNotice.length > 0) {
           $('mailNotice').style.display = 'block'; 
           $('mailNotice').innerHTML = strNotice;
        } else {
           $('mailNotice').style.display = 'none';
        }
    }
}

function mailShowSearch() {
    if($('mailSearchDiv')) {
        $('mailSearchDiv').style.display = 'block';
        if($('search')) {
            $('search').focus();
        }
    }
}

function mailDoMemberSearch(strSearchPhrase, intPage) {
    if($('mailSearchDiv')) {
        $('mailSearchDiv').style.display = 'block';
        
        if($('search')) {
            var mailDoMemberSearchHandler = function(t) {
                var response = t.responseText;
                if($('mailSearchDivResults')) {
                    $('mailSearchDivResults').innerHTML = response;
                }
            }
            
            var mailDoMemberSearchError = function(t) {
                alert('Error ' + t.status + ' -- ' + t.statusText);
            }
                
            
            var postData  = 'task=search';
                postData += '&type=member';
            if(strSearchPhrase) {
                postData += '&search=' + encodeURIComponent(strSearchPhrase);
                $('mailSearchDivResults').innerHTML = "Please wait while we search for &quot;" + strSearchPhrase + "&quot;";
            }
            
            
            if(intPage) {
                postData += '&page=' + encodeURIComponent(intPage);
            }
            
            new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:mailDoMemberSearchHandler, onFailure:mailDoMemberSearchError});
        }
    }
}

function mailSelectRecipient(intMemberID, strDisplay) {
    if(intMemberID && intMemberID.length > 0 && strDisplay && strDisplay.length > 0) {
        if($('intToUserID') && $('strToUserDisplay')) {
            $('intToUserID').value = intMemberID;
            $('strToUserDisplay').innerHTML = strDisplay;
            if($('mailSearchDiv')) {
                $('mailSearchDiv').style.display = 'none';
            }
            if($('selectRecipientLink')) {
                $('selectRecipientLink').innerHTML = "[Select a different recipient]";
            }
            return;
        }
    }
    alert("Unable to select member. Please try again.");
    return true;
}

function mailAutoSaveDraft() {
    if($('formWriteMessage') && FCKeditorAPI.GetInstance('strMessage')) {
        var fckMessageEditor = FCKeditorAPI.GetInstance('strMessage');
        if(fckMessageEditor.IsDirty()) {
            mailSendMessage(true);
            fckMessageEditor.ResetIsDirty();
        }
    }
}

function mailSendMessage(boolDraft) {
    if($('formWriteMessage')) {
        var mailSendMailHandler = function(t) {
            hideLoading();
            var response = t.responseText;
            mailUpdateFolderCounts();
            if(arrResponse = response.evalJSON(true)) {
                if(arrResponse.error) {
                    alert("Error: " + response);
                }
                if(arrResponse.intMessageID) {
                    if(boolDraft) {
                        $('intMessageID').value = arrResponse.intMessageID;
                    } else {
                        mailViewMessage(arrResponse.intMessageID);
                    }
                }
                if(arrResponse.notice) {
                    mailShowNotice(arrResponse.notice);
                }
            } else {
                alert("There was an error sending your message.");
            }
        }
        
        var mailSendMailError = function(t) {
            hideLoading();
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
            
        
        var postData  = 'task=send';
            postData += '&type=message';
        
        if($('cbAnnouncement') && $('cbAnnouncement').checked) {
            postData += '&intToUserID=0';
            postData += '&announcement=true';
        } else if($('intToUserID') && $('intToUserID').value) {
            postData += '&intToUserID=' + encodeURIComponent($('intToUserID').value);
        } else {
            if(!boolDraft) {
                alert("You must select a recipient before sending this message.");
                return;
            }
        }
        
        if($('intMessageID') && $('intMessageID').value) {
            postData += '&intMessageID=' + encodeURIComponent($('intMessageID').value);
        }
        if($('strSubject') && $('strSubject').value) {
            postData += '&strSubject=' + encodeURIComponent($('strSubject').value);
        }
        if(FCKeditorAPI.GetInstance('strMessage')) {
            var fckMessageEditor = FCKeditorAPI.GetInstance('strMessage');
            postData += '&strMessage=' + encodeURIComponent(fckMessageEditor.GetHTML());
        } else if($('strMessage') && $('strMessage').value) {
            postData += '&strMessage=' + encodeURIComponent($('strMessage').value);
        }
        if(boolDraft) {
            postData += '&draft=1';
        } else {
            showLoading();
            //$('rtmailmsg').innerHTML = $('divLoading').innerHTML;
        }
        new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:mailSendMailHandler, onFailure:mailSendMailError});
    }
}

function mailUpdateFolderCounts() {
    if($('intrtmailinbox') && $('intrtmailstarred') && $('intrtmailsent') && $('intrtmaildrafts') && $('intrtmaildeleted')) {
        var mailUpdateFolderCountsHandler = function(t) {
            var response = t.responseText;
            if(arrResponse = response.evalJSON(true)) {
                if($('mailInboxPage') && arrResponse.inbox > $('intrtmailinbox').innerHTML) {
                    mailViewFolder('inbox', $('mailInboxPage').innerHTML);
                    mailShowNotice("You have a new message!")
                }
                if($('mailStarredTotal')) {
                    $('mailStarredTotal').innerHTML = arrResponse.starred;
                }
                $('intrtmailunread').innerHTML = arrResponse.unread;
                $('intrtmailinbox').innerHTML = arrResponse.inbox;
                $('intrtmailstarred').innerHTML = arrResponse.starred;
                $('intrtmailsent').innerHTML = arrResponse.sent;
                $('intrtmaildrafts').innerHTML = arrResponse.drafts;
                $('intrtmaildeleted').innerHTML = arrResponse.deleted;
                if($('intrtmailflagged')) {
                    $('intrtmailflagged').innerHTML = arrResponse.flagged;
                }
            }
        }
        
        var mailUpdateFolderCountsError = function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
        
        var postData  = 'task=update';
        
        new Ajax.Request(ajaxMail, {method:'post', postBody:postData, onSuccess:mailUpdateFolderCountsHandler, onFailure:mailUpdateFolderCountsError});
    }
}