var index = 0;
var header_colors = new Array("red", "blue", "l_green", "pur", "green", "yellow");

$(document).ready( function() {
	// initWidgets();
});

function defaultWidgets(path) {
	$.ajax({
    	type: "GET",
        url: encodeURI(path + "/_tools/widget/default"),
        contentType: 'application/json; charset=utf-8',
        scriptCharset: 'utf-8',
        success: function(data) {
			var result = eval("(" + data + ")");
			result = result.array;
			
			if(document.getElementById("loading") != null)
				document.getElementById("loading").style.visibility = "visible";
			
			for (var i = 0; i < result.length; i++) {
				var naam = result[i].name;
					if(result[i].contentUrl != null) {
						addWidget(result[i].name, result[i].defaultColumn, result[i].hasHeader, path + '/_user/widget/custom/' + result[i].id +  '/url/' + result[i].contentUrl, null, null, false, result[i].movable, result[i].resizable);
					//Load content from widget controller
					} else if(naam.indexOf('category')==0) {
						//addWidget(result[i].name, result[i].defaultColumn, result[i].hasHeader, path + '/_user/widget/' + result[i].name + '?categoryId=' + result[i].parameters[0].defaultValue, null, null, false, result[i].movable, result[i].resizable);
						//WE'RE NOT USING THE WIDGET APPROACH ANYMORE FOR CATEGORIES.
						//addWidget('category', result[i].defaultColumn, result[i].hasHeader, path + '/_user/widget/category?categoryId=' + result[i].parameters[6]["com.seavus.newsroom.model.WidgetParameter"].defaultValue + "&widgetName=" + result[i].name, null, null, false, result[i].movable, result[i].resizable);
						//TODO default RSS widget
					} else if(result[i].name == 'latestnews') {
                        if(!(BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7)){
                        	addWidget(result[i].name, result[i].defaultColumn, result[i].hasHeader, path + '/_user/widget/' + result[i].name + '?categoryId=' + result[i].parameters[0].defaultValue, null, null, false, result[i].movable, result[i].resizable);
                        }
					} 
//					else if(result[i].name == 'photooftheday') {
//						addWidget(result[i].name, result[i].defaultColumn, result[i].hasHeader, path + '/_user/widget/' + result[i].name, null, result[i].title, false, result[i].movable, result[i].resizable); 
//					}
					else {
						addWidget(result[i].name, result[i].defaultColumn, result[i].hasHeader, path + '/_user/widget/' + result[i].name, null, result[i].title, false, result[i].movable, result[i].resizable);
					}
			} 
			
			if(document.getElementById("loading") != null)
				document.getElementById("loading").style.visibility = "hidden";
			
        },
        error: function(data) {
        	
        },
        async: true,
        cache: true
    });
}

function usersWidgets(path, userId) {
	$.ajax({
    	type: "GET",
        url: encodeURI(path + "/_tools/widget/user?userId=" + userId),
        contentType: 'application/json; charset=utf-8',
        scriptCharset: 'utf-8',
        success: function(data) {
			var result = eval("(" + data + ")");
			result = result.array;
			
			if(document.getElementById("loading") != null)
			document.getElementById("loading").style.visibility = "visible";
		
			for (var i = 0; i < result.length; i++) {
				//Load content from given url
				if(result[i].contentUrl != null || result[i].widget.name == 'latest_video') {
					addWidget(result[i].widget.name, result[i].column, result[i].widget.hasHeader, path + '/_user/widget/custom/' + result[i].widget.id +  '/url/' + result[i].widget.contentUrl, result[i].id, null, result[i].widget.removable, result[i].widget.movable, result[i].widget.resizable);
				//Load content from widget controller
				} else if(result[i].widget.name.indexOf('category')==0) {
					addWidget('category', result[i].widget.defaultColumn, result[i].widget.hasHeader, path + '/_user/widget/category?categoryId=' + result[i].parameters[6]["com.seavus.newsroom.model.UsersWidgetParameter"].value + "&widgetName=" + result[i].widget.name, null, null, false, result[i].widget.movable, result[i].widget.resizable);
				} else if (result[i].widget.name == 'rss') {
					addWidget(result[i].widget.name, result[i].column, result[i].widget.hasHeader, path + '/_user/widget/rss/' + result[i].id + '/url/' + result[i].parameters[0].value, result[i].id, result[i].widget.title, result[i].widget.removable, result[i].widget.movable, result[i].widget.resizable);
				} else {
					addWidget(result[i].widget.name, result[i].column, result[i].widget.hasHeader, path + '/_user/'+ result[i].id + '/widget/' + result[i].widget.name, result[i].id, result[i].widget.title, result[i].widget.removable, result[i].widget.movable, result[i].widget.resizable);
				}
			}
			
			if(document.getElementById("loading") != null)
				document.getElementById("loading").style.visibility = "hidden";
        },
        error: function(data) {
        	
        },
        async: true,
        cache: true
    });
	
}

