/* #################################################
# Projekt	: Scripts - Kanalbau Base
# Stand		: 23.11.10
# Autor		: Daniel Zander, Source-Media.com
#################################################### */


$.fn.clearDef = function(){
	$(':input', this).each(function(){
		if ($(this).val() == $(this).attr('title'))
			$(this).val('').removeClass('default');
	});	
};

function viewAlert(f,a) {
	$('.l',f).removeClass('alert'); // reset
	
	for (i in a) {
		if (a[i]) { //name^=
			$(':input[name='+a[i]+']',f).parents().prev('.l').addClass('alert');
			var fail=1;
		}
	}
	
	$('.ui-tabs-panel:has(span.alert)').each(function(){
		$('.ui-tabs-nav a[href=#'+$(this).attr('id')+'] span').addClass('alert');
	});
		
	return (fail ? false : true);
}

function viewAlert2(f,a){
	$('.alert',f).removeClass('alert'); // reset
	
	for (i in a) {
		if (a[i]) {
			$('#f_'+a[i],f).addClass('alert');
			var fail=1;
		}
	}
	
	// hmm ... can we make this more general?
	$('.ui-tabs-panel:has(.alert)').each(function(){
		$('.ui-tabs-nav a[href=#'+$(this).attr('id')+'] span').addClass('alert');
	});
		
	return (fail ? false : true);
}

function zebraFun(elem){
	$(elem).children('tr:odd').addClass('odd').removeClass('even');
	$(elem).children('tr:even').addClass('even').removeClass('odd');
}

function rndm(){
	return String(Math.floor((Math.random()*1E16)));
}



