/* ui functions that modify most/all pages based on class names and id's
*/
/*
 * jQuery Tooltip plugin 1.3
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
 * http://docs.jquery.com/Plugins/Tooltip
 *
 * Copyright (c) 2006 - 2008 Jörn Zaefferer
 *
 * $Id: jquery.tooltip.js 5741 2008-06-21 15:22:16Z joern.zaefferer $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(8($){j e={},9,m,B,A=$.2u.2g&&/29\\s(5\\.5|6\\.)/.1M(1H.2t),M=12;$.k={w:12,1h:{Z:25,r:12,1d:19,X:"",G:15,E:15,16:"k"},2s:8(){$.k.w=!$.k.w}};$.N.1v({k:8(a){a=$.1v({},$.k.1h,a);1q(a);g 2.F(8(){$.1j(2,"k",a);2.11=e.3.n("1g");2.13=2.m;$(2).24("m");2.22=""}).21(1e).1U(q).1S(q)},H:A?8(){g 2.F(8(){j b=$(2).n(\'Y\');4(b.1J(/^o\\(["\']?(.*\\.1I)["\']?\\)$/i)){b=1F.$1;$(2).n({\'Y\':\'1D\',\'1B\':"2r:2q.2m.2l(2j=19, 2i=2h, 1p=\'"+b+"\')"}).F(8(){j a=$(2).n(\'1o\');4(a!=\'2f\'&&a!=\'1u\')$(2).n(\'1o\',\'1u\')})}})}:8(){g 2},1l:A?8(){g 2.F(8(){$(2).n({\'1B\':\'\',Y:\'\'})})}:8(){g 2},1x:8(){g 2.F(8(){$(2)[$(2).D()?"l":"q"]()})},o:8(){g 2.1k(\'28\')||2.1k(\'1p\')}});8 1q(a){4(e.3)g;e.3=$(\'<t 16="\'+a.16+\'"><10></10><t 1i="f"></t><t 1i="o"></t></t>\').27(K.f).q();4($.N.L)e.3.L();e.m=$(\'10\',e.3);e.f=$(\'t.f\',e.3);e.o=$(\'t.o\',e.3)}8 7(a){g $.1j(a,"k")}8 1f(a){4(7(2).Z)B=26(l,7(2).Z);p l();M=!!7(2).M;$(K.f).23(\'W\',u);u(a)}8 1e(){4($.k.w||2==9||(!2.13&&!7(2).U))g;9=2;m=2.13;4(7(2).U){e.m.q();j a=7(2).U.1Z(2);4(a.1Y||a.1V){e.f.1c().T(a)}p{e.f.D(a)}e.f.l()}p 4(7(2).18){j b=m.1T(7(2).18);e.m.D(b.1R()).l();e.f.1c();1Q(j i=0,R;(R=b[i]);i++){4(i>0)e.f.T("<1P/>");e.f.T(R)}e.f.1x()}p{e.m.D(m).l();e.f.q()}4(7(2).1d&&$(2).o())e.o.D($(2).o().1O(\'1N://\',\'\')).l();p e.o.q();e.3.P(7(2).X);4(7(2).H)e.3.H();1f.1L(2,1K)}8 l(){B=S;4((!A||!$.N.L)&&7(9).r){4(e.3.I(":17"))e.3.Q().l().O(7(9).r,9.11);p e.3.I(\':1a\')?e.3.O(7(9).r,9.11):e.3.1G(7(9).r)}p{e.3.l()}u()}8 u(c){4($.k.w)g;4(c&&c.1W.1X=="1E"){g}4(!M&&e.3.I(":1a")){$(K.f).1b(\'W\',u)}4(9==S){$(K.f).1b(\'W\',u);g}e.3.V("z-14").V("z-1A");j b=e.3[0].1z;j a=e.3[0].1y;4(c){b=c.2o+7(9).E;a=c.2n+7(9).G;j d=\'1w\';4(7(9).2k){d=$(C).1r()-b;b=\'1w\'}e.3.n({E:b,14:d,G:a})}j v=z(),h=e.3[0];4(v.x+v.1s<h.1z+h.1n){b-=h.1n+20+7(9).E;e.3.n({E:b+\'1C\'}).P("z-14")}4(v.y+v.1t<h.1y+h.1m){a-=h.1m+20+7(9).G;e.3.n({G:a+\'1C\'}).P("z-1A")}}8 z(){g{x:$(C).2e(),y:$(C).2d(),1s:$(C).1r(),1t:$(C).2p()}}8 q(a){4($.k.w)g;4(B)2c(B);9=S;j b=7(2);8 J(){e.3.V(b.X).q().n("1g","")}4((!A||!$.N.L)&&b.r){4(e.3.I(\':17\'))e.3.Q().O(b.r,0,J);p e.3.Q().2b(b.r,J)}p J();4(7(2).H)e.3.1l()}})(2a);',62,155,'||this|parent|if|||settings|function|current||||||body|return|||var|tooltip|show|title|css|url|else|hide|fade||div|update||blocked|||viewport|IE|tID|window|html|left|each|top|fixPNG|is|complete|document|bgiframe|track|fn|fadeTo|addClass|stop|part|null|append|bodyHandler|removeClass|mousemove|extraClass|backgroundImage|delay|h3|tOpacity|false|tooltipText|right||id|animated|showBody|true|visible|unbind|empty|showURL|save|handle|opacity|defaults|class|data|attr|unfixPNG|offsetHeight|offsetWidth|position|src|createHelper|width|cx|cy|relative|extend|auto|hideWhenEmpty|offsetTop|offsetLeft|bottom|filter|px|none|OPTION|RegExp|fadeIn|navigator|png|match|arguments|apply|test|http|replace|br|for|shift|click|split|mouseout|jquery|target|tagName|nodeType|call||mouseover|alt|bind|removeAttr|200|setTimeout|appendTo|href|MSIE|jQuery|fadeOut|clearTimeout|scrollTop|scrollLeft|absolute|msie|crop|sizingMethod|enabled|positionLeft|AlphaImageLoader|Microsoft|pageY|pageX|height|DXImageTransform|progid|block|userAgent|browser'.split('|'),0,{}));
/*
(function($){var helper={},current,title,tID,IE=$.browser.msie&&/MSIE\s(5\.5|6\.)/.test(navigator.userAgent),track=false;$.tooltip={blocked:false,defaults:{delay:200,fade:false,showURL:true,extraClass:"",top:15,left:15,id:"tooltip"},block:function(){$.tooltip.blocked=!$.tooltip.blocked;}};$.fn.extend({tooltip:function(settings){settings=$.extend({},$.tooltip.defaults,settings);createHelper(settings);return this.each(function(){$.data(this,"tooltip",settings);this.tOpacity=helper.parent.css("opacity");this.tooltipText=this.title;$(this).removeAttr("title");this.alt="";}).mouseover(save).mouseout(hide).click(hide);},fixPNG:IE?function(){return this.each(function(){var image=$(this).css('backgroundImage');if(image.match(/^url\(["']?(.*\.png)["']?\)$/i)){image=RegExp.$1;$(this).css({'backgroundImage':'none','filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+image+"')"}).each(function(){var position=$(this).css('position');if(position!='absolute'&&position!='relative')$(this).css('position','relative');});}});}:function(){return this;},unfixPNG:IE?function(){return this.each(function(){$(this).css({'filter':'',backgroundImage:''});});}:function(){return this;},hideWhenEmpty:function(){return this.each(function(){$(this)[$(this).html()?"show":"hide"]();});},url:function(){return this.attr('href')||this.attr('src');}});function createHelper(settings){if(helper.parent)return;helper.parent=$('<div id="'+settings.id+'"><h3></h3><div class="body"></div><div class="url"></div></div>').appendTo(document.body).hide();if($.fn.bgiframe)helper.parent.bgiframe();helper.title=$('h3',helper.parent);helper.body=$('div.body',helper.parent);helper.url=$('div.url',helper.parent);}function settings(element){return $.data(element,"tooltip");}function handle(event){if(settings(this).delay)tID=setTimeout(show,settings(this).delay);else
	show();track=!!settings(this).track;$(document.body).bind('mousemove',update);update(event);}function save(){if($.tooltip.blocked||this==current||(!this.tooltipText&&!settings(this).bodyHandler))return;current=this;title=this.tooltipText;if(settings(this).bodyHandler){helper.title.hide();var bodyContent=settings(this).bodyHandler.call(this);if(bodyContent.nodeType||bodyContent.jquery){helper.body.empty().append(bodyContent)}else{helper.body.html(bodyContent);}helper.body.show();}else if(settings(this).showBody){var parts=title.split(settings(this).showBody);helper.title.html(parts.shift()).show();helper.body.empty();for(var i=0,part;(part=parts[i]);i++){if(i>0)helper.body.append("<br/>");helper.body.append(part);}helper.body.hideWhenEmpty();}else{helper.title.html(title).show();helper.body.hide();}if(settings(this).showURL&&$(this).url())helper.url.html($(this).url().replace('http://','')).show();else
	helper.url.hide();helper.parent.addClass(settings(this).extraClass);if(settings(this).fixPNG)helper.parent.fixPNG();handle.apply(this,arguments);}function show(){tID=null;if((!IE||!$.fn.bgiframe)&&settings(current).fade){if(helper.parent.is(":animated"))helper.parent.stop().show().fadeTo(settings(current).fade,current.tOpacity);else
	helper.parent.is(':visible')?helper.parent.fadeTo(settings(current).fade,current.tOpacity):helper.parent.fadeIn(settings(current).fade);}else{helper.parent.show();}update();}function update(event){if($.tooltip.blocked)return;if(event&&event.target.tagName=="OPTION"){return;}if(!track&&helper.parent.is(":visible")){$(document.body).unbind('mousemove',update)}if(current==null){$(document.body).unbind('mousemove',update);return;}helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");var left=helper.parent[0].offsetLeft;var top=helper.parent[0].offsetTop;if(event){left=event.pageX+settings(current).left;top=event.pageY+settings(current).top;var right='auto';if(settings(current).positionLeft){right=$(window).width()-left;left='auto';}helper.parent.css({left:left,right:right,top:top});}var v=viewport(),h=helper.parent[0];if(v.x+v.cx<h.offsetLeft+h.offsetWidth){left-=h.offsetWidth+20+settings(current).left;helper.parent.css({left:left+'px'}).addClass("viewport-right");}if(v.y+v.cy<h.offsetTop+h.offsetHeight){top-=h.offsetHeight+20+settings(current).top;helper.parent.css({top:top+'px'}).addClass("viewport-bottom");}}function viewport(){return{x:$(window).scrollLeft(),y:$(window).scrollTop(),cx:$(window).width(),cy:$(window).height()};}function hide(event){if($.tooltip.blocked)return;if(tID)clearTimeout(tID);current=null;var tsettings=settings(this);function complete(){helper.parent.removeClass(tsettings.extraClass).hide().css("opacity","");}if((!IE||!$.fn.bgiframe)&&tsettings.fade){if(helper.parent.is(':animated'))helper.parent.stop().fadeTo(tsettings.fade,0,complete);else
	helper.parent.stop().fadeOut(tsettings.fade,complete);}else
	complete();if(settings(this).fixPNG)helper.parent.unfixPNG();}})(jQuery);
*/

