
	$(document).ready( function() { $('#jsrequired').hide(); $('#jscontent').show();  CLoadNotify(); } );



// common editing tabs utilites

function changeTabs(id) {
	// allow switching tabs only if the current tab has valid input:
	valid = true;

	if( typeof g_validate_tabs != "undefined" ) {
		$.each(g_validate_tabs, function(i,v) {
			if(v == g_index) {
				$("#secureEditForm" + g_index).validate();
				if( ! $("#secureEditForm" + g_index).valid() ) {
					valid = false;
				}
			}
		});
	}

	if( ! valid ) { return false; }

	g_index = id;
	
	// we suppose tab switchers are A elements with id 'tablinkN' inside DIV elemend with id 'tabnav'
	$('#tabnav a[id^="tablink"]').each(function(i) {
		$(this).removeClass('active');
	});
	// we suppose tabs are DIV elements with id 'tabN' inside DIV elemend with id 'tabcontainer'
	$('#tabcontainer div[id^="tab"]').each(function(i) {
		$(this).hide();
	});
	
	$('#tablink'+id).addClass('active');
	$('#tab'+id).show();
	
	if( 'tablink' + id ==  $('#tabnav a[id^="tablink"]:first').attr('id') ) { $('#backbutton').hide(); } else { $('#backbutton').show(); }
	if( 'tablink' + id == $('#tabnav a[id^="tablink"]:last').attr('id') ) { $('#nextbutton').hide(); } else { $('#nextbutton').show(); }
}

function goBack() {
	switchPreviousNextTab('previous');
}

function goNext() {
	switchPreviousNextTab('next');
}

function switchPreviousNextTab(direction) {
	if (direction == 'next') {
		var child = 'last';
	} else {
		var child = 'first';
	}
	var tabNum = 0;
	$('#tabcontainer div[id^="tab"]').each(function(i) {
		if( $(this).is(':visible') && $(this).attr('id') != $('#tabcontainer div[id^="tab"]:'+child).attr('id') ) {
			if (direction == 'next') {
				var tabNum = $(this).attr('id').replace('tab','');
				tabNum++;
			} else {
				var tabNum = $(this).attr('id').replace('tab','');
				tabNum--;
			}
			changeTabs(tabNum);
			return false;
		}
	});
}

	function str2int(str) {
		var int = '';
		str = String(str);
		for (i = 0; i < str.length; i++) {
			if (!isNaN(parseInt(str[i]))) {
				int += str[i];
			}
		}
		return parseInt(int);
	}

	
function displayPegasusNotification(mode, message) {
	if (mode == 'error') { var classname = 'pegasus_error'; }
	else { var classname = 'pegasus_message'; }
	
	if ($('#resp').length < 1 ) {
		$('#submenu').after('<div class="'+classname+'" id="resp" style="display:none;">'+message+'</div>');
	} else {
		$('#resp').fadeOut();
		$('#resp').attr('class', classname);
		$('#resp').html(message);
	}
	$('#resp').fadeIn();
}

	function validateForm() {
		var return_var = true;
		if ($('#tabcontainer div[id^="tab"]').length < 1) {
			return true;
		}
		$('#tabcontainer div[id^="tab"]').each(function(i) {
			var res = validateTab(i+1);
			if (!res) {
				changeTabs(i+1);
				return_var = false;
			}
		});
		return return_var;
	}
	
	// validates a certain tab form
	// param:
	// (int) form/tab number
	// or
	// (string) form id attribute value (not currently used)
	function validateTab(tabID) {
		if ($('#' + tabID).length > 0) {
		// id attribute value passed
			var formID = '#' + tabID;
			var tabN = str2int(tabID);
		} else {
		// number passed
			var formID = "#secureEditForm" + tabID;
			var tabN = tabID;
		}
		if (validate_tab == undefined) {
			return true;
		}
		if (validate_tab[tabN] == undefined) {
			return true;
		}
		
		validator = $(formID).validate(validate_tab[tabN]);
		if($(formID).valid()) {
			return true;
		} else {
			$('#tablink'+tabN).fadeOut('slow', function() {$('#tablink'+tabN).fadeIn('slow')});
			return false;
		}
	}