$(function(){

// ---------- Content ----------

$('a.collapsible:not(.none)').livequery('click',function(){
	var t = $(this);
	var par = t.parent();
	
	
	// do slide
	
	var slide = function(){
		var e = par.next('.wrapper');
		
		if (t.is('.collapsed')){
		
			if ($.browser.msie && $.browser.version<7)
				e.show();
			else
				e.slideDown('fast');
		} else
			e.hide();
		
		t.toggleClass('expanded').toggleClass('collapsed');
	};
	
	
	// write cfg
	
	if (par.is('legend'))
		$.get('/login/conf.php',{cfg:'leg',val: (t.is('.collapsed') ? 1:0)});
	
	
	// navi
	
	if (par.parent().is('.navi')){
		
		// set active article
		var aset = function(){
			$('a[href$="'+t.attr('href').replace(/(.*)&a/,'')+'"]',t.parent().next('.wrapper')).addClass('set');
		};
	
		// load content
		$('#mid').load(dir_temp+'view-article-single.php'+t.attr('href'));
		
		// load subnav
		if (!t.is('.loaded')){
			t.addClass('loading loaded');
			
			par.next('.wrapper').load(par.parent().attr('rel')+t.attr('href'), function(){
				t.removeClass('loading');
				aset();
				slide();
			});
		
		} else 
			slide();
		
		// unset links
		$('a',par.parent()).removeClass('set');
		
		// set active
		t.addClass('set');
		aset();
		
		// collapse others
		$('a.collapsible:not(.set)',par.parent()).removeClass('expanded').addClass('collapsed').parent().next('.wrapper').slideUp();
	}
	
	// rest
	
	else
		slide();
	
	return false;
});


// ---------- Table ----------

$.tablesorter.addParser({
	id: 'date-de',
	is: function(s) {
		return /^\d{1,2}.\d{1,2}.\d{2,4}$/.test(s);
	},
	format: function(s) {
		var d = s.match(/(\d{1,2}).(\d{1,2}).(\d{2,4})/);
		if (d[1].length == 1) d[1] = '0' + d[1];
		if (d[2].length == 1) d[2] = '0' + d[2];
		return d[3] + d[2] + d[1];
	},
	type: 'text'
});


$('table.sort').livequery(function(){
	$(this).tablesorter({
		widgets: ['zebra'],
		textExtraction: function(node) {
			var sd = $(node).find('.sort-data');
			if (sd.length > 0)
				return sd.text();
			else
				return node.innerHTML;
		}
	});
});

// zebra
$('table:not(.sort) tbody.zebra').livequery(function(){
 	zebraFun(this);
});

// over
$('tbody.zebra tr').livequery('mouseover',function(){
	this.className += ' over';
}).livequery('mouseout',function(){
	this.className = this.className.replace(/ ?over/,'');
});


// ---------- Form ----------

if ($.browser.msie)
	$('a.btn').livequery('click',function(){$(this).blur();});

$(':radio, :checkbox').livequery(function(){ $(this).addClass('auto'); });

$(':input[charset]').livequery('keypress',function(e){
	var c = String.fromCharCode(e.charCode == undefined ? e.keyCode : e.charCode);
	if (!e.ctrlKey && !e.metaKey && c >= ' ' && !c.match(new RegExp('['+$(this).attr('charset')+']')))
		return false;
	return true;
}).livequery('blur',function(){
	if ($(this).val())
		$(this).val($(this).val().replace(new RegExp('[^'+$(this).attr('charset')+']','g'),''));
});

// set default
$('input[title]').livequery(function(){
	var t = $(this).attr('title');

	if (!$(this).val())
		$(this).addClass('default').val(t);

	$(this).focus(function(){ //clear
		if ($(this).val() == ($(this).attr('maxlength')<1 ? t:
			t.substr(0,$(this).attr('maxlength')))
		)
			$(this).val('').removeClass('default');
	}).blur(function(){ //restore
		if (!$(this).val())
			$(this).addClass('default').val(t);
	});
});

// avoid browser reload
$('form.ajax').livequery('submit',function(){
	$('a.submit',this).click();
	return false;
});

// submit only non-ajax
$('a.submit').livequery('click',function(){
	$(this).parents('form:not(.ajax)').submit();
	return false;
});

// selectbox
$('div.select').livequery(function(){
	
	function addEvents() {
		l.find('li p:not(.noclick)').click(function(){
			
			$('li p',l).removeClass('set');
			$(this).addClass('set');
			b.text($(this).text());
			
			$('input',d).val($(this).parent().attr('data')).change();
			
			l.hide();
			
			return false;
		});
		l.mouseover(function(){
			f=true;
		});
		l.mouseout(function(){
			f=false;
		});
	}
	
	var max_w = 300;
	var max_h = 230;
	var f = false; //focus
	
	var d = $(this);
	var b = $('<p class="selectbox"></p>').appendTo(d);
	var drp_w = d.outerWidth() - (
		parseInt(b.css('padding-right'))+ 
		parseInt(b.css('padding-left'))+ 
		parseInt(b.css('border-left-width'))+
		parseInt(b.css('border-right-width'))
	);
	
	
	// init
	if (!d.attr('rev')){
		var rnd = 'sl-'+rndm();
		var tl = $('.selectlist',d);
		var l = tl.clone().addClass(rnd).appendTo('body');
		tl.remove();
		addEvents();
		
		// set default
		var def = $('li p'+($('li p.set',l).length ? '.set:eq(0)':':first'),l);
		var defVal = def.parent().attr('data');
		var defTxt = def.text();
		def.addClass('set');
		
		$('input',d).val(defVal).attr('rel',rnd);
		b.text(defTxt);
		
	} else
		var l = $('<ul class="selectlist"></ul>').appendTo('body');
	
	d.get(0).selectbox = l;
	
	d.prepend('<i class="ico"></i>');
	$('input',d).attr('readonly','readonly').width(drp_w);
	b.width(drp_w);
	
	
	// show on click
	d.click(function(){
	
		var drp_w = d.outerWidth();
		var drp_h = d.outerHeight();
		var drp_p = d.position();
		
		var lst_w = l.outerWidth();
		var lst_h = l.outerHeight();
		var lst_l = drp_p.left;
		var lst_t = (drp_p.top + drp_h);
		var lst_r = (parseInt(l.css('border-left-width'))+parseInt(l.css('border-right-width')));
		
		//min-width
		if (lst_w < drp_w || drp_w > max_w)
			l.width(drp_w - lst_r);
			
		//max-width
		else if (lst_w > drp_w && lst_w > max_w)
			l.width(max_w - lst_r);
		
		//max-height
		if (lst_h > max_h)
			l.height(max_h);
		
		// align-right
		if (($(window).width() - (lst_l+20)) < l.outerWidth())
			lst_l = (lst_l - (l.outerWidth() - drp_w));
		
		// align-top
		if (($(window).height() - (lst_t+2)) < l.outerHeight())
			lst_t = (lst_t - (l.outerHeight() + drp_h));
		
		l.css({left:lst_l,top:lst_t});
		
		
		if (d.is('.reload')){
			d.addClass('loading');
			
			$.get(dir+d.attr('rev'),function(r){
				d.removeClass('reload loading');
				l.html(r)
				addEvents();
				
				l.css('width',drp_w);
				l.show();
			});
		
		// close on re-click
		} else if (l.is(':visible'))
			l.hide();
		
		else
			l.show();
	});
	
	// close on blur
	$('input',d).blur(function(){
		if (!f)
			l.hide();
	});
	
	// set default on reset
	d.parents('form').bind('reset',function(){
		$('input',d).val(defVal);
		b.text(defTxt);
		$('li p',l).removeClass('set');
	});
	
	// close on resize (!IE)
	if (!$.browser.msie)
		$(window).resize(function(){
			l.hide();
		});
	
	return false;
});


// ---------- Tooltip ----------

$('a.tips, label.tips, area.tips').livequery(function(){
	var m = $(this).hasClass('_m') ? 1:0;
	var d = $(this).metadata();
	
	$(this).cluetip({
		ajaxCache: (d.cache === false ? false:true),
		local: (d.local === true ? true:false),
		attribute: 'href',
		dropShadow: false,
		cursor: (!d.hover ? 'pointer':''),
		sticky: (!d.hover ? true:false),
		tracking: (!m ? false:true),
		activation: (!d.hover ? 'click':'hover'),
		width: (!m ? (d.width ? d.width:'300px'):'auto'), 
		height: (!m ? (d.height ? d.height:'200px'):'auto'), 
		showTitle: (!m ? true:false),
		splitTitle: (!m ? '':'|'),
		closePosition: 'title',
		closeText: '(x)',
		positionBy: (d.positionBy ? d.positionBy : 'auto'),
		topOffset: (d.topOffset ? d.topOffset : 15),
		maxHeight: (d.maxHeight ? d.maxHeight : 0),
		onShow: function(ct,c){
			ct.draggable({handle: '#cluetip-title'});
			$('#cluetip-title').css('cursor','move');
		}
	});
});



});//function()