var fromja = fromja || {};
fromja.ui = fromja.ui || {};
fromja.shop = fromja.shop || {}; 
fromja.forms = fromja.forms || {};

fromja.ui.display_language = site_display_language || "en";

fromja.ui.loading32 = '<div class="load32 centertext spinner"><img src="/v-m/img/icons/load32.gif" border=0 width=32 alt="loading"></div>';
fromja.ui.loading16 = '<img src="/v-m/img/icons/load16.gif" border="0" width="16" height="16" alt="..." class="spinner">';
fromja.ui.loading = fromja.ui.loading16; 

fromja.ui.show_error_message = function(container, msg) {
	// container is expected to be a jquery object and message is a string that
	// will be written in a P tag with an error icon beside it.
	if ( !container.hasClass('ui-state-error') ) {
		container.addClass('ui-state-error ui-widget ui-corner-all').css('padding','0.5em');
	}
	msg = '<p><span class="ui-icon ui-icon-alert" style="float:left;margin-right:0.3em;"></span>'+ msg +'</p>';
	container.append(msg);
};

fromja.ui.hide_error_messages = function(container) { 
	container.removeClass('ui-state-error ui-widget ui-corner-all').html('')
};

fromja.ui.clear_error_messages = fromja.ui.hide_error_messages;