function secureEditFormSubmit(noredirect) {
	var redirect_string = '';
	if (noredirect != null) {
		redirect_string = '&noredirect=true';
		nonredirect = 1;
	} else {
		nonredirect = 0;
	}

	//if (!validateForm()) {
	//	return false;
	//}
	
	var query_str = '';

	$('[id^="secureCommonEditForm"]').each(function(i) {
		query_str += $(this).serialize() + '&';
	});
	$('[id^="secureEditForm"]').each(function(i) {
		query_str += $(this).serialize() + '&';
	});

	$.post(
		$('#secureEditForm').attr('action'),
		query_str + redirect_string,
		function (html) {
			$('#respContainer').remove();
			if (html != '') {
			$('body').append('<div id="respContainer" style="display:none;">'+html+'</div>');
				if ($('#respContainer #respCode').html() == 'success') {
				    if (nonredirect) {
					    displayPegasusNotification('warning', $('#respContainer #respMessage').html())
				    } else {
					    if (formReturnUrl == '') {
						    returnUrlHandler();
					    } else {
						    window.location = formReturnUrl;
					    }
				    }
				} else {
					displayPegasusNotification('error', $('#respContainer #respMessage').html())
				}
			}
			else {
				alert('Server returned an invalid response');
			}
		}
		
		
	);
}

// UI

var sdUIwindowWidth = '';
var sdUIwindowHeight = '';
var sdUIquickAccessContainer = 'sdUIquickAccessContainer';

var sdUIquickAccessContainerClass = 'sdUIquickAccessContainer';
var sdUIquickAccessContainerClassHide = sdUIquickAccessContainerClass + 'Hide';

var sdUIeventX = 0;
var sdUIeventY = 0;
var sdUIevent = '';
var sdUIdocWidth = null;
var sdUIdocHeight = null;

function sdUIinit() {
	sdUIwindowWidth = $(window).width();;
	sdUIwindowHeight = $(window).height();
}

function sdUIeventClick(event) {
	sdUIevent = event;
	sdUIeventX = event.pageX;
	sdUIeventY = event.pageY;
}

function sdUIclickContainerLoad(containerDivName, uri, callback) {
	var containerDiv = sdUIquickAccessContainer;
	var containerDivHide = containerDiv + 'Hide';

	$('#' + containerDivHide).remove();
	$('#' + containerDivName).remove();
	$('body').append('<div id="' + containerDivHide + '" class="' + sdUIquickAccessContainerClassHide + '"></div>');
	
	$('#' + containerDivHide).load(uri, function(){
		sdUIclickContainerCloneSetPosition(containerDivName, sdUIevent.pageX, sdUIevent.pageY);
		$('#' + containerDivName).fadeIn(400, callback);
	});
	return false;
}

function sdUIclickContainerCloneSetPosition(containerDivName, x, y) {
	var containerDiv = sdUIquickAccessContainer;
	var containerDivHide = containerDiv + 'Hide';
	if (sdUIdocWidth == null) sdUIdocWidth = $(document).width();
	if (sdUIdocHeight == null) sdUIdocHeight = $(document).height();
	
	var width = $('#' + containerDivHide).width();
	var height = $('#' + containerDivHide).height();

	newX = 0;
	newY = 0;

	if (sdUIdocWidth > width+20) {
		if (sdUIdocWidth < ( x+width+20 )) {
			newX = sdUIdocWidth - width - 20;
		} else {
			newX = x;
		}
	}

	if (sdUIdocHeight > height+20) {
		if (sdUIdocHeight < ( y+height+20 )) {
			newY = sdUIdocHeight - height - 20;
		} else {
			newY= y;
		}
	}

	$('#' + containerDiv).remove();
	$('body').append('<div id="' + containerDiv + '" class="' + sdUIquickAccessContainerClass + '"></div>');
	$('#' + containerDiv).css('top', newY);
	$('#' + containerDiv).css('left', newX);
	$('#' + containerDiv).html($('#' + containerDivHide).html());
	
	$('#' + containerDiv).attr('id', containerDivName);
	$('#' + containerDivHide).remove();
	$('#' + containerDivName).draggable();
}

function sdUIclickContainerRemove(containerDiv, callback) {
	$('#' + containerDiv).fadeOut(400, callback);
	$('#' + containerDiv).remove();
}

// UI CENTERING
function _SDUiBindCentering(id) {
		$(window).scroll(function(){_SDUiCenterBlock(id);});
		$(window).resize(function(){sdUIinit();_SDUiCenterBlock(id);});
}

