﻿    var menuFired = false;

	function OnMenuItemClick(s, e){
	    
	    menuFired = true;
	    
	    setTimeout("menuFired = false;",1000);
	    
	    var item = e.get_item();
	    var baseURL = clientScriptPathInfo.ApplicationPath + '/';
	    var attributes = item.get_attributes();
        var itemArg = attributes.getAttribute('arg');
	    
	    switch (attributes.getAttribute('command')){
    
	        case 'friend':
	            return true;
	            break;	        
	        case 'ignore':
	            return true;
	            break;
	        case 'unignore':
                return true;
	            break;
	        case 'helpful' :
                return true;
                break;
	        case 'reward' :
                return true;
	            break;
	        case 'mark' :
                return true;
	            break;	            	            
	        case 'pm':
	            var gotoURL = baseURL + 'pmsend.aspx?toMemId=' + itemArg ;
	            if (currentMemberInfo.popupPosting) {
	                popRadWin(gotoURL + '&pop=true');
	            } else {
	                self.location.href = gotoURL;
	            }
	            
	            break;	 
	        case 'reply':
	            var gotoURL = baseURL + String.format('post.aspx?mq={0}&messageID=', multiQuoteIDs.join()) + itemArg ;
	            if (currentMemberInfo.popupPosting) {
	                popRadWin(gotoURL + '&pop=true');
	            } else {
	                self.location.href = gotoURL;
	            }
	            
	            break;	
	        case 'quote':
	            var gotoURL = baseURL + String.format('post.aspx?quote=true&mq={0}&messageID=', multiQuoteIDs.join()) + itemArg ;
	            if (currentMemberInfo.popupPosting) {
	                popRadWin(gotoURL + '&pop=true');
	            } else {
	                self.location.href = gotoURL;
	            }
	            
	            break;	
	        case 'edit':
	            var gotoURL = baseURL + 'post.aspx?edit=true&messageID=' + itemArg ;
	            if (currentMemberInfo.popupPosting) {
	                popRadWin(gotoURL + '&pop=true');
	            } else {
	                self.location.href = gotoURL;
	            }
	            
	            break;		            
	        case 'manage':
	            var gotoURL = baseURL + 'management.aspx?messageID=' + itemArg ;
	            popRadWin(gotoURL, 550, 450);

	            break;

	        case 'ban':
	            var gotoURL = baseURL + 'tempban.aspx?messageID=' + itemArg;
	            popRadWin(gotoURL, 600, 450);

	            break;	            
	            
	        case 'fwd':
	        	var gotoURL = baseURL + 'forward.aspx?messageID=' + itemArg ;
	            popRadWin(gotoURL, 600,275);  
	            break; 
	            
	        case 'multiquote':
	            AddMultiQuote(itemArg);  
	            break;

	        case 'ip':
	            showIP(itemArg);
	            break;   
	            	            
	        case 'msglink' : 
	            showMsgNum(itemArg);
	            break;           	                      	            	                       	    
	    }
	    
	    e.set_cancel(true);
	    return false;
	}


	function ShowMenu(e, id, isSelf, login, isFriend, isIgnored, viewerIsGuest, memberPMable, isBanAllowed, isDeleted, msgID) {
	    if (menuFired || typeof menu == 'undefined' || !menu) return;
	    
        hideAllMenus(190);
        
        with (menu) {
            var frienditem = findItemByValue("friend");
            var pmitem = findItemByValue("pm");
            var blockitem = findItemByValue("block");
            var banitem = findItemByValue("ban");	
        }

        var menuImgURL = clientScriptPathInfo.ApplicationPath + '/' + pageThemeImageURL;
        
        var oneItemVisible = false;
        
        with (frienditem) {
            set_imageUrl(menuImgURL + 'menuAdd.gif');
            set_text(String.format(FriendMemText, ''));
            
            menu.trackChanges();
            get_attributes().setAttribute('command', 'friend'); get_attributes().setAttribute('arg', id);
            if (isFriend || isIgnored || isSelf || viewerIsGuest) hide(); else {show(); oneItemVisible = true;}
            menu.commitChanges();
        }
        
        with (blockitem){
            var blockItemText = isIgnored ? UnBlockMemText : BlockMemText;
            var blockItemCommand = isIgnored ? 'unignore' : 'ignore';
            set_imageUrl(menuImgURL + (isIgnored ? 'menuUnblock.gif' : 'menuBlock.gif'));
            set_text(String.format(blockItemText, ''));
            
            menu.trackChanges();
            get_attributes().setAttribute('command', blockItemCommand); get_attributes().setAttribute('arg', id);
            if (isSelf || viewerIsGuest) hide(); else {show(); oneItemVisible = true;}
            menu.commitChanges();             
        }

        with (pmitem){
             set_imageUrl(menuImgURL + 'menuPM.gif');
             
             set_text(String.format(PmMemText, login)); 
             set_text(String.format(PmMemText, '')); 
             get_attributes().setAttribute('command', 'pm'); get_attributes().setAttribute('arg', id);
             
             if (isSelf || viewerIsGuest || !memberPMable) hide(); else {show(); oneItemVisible = true;}
         }

         if (typeof isBanAllowed != "undefined") {

             with (banitem) {
                 set_text(TempBanText); get_attributes().setAttribute('command', 'ban'); get_attributes().setAttribute('arg', msgID);
                 set_imageUrl(menuImgURL + 'menuBan.gif');
                 if (isBanAllowed && !isDeleted && !isSelf) { show(); } else { hide(); }
             }	
         
         }
        
        if (oneItemVisible) menuShow(e, menu);
        
    }	
	
    function showOptionMenu(e, id, canReply, isMod, isLocked, isSelf, canDelete, canDeleteThread, isDeleted, canStillEditDelete, isPostWaitingModeration, viewerIsGuest, theTarget){
	    if (menuFired || typeof menu == 'undefined' || !menu) return;
	    
	    hideAllMenus(110);
	    SetMessageID(id);

	    var oneItemVisible = false;

        with (menu) {
            var quoteitem = findItemByValue("quote");
            var multiquoteitem = findItemByValue("multiquote");
        }
        
        var menuImgURL = clientScriptPathInfo.ApplicationPath + '/' + pageThemeImageURL;

        if (canReply && (!isLocked || isMod) && !isDeleted && !isPostWaitingModeration) {
            $(theTarget).click(function() { replySimulatedClick(id, canReply); return false; });
        }    
        else {
            $(theTarget).css('cursor', 'not-allowed').click(function() { return false; });
        }
        
        with (quoteitem){
            set_text(QuoteMessageText); get_attributes().setAttribute('command', 'quote'); get_attributes().setAttribute('arg', id);
            set_imageUrl(menuImgURL + 'menuQuote.gif');
            if (canReply && (!isLocked || isMod) && !isDeleted && !isPostWaitingModeration) { show(); oneItemVisible = true; } else { hide(); }           
        } 
        
        with (multiquoteitem) {
	        set_text(MultiquoteText); get_attributes().setAttribute('command', 'multiquote'); get_attributes().setAttribute('arg', id);
	        set_imageUrl(menuImgURL + 'menuMultiQuote.gif');
	        if (!isDeleted && !viewerIsGuest && canReply && !isPostWaitingModeration) { show(); oneItemVisible = true; } else { hide(); }         
	    }

	    if (oneItemVisible) menuShow(e, menu, theTarget);
	    
	}	

	function showMoreOptionMenu(e, id, isMod, isThreadStarter, isSelf, isDeleted, isCashReward, isAnswered, CanFlagPost, 
	        isThread, isHelpfulPost, isRewardedPost, CanRatePost, canReply, viewerIsGuest, canDelete, canDeleteThread,
	        canStillEditDelete, msgnum, ip, isPostWaitingModeration, theTarget) {
	    if (menuFired || typeof menu == 'undefined' || !menu) return;
	    
	    hideAllMenus(180);
	    
	    SetMessageID(id);
	    
	    with(menu){
            
            var edititem = findItemByValue("edit");
            var manageitem = findItemByValue("manage");	
            var fwditem = findItemByValue("fwd");
	        
	        var ipitem = findItemByValue("ip");	        
	        var msglinkitem = findItemByValue("msglnk");	
	    }

	    var menuImgURL = clientScriptPathInfo.ApplicationPath + '/' + pageThemeImageURL;

	    $(theTarget).click(function() { return false; })
	    
        with (edititem){
            set_text(EditMessageText); get_attributes().setAttribute('command', 'edit'); get_attributes().setAttribute('arg', id);
            set_imageUrl(menuImgURL + 'menuEdit.gif');
	        if (isMod || (isSelf && canStillEditDelete) && !viewerIsGuest){show();} else {hide();} 
        }
        
        with (manageitem){
            set_text(ManageMessageText); get_attributes().setAttribute('command', 'manage'); get_attributes().setAttribute('arg', id);
            set_imageUrl(menuImgURL + 'menuManage.gif');
            if (isMod || (isSelf && canStillEditDelete && (canDelete && id!=currentThreadID || canDeleteThread && id==currentThreadID)) && !viewerIsGuest){show();} else {hide();} 
        }
        
        with (fwditem){
            set_text(ForwardMessageText); get_attributes().setAttribute('command', 'fwd'); get_attributes().setAttribute('arg', id);
            set_imageUrl(menuImgURL + 'menuForward.gif');
            if (isDeleted || viewerIsGuest || isPostWaitingModeration) hide(); else show();
        }	    

	    with (ipitem) {
	        set_text('IP: ' + ip); get_attributes().setAttribute('command', 'ip'); get_attributes().setAttribute('arg', ip);
	        if (isMod) {show();} else {hide();} 
	    }
	    
	    with (msglinkitem) {
	        set_text(menuMsgLinkText + ': #' + msgnum); get_attributes().setAttribute('command', 'msglink'); get_attributes().setAttribute('arg', id);
	        if (!isPostWaitingModeration && !isDeleted) { show(); } else { hide(); }         
	    }

	    menuShow(e, menu, theTarget);
	    
	}

	function showRatingMenuItem(e, id) {
	
	    if (menuFired || typeof menu == 'undefined' || !menu) return;
	    
	    hideAllMenus(180);
	    SetMessageID(id);
	    
	    menu.findItemByValue("rate").show();

        menuShow(e, menu);
	}

	function markHelpful(id) {

	    if (menuFired || typeof menu == 'undefined' || !menu) return;
	    
	    var helpfulitem = menu.findItemByValue("helpful");

	    SetMessageID(id);

	    with (helpfulitem) {
	        menu.trackChanges();
	        get_attributes().setAttribute('command', 'helpful'); get_attributes().setAttribute('arg', id);
	        menu.commitChanges();

	        click();
	    }
	}

	function markReward(id) {

	    if (menuFired || typeof menu == 'undefined' || !menu) return;
	    
	    var rewarditem = menu.findItemByValue("reward");

	    SetMessageID(id);

	    with (rewarditem) {
	        menu.trackChanges();
	        get_attributes().setAttribute('command', 'reward'); get_attributes().setAttribute('arg', id);
	        menu.commitChanges();

	        click();
	    }
	}	

	function hideAllMenus(widthForImg){
	
	    if (typeof menu == 'undefined' || !menu) return;
        
        setNono(menu, widthForImg);
        
        for (var i = 0; i < menu.get_items().get_count(); i++)
        {
           var theItem = menu.get_items().getItem(i);
           if (theItem.get_value() != 'nono') theItem.hide();
        }

        menu.hide(); 

	}