/* 
	Description:	Private message class
*/
var privateMessages = {

	checkPM: function() {
		if($('pmEnable').checked == false && $('notification').checked == true){
			$('pmEnable').checked = true;
		}
	},

	checkAll: function(formName) {
		var formChilds = $(formName).getElements('checkbox');
		formChilds.each(function(checkbox){ 
		  checkbox.checked = true;
		});
	},
	
	removePrivateMessages: function(){
		translateButtonValue('loading', 'removing');
				
        var request = new Request (
            {
                url             : 'index.php?a_page=ajax&section=pm&action=removePrivateMessages', 
                data            : $('privateMessages'),
                onComplete      : function(text) {
                    var tmpArray = eval('(' + text + ')');
                    tmpArray.each( function(item) {  
                        privateMessages.remove(item);
                    });
    				
    				privateMessages.fixOddEven(tmpArray);
    				translateButtonValue('remove', 'removing');
                }
            }
        ).send();
	},
	
	fixOddEven: function(current){
		var otherItems = $('privateMessages').getElements('tr');
		var classje    = 'even';
		
		otherItems.each(function(row) {
		    classje = (classje == 'even') ? 'odd' : 'even';
		    $(row).removeClass('odd');
		    $(row).removeClass('even');
		    $(row).addClass(classje);
		});
	},
	
	remove: function(item) {
		var mySlide = new Fx.Slide($(item), { onComplete : function(){ } });
		mySlide.slideOut();
		$(item).dispose();
	},
	
	markAsRead: function(){
        var request = new Request (
            {
                url             : 'index.php?a_page=ajax&section=pm&action=markAsRead', 
                data            : $('privateMessages'),
                onComplete      : function(text) {
                    var tmpArray = eval('(' + text + ')');
    				
    				for(var i = 0; i < tmpArray.length; i++){
    					var tmpId = $('r_' + tmpArray[i]);
    					tmpId.removeClass(tmpId.className);
    					tmpId.addClass('subB');
    				}
                }
            }
        ).send();
	},
		
	findUser : function(contacts){
	   var input = $('findUserName').value;
	   
        var request = new Request (
            {
                url             : 'index.php?a_page=ajax&section=pm&action=searchContacts&word=' + input,
                onComplete      : function(text) {
                    $('mergeResults').innerHTML = '';
    				if(text != false){
    				    
    				    if($chk($('addContact'))) {
    				        $('addContact').setStyle('display','block');
    				    }
    					var results = eval('(' + text + ')');
    					
    					$('findUserId').setAttribute('value', results[0]['id']);
    					
    					if(results.length > 0){
    						for(var i = 0; i < results.length; i++){
    						    var newHref = new Element('a', {
    						      'href'    : 'javascript:void(0)',
    						      'onclick' : "privateMessages.fillInUserName(" + results[i]['id'] + ",'" + results[i]['username'] + "');"
    						    });
    
    							newHref.innerHTML = results[i]['short'];
    							$('mergeResults').appendChild(newHref);
    						}
    						
    						
    						if($chk($('addContact'))) {
        						$('addContact').onclick = function() {
        						    if($('findUserId').value == ''){
        						      privateMessages.addContact();
        						    }
        						    else {
        						      privateMessages.addContact(results[0]['id']);  
        						    }
        						}
    						}
    						
    						$('mergeResults').setStyle('display', 'block');
    						$('mergeResults').setStyle('visibility', 'visible');				
    						
    						$('mergeResults').onclick = privateMessages.closeResults;
    			
    						$('mergeResults').onmouseleave = function(){
    							privateMessages.closeResults();
    							$('mergeResults').removeEvent('mouseleave');
    						}
                            
    						if($chk($('inputText'))) {
        						$('inputText').onfocus = function(){
        							privateMessages.closeResults();
        							alert('hoi')
        							$('inputText').removeEvent('mouseleave');
        						}
    						}
    					}
    				}
    				else {
    					privateMessages.closeResults();
    				}
                }
            }
        ).send();
	},
	
    fillInUserName : function (id, title){        
        if($chk($('selectedReceiver'))) {
            $('findUsers').setStyle('display','none');
            $('selectedReceiver').setStyle('display','block'); 
            $('selectedReceiver').innerHTML = title + " <img src='images/icons/small_cross.png' onclick='privateMessages.crossYourMind()' alt='' />";
        }
	   
        $('findUserName').value = title;
	    $('findUserId').setAttribute('value', id);
	    privateMessages.closeResults();
    },
    
    crossYourMind : function() {
        if($chk($('selectedReceiver'))) {  
            $('findUsers').setStyle('display','block');     
            $('selectedReceiver').setStyle('display','none');         
            $('selectedReceiver').empty();
        }
        
        $('findUserName').setAttribute('value','');
	    $('findUserId').setAttribute('value', '');
    },
	
	closeResults : function (){
	   $('mergeResults').setStyle('display', 'none');
	   $('mergeResults').setStyle('visibility', 'hidden');
    },
	
	addContact : function(input){
	    if(input == null){
            var input = $('findUserId').value;
	    }

        var request = new Request (
            {
                url             : 'index.php?a_page=ajax&section=pm&action=addContact&id=' + input, 
                onComplete      : function(text) {
                    var user = eval('(' + text + ')');
    			    var contactCard = new Element('div', { 
    			        'class' : 'contactCard'
    			    });     
    			    
    			    var avatarSpan = new Element('span', { 'class' : 'avatar' } ).inject(contactCard);
    			     
                    var avatar = new Element('img', { 
    			        'src' : user['avatar'],
    			        'alt' : ''
    			    }).inject(avatarSpan);
    			    
    			    var span = new Element('span', { 
    			        'class' : 'user',
    			        'html'  : "<strong><a href='user/profile/" + user['id'] + "' />" + user['username'] + "</a></strong><br />" + user['title'] + "<br /><br /><a href='user/cp/pm/new/" + user['id'] + "'><img src='images/icons/pm.png' alt='' /></a> <img src='images/icons/delete.png' onclick='privateMessages.removeContact(" + user.id + ", this)' alt='' />"
    			    }).inject(contactCard);
    			    
    			    var opacity = new Fx.Tween(contactCard);
    			    opacity.set('opacity', 0);
    			    contactCard.inject($('contacts'));
                    opacity.start('opacity', 0, 1);

	                privateMessages.closeResults();

                    $('findUserName').value= '';
                    $('findUserId').value= '';	                
                }
            }
        ).send();
	},
	
	removeContact : function(id, item) {
        confirmBox(525, 'removeContact', 'removeContactQuestion', 1);        

        setTimeout(
            function() {
                $('lb_ja').addEvent('click', function() { 
                    var request = new Request (
                        {
                            url        : 'index.php?a_page=ajax&section=pm&action=removeContact&id=' + id, 
                            method     : 'get',
                            onComplete : function(text) {
                                confirmBox(525, 'removeContact', text, 0);
                                
                        	    item = item.parentNode.parentNode;
                        	    var myFx = new Fx.Tween(item, { 
                        	        duration: 500, 
                        	        onComplete: function() { 
                        	           item.dispose();
                        	        } 
                        	    }).start('opacity', 100, 0);
                            }
                        }
                     ).send();
                });
            }
        , 150);
	},
	
	savePrivateMessage : function(id) {
	    confirmBox(525, 'saveMessage', 'saveMessageQuestion', 1); 
	    
        setTimeout(
            function() {
                $('lb_ja').addEvent('click', function() { 
                    var request = new Request (
                        {
                            url        : 'index.php?a_page=ajax&section=pm&action=transferSaveMessage&id=' + id, 
                            method     : 'get',
                            onComplete : function(text) {
                                confirmBox(525, 'saveMessage', text, 0);
                            }
                        }
                     ).send();
                });
            }
        , 150);	    
	}
};