function _SDUiCenterBlock(id) {
		id = '#' + id;
		var width = $(id).width();
		var height = $(id).height();
		var top = 0;
		var left = 0;

		if (sdUIwindowWidth > width) {
				left = (sdUIwindowWidth - width) / 2  + $(document).scrollLeft(); 
		}

		if (sdUIwindowHeight > height) {
				top = (sdUIwindowHeight - height) / 2  + $(document).scrollTop(); 
		}
		$(id).css('top', top);
		$(id).css('left', left);
}

// adds slashes to be make a string compatible with jQuery selectors format of not safe characters (\\[)
function addJslashes(str) {
	str = str.replace(/\[/g, '\\[');
	str = str.replace(/\]/g, '\\]');
	str = str.replace(/\`/g, '\\`');
	str = str.replace(/\'/g, '\\\'');
	str = str.replace(/\./g, '\\.');
	return(str);
}

function stripJslashes(str) {
	str = str.replace(/\\\[/g,'\[');
	str = str.replace(/\\\]/g,'\]');
	str = str.replace(/\\`/g,'\`');
	str = str.replace(/\\\'/g,'\'');
	str = str.replace(/\\./g, "\.");
	return str;
}

// parses string, returns value between "[" and "]" (for non-numeric indexes)
function parseArrIndex(str) {
	str = stripJslashes(str);
	str = str.replace(/(.*)\[/g, "");
	str = str.replace(/\](.*)/g, "");
	return str;
}

// MODAL ALERT
		var layOverlay = '_dialogOverlay';
		var layBox = '_dialogBox';
		var layBoxTitle = '_dialogBoxTitle';
		var layBoxTitleText = '_dialogBoxTitleText';
		var layBoxBody = '_dialogBoxBody';
		var layBoxButtons = '_dialogBoxButtons';
		var layBoxButtonCancel = '_dialogBoxCancelButton';
		var layBoxButtonConfirm = '_dialogBoxConfirmButton';
		var layBoxButtonDismiss = '_dialogBoxConfirmButton';

function _confirm(title, msg, confirmCallback, cancelCallback, confirmText, cancelText) {
		sdUIinit();
		_dialogOverlay();
		_dialogBoxInit();
		_dialogBoxTitle(title);
		_dialogBoxText(msg);
		_dialogBoxConfirmButtons(confirmText, cancelText, confirmCallback, cancelCallback);
		_dialogBoxUiInit();		
}
function _alert(title, msg, dismissCallback, dismissText) {
		sdUIinit();
		_dialogOverlay();
		_dialogBoxInit();
		_dialogBoxTitle(title);
		_dialogBoxText(msg);
		_dialogBoxAlertButtons(dismissText, dismissCallback);
		_dialogBoxUiInit();		
}


function _dialogBoxConfirmButtons(confirmText, cancelText, confirmCallback, cancelCallback) {
		if (confirmText == null || confirmText == 'undefined') confirmText = 'OK';
		if (cancelText == null || cancelText == 'undefined') cancelText = 'Cancel';
		$('#'+layBoxButtons).append('<div style="float:left;"><div class="btn _dialogBoxButton" id="'+layBoxButtonCancel+'"><a style="clear:both;font-size:12px;padding:4px;" href="javascript:;"><img style="float:left;" src="/pegasus/images/icon/16x16/cancel.png" alt="Cancel" />'+cancelText+'</a></div> </div>');
		$('#'+layBoxButtons).append('<div style="float:right;"> <div class="btn _dialogBoxButton" id="'+layBoxButtonConfirm+'"><a style="clear:both;font-size:12px;padding:4px;" href="javascript:;"><img style="float:left;" src="/pegasus/images/icon/16x16/check.png" alt="OK" />'+confirmText+'</a></div> </div>');
		$('#'+layBoxButtons).append('<div style="clear:both;"></div>');
		if ($.isFunction(cancelCallback) == true) { $('#'+layBoxButtonCancel).click(cancelCallback); }
		else {$('#'+layBoxButtonCancel).click(_dialogBoxCancel);}
		if ($.isFunction(confirmCallback)) $('#'+layBoxButtonConfirm).click(confirmCallback);
		else {$('#'+layBoxButtonConfirm).click(_dialogBoxCancel);}
		

		$(document).bind('keypress._dialog', function(event) {
				if (event.keyCode == '9') {
						if ($('#'+layBoxButtonConfirm + ' a').attr('name') == '1') {
								$('#'+layBoxButtonConfirm + ' a').attr('name', '0');
								$('#'+layBoxButtonCancel + ' a').attr('name', '1');
								$('#'+layBoxButtonConfirm + ' a').parent().attr('className', 'btn _dialogBoxButton');
								$('#'+layBoxButtonCancel + ' a').parent().attr('className', 'btn _dialogBoxButtonActive');
						} else {
								$('#'+layBoxButtonCancel + ' a').attr('name', '0');
								$('#'+layBoxButtonConfirm + ' a').attr('name', '1');
								$('#'+layBoxButtonCancel + ' a').parent().attr('className', 'btn _dialogBoxButton');
								$('#'+layBoxButtonConfirm + ' a').parent().attr('className', 'btn _dialogBoxButtonActive');
						}
						return false;
				} else if (event.keyCode == '27') {
						$('#'+layBoxButtonCancel).trigger('click');
				} else if (event.keyCode == '13' || event.keyCode == '8' || event.keyCode == '0' || event.keyCode == '32') {
						if ($('#'+layBoxButtonConfirm + ' a').attr('name') == '1') {
								$('#'+layBoxButtonConfirm).trigger('click');
						} else {
								$('#'+layBoxButtonCancel).trigger('click');
						}
				}
		});

		$('#'+layBoxButtonConfirm + ' a').parent().attr('className', 'btn _dialogBoxButtonActive');
		$('#'+layBoxButtonConfirm + ' a').attr('name', 1);

				
}

function _dialogBoxAlertButtons(dismissText, dismissCallback) {
		if (dismissText == null || dismissText == 'undefined') dismissText = 'OK';
		$('#'+layBoxButtons).append('<div style="float:right;"> <div class="btn _dialogBoxButtonActive" style="width:150px;clear:both;" id="'+layBoxButtonDismiss+'"><a style="clear:both;font-size:12px;padding:4px;" href="javascript:;"><img style="float:left;" src="/pegasus/images/icon/16x16/check.png" alt="OK" />'+dismissText+'</a></div> </div>');
		$('#'+layBoxButtons).append('<div style="clear:both;"></div>');
		if ($.isFunction(dismissCallback) == true) { $('#'+layBoxButtonDismiss).click(dismissCallback); }
		else {$('#'+layBoxButtonDismiss).click(_dialogBoxCancel);}
		
		$('#'+layBoxButtonDismiss).focus();
		$(document).bind('keypress._dialog', function(event) {
				if (event.keyCode == '13' || event.keyCode == '27' || event.keyCode == '8' || event.keyCode == '0' || event.keyCode == '32') {
						$('#'+layBoxButtonDismiss).trigger('click');
						return false;
				} else if (event.keyCode == '9') {
						return false;
				}
		});
		
}


function _dialogBoxUiInit() {
		$('#'+layBox).css('top', 100);
		$('#'+layBox).css('left', 100);
		
		_SDUiCenterBlock(layBox);
		_SDUiBindCentering(layBox);
		$('#'+layBox).fadeIn();
		
		$('#'+layBox).draggable({handle : '#'+layBoxTitle, cursor: "move", opacity: 0.60});
}




function _dialogBoxInit() {
		$('#'+layBox).remove();
		$('body').append('<div id="'+layBox+'"></div>');
		$('#'+layBox).append('<div id="'+layBoxTitle+'"><div id="'+layBoxTitleText+'"></div></div>');
		$('#'+layBox).append('<div id="'+layBoxBody+'"></div>');
		$('#'+layBox).append('<div id="'+layBoxButtons+'"></div>');
}

function _dialogBoxTitle(text, icon) {
		if (text == null || text == '') text = 'System Message'; 
		if (icon != null) { $('#'+layBoxTitleText).css('background-image', icon); }
		$('#'+layBoxTitleText).html(text);
}
function _dialogBoxText(text) {
		$('#'+layBoxBody).html(text);
}

function _dialogBoxCancel() {
		$(document).unbind('keypress._dialog');
		$('#'+layBox).fadeOut();
		$('#'+layOverlay).fadeOut();
		$('#'+layBox).remove();
		$('#'+layOverlay).remove();
}

function _dialogOverlay() {
		$('#'+layOverlay).remove();
		$('body').append('<div id="'+layOverlay+'"></div>');
		$('#'+layOverlay).css('width', $(document).width());
		$('#'+layOverlay).css('height', $(document).height());
		$('#'+layOverlay).css('top', 0);
		$('#'+layOverlay).css('left', 0);
		$('#'+layOverlay).show();
		$('#'+layOverlay).fadeIn();
}

function resetForm(id) {
	$('#'+id).each(function(){this.reset();});	
}