fromja.forms.field_re_test = function(field, re_test, ret) {
	if ( re_test == undefined ) { re_test = /.+/ } 
	// ret = true; // start with ret = True
	if ( ret == undefined ) { ret = true ; }
	if ( re_test.test( field.val() ) ){ ret = ret; }  
	else { ret = false;	}
	return ret;
};

fromja.forms.field_has_value = function(field, ret){
	var r = /.+/ ;
	if ( fromja.forms.field_re_test(field, r, true) ){
		ret = ret;
	} else {
		field.before('<ul class="errorlist"><li>This field is required.</li></ul>');
		ret = false;
	}
	return ret;
};

fromja.forms.remove_error_messages = function(form){
	$('.errorlist',form).remove();
};

fromja.shop.add_to_cart = function(cartlink){
	var submit_url = '/shop/cart/add/ajax/';
	var prod_name = cartlink.attr('id');
	$.ajax({
		type: "POST", url: submit_url, dataType: 'json', timeout:3500,
		data: "quantity=1&productname="+prod_name,
		success: function(data, msg){
			var items = ' item';
			if (data.errors.length == 0) {
				if (data.cart_count>1) { items += 's'; }
				$('#cart_count').html(data.cart_count + items);
				$('#cart_link').attr('title','Shopping Cart, ' + data.cart_count + items);
			} else {
				alert( "Data/Errors: cart_count = " + data.cart_count +  '\n results: ' + data.results + '\n errors: ' + data.errors );
			}
		}
	});
};