function cpPictures() {
    
    var currentPicture = 0;
    var actionAdd      = false;
    var actionEdit     = false;
    var actionDelete   = false;   
    
    var cpPictures     = {
        init: function() {
            
            var pictures = $('picturesOverview').getElements('div[class=pictureItem');
            pictures.each(
                function(elm) {
                    elm.addEvent('click', function() {
                        var id  = elm.getAttribute('id').split('_')[1];
                        
                        if(currentPicture == id) {
                            var color     = '#E2EAED';
                            currentPicture = 0;
                        }
                        else {
                            var color      = '#6bb9d8';
                            currentPicture = id; 
                            
                            if(actionEdit == true) {
                                cpPictures.edit();
                            }
                            else if(actionDelete == true) {
                                cpPictures.cancelForm();
                            }
                        }
                        
                        cpPictures.resetOthers(elm);
                        
                        elm.setStyle('border-color', color);
                    });
                }
            );
        },
        
        resetOthers : function(current) {
            var pictures = $('picturesOverview').getElements('div[class=pictureItem');
            pictures.each(
                function(elm) {
                    if(elm != current) {
                        elm.setStyle('border-color', '#E2EAED');
                    }
                }
            );
        },
        
        fillWithText : function(text) {
            $('actionContent').setStyle('display', 'block');
            $('actionContent').innerHTML = text;
        },
        
        add : function() {
            if(actionAdd == false) {
                var request = new Request (
                    {
                        url             : 'index.php?a_page=ajax&section=user&action=pictures&method=add',
                        onComplete      : function(text) {
                            cpPictures.fillWithText(text);
                            var makeHigher = new Fx.Tween('actionContent').start('height', 0, $('pictureContent').offsetHeight + 1); 
                            actionAdd = true;  
                        }
                    }
                ).send();
            }
            else {
                cpPictures.cancelForm();
            }
        },
        
        edit : function() {
            if(currentPicture > 0) {
                var request = new Request (
                    {
                        url             : 'index.php?a_page=ajax&section=user&action=pictures&method=edit&id=' + currentPicture,
                        onComplete      : function(text) {
                            cpPictures.fillWithText(text);
    
                            if(actionEdit == false) {
                                var tween = new Fx.Tween('actionContent').start('height', 0, $('pictureContent').offsetHeight + 2);
                                actionEdit = true;
                            }
                        }
                    }
                ).send();
            }
        },
        
        remove : function()  {
            if(currentPicture > 0) {
                if(actionDelete == false) {
                    var request = new Request (
                        {
                            url             : 'index.php?a_page=ajax&section=user&action=pictures&method=remove&id=' + currentPicture, 
                            method          : 'get',
                            onComplete      : function(text) {
                                cpPictures.fillWithText(text);
        
                                var tween    = new Fx.Tween('actionContent').start('height', 0, $('pictureContent').offsetHeight + 1); 
                                actionDelete = true;
                            }
                        }
                    ).send();
                }
                else {
                    cpPictures.cancelForm();
                }
            }
        },        
        
        cancelForm    : function() {
            var makeHigher = new Fx.Tween('actionContent', {
                onComplete : function() {
                    $('actionContent').empty();
                    actionAdd    = false;
                    actionEdit   = false;
                    actionDelete = false;
                    
                    $('actionContent').setStyle('display', 'none');
                }
            }).start('height', 0);
        },
        
        saveEditForm : function(id){
            if(actionEdit == true) {
                var request = new Request (
                    {
                        url             : 'index.php?a_page=ajax&section=user&action=pictures&method=editSubmit&id=' + id, 
                        data            : $('actionContent'),
                        method          : 'post',
                        onComplete      : function(text) {
                            if(text != null) {
                               $('picture_' + id).getElement('span[class=title]').innerHTML = text;
                               cpPictures.cancelForm();  
                            }
                        }
                    }
                ).send();
            }
        },
        
        saveDeleteForm : function (id) {
            if(actionDelete == true) {
                var request = new Request (
                    {
                        url             : 'index.php?a_page=ajax&section=user&action=pictures&method=removeSubmit&id=' + id, 
                        method          : 'get',
                        onComplete      : function(text) {
                            if(text == 1) {
                                var item    = $('picture_' + id);
                                var fadeOut = new Fx.Tween(item, {
                                    onComplete : function() {
                                        item.parentNode.removeChild(item);
                                        cpPictures.cancelForm();  
                                    }
                                }).start('opacity', 0);
                            }
                        }
                    }
                ).send();
            }
        }
    }
    
    return cpPictures;
}

