/******
	@Copyright PolarCode Oy 
***/

function common(){
	var cfg = {
		bLoader: 		false, //is loader open..? 
		common_dialog: null
	};

	/** Displays and hides loading image for ajax querys.. **/
	this.loading = function(strCustomMessage){if(cfg.bLoader){jQuery.unblockUI();cfg.bLoader = false;}else{jQuery.blockUI((typeof strCustomMessage == 'undefined') ? '' : { message: strCustomMessage});cfg.bLoader = true;}}	
	
	/** END **/
	
	/** INFO; SUCCESS AND ERROR MESSAGES strType: "error", "success" or "info" **/
	this.showMessage = function(strType, strMessage) {
	$j("#"+strType+"MessageHtml").html(strMessage);
	$j("#"+strType+"MessageDiv").show();
	location.hash = "#messages";
	}
	this.hideMessage = function(strType) {$j("#"+strType+"MessageHtml").html("");$j("#"+strType+"MessageDiv").hide();}
	/** END ***/
	
	/*** roletable row & column selectors **/
	this.roletableCheckColums = function(obj,col){$j(obj).parent().parent().parent().parent().parent().parent().parent().find(('td:nth-child('+col+')')).find('input').attr('checked',($j(obj).parent().parent().parent().parent().parent().parent().parent().find(('td:nth-child('+col+')')).find('input').attr('checked')? '' : 'true'));}
	this.roletableCheckRow = function(obj){$j(obj).parent().find('input').attr('checked',($j(obj).parent().find('input').attr('checked') ? '' : 'true'));}
	this.roletableBreakInheriting = function (obj){$j(obj).parent().parent().parent().find('input').attr('disabled','');$j(obj).parent().children().each(function(i, o){$j(o).toggle();});}
	this.shrole_table = function(obj,id) {
		if($j(obj).attr("src").indexOf("s_right") !== -1){
			//show existing structure rows
			if($j(".role_parent_"+id).length > 0){$j(obj).attr("src","images/navigation/s_down.gif");$j(".role_parent_"+id).show();}
		}else{$j(obj).attr("src","images/navigation/s_right.gif");var $tr = $j(obj).parent().parent().next();var level = parseInt($tr.prev().attr('level'));
			while($tr.attr('level') > level){
				$tr.find('td:first > img').attr("src","images/navigation/s_right.gif");$tr = $tr.hide().next();
			}
		}	
	};
	/** END ***/
	
	/** LOCALE **/
	this.getLocale = function(tagname,str){	return( (typeof tagname == "undefined" ? "locale missing: ("+str+")" : tagname ));}
	/** END **/
	
	this.open_common_dialog = function(id,css){
			if(cfg.common_dialog != null)
				this.close_common_dialog();
			
			cfg.common_dialog = $j("#"+id).modal({
				onClose: function(dialog){
					dialog.data.fadeOut('fast', function () {
						dialog.container.hide('fast', function () {
							$j.modal.close();
						});
					});
				},
				containerCss: (typeof css == 'string' || typeof css == 'object') ? css : {
					"width"	:	"300px",
					"heigth":	"300px"
				}
			});

	}
	
	this.close_common_dialog = function(id){
			cfg.common_dialog.close();	
			cfg.common_dialog = null;	
			
			if(typeof id == "string"){
				$j("#"+id).remove();
			}
	}
	
	this.open_info_dialog = function(strUrl,strElementId,objEvent,b_hideCross){
		//get the html content
		var html = "";
		if(strUrl != ""){
			$j.ajax({
				async:false,
				url: strUrl,
				type: "GET",
				dataType: "html",
		  		success: function(response){
		  			html = response;
		  		}
			});
		}
		else if(strElementId != ""){
			html = $j("#"+strElementId).html();
		}
		
		//remove common_info_dialog
		$j("#common_info_dialog").remove();
		
		//create a new common_info_dialog
		$j("#body").append($j("<table cellpadding='0' cellspacing='0' id='common_info_dialog' class='common_info_dialog'><tr><td>" + (b_hideCross === true ? "" : "<img src='images/common/cross.png' style='float:right;' class='hyperlink' onclick='Common.close_info_dialog();' />") +html+"</td></tr></table>"));
	
		//get the position for the div
		$j('#common_info_dialog').css({top:parseFloat(objEvent.clientY),left:parseFloat(objEvent.clientX)}).show();
	}
	
	this.close_info_dialog = function(){
		$j("#common_info_dialog").remove();
	}
	
	this.getGetVar = function(name) {
		var q = document.location.search;
		var i = q.indexOf(name + '=');
		
		if (i == -1) {
			return false;
		}
		
		var r = q.substr(i + name.length + 1, q.length - i - name.length - 1);
		
		i = r.indexOf('&');
		
		if (i != -1) {
			r = r.substr(0, i);
		}
		
		return r.replace(/\+/g, ' ');
	}
	
	this.createCookie = function(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	this.readCookie = function(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	this.eraseCookie = function(name) {
		createCookie(name,"",-1);
	}
}

var Common = new common;
;(function($){if(/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery)||/^1.1/.test($.fn.jquery)){alert('blockUI requires jQuery v1.2.3 or later!  You are using v'+$.fn.jquery);return}$.blockUI=function(a){install(window,a)};$.unblockUI=function(a){remove(window,a)};$.fn.block=function(a){return this.each(function(){if($.css(this,'position')=='static')this.style.position='relative';if($.browser.msie)this.style.zoom=1;install(this,a)})};$.fn.unblock=function(a){return this.each(function(){remove(this,a)})};$.blockUI.version=2.09;$.blockUI.defaults={message:"<h3>"+Common.getLocale(objLC.js_loading,"js_loading")+"</h3><br><img src='images/common/ajax-loader_medium.gif'/>",css:{padding:10,margin:0,width:'30%',top:'40%',left:'35%',textAlign:'center',color:'#000',border:'1px solid #333',backgroundColor:'#fff',cursor:'wait'},overlayCSS:{backgroundColor:'#000',opacity:'0.4'},baseZ:1000,centerX:true,centerY:true,allowBodyStretch:true,constrainTabKey:true,fadeOut:400,focusInput:true,applyPlatformOpacityRules:true,onUnblock:null,quirksmodeOffsetHack:4};var q=$.browser.msie&&/MSIE 6.0/.test(navigator.userAgent);var r=null;var u=[];function install(a,b){var c=(a==window);var d=b&&b.message!==undefined?b.message:undefined;b=$.extend({},$.blockUI.defaults,b||{});b.overlayCSS=$.extend({},$.blockUI.defaults.overlayCSS,b.overlayCSS||{});var e=$.extend({},$.blockUI.defaults.css,b.css||{});d=d===undefined?b.message:d;if(c&&r)remove(window,{fadeOut:0});if(d&&typeof d!='string'&&(d.parentNode||d.jquery)){var f=d.jquery?d[0]:d;var g={};$(a).data('blockUI.history',g);g.el=f;g.parent=f.parentNode;g.display=f.style.display;g.position=f.style.position;g.parent.removeChild(f)}var z=b.baseZ;var h=($.browser.msie)?$('<iframe class="blockUI" style="z-index:'+z++ +';border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="javascript:false;"></iframe>'):$('<div class="blockUI" style="display:none"></div>');var j=$('<div class="blockUI blockOverlay" style="z-index:'+z++ +';cursor:wait;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');var k=c?$('<div class="blockUI blockMsg blockPage" style="z-index:'+z+';position:fixed"></div>'):$('<div class="blockUI blockMsg blockElement" style="z-index:'+z+';display:none;position:absolute"></div>');if(d)k.css(e);if(!b.applyPlatformOpacityRules||!($.browser.mozilla&&/Linux/.test(navigator.platform)))j.css(b.overlayCSS);j.css('position',c?'fixed':'absolute');if($.browser.msie)h.css('opacity','0.0');$([h[0],j[0],k[0]]).appendTo(c?'body':a);var m=$.browser.msie&&(!$.boxModel||$('object,embed',c?null:a).length>0);if(q||m){if(c&&b.allowBodyStretch&&$.boxModel)$('html,body').css('height','100%');if((q||!$.boxModel)&&!c){var t=sz(a,'borderTopWidth'),l=sz(a,'borderLeftWidth');var n=t?'(0 - '+t+')':0;var p=l?'(0 - '+l+')':0}$.each([h,j,k],function(i,o){var s=o[0].style;s.position='absolute';if(i<2){c?s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+b.quirksmodeOffsetHack+') + "px"'):s.setExpression('height','this.parentNode.offsetHeight + "px"');c?s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'):s.setExpression('width','this.parentNode.offsetWidth + "px"');if(p)s.setExpression('left',p);if(n)s.setExpression('top',n)}else if(b.centerY){if(c)s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');s.marginTop=0}})}k.append(d).show();if(d&&(d.jquery||d.nodeType))$(d).show();bind(1,a,b);if(c){r=k[0];u=$(':input:enabled:visible',r);if(b.focusInput)setTimeout(focus,20)}else center(k[0],b.centerX,b.centerY)};function remove(a,b){var c=a==window;var d=$(a).data('blockUI.history');b=$.extend({},$.blockUI.defaults,b||{});bind(0,a,b);var e=c?$('body').children().filter('.blockUI'):$('.blockUI',a);if(c)r=u=null;if(b.fadeOut){e.fadeOut(b.fadeOut);setTimeout(function(){reset(e,d,b,a)},b.fadeOut)}else reset(e,d,b,a)};function reset(a,b,c,d){a.each(function(i,o){if(this.parentNode)this.parentNode.removeChild(this)});if(b&&b.el){b.el.style.display=b.display;b.el.style.position=b.position;b.parent.appendChild(b.el);$(b.el).removeData('blockUI.history')}if(typeof c.onUnblock=='function')c.onUnblock(d,c)};function bind(b,a,c){var d=a==window,$el=$(a);if(!b&&(d&&!r||!d&&!$el.data('blockUI.isBlocked')))return;if(!d)$el.data('blockUI.isBlocked',b);var e='mousedown mouseup keydown keypress click';b?$(document).bind(e,c,handler):$(document).unbind(e,handler)};function handler(e){if(e.keyCode&&e.keyCode==9){if(r&&e.data.constrainTabKey){var a=u;var b=!e.shiftKey&&e.target==a[a.length-1];var c=e.shiftKey&&e.target==a[0];if(b||c){setTimeout(function(){focus(c)},10);return false}}}if($(e.target).parents('div.blockMsg').length>0)return true;return $(e.target).parents().children().filter('div.blockUI').length==0};function focus(a){if(!u)return;var e=u[a===true?u.length-1:0];if(e)e.focus()};function center(a,x,y){var p=a.parentNode,s=a.style;var l=((p.offsetWidth-a.offsetWidth)/2)-sz(p,'borderLeftWidth');var t=((p.offsetHeight-a.offsetHeight)/2)-sz(p,'borderTopWidth');if(x)s.left=l>0?(l+'px'):'0';if(y)s.top=t>0?(t+'px'):'0'};function sz(a,p){return parseInt($.css(a,p))||0}})(jQuery);