$(document).ready(
		function()
		{
			initAll($('html'));
			$('#innernews').corner("round 8px").parent().css('padding', '2px').corner("round 10px");
		}
);

function initAll(block) {
	/*if(window.Verify) {
		Verify.load();
	}*/
	
	initBrowseInput(block);
	initMultiPosting(block);	
	initAjaxPosting(block);
	initAjaxPaging(block);
	initEffects(block);
	initExternalLinks(block);
	
	if(window.attach_datepickers) {
		attach_datepickers();
	}
	
	$(".tabbed > ul").tabs({ fx: { height: 'toggle', opacity: 'toggle' } });
	
	$(".popupwindow").popupwindow();
	
	$(".cycle").cycle();
}

function undoAll(block) {
	$(block).find("form[@class=ajaxpost]").unbind();
	$(block).find("input[@type=file]").unbind();
	undoEffects(block);
	$('textarea[@class=mceEditor]', block).each(function() {
		toggleEditor($(this).attr('id'), false);
	});
}

function initTinyMCE() {
    $('textarea[@class=mceEditor]').each(function() {
		toggleEditor($(this).attr('id'), true);
	});
}

function initEffects(block) {
	$(block).find('.effect_roundcorners').corner('round');
	if($(block).hasClass('effect_roundcorners')) {
		$(block).corner('round');	
	}
}

function undoEffects(block) {
	$(block).find('.effect_roundcorners').uncorner();
}

function initBrowseInput(block) {
	$(block).find("input[@type=file]").inputfile();
}

function initExternalLinks(block) {
    $(block).find("a[@rel=external]").each(function() {
        $(this).attr('target', '_blank');
    });
}

function initMultiPosting(block) {
	$(block).find("input[@class=multi]").each(function() {
		$(this).after('<a href="#" class="multipost">+</a>');
		
		$(block).find("a[@class=multipost]").bind('click', function() {	
			$(this).prev().clone().val('').insertBefore($(this).before('<br />'));
			return false;
		});
	});
}

function initAjaxPosting(block) {
	
	$(block).find("form[@class=ajaxpost]").each(function() {
		var form = this;
		var buttonvalue = '';
		
		// Save submit button value
		$(this).find('input[@type=submit]').bind('click', function() {
			buttonvalue = this.value;
		});
		
		$(this).bind('submit', function() {
			if((window.Verify && Verify.submit(this) && Verify.valid) || !window.Verify) {
				var realBlock = $(findBlockParent(this));
				// Lock GUI
				pdcmsBlockUI();
				
				// force save on possible tinyMCE fields
				if(window.tinyMCE) {
					tinyMCE.triggerSave(true,true);
				}
				
				// add button value to post values
				$(form).append('<input type="hidden" name="submitvalue" value="' + buttonvalue + '" />');
				buttonvalue = '';
				
				// also add that this is an ajaxsubmit
				$(form).append('<input type="hidden" name="ajaxpost" value="true" />');
						
				$(this).ajaxSubmit({
					success: function(response, status) {
						if(status != 'success') {
							alert(response);
						} else {
							if(response.length > 0) {
								rebindBlock(response);
							}
						}
					}
				});
			}
			return false;
		});
	});
}

function findBlockParent(form) {
	if($(form).parent().hasClass('block')) 
		return $(form).parent();
	else 
		return findBlockParent($(form).parent());
}

function initAjaxPaging(block) {
	// Ajax paging
	$(block).find('a[@class=ajaxpage]').bind('click', function() {
		pdcmsBlockUI();
				
		$.ajax({
			async: false,
			dataType: "html",
			type: "GET",
			url: $(this).attr('href'),
			error: function(xmlreq, desc, ex) {
				alert(desc);
			},
			success: function (data) {
				rebindBlock(data);
			}
		
		});
		
		// no need to visit this link for real
		return false;
	});
}

function rebindBlock(data) {
	var dest_div = $('#' + $(data).attr('id')); 
    if($(data).hasClass('location')) {
        window.location.href = $(data).text();
    } else if($(data).hasClass('remove')) {
		$(dest_div).hide();
	} else {
		// unbind all functions and effects for this block
		undoAll(dest_div);
		
		// Set new html into div
		$(dest_div).html($(data).html());
		
		// Bind ondemands
		/*if($(data).hasClass('ondemand_verify')) {
			ondemand_js_verify();
		}
		if($(data).hasClass('ondemand_tinymce')) {
			ondemand_js_tinymce();
		}
		if($(data).hasClass('ondemand_datepicker')) {
			ondemand_js_datepicker();
		}*/
		
		// rebind all functions and effects for this block
		initAll(dest_div);
	}
	
	// If all is done give back GUI
	pdcmsUnblockUI();
}

function pdcmsBlockUI() {
	$.blockUI({ message: $('img#loadingBox'),  
		css: {  
   			top:  ($(window).height() - 24) /2 + 'px', 
   			left: ($(window).width() - 24) /2 + 'px', 
   			width: '24px',
   			border: '0',
   			background:'none'
   		} 
 	}); 
}

function pdcmsUnblockUI() {
	$.unblockUI();
} 

function toggleEditor(id, attach) {
	if(window.tinyMCE) {
		if (attach == true) {
			if(tinyMCE.getInstanceById(id) == null) {
				tinyMCE.execCommand('mceAddControl', false, id);
			}
		} else {
			tinyMCE.triggerSave(true,true);
			tinyMCE.execCommand('mceRemoveControl', false, id);
		}
	}
}