function pictureSlider() {
    
    var current       = false;
    var currentPos    = 0;
    var activePos     = 0;
    var pictureSlider = {
        
        init : function() {
            var height = 135;
            
            if($chk($('thumbContainer'))) {
                var childs = $('thumbContainer').getElements('div[class=normalPicture]');
                var scroll = new Fx.Scroll('thumbContainer');
                
                childs.each(
                    function(item) {
                        if(current == false) {
                            pictureSlider.resetBG(childs[0]);
                            current = true;                      
                        }
                        
                        currentPos   = currentPos + height;
                        var thisPos  = currentPos;
                        var image    = $(item).getElement('img');
                        var explode  = $(image).getAttribute('src').split('/');
                        
                        item.addEvent('click', function() { 
                            activePos = thisPos - height;
                            scroll.start(0, activePos);
                            $('current').src     = './images/pictures/' + explode[explode.length-1]
                            pictureSlider.resetBG(this);
                            
                            var request = new Request (
                            {
                                url             : 'index.php?a_page=ajax&section=profile&action=getCaption&id=' + explode[explode.length-1],
                                onComplete      : function(text) {
                                    $('caption').innerHTML = text;
                                }
                            }).send();
                        });
                    }
                );
            
                document.addEvent('keydown', function(event) {
                    
                    switch(event.key) {
                        case 'up' :
                            activePos = (activePos == 0) ? 0 : activePos - height;
                            scroll.start(0, activePos);
                        break;
                        
                        case 'down' :
                            var limit  = (childs.length * height) - height;
                            activePos  = (limit == activePos) ? limit  : activePos + height;
                            scroll.start(0, activePos);
                        break;
                    }
    		    });              
                
                
                $('linkPrevious').addEvent('click', function() { 
                    var limit  = (childs.length * height) - height;
                    activePos  = (limit == activePos) ? limit  : activePos + height;
                    scroll.start(0, activePos);                
                });
                
                $('linkNext').addEvent('click', function() {
                    var limit  = (childs.length * height) - height;
                    activePos  = (limit == activePos) ? limit  : activePos + height;
                    scroll.start(0, activePos);
                });
            }
        },
        
        resetBG : function(active) {
            var childs = $('thumbContainer').getElements('div[class=normalPicture]'); 
            childs.each(function(item) {
                if(item == active) {
                    item.setStyle('background', '#F9E9CE');
                    item.setStyle('border', '1px solid #EFDEC1');
                }
                else {
                    item.setStyle('background', '#FFF');
                    item.setStyle('border-color','#FFF');
                }
            });
        }
    }
    
    pictureSlider.init();
}

var slide;

function pendingPane(pane, element, page) {
    if(element == null || $(element).className != 'active') {
//        var myArray = {"profile" : 0, "pictures" : 715, "replies" : 1430, "history" : 2145 };
        var myArray = {"profile" : 0, "pictures" : 715, "history" : 1430 };
        var page    = (page != undefined) ? page : 1;
        
        var request = new Request (
            {
                url             : 'index.php?a_page=ajax&section=profile&action=profile&method=' + pane + '&page=' + page + '&id=' + $('userid').value, 
                method          : 'get',
                evalScripts     : true,
                onComplete      : function(text) {
                    $(pane).innerHTML = text;
                   
                    var scroll = new Fx.Scroll('profileContentx', {
                        onComplete : function() {
                            if(pane == 'pictures')
                                var t = setTimeout(pictureSlider, 20);
                        }
                    }).start(myArray[pane], 0);
                    
                    if(element != null) {
                    	var choices = $('tabbedMenu').getElements('li');
                    	choices.each( function(item) {
                    	    if(item == element) {
                    	        item.addClass('active');
                    	    }
                    	    else {
                    	        item.removeClass('active');
                    	    }
                    	});
                    }
                }
            }
        ).send();
    }
}

function initProfile(page) {
//    var myArray = ["profile", "pictures", "replies", "history"];
    var myArray = ["profile", "pictures", "history"];
    myArray.each(
        function(pane) { 
            fillPane(pane, 1);
        }
    );
    
    pendingPane(page, $(page + 'Tab'));
    
}

function fillPane(pane, page) {
    
    var userid  = $('userid').value;
    var request = new Request (
        {
            url        : 'index.php?a_page=ajax&section=profile&action=profile&method=' + pane + '&page=' + page + '&id=' + userid,
            method     : 'get',
            onComplete : function(text) {
                $(pane).innerHTML =  text;
            }
        }
    ).send();
}

function pagePane(pane, page) {
    var page = (page != undefined) ? page : 1;
    fillPane(pane, page);
}

function removeAvatar(){   
    confirmBox(525, 'removeAvatar', 'removeAvatarQuestion', 1); 
    
    setTimeout(
        function() {
            $('lb_ja').addEvent('click', function() { 
                var submit = new Element('input',{ 'type' : 'hidden', 'name' : 'remove', 'value' : 1 } );
		        submit.inject($('removeAvatar'));
			    $('removeAvatar').submit();
            });
        }
    , 150);  
} 

function setExteralAvatar() {
    
    var request = new Request (
        {
            url        : 'index.php?a_page=ajax&section=user&action=setExteralAvatar',
            method     : 'post',
            data       : $('externalAvatar'),
            onComplete : function(text) {
    		    if(text == false) {
                    gotoURL('user/cp/avatar');
    		    }
    		    else {
    		        $('externalError').innerHTML = text;
    		        $('externalError').setStyle('display','block');
    		    }
            }
        }
    ).send();
}

function addContact(id) {
    confirmBox(525, 'addContact', 'addContactQuestion', 1);
    
    setTimeout(
        function() {
            $('lb_ja').addEvent('click', function() { 
                var request = new Request (
                    {
                        url        : 'index.php?a_page=ajax&section=profile&action=addContact&id=' + id, 
                        method     : 'get',
                        onComplete : function(text) {
                            confirmBox(525, 'addContact', text, 0);
                            
                        }
                    }
                 ).send();
            });
        }
    , 150); 
}