fromja.ui.open_dialog = function(myhref,modal,dlgid) {
	var dialog_opts = {maxWidth:470,maxHeight:480, height:'auto', modal:modal,
			bgiframe:true, closeOnEscape:true, autoOpen:false, dialogClass:'dlg_open',
			buttons:{'close':function() { $(this).dialog("close"); } },
			position:[240,90]
			};

	if ( myhref.charAt(0) == '#' ) {
		var dopt = dialog_opts;
		dopt['close'] = function(event, ui) {
			//$(ui).destroy();
		};
		$(myhref).dialog(dopt);
		$(myhref).dialog('open');
	} else {
		var dopt = dialog_opts;
		if (dlgid ) { dlgid = 'dialog_' + dlgid;
		} else {
			var myider = $('div[id^="dialog_"][class*="dlg"]').length;
			$(this).attr('id', 'popper_' + myider);
			dlgid = 'dialog_'+ myider;
		}

		if ( $('div[id="'+dlgid+'"]').length == 0 ) {
			$('body').append('<div class="hidden dlg" id="'+ dlgid +'"></div>');
		}
		$('#'+dlgid).html(fromja.ui.loading32);
		dopt['close'] = function(event, ui) {  };
		if ( myhref.indexOf('?')>=0 ) {
			myhref += '&'
		} else {
			myhref += '?'
		}
		myhref += 'dialog='+dlgid
		$('#'+dlgid).dialog(dialog_opts);
		$('#'+dlgid).dialog('open');
		$.ajax({
			type: "GET",
			url: myhref,
			success: function(html){
				$('#'+dlgid).html(html);
				var titler = $('div.popcontent', $('#'+dlgid));
				if (titler.length>=1) {
					$('#'+dlgid).dialog('option','title',titler.attr('title'));
				}
			},
			error : function(XMLHttpRequest, textStatus, errorThrown) {
				$('#'+dlgid).html('<div class="message"></div>');
				var error_display = $('#'+dlgid+' div.message');
				if ( errorThrown == '404' ) {
					$('#'+dlgid).dialog('option','title','File Not Found')
					fromja.ui.show_error_message(error_display,'There was an error trying to complete your request.\nThe resource you requested cannot be found.\nThe administrators have been notified. Please try again later.');
				} else { 
					$('#'+dlgid).dialog('option','title','Error Processing Request')
					fromja.ui.show_error_message(error_display, 'There was an error trying to complete your request.\nThe administrators have been notified. Please try again later.'+ textStatus + '==' + errorThrown);
				}
				
			}

		});
	}
},
fromja.ui.dialog = function(e){
	e.preventDefault();
	var me = $(this),
		modal = ( me.attr('rel').indexOf('popbox') >= 0 )?false:true;
	fromja.ui.open_dialog( me.attr('href'), modal, me.attr('id')  );
	
};
fromja.ui.dialog_close = function(d){
	$(d).dialog('close');
}
fromja.ui.jquery_icon_hover = function(e){$(this).addClass('ui-state-hover');};
fromja.ui.jquery_icon_hover_out = function(e){$(this).removeClass('ui-state-hover');};
/*	fromja.ui.enable_hideshow(jqarray)
* this routine, when passed a jquery object turns on hide/show functionality
* for each element in the array or the object itself. It is assumed that :
	* If the object has a href attribute, then it is the id of the target to 
	* hide or show
	* OR
	* the hide/show target is an element close to this one with class*=hsn 
*/
fromja.ui.enable_hideshow = function(arr, autohide) {
	arr.css({'cursor':'pointer','text-decoration':'underline'})
    .append('<span class="ui-icon ui-icon-arrowthick-1-s" style="float:right;"></span><p class="clearly"></p>')
    .click(function(e){
    e.preventDefault()
    var dd;
    if ($(this).is('[href]')) { dd = $($(this).attr('href'),$d); }
    else { dd = $(this).next('.hsn'); }
    
    if (dd.is(':visible')) {
        dd.hide();
        $('.ui-icon',this).switchClass('ui-icon-arrowthickstop-1-n','ui-icon-arrowthick-1-s','fast');
    } else {
        dd.show();
        $('.ui-icon',this).switchClass('ui-icon-arrowthick-1-s','ui-icon-arrowthickstop-1-n','fast');
    }
    }).hover(function(e){ $('.ui-state-default',this).addClass('ui-state-hover');}, 
	    function(e){ $('.ui-state-default',this).removeClass('ui-state-hover');} )
	.next('.hsn').hide();
	
};

