/***********************************
* Prototype Extensions
************************************/
Element.addMethods({
	center: function(element, parent) {
	        var w, h, pw, ph, ol, ot;
	        var d = Element.getDimensions(element);
	        w = d.width;
	        h = d.height;
	        if (!parent) {
	                var ws = document.viewport.getDimensions();
	                var so = document.viewport.getScrollOffsets();
	                ol = so.left;
	                ot = so.top;
	                pw = document.viewport.getWidth();
	                ph = document.viewport.getHeight();
	        } else {
	                pw = parent.offsetWidth;
	                ph = parent.offsetHeight;
	        }
	        element.style.top = ((ph/2) - (h/2)) + ot + "px";
	        element.style.left = ((pw/2) - (w/2)) + ol + "px";
	}
});

/** Notification Toggle **/
// Global variable to hold the submission status portlet id since it changes for each of the 3 pages.
//var subStatusID = '';

// Event to run on load which will hide, if present, My Submission Status and Pending Approvals portlets. 
// Also sets the id in javascript for submissions status portlet and changes text to reflect the number of items pending.
/*document.observe('dom:loaded',
   function() {
   	// Prod - var pendingApp = 'p195_171342_195_171333_171333';
   	// Prod - var subStatuses = new Array('p195_171334_195_171333_171333', 'p195_171355_195_171354_171354', 'p195_171300_195_171299_171299', 'p195_171366_195_171365_171365');
   	var pendingApp = 'p33_217340_33_212709_212709';
   	var subStatuses = new Array('p33_217334_33_212709_212709', 'p33_217360_33_212734_212734', 'p33_217364_33_212745_212745', 'p33_217326_33_212675_212675');
   	var count = 0;
   	if($(pendingApp)){
	   	toggleNotification(pendingApp);
	   	var pendingAppTBody = $(pendingApp).down('tbody', 2);
	   	count = pendingAppTBody.select('tr').length;
	   	if(count > 0)
	   		$('pending_approvals_toggle').update('Pending Approvals (' + count + ')');
	   }		
	   	
	   for (var i=0; i<subStatuses.length; i++){
	   	if($(subStatuses[i])){
	   		toggleNotification(subStatuses[i]);
	   		subStatusID = subStatuses[i];
	   		$('submission_status_toggle').onclick = function(){toggleNotification(subStatusID); return false;};
		   	var subStatusTBody = $(subStatuses[i]).down('tbody', 2);
		   	count = subStatusTBody.select('tr').length;
		   	if(count > 0)
		   		$('submission_status_toggle').update('My Submission Status (' + count + ')');
	   	}
	   }
   	
   }
 );

// Toggles the visibility of the portlet
function toggleNotification(id){
	$(id).up('div', 2).toggle();
}*/

function checkSpecialChars(field) {   
   var regPattern = new RegExp("[\x00-\x1F]|[\x21-\x2F]|[\x3A-\x40]|[\x5B-\x60]|[\x7B-\x7E]");
   var field_value = field.value;
   if (regPattern.test(field_value)){
     position = field_value.search(regPattern);
     window.alert("The character " + field_value.substring(position, position + 1) + " at position " + (position + 1) + " is a special character which is not allowed. Please use only alphanumeric values.");
     //field.value='';
     field.focus();
     field.select();
   }      
}

function highlight_char(orig_string, position) {
  highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
  highlightEndTag = "</font>";
  highlightedText = orig_string.substring(0, position - 1) + highlightStartTag + orig_string.substring(position, position + 1) + highlightEndTag + orig_string.substring(position + 2); 
  return highlightedText;
}

/********************************
* Base Ajax Popup Class
********************************/
var AjaxPopup = Class.create({
	initialize: function(id, title) {
		this.id = id;
		this.title = title;
		this.centered = true;
		this.scrollCentered = true;
		this.center = function(){try{$(id).center();}catch(err){}};
		new Draggable(id,{revert:false, handle:'head', starteffect:false, endeffect:false});
	},
	show: function() {
		var element = $(this.id);
		element.select('.head h2')[0].update(this.title);
		if(this.centered)
			element.center();
		if(this.scrollCentered)
		 	Event.observe(window, 'scroll', this.center);
	 	element.show();
	},
	hide: function(){
		$(this.id).hide();
		if(this.scrollCentered){
			Event.stopObserving(window, 'scroll', this.center);
		}
	}
}); 

