/* GENERAL FEATURES */

/* creates tabs system within item detail/view and modifies url(hash) */
var tabsManager = {
	urlHash:null,
	init: function(tabs){
		if($(tabs).length == 0) return;
		tabsManager.getHash(location.hash);
		$(tabs).tabs();
		$(tabs).bind('tabsselect', function(event, ui) {
			tabsManager.setHash(ui.panel.id);
			tabsManager.getHash(ui.panel.id);

			if(ui.panel.id == "reacties"){
				paginate.init();
				$('#add_comment_link').show();
			}else{
				$("#pagination").html("");
				if(ui.panel.id == "comment"){
					$('#add_comment_link').hide();
				}
				else {
					$('#add_comment_link').show();
				}
			}

		});
	},
	getHash: function(lHash){
		$("#url_hash").val($.string(lHash).gsub('#', '').str);
	},
	setHash: function(lHash){
		location.hash = lHash;
	}
}

/* Fill formfields with temp data */
var formFiller = {
	fill: function(fieldId, fieldValue){
		if($(fieldId).length == 0) return;

		if($(fieldId).val() == ""){
			$(fieldId).val(fieldValue);
		}

		$(fieldId).focus(function () {
			if($(fieldId).val() == fieldValue){
				$(fieldId).val("");
			}
		});

		$(fieldId).blur(function () {
			if($(fieldId).val() == ""){
				$(fieldId).val(fieldValue);
			}
		});

		//$("#search_button").click(function(){
		//	if($(fieldId).val() == fieldValue) $(fieldId).val("");
		//})

		return fieldValue;
	}
}

/* add target blank to links withs a blank class */
var createBlankLinks = {
	create: function(){
		$(".blank").attr("target","_blank");
	}
}

/* inserts swf with swfobject */
var swfObject = {
	insert: function(swf, swfId, swfWidth, swfHeight, swfVersion, swfBackgroundColor, targetElm, imgSrc, imgAlt){
		var so = new SWFObject(swf, swfId, swfWidth, swfHeight, swfVersion, swfBackgroundColor);

		if(imgSrc != undefined){
			so.addVariable("src", imgSrc);
		}

		if(imgAlt != undefined){
			so.addVariable("altTitle", imgAlt);
		}

		so.addParam("wmode", "transparent");
		so.write(targetElm);
	}
}

/* creates drag&drop support */
var sortables = {
	init:function(container, ajaxUrl){
		if($(container).length > 0){
			$(container).sortable({
				update: function(){
					serial = $(container).sortable('serialize');

					$.ajax({
						url: ajaxUrl,
						type: "POST",
						data: serial
					});
				}
			});
		}else{
			return;
		}
	}
}

/* adds behaviors (sortable) to uploaded thumbnails */
var thumbnails = {
	container: 'ul.thumb-container',
	init: function(){
		if($('ul.thumb-container').length > 0){
			sortables.init(thumbnails.container, get_full_url("/images/saveOrder"));
		}else{
			return;
		}
	}
}

/* creates expandables */
var expandables = {
	init: function(container){
		if($(container).length > 0){
   			$('a.expandable-trigger').click(
   			function() {
   				$(this).toggleClass('closed')
   				$(this).next().slideToggle('fast');
  		 		}
  	 		);
	   	}else{
	   		return false;
	   	}
	}
}

/* shows/hides flash messages */
var flashMessage = {
	container:null,
	timeoutId:null,

	init: function(flash){
		if($(flash).length == 0) return;
		flashMessage.container = flash;
		flashMessage.show();
	},
	show: function(){
		$(flashMessage.container).hide();
		$(flashMessage.container).slideDown(1000);
		flashMessage.timeoutId = setTimeout("flashMessage.hide()", 5000);
	},
	hide: function(){
		clearTimeout(flashMessage.timeoutId);
		$(flashMessage.container).fadeOut('slow');
	}
}

/*
	Builds autoComplete
	* de backend dient een eenvoudige lijst te outputten, bv: titel|waarde1|waarde2|waarde3 (|=scheidingsteken)
	* de waardes zijn als row[0], row[1], row[2] beschikbaar
	* Nu wordt er meestal title, name, subject gebruikt en de ID van het record om in de resultaten te tonen.
	LET OP: de extra waarden/velden dienen ook in het model (Item.php) toegevoegd te worden! Anders krijg je bugs.
*/
var autoComplete = {
	targetUrl:null,
	init: function(searchInput, targetUrl, controller){
		if($(searchInput).length == 0) return;
		autoComplete.targetUrl = targetUrl;

		$(searchInput).autocomplete(get_full_url("/"+controller+"/search"), {
			delay: 400,
			width: 246,
			highlight: false,
			scroll: true,
			scrollHeight: 300,
			minChars:1,
			matchSubset:0, // turn off cache (rare resultaten?!?)
			// matchContains:1,
			// cacheLength:10,
			selectOnly:1,
			onItemSelect: autoComplete.selectItem,
			formatResult: autoComplete.formatItem
		});
	},
	formatItem:function(){
		return row[0];
	},
	selectItem:function(li){
		if (li.extra) {
			location.href = autoComplete.targetUrl+"/"+li.extra[0];
		}
	}
}

var printObj = {
	addPrint: function(targetElm){
		var targetURL = $(targetElm).attr("href");
		$(targetElm).click(function(){
			printObj.printWindow(targetURL, 500, 700);
			return false;
		});
	},

	printWindow: function(targetURL, w, h, pagetitle, pType) {
		printDocContents='<HTML>\n';
		printDocContents+='<HEAD>\n';
		printDocContents+='<TITLE>New Document</TITLE>\n';

		printDocContents+='<link rel="stylesheet" type="text/css" href="/css/reset.css" />\n';
		printDocContents+='<link rel="stylesheet" type="text/css" href="/css/global.css" />\n';
		printDocContents+='<link rel="stylesheet" type="text/css" href="/css/object_p.css" />\n';
		printDocContents+='<link rel="stylesheet" type="text/css" href="/css/print.css" />\n';

		printDocContents+='</HEAD>\n';
		printDocContents+='<BODY>\n';
		printDocContents+=$(".print_view").html()+'\n';
		printDocContents+='</BODY>\n';
		printDocContents+='</HTML>';

		newwindow=window.open(null, '' ,'height=' + w + ',width=' + h + ',toolbar=no,scrollbars=yes');
		newdocument=newwindow.document;
		newdocument.write(printDocContents);
		newdocument.close();

		newwindow.focus();
		newwindow.print();
	}
}



/* popup window */
function popitup (url, height, width) {
	extern = "http://www.delftsaardewerk.nl/";
	newwindow=window.open(extern+url,'name','height=' + height + ',width=' + width);
	if (window.focus) {newwindow.focus()}
	return false;
}