function widgetsForSubCategories(path, id, name) {	
	$.ajax({
    	type: "GET",
        url: encodeURI(path + "/_tools/widget/subcategories?categoryId=" + id),
        contentType: 'application/json; charset=utf-8',
        scriptCharset: 'utf-8',
        success: function(data) {
			var result = eval("(" + data + ")");
			result = result.array;
		
			//addWidget("category", 7, true, path + '/_tools/article/widget?id=' + id+'&widgetPlace=\'rightMenu\'', null, name, false, false, true);
			
			for (var i = 0; i < result.length; i++) {
				addWidget("category", 7, true, path + '/_tools/article/widget?id=' + result[i].id+'&widgetPlace=\'rightMenu\'', null, result[i].name, false, false, true);
			}
        },
        error: function(data) {
        	
        },
        async: true,
        cache: true
    });
}

function widgetsForAllCategoriesArticleBelongsTo(path, categoryId, name, articleId) {	
	addWidget("category", 7, true, path + '/_tools/article/widget?id=' + categoryId +'&articleId='+ articleId +'&widgetPlace=\'rightMenu\'', null, name, false, false, true);			
}

function widgetForFirstCategoryArticleBelongsTo(path, categoryId, name, articleId) {	
	addWidget("category", 8, true, path + '/_tools/article/widget?id=' + categoryId+'&articleId='+articleId+'&widgetPlace=\'bottom\'', null, name, false, false, true);			
}
/*
function initWidgets() {
	$('a.closeEl').bind('click', toggleContent);
	$('a.removeEl').bind('click', removeWidget);
	$('div.groupWrapper').Sortable( {
		accept :'groupItem',
		helperclass :'sortHelper',
		activeclass :'sortableactive',
		hoverclass :'sortablehover',
		handle :'tr.itemHeader',
		tolerance :'pointer',
		revert : true,
		onChange : function(ser) {
		},
		onStart : function() {
			$.iAutoscroller.start(this, document.getElementsByTagName('body'));
		},
		onStop : function() {
			$.iAutoscroller.stop();
			widgetMoved(this);
		}
	});
}
*/

var toggleContent = function(e) {
	var targetContent = $('div.itemContent', this.parentNode.parentNode);
	if (targetContent.css('display') == 'none') {
		targetContent.slideDown(300);
		$(this).html('<img src="images/b_collapsepanel.gif" border="0"/>');
	} else {
		targetContent.slideUp(300);
		$(this).html('<img src="images/b_expandpanel.gif" border="0"/>');
	}
	return false;
};

var removeWidget = function(e) {
	
	if (!confirm('Are you sure that you want to remove this widget?')) { 
		return;
	}

	var testObj = this.parentNode;
	var count = 1;
	while(testObj.getAttribute('id') != "groupItem") {
	    testObj = testObj.parentNode;
	    count++;
	}
	
	var usersWidgetId = testObj.firstChild.value;
	
	widgetServiceImpl.removeUsersWidget(usersWidgetId, function(result) {
		
		var parent = testObj.parentNode;
		parent.removeChild(testObj);
	});
};

