$(document).ready(function() {
    if(document.getElementById('rssFavorites')) {
		var rssFavorites = new editFavs();
		rssFavorites.table = document.getElementById('rssFavorites');
		rssFavorites.addButton = document.getElementById('rssAddButton');
		rssFavorites.saveButton = document.getElementById('rssSaveButton');
		rssFavorites.method = "/md_Gadgets.asmx/LoadRSSFeeds";
		rssFavorites.returnShort = document.getElementById('gadgetRSS');
		rssFavorites.returnLong = document.getElementById('favoritePodcastsView');
		rssFavorites.init();
	}
    if(document.getElementById('followExpertEdit')) {
        var expertEdit = new editExperts();
        expertEdit.addButton = $('.expertLeft a');
        expertEdit.method = "/md_Gadgets.asmx/LoadFollowAnExpert";
        expertEdit.returnShort = document.getElementById('gadgetFollowAnExpert');
        expertEdit.returnLong = document.getElementById('followExpertView');
        expertEdit.init();
    }
    gadgets_load();
});

function gadgets_load() {
    if(document.getElementById('FriendRequests')) {
        var friendRequests = new editFriends();
       friendRequests.acceptFriendMethod = "/md_Gadgets.asmx/AcceptFriendRequest";
	    friendRequests.declineFriendMethod = "/md_Gadgets.asmx/DeclineFriendRequest";
	    friendRequests.acceptGroupMethod = "/md_Gadgets.asmx/AcceptGroupRequest";
	    friendRequests.declineGroupMethod = "/md_Gadgets.asmx/DeclineGroupRequest";
        friendRequests.acceptButton = $('#FriendRequests a.acceptFriend');
        friendRequests.declineButton = $('#FriendRequests a.declineFriend');
	    friendRequests.returnShort = document.getElementById('FriendRequests');
	    friendRequests.returnLong = document.getElementById('FriendRequestsModal');
	    friendRequests.init();
    }
    if(document.getElementById('FriendRequestsModal')) {
        var friendRequests = new editFriends();
        friendRequests.acceptFriendMethod = "/md_Gadgets.asmx/AcceptFriendRequest";
	    friendRequests.declineFriendMethod = "/md_Gadgets.asmx/DeclineFriendRequest";
	    friendRequests.acceptGroupMethod = "/md_Gadgets.asmx/AcceptGroupRequest";
	    friendRequests.declineGroupMethod = "/md_Gadgets.asmx/DeclineGroupRequest";
        friendRequests.acceptButton = $('#FriendRequestsModal a.acceptFriend');
        friendRequests.declineButton = $('#FriendRequestsModal a.declineFriend');
	    friendRequests.returnShort = document.getElementById('FriendRequests');
	    friendRequests.returnLong = document.getElementById('FriendRequestsModal');
	    friendRequests.init();
    }
    if(document.getElementById('gadgetFriendsComments')) {
        var submitComments = new submitComment();
        submitComments.method = "/md_Gadgets.asmx/AddFriendsComment";
        submitComments.addButton = document.getElementById('gadgetSubmit');
        submitComments.input = document.getElementById('gadgetComment');
	    submitComments.init();
    }
}

function submitComment() {
    var self = this;
	this.addButton = null;
	this.method = "";
	this.input = null;
	
	this.init = function() {
	    if(this.addButton) {
	        $(this.addButton).click(function() {
	            var rel = self.addButton.rel.split(',');
                var DTO = { 'UserID' : rel[0], 'FriendID' : rel[1], 'Comment' : self.input.value };
                
                $.ajax(
                {
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: self.method,
                    data: JSON.stringify(DTO),
                    dataType: "json",
                    success: function(result, textStatus)
                    {
                        document.getElementById('gadgetResponse').innerHTML = result;
                        self.input.value = "";                        
                    },
                    error: function(request, status, err)
                    {
                        if (request.readyState == 4) {
                            switch (request.status) {
                            // Page-not-found error
                            case 404:
                                alert('Error: Not Found. The requested URL could not be found.');
                                break;
                            // Internal server error
                            case 500:
                                var response = request.responseText;
                                
                                if (response && response.Message) {
                                    alert(response.Message + "\r\n\r\nStack Trace: " + response.StackTrace + "\r\n\r\nException Type: " + response.ExceptionType);
                                }
                                else {
                                    alert(request.responseText);
                                }
                                break;
                            default:
                                break;
                            }
                        }
                    }
                });
           });
        }
    }
}

function editFavs() {
	var self = this;
	this.table = null;
	this.addButton = null;
	this.saveButton = null;
	this.method = "loadfollow";
	this.returnShort = null;
	this.returnLong = null;
	this.newRowHTML = '<tr><td class="inputShort"><input type="text" class="favTitle" value="" /></td><td class="inputLong"><input type="text" class="favUrl" value="http://" /></td><td class="inputButton"><a class="flatButton remove" title="" href="#"><span>Remove</span></a></td></tr>';
	this.init = function() {
		this.setRemoveButtons();
		
		if(this.addButton) {
			$(this.addButton).click(function(e) {
				$(self.table).append(self.newRowHTML);
				self.setRemoveButtons();
				e.preventDefault();
			});
		}
		
		if(this.saveButton) {
		var rel = self.addButton.rel;
			$(this.saveButton).click(function(e) {
				var inputTitles = $(self.table).find('input.favTitle');
				var favTitles = new Array();
				for(var x=0;x<inputTitles.length;x++) {
					favTitles[x] = inputTitles[x].value;
				}
				
				var inputUrls = $(self.table).find('input.favUrl');
				var favUrls = new Array();
				for(var x=0;x<inputUrls.length;x++) {
					favUrls[x] = inputUrls[x].value;
				}
				var DTO;
				if  (rel == null)
				    DTO = { 'titles' : favTitles, 'urls' : favUrls, 'groupId' : "" };
				else
				    DTO = { 'titles' : favTitles, 'urls' : favUrls, 'groupId' : rel };
			    $.ajax(
                {
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: self.method,
                    data: JSON.stringify(DTO),
                    dataType: "json",
                    success: function(result, textStatus)
                    {
//                        for(object in result) {
//                            alert(object + " : " + result[object]);
//                        }
                        $(self.returnShort).html(result.Short);
                        $(self.returnLong).html(result.Long);
                        modal_init(self.returnShort);
                        modal_close();
                    },
                    error: function(request, status, err) {
                        if (request.readyState == 4) {
                            switch (request.status) {
                            // Page-not-found error
                            case 404:
                                alert('Error: Not Found. The requested URL could not be found.');
                                break;
                            // Internal server error
                            case 500:
                                var response = request.responseText;
                                
                                if (response && response.Message) {
                                    alert(response.Message + "\r\n\r\nStack Trace: " + response.StackTrace + "\r\n\r\nException Type: " + response.ExceptionType);
                                }
                                else {
                                    alert(request.responseText);
                                }
                                break;
                            default:
                                break;
                            }
                        }
                    }
                });
				
				e.preventDefault();
			});
		}
	}
	this.setRemoveButtons = function() {
		if(this.table) {
			$(this.table).find('a.remove').click(function(e) {
				$(this).parents('tr').remove();
				e.preventDefault();
			});
		}
	}
}

function editExperts() {
	var self = this;
	this.method = "";
	this.addButton = null;
	this.returnShort = null;
	this.returnLong = null;
	this.init = function() {
	//	this.setRemoveButtons();
		
		if(this.addButton) {
			$(this.addButton).click(function(e) {
			    
				var rel = $(this).attr('rel');
				var DTO = { 'ExpertID' : rel };
               
				$.ajax(
                {
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: self.method,
                    data: JSON.stringify(DTO),
                    dataType: "json",
                    success: function(result, textStatus)
                    {
//                        for(object in result) {
//                           alert(object + " : " + result[object]);
//                        }
                        $(self.returnShort).html(result.Short);
                        $(self.returnLong).html(result.Long);
                        modal_init(); 
                        
                    },
                    error: function(request, status, err) {
                        if (request.readyState == 4) {
                            switch (request.status) {
                            // Page-not-found error
                            case 404:
                                alert('Error: Not Found. The requested URL could not be found.');
                                break;
                            // Internal server error
                            case 500:
                                var response = request.responseText;
                                
                                if (response && response.Message) {
                                    alert(response.Message + "\r\n\r\nStack Trace: " + response.StackTrace + "\r\n\r\nException Type: " + response.ExceptionType);
                                }
                                else {
                                    alert(request.responseText);
                                }
                                break;
                            default:
                                break;
                            }
                        }
                    }
                });
				
				var spanHTML = $(this).children('span')[0].innerHTML;
                
                if ($(this).attr('title') == 'Add') {
                    $(this).attr({title : "Remove"});
                }
                if ($(this).attr('title') == 'Remove') {
                    $(this).attr({title : "Add"});
                }
                
                if (spanHTML == 'Add') {
                    $(this).children('span')[0].innerHTML = 'Remove';
                }
                if (spanHTML == 'Remove') {
                    $(this).children('span')[0].innerHTML = 'Add';
                }
                
               
				
				//self.setRemoveButtons();
				e.preventDefault();
			});
		}
		
		if(this.saveButton) {
			$(this.saveButton).click(function(e) {
				var inputTitles = $(self.table).find('input.favTitle');
				var favTitles = new Array();
				for(var x=0;x<inputTitles.length;x++) {
					favTitles[x] = inputTitles[x].value;
				}
				
				var inputUrls = $(self.table).find('input.favUrl');
				var favUrls = new Array();
				for(var x=0;x<inputUrls.length;x++) {
					favUrls[x] = inputUrls[x].value;
				}
				
				var DTO = { 'rel' : rel };
				
			    $.ajax(
                {
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: self.method,
                    data: JSON.stringify(DTO),
                    dataType: "json",
                    success: function(result, textStatus)
                    {
//                        for(object in result) {
//                            alert(object + " : " + result[object]);
//                        }
                        $(self.returnShort).html(result.Short);
                        $(self.returnLong).html(result.Long);
                        modal_init(self.returnShort);
                        modal_close();
                    },
                    error: function(request, status, err) {
                        if (request.readyState == 4) {
                            switch (request.status) {
                            // Page-not-found error
                            case 404:
                                alert('Error: Not Found. The requested URL could not be found.');
                                break;
                            // Internal server error
                            case 500:
                                var response = request.responseText;
                                
                                if (response && response.Message) {
                                    alert(response.Message + "\r\n\r\nStack Trace: " + response.StackTrace + "\r\n\r\nException Type: " + response.ExceptionType);
                                }
                                else {
                                    alert(request.responseText);
                                }
                                break;
                            default:
                                break;
                            }
                        }
                    }
                });
				
				e.preventDefault();
			});
		}
	}
/*	this.setRemoveButtons = function() {
		if(this.table) {
			$(this.table).find('a.remove').click(function(e) {
				$(this).parents('tr').remove();
				e.preventDefault();
			});
		}
	} */
}