fromja.add_tooltips = function(){
	$('a[rel*=tt]').tooltip({ showURL: 0 });
	$('a[href^="#"][rel*=tt]').tooltip({showURL: 0,  bodyHandler: function() {
	     return $($(this).attr('href')).html();
	   }
	});
	$('a[rel*=popbox]').click(fromja.ui.dialog);
	$('a[rel*=fdialog]').click(fromja.ui.dialog);
	var ttfunc = '';
	$('span.tt').tooltip({showURL: 0,  bodyHandler: function(e) {
		var v = $(this).attr('id');
		if ( v.substr(v.length -1 ,1) == '_' )
			return $('#'+v.substr(0,v.length -1 )).html();
		else 
			return v;
	   } });
	$('tr.tt td').tooltip({showURL: 0,  bodyHandler: function(e) {
		var v = $(this).parent('tr').attr('id');
		if ( v.substr(v.length -1 ,1) == '_' )
			return $('#'+v.substr(0,v.length -1 )).html();
		else 
			return v;
	   } });
	$('.ui-iholder-r').hover(fromja.ui.jquery_icon_hover, fromja.ui.jquery_icon_hover_out);
	$('.ui-iholder-l').hover(fromja.ui.jquery_icon_hover, fromja.ui.jquery_icon_hover_out);
};

fromja.calevent_month = function(e){
	e.preventDefault();
	$(this).html('<img src="/v_m/img/icons/load16.gif" width=16 height=16 border=0>');
	$(this).parents('.calendar').load($(this).attr('href'));
	return false;
};

(function($){
	$.widget("ui.dateOmatic", {

		_create:  function(){
//			var me = this.element.hide(),
//				myname =  me.attr('name');
//			$('<input type="text" id="x_vis_'+ myname +'" name="'+ myname + '_ible_x" size="20" class="centertext">')
//				.insertAfter(me)
//				.datepicker({
//					altField: '[name="' + myname +'"]',
//					altFormat: 'yy-mm-dd',
//					dateFormat: "DD, d M yy",
//				})
			$.datepicker.setDefaults( $.datepicker.regional[ "" ] );
			this.element.datepicker({dateFormat:'yy-mm-dd'})
				.datepicker('option',$.datepicker.regional[fromja.ui.display_language]);
		}
	});
})(jQuery);

fromja.editlist_row_enable = function(){
	$('.editlist li').hover(function(e) {
		$('.editacts',$(this)).toggle();
	});
};

$(document).ready(function(){
	fromja.add_tooltips();
	$('input.date').dateOmatic();
	fromja.editlist_row_enable();

/*	$('.addtocart a').click(function(e){
		e.preventDefault();
		fromja.shop.add_to_cart($(this).parent());
	});
*/
});