function addWidget(name, column, hasHeader, contentLink, id, title, removable, movable, resizable) {
	if(document.getElementById("sort" + column) != null) {
		$.ajax({
	    	type: "GET",
	        url: encodeURI(contentLink),
	        contentType: 'text/text; charset=utf-8',
	        scriptCharset: 'utf-8',
	        success: function(data) {
				var widgetContent = data;
				
				var widget = document.createElement('div');
				widget.innerHTML = widgetContent;
				
				var headerTag = $(widget).find("#itemHeader").get(0);
				var contentTag = $(widget).find("#itemContent").get(0);

                if(hasHeader == true && title != null) {
					if(headerTag != null)
						headerTag.firstChild.innerHTML = title;
				} else if (hasHeader == false) {
					if(headerTag != null && contentTag != null) {
						headerTag.className = "itemHeaderBlank";
						contentTag.className = "itemContentBlank";
					}
				}
/*			
				var headerColor = $(widget).find("#header_color").get(0);
				var buttonColor = $(widget).find("#header_buttons").get(0);
				if(headerColor != null) {
					if(index >= header_colors.length) {
						index = 0;
					}
					var color = header_colors[index];
					
					if(name == null || name != "category") {
						color = "gray";
					}
					
					if (name == "category"){
						color = "my"
					}
					headerColor.className = "tab_header_" + color;
					buttonColor.className = "tab_header_" + color + "_icons";
					
					headerColor.className = "tab_header";
					buttonColor.className = "tab_header_icons";
					index++;
				}
				
				var remove = $(widget).find("#remove").get(0);
				if(!removable) {
					if(remove != null) {
						remove.className = "display_none";
						remove.classname = "display_none";
					}
				}
				
				var plus = $(widget).find("#plus").get(0);
				var minus = $(widget).find("#minus").get(0);
				if(!resizable) {
					if(plus != null && minus != null) {
						plus.className = "display_none";
						minus.className = "display_none";
					}
				}
				
				if(!movable && hasHeader) {
					if(headerTag != null)
						headerTag.className = "itemHeader";
				}
*/				
				if(id != null) {
					if(widget.firstChild.childNodes[0] != null)
						widget.firstChild.childNodes[0].value = id;
				}
				
				
				if(document.getElementById("sort" + column) != null) {
					document.getElementById("sort" + column).appendChild(widget.firstChild);
					
					if(window.execScript) {
//						alert('before check');
						if (name == 'weather') {
//							alert('name: ' + name + ", title: " + title);
							var html = $('<div/>').append(widgetContent);
						}
//						if($(html).find('script').html() != null && $(html).find('script').attr('id') == 'widget_script') {
//							window.execScript($(html).find('script').html());
//						}
					}
					
					//Execute javscript in different browsers
					var nAgt = navigator.userAgent;
					if ((nAgt.indexOf("Chrome")) != -1) {

					} else if ((nAgt.indexOf("Opera")) != -1) {
						var otemp_html = $('<div/>').append(widgetContent);
						if($(otemp_html).find('script').html() != null && $(otemp_html).find('script').attr('id') == 'widget_script') {
							eval($(otemp_html).find('script').html());
						}
					} else if ((nAgt.indexOf("Safari")) != -1) {
						var stemp_html = $('<div/>').append(widgetContent);
						if($(stemp_html).find('script').html() != null && $(stemp_html).find('script').attr('id') == 'widget_script') {
							eval($(stemp_html).find('script').html());
						}
					}
				}
				
				//initWidgets();
	        },
	        async: true,
	        cache: true
	    });
	}
}

function widgetMoved(object) {
	
	if(object.firstChild.value != null && object.firstChild.value != "") {
		var count = 1;
		var sibling  = object.previousSibling;
		while(sibling != null) {
			if(sibling.nodeName == 'DIV') {
				count++;
			}
			sibling = sibling.previousSibling;
		}
		var usersWidgetId = object.firstChild.value;
		
		var column = object.parentNode.id.substring(4);
		var row = count;
		
		widgetServiceImpl.moveUsersWidget(usersWidgetId, column, row, function(result) {
			//initWidgets();
		});
	}
}

function widgetPlus(object) {
	var testObj = object.parentNode;
	var count = 1;
	while(testObj.getAttribute('id') != "groupItem") {
	    testObj = testObj.parentNode;
	    count++;
	}
	
	var categories = $(testObj).find("#category_news").get(0);
	
	if(categories != null) {
		for(var i = 0; i < categories.firstChild.childNodes.length; i++) {
			if(categories.firstChild.childNodes[i].className == "display_none") {
				categories.firstChild.childNodes[i].className = "display_row";
				break;
			}
		}
	} else {
		//Resize
	}
}

function widgetMinus(object) {
	var testObj = object.parentNode;
	var count = 1;
	while(testObj.getAttribute('id') != "groupItem") {
	    testObj = testObj.parentNode;
	    count++;
	}
	
	var categories = $(testObj).find("#category_news").get(0);
	
	if(categories != null) {
		for(var i = categories.firstChild.childNodes.length - 1; i >= 2; i--) {
			if(categories.firstChild.childNodes[i].className == "display_row") {
				categories.firstChild.childNodes[i].className = "display_none";
				break;
			}
		}
	} else {
		//Resize
	}
}