/********************************
* removeUserFromGroup Ajax Popup
********************************/
var RemoveUserFromGroup = Class.create(AjaxPopup, {
	show: function($super, groupid, title) {
		this.title = 'Users of Group <br />' + title;
		$super();
		this.getUsers(groupid); 
	},
	getUsers: function (groupid) {
		new Ajax.Updater(
			'content_removeUserFromGroup', 
			'/portal/pls/portal/CUSTOM_PORTLETS_SCHEMA.STUDY_ACCESS_UTL.getUsersForGroup', 
			{
				method: 'get', 
				parameters: {groupid: groupid}, 
				onFailure: function(transport){alert(transport.status);}
			});
	},
	submit: function(username, group_id) {
		var classref = this;
		new Ajax.Request(
			'/portal/pls/portal/CUSTOM_PORTLETS_SCHEMA.STUDY_ACCESS_UTL.removeUserFromGroup', 
			{
				method: 'get', 
				parameters: {user_id: username, group_id: group_id}, 
				onFailure: function(transport){alert(transport.status);},
				onSuccess: function(transport){
						        var response = transport.responseText;
						        var update = new Array();
						        if(response.indexOf('|') != -1) {
						            update = response.split('|');
						            classref.getUsers(update[0]);
						        }else
						        {alert (response);}
								}
		});
	}
});

var removeUserFromGroup;
document.observe('dom:loaded',
   function() {
   	if($('removeUserFromGroup'))
			removeUserFromGroup = new RemoveUserFromGroup('removeUserFromGroup', 'removeUserFromGroup');
	}
);

/******************************************
* Login Form
******************************************/
function checkLoginForm() { 
        var un = $('ssousername');
        var pass = $('password');
        if(un.value.length == 0) { 
          $('loginHome').down('div.errMsg').update('Please provide your user name.');
          un.addClassName('error');
          un.previous('label').addClassName('error');
          un.focus();
          new Field.Observer('ssousername', 0.3, function(){
            if(clearLoginError(un))
              this.stop();
          });
          return false; 
        } 
        else if (pass.value.length == 0) { 
          $('loginHome').down('div.errMsg').update('Please provide your password.');
          pass.addClassName('error');
          pass.previous('label').addClassName('error');
          pass.focus();
          new Field.Observer('password', 0.3, function(){
            if(clearLoginError(pass))
              this.stop();
          });
          return false; 
        } 
        else { 
          $('Login').disable();
          $('Login').value = 'Please wait...';
          return true; 
        }
      }
      
      function clearLoginError(el){
        el = $(el);
        if (el.value.length != 0) {
          $('loginHome').down('div.errMsg').update('&nbsp;');
          el.removeClassName('error');
          el.previous('label').removeClassName('error');
          return true;
        }else
          return false;
      }
/******************
* Change Language
******************/  
function changeLanguage(httpL, nlsL, terr){
	var domain = document.domain;
	var protocol = (("https:" == document.location.protocol) ? "https://" : "http://");
	var langStub = 'p_http_language='+httpL+'&p_nls_language='+nlsL+'&p_nls_territory='+escape(terr);
	var portalUrl = protocol + domain + '/portal/pls/portal/PORTAL.wwctx_app_language.set_language?' + langStub + '&p_requested_url=' + escape(window.location.href);
	if (domain.indexOf('test') != -1)
		window.location = 'https://logintest.praintl.com/pls/orasso/orasso.wwctx_app_language.set_language?' + langStub + '&p_requested_url=' + escape(portalUrl)
	else
		window.location = 'https://login.praintl.com/pls/orasso/orasso.wwctx_app_language.set_language?' + langStub + '&p_requested_url=' + escape(portalUrl)
	return false;
}