function editFriends() {
	var self = this;
	this.acceptMethod = "";
	this.declineMethod = "";
    this.acceptButton = null;
    this.declineButton = null;
	this.returnShort = null;
	this.returnLong = null;
	this.init = function() {
        if(this.acceptButton) {
            $(this.acceptButton).click(function(e) {
                var rel = this.rel.split(',');
                var DTO;
                var url;
                if (rel[0] > 0)
                {
                    DTO = { 'FriendID' : rel[0] };
                   url = self.acceptFriendMethod;
                }
                else
                {
                    DTO = { 'groupId' : rel[1] };
                   url = self.acceptGroupMethod; 
                }
                $.ajax(
                {
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: url,
                    data: JSON.stringify(DTO),
                    dataType: "json",
                    success: function(result, textStatus)
                    {
                        self.returnShort.innerHTML = result.Short;
                        self.returnLong.innerHTML = result.Long;
                        gadgets_load();
                    },
                    error: function(request, status, err) {
                        if (request.readyState == 4) {
                            switch (request.status) {
                            // Page-not-found error
                            case 404:
                                alert('Error: Not Found. The requested URL could not be found.');
                                break;
                            // Internal server error
                            case 500:
                                var response = request.responseText;
                                
                                if (response && response.Message) {
                                    alert(response.Message + "\r\n\r\nStack Trace: " + response.StackTrace + "\r\n\r\nException Type: " + response.ExceptionType);
                                }
                                else {
                                    alert(request.responseText);
                                }
                                break;
                            default:
                                break;
                            }
                        }
                    }
                });
                e.preventDefault();
			});
		}
		if(this.declineButton) {
            $(this.declineButton).click(function(e) {
                var rel = this.rel.split(',');
                var DTO;
                var url;
                if (rel[0] > 0)
                {
                    DTO = { 'FriendID' : rel[0] };
                   url = self.declineFriendMethod;
                }
                else
                {
                    DTO = { 'groupId' : rel[1] };
                   url = self.declineGroupMethod; 
                }
                $.ajax(
                {
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: url,
                    data: JSON.stringify(DTO),
                    dataType: "json",
                    success: function(result, textStatus)
                    {
                        self.returnShort.innerHTML = result.Short;
                        self.returnLong.innerHTML = result.Long;
                        gadgets_load();
                    },
                    error: function(request, status, err) {
                        if (request.readyState == 4) {
                            switch (request.status) {
                            // Page-not-found error
                            case 404:
                                alert('Error: Not Found. The requested URL could not be found.');
                                break;
                            // Internal server error
                            case 500:
                                var response = request.responseText;
                                
                                if (response && response.Message) {
                                    alert(response.Message + "\r\n\r\nStack Trace: " + response.StackTrace + "\r\n\r\nException Type: " + response.ExceptionType);
                                }
                                else {
                                    alert(request.responseText);
                                }
                                break;
                            default:
                                break;
                            }
                        }
                    }
                });
                e.preventDefault();
			});
		}
    }
}