checkUncheckAll=function(masterObj,name,className)
{
	var e=document.getElementsByName(name);
	for(var i=0;i<e.length;i++)
	{
		if(e[i].type.toLowerCase() == 'checkbox' && e[i].className==className) 
		{
			e[i].checked = masterObj.checked;
		}
	}
}
function spamProtector(chars){
	function merge(c2){
		var s = [];
		for(var i=0; i < c2.length; i++ ){
			s[i] = String.fromCharCode(c2[i]);
		}
		return s.join("");
	}
	var s2 = merge(chars);
	document.write("<"+"a hr"+"ef=\"ma"+"ilt"+"o:"+s2+"\">"+s2+"</"+"a"+">");
}
function doCenter(id) {
	isIE = navigator.userAgent.toLowerCase().indexOf("msie") >= 0;
	el = document.getElementById(id);
	var top = f_scrollTop() + ( (f_clientHeight() - Element.getHeight(id)) / 2 );
	var wide = (f_clientWidth()/2) - (Element.getWidth(id)/2);
	//alert(id)
	el.style.top="" + top + "px";	
	el.style.left="" + wide + "px";
}
function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
function closeRightsWindow(target)
{
	var _tmpTarget = target || 'accessRightsWindowDiv_Mail';
	Effect.Fade(_tmpTarget)
}
function setRights(id, target)
{
	var _tmpTarget = _prepWinForRestrictions(id, target)
	loadAjax('/user/restrictions/load.do?view=portlet&id='+id,_tmpTarget);
}
function setVisibility(id, target)
{
	var _tmpTarget = _prepWinForRestrictions(id, target)
	loadAjax('/user/restrictions/load.do?view=visibility&id='+id,_tmpTarget);
}
function inviteForm(id, target)
{
	var _tmpTarget = _prepWinForRestrictions(id, target)
	loadAjax('/user/accessiblebyitem/invites.do?restrictionsid='+id,_tmpTarget);
}
function _prepWinForRestrictions(id, target)
{
	var _tmpTarget = target || 'accessRightsWindowDiv';
	if(_tmpTarget == 'accessRightsWindowDiv')
	{
		if(!$('accessRightsWindowDiv')){
			var div = document.createElement('div');
			div.id='accessRightsWindowDiv_Mail';
			div.className = 'floatingWindow';
			div.style.height= '400px';
			var body = document.getElementsByTagName('body')[0];
			body.appendChild(div);
			
			var div1 = document.createElement('div');
			div1.id='accessRightsWindowDiv_close';
			div1.className='floatingWindowClose';
			div.appendChild(div1);
			div1.innerHTML="<a style=\"color:Yellow\" href=\"javascript: toggleFine('accessRightsWindowDiv_Mail')\">Close this window</a>&nbsp;";
			
			var div2 = document.createElement('div');
			div2.id='accessRightsWindowDiv';
			div2.className='floatingWindowContent';		
			div.appendChild(div2);
			doCenter(div.id);
		}
		else
		{
			doCenter('accessRightsWindowDiv_Mail');
			Element.show('accessRightsWindowDiv_Mail');
		}	
		return _tmpTarget;
	}
}
function showHelp(url){
	//check if div exists
	var helpdiv = $('helpdiv');
	if(helpdiv){
		//load contents into existing div
		var helpdivContent = Element.childElements(helpdiv)[1];
		helpdivContent.innerHTML = url;
		Element.show(helpdiv);
	}
	else{//create help div
		helpdiv = new Element('div',{
			id:'helpdiv',
			className:'floatingWindow',
			style:'width:600px'
		});
		
		var helpdivTop = new Element('div');
		
		var helpdivCloseLink = new Element('a');
		helpdivCloseLink.innerHTML = "Close";
		Element.setStyle(helpdivCloseLink,{
			cursor:'pointer'
		});
		
		Event.observe(helpdivCloseLink,'click',
			function(e){
				Element.toggle(helpdiv);
			}
		);
		
		helpdivTop.appendChild(helpdivCloseLink)
		helpdiv.appendChild(helpdivTop);
		
		var helpdivContent = new Element('div');
		helpdivContent.innerHTML = url;
		helpdiv.appendChild(helpdivContent);
		
		var body = document.getElementsByTagName('body')[0];
		body.appendChild(helpdiv);
		
		Element.show(helpdiv);
		
		Element.setStyle(helpdiv,{
			top:'15px'
		});
		doCenter('helpdiv');
		
	}
	
	if(url){
		
	}
}

function sendMailTo(email, domain) {
	window.location.replace('mail'+'to:'+email+'@'+domain);
}
function sendMailTo_(email) {
	window.location.replace('mail'+'to:'+email);
}
feedbackFormOpen=function()
{
	Element.show('feedbackformcontainer')
	loadAjax('/central/feedback/portlet.do','feedbackformcontainer','true');
}
mainSearchResult=function(frm)
{
	Element.show('searchres_o');
	ajaxSaveWMsg(frm,frm['sgkp_sel'].value,'searchres','Searching...')
}
popupWindow=function(url,t)
{
	$('std_pop_wht').innerHTML = t;
	Element.show('std_pop_w_');
	loadAjax(url,'std_pop_w','true');
}

electionPopupWindow=function(contenttitleid,contentdivid)
{
	scroll(0,0);
	$('std_pop_wht').innerHTML = $(contenttitleid).innerHTML;
	Element.show('std_pop_w_');
	$('std_pop_w').innerHTML = $(contentdivid).innerHTML; 
	//loadAjax(url,'std_pop_w','true');
}

function calcHeightOfIFRAME(frameId)
{
  //find the height of the internal page
  var the_height=
    document.getElementById(frameId).contentWindow.
      document.body.scrollHeight;

  //change the height of the iframe
  document.getElementById(frameId).height=
      the_height+5;
}

function imageForDocumentType(ext)
{
	return '<img src="/gkpcommon/images/filetypeicons/' + ext + '.gif" />';
}
 
/*
Assumes that all tabs have ID as <tab button id> + '_content'
*/
AlcassoftTabObject=function(tabbableNavigationId) {
	this.tabContainerID = tabbableNavigationId;
	this.currentTab = 1;
	var tabsUL = document.getElementById(tabbableNavigationId);
	this.tabs = tabsUL.getElementsByTagName('LI')
	
	// Reset all tabs to hidden
	for(var no=0;no<this.tabs.length;no++){
		var id = this.tabs[no].id + "_content";
		var aTab = document.getElementById(id);
		aTab.style.display="none";
	}
	// Default (0) tab is ON
	var id = this.tabs[0].id + "_content";
	var aTab = document.getElementById(id);
	aTab.style.display="block";
	
	this.actions = {items:[]};
	
}

AlcassoftTabObject.prototype.setActions=function(actions)
{
	this.actions= actions;
}
AlcassoftTabObject.prototype.showLast=function()
{
	
	var t = readCookie('_gkpnet_lasttabmaf'+this.tabContainerID);
	if(t){
		if(this.tabs[t] && !Element.hasClassName(this.tabs[t],'tabDisabled'))
			this.showTab(this.tabs[t])		
	}
}
AlcassoftTabObject.prototype.activateAll=function(target, targetMessage)
{
	//var tabsUL = document.getElementById('tabbableNavigation');
	//this.tabs = tabsUL.getElementsByTagName('LI')
	
	for(var no=0;no<this.tabs.length;no++){
		var aTab = this.tabs[no];
		Element.removeClassName(aTab,'tabDisabled');
		aTab.title='';
	}
	if(target && targetMessage)
	{
		$(target).innerHTML=targetMessage;
	}
	
}
AlcassoftTabObject.prototype.init=function()
{
	var ob = new Object();
	ob.mythis = this;
		
	for(var no=0;no<this.tabs.length;no++){
		var aTab = this.tabs[no];
		
		var onMouseover = function(e){
			Event.stop(e); 
			ob['mythis'].rolloverTab( Event.element(e) );
		};
		
		var onMouseout = function(e){ 
			Event.stop(e);
			ob['mythis'].rolloutTab( Event.element(e) );
		};
		
		var onClick = function(e){ 
			Event.stop(e);
			ob['mythis'].showTab( Event.element(e) );
		};
		
		Event.observe(aTab,'click',onClick);
		Event.observe(aTab,'mouseover',onMouseover);
		Event.observe(aTab,'mouseout',onMouseout);
		
		Element.addClassName(aTab,'tabInactive');
		if(Element.hasClassName(aTab,'tabDisabled') && aTab.title=='')
		{
			aTab.title='This tab is inactive';
		}
	}
	Element.addClassName(this.tabs[0],"tabActive");
}

AlcassoftTabObject.prototype.nextTab=function()
{
	for(var no=this.currentTab;no<this.tabs.length;no++){
		var aTab = this.tabs[no];
		if(!Element.hasClassName(aTab,'tabDisabled') && !Element.hasClassName(aTab,'tabInvisible'))
		{
			this.showTab(aTab);
			return; 
		}
	}
	this.showTab(this.tabs[0])
	
}
AlcassoftTabObject.prototype.openTab=function(tabNo)
{
	if(this.tabs[tabNo-1])
		this.showTab(this.tabs[tabNo-1]);
	
}


AlcassoftTabObject.prototype.showTab=function(ele)
{
	if(ele)
	{
		for(var no=0;no<this.actions.items.length;no++){
			var compareTab = this.actions.items[no].tabno;
			if(compareTab == this.currentTab)
			{
				if(this.actions.items[no].onunload)
				{
					try{
						eval(this.actions.items[no].onunload);
					}catch(e){
						//alert(e)
					}
				}
			}
		}
		
		if(Element.hasClassName(ele,'tabDisabled') || Element.hasClassName(ele,'tabInvisible'))
		{
			return;
		}
		var idArray = ele.id.split('_');		
		var itemNo =idArray[idArray.length-1].replace(/[^0-9]/gi,'');
		
		this.currentTab = itemNo;
		
		for(var no=0;no<this.tabs.length;no++){
			var aTab = this.tabs[no];
			Element.addClassName(aTab,'tabInactive');
			Element.removeClassName(aTab,'tabActive');
			var id1 = aTab.id + "_content";
			var aTabContent = document.getElementById(id1);
			aTabContent.style.display="none";
		}
		
		var id = this.tabs[itemNo-1].id + "_content";
		var aTabContent = document.getElementById(id);
		aTabContent.style.display = 'block';
		Element.removeClassName(this.tabs[itemNo-1],'tabInactive');
		Element.addClassName(this.tabs[itemNo-1],'tabActive');
			
		//document.getElementById('dummy').scrollTo();
		window.scrollTo(0,0);
		createCookie('_gkpnet_lasttabmaf'+this.tabContainerID,itemNo-1,30)
		
		
		for(var no=0;no<this.actions.items.length;no++){
			var compareTab = this.actions.items[no].tabno;
			if(compareTab == itemNo)
			{
				if(this.actions.items[no].onload)
				{
					try{
						eval(this.actions.items[no].onload);
					}catch(e)
					{
					}
				}				
			}
		}
	}
}

AlcassoftTabObject.prototype.rolloverTab=function(ele)
{
	if(ele.className.indexOf('tabInactive')>=0){
		Element.addClassName(ele,'inactiveTabOver');
	}
}
AlcassoftTabObject.prototype.rolloutTab=function(ele)
{
	if(ele.className.indexOf('inactiveTabOver')>=0){
		Element.removeClassName(ele,'inactiveTabOver');
	}
}

function showFirstHideSecond(showId,hideIds)
{
	var itemsToClose = hideIds.split(",");
	for(var no=0;no<itemsToClose.length;no++){
		Element.hide(itemsToClose[no]);
		Element.removeClassName(itemsToClose[no]+'_tab','activetab');
	}
	Element.show(showId);
	Element.addClassName(showId+'_tab','activetab');
}
function showFirstHideSecondAjax(showId,hideIds,urlToLoadInFirstIfEmpty)
{
	var content = $(showId).innerHTML;
	if(content=='')
	{
		// load it with ajax first
		loadAjax(urlToLoadInFirstIfEmpty,showId);
	}
	
	var itemsToClose = hideIds.split(",");
	for(var no=0;no<itemsToClose.length;no++){
		Element.hide(itemsToClose[no]);
		Element.removeClassName(itemsToClose[no]+'_tab','activetab');
	}
	Element.show(showId);
	
	Element.addClassName(showId+'_tab','activetab');
	
}

function toTop()
{
	window.scrollTo(0,0);
}
function toDiv(id)
{
	$(id).scrollTo();
}



function alternateTable(id){
 if(document.getElementsByTagName){  
   var table = document.getElementById(id);  
   var rows = table.getElementsByTagName("tr");  
   for(i = 0; i < rows.length; i++){          
 	//manipulate rows
     if(i % 2 == 0){
     	if(rows[i].className=='')
       	rows[i].className = "even";
     }else{
     	if(rows[i].className=='')
       	rows[i].className = "odd";
     }      
   }
 }
}
function alternateList(id){
 if(document.getElementsByTagName){  
   var table = document.getElementById(id);  
   var rows = table.getElementsByTagName("li");  
   for(i = 0; i < rows.length; i++){          
 	//manipulate rows
     if(i % 2 == 0){
       rows[i].className = "even";
     }else{
       rows[i].className = "odd";
     }      
   }
 }
}
function seeAll(id,cls,me){
 if(document.getElementsByTagName){  
   var table = document.getElementById(id);  
   var rows = table.getElementsByTagName("li");  
   for(i = 0; i < rows.length; i++){          
 	   Element.removeClassName(rows[i],cls)      
   }
 }
 Element.hide(me)
}
function highlightRow(rowId)
{
	Element.addClassName(rowId,"rowSelected");
	Element.addClassName(rowId,"notbold");
	
}
function dehighlightRow(rowId)
{
	Element.removeClassName(rowId,"rowSelected")
}
function attachResourceMain(id, path, prefix, formview, target)
	{
		var tmpformview = formview || 'form';
		var tmptarget = target || 'resource_upload_form';
		
		var url = "/docs/resource/load.do?resourceid="+id;
		var params = {view:tmpformview,pathToFile:path,prefix:prefix};
		var ajax = new Ajax.Updater(tmptarget,url,{
			method:'get',
			parameters: params,
			evalScripts: true
		});
	}
	
function refreshPage(u)
{
	var t = u.split("#",1)
	location.href=t;
}
pickDate=function(buttonObj,inputObject)
	{
		calendarObjForForm.setCalendarPositionByHTMLElement(inputObject,0,inputObject.offsetHeight+2);	// Position the calendar right below the form input
		calendarObjForForm.setInitialDateFromInput(inputObject,'yyyy-mm-dd hh:ii');	// Specify that the calendar should set it's initial date from the value of the input field.
		calendarObjForForm.addHtmlElementReference('myDate',inputObject);	// Adding a reference to this element so that I can pick it up in the getDateFromCalendar below(myInput is a unique key)
		if(calendarObjForForm.isVisible()){
			calendarObjForForm.hide();
		}else{
			calendarObjForForm.resetViewDisplayedMonth();	// This line resets the view back to the inital display, i.e. it displays the inital month and not the month it displayed the last time it was open.
			calendarObjForForm.display();
		}		
	}	
	
loadResourceForm=function(pathToFile,prefix)
{
	var url = "/docs/resource/load.do";
	var params = {pathToFile:pathToFile,prefix:prefix};
	var ajax = new Ajax.Updater(prefix+'_upload',url,{
		method:'get',
		parameters: params,
		evalScripts: true
	});
}
	
loadAjaxConfirm=function(url,target,confirmmessage)
{
	if(confirm(confirmmessage))
	{
		loadAjax(url,target)
	}	
}

loadAjaxDelete=function(url,target)
{
	if(confirm('Delete this item?'))
	{
		loadingAjax(target); 
		var tmp = new Ajax.Updater({success:target}, url,
			{method: 'get',
			onFailure: function(e){_errorDelete(e)} ,
			evalScripts: true});
	}	
}

loadAjax=function(url,target)
{
	loadingAjax(target); 
	var tmp = new Ajax.Updater(target, url,
		{method: 'get', evalScripts: true});	
}
function ajaxSave(frm,path,container){
	ajaxSaveWMsg(frm,path,container,"Processing...");
}
function loadingAjax(elementId,message)
{
   if (document.getElementById(elementId))
   {
   	
   		if(message==undefined || message=='')
      {
          message="Loading...";
      }
      document.getElementById(elementId).style.display="";
      document.getElementById(elementId).innerHTML=message + "<img src='/gkpcommon/images/indicator.gif'>";
      
   }
}
function ajaxSaveWMsg(frm,path,container,msg){
	var url = path;
	var content = Form.serialize(frm);
	loadingAjax(container,msg);
	var ajax = new Ajax.Updater(
		{success: container}, url, 
		{method: 'post', parameters: content, evalScripts: true}
	);	
}
ajaxSaveWithOnComplete = function(frm,path,container,onComplete){
	//var c = readCookie('JSESSIONID')
	//if(c == null){
	//	alert('Request failed! Session expired. Please copy your work and relogin') 
	//	return false
	//}
	var url = path//'/'+appName+'/' + path;
	var content = Form.serialize(frm);
	var ajax = new Ajax.Updater(
		{success: container}, url, 
		{method: 'post', parameters: content, evalScripts: true,
			onComplete:function(e){
			eval(onComplete);
		}}
	);	
}
ajaxSaveWithOnSuccess= function(frm,path,container,onSuccess){
	//var c = readCookie('JSESSIONID')
	//if(c == null){
	//	alert('Request failed! Session expired. Please copy your work and relogin')
	//	return false
	//}
	var url = path//'/'+appName+'/' + path;
	var content = Form.serialize(frm);
	var ajax = new Ajax.Updater(
		{success: container}, url, 
		{method: 'post', parameters: content, evalScripts: true,
			onSuccess:function(e){
			eval(onSuccess);
		}}
	);	
}
function reloadPortletContainer(e,url,target)
{
	loadAjaxFromPortlet(url, target);
}
	

function ajaxFoldUnfold(url,target,refresh)
{
   var obj = $(target+"_switch");
   if($(target).style.display!='none')
   {
       Effect.BlindUp(target);
       Element.removeClassName(obj,"openfolder");
       Element.addClassName(obj,"closefolder");       
   }
   else
   {
       var tmpRefresh = refresh || 'false';
       if(tmpRefresh==true || $(target).innerHTML=='')
       {
           $(target).style.display='';
           loadAjax(url,target);           
       }
       else
       {
           Effect.BlindDown(target);           
       }
       Element.removeClassName(obj,"closefolder");
       Element.addClassName(obj,"openfolder");                   
   }
}

enableDisable=function(target,trueFalse)
{
	if(trueFalse)
		Element.addClassName(target,'disabled')
	else
		Element.removeClassName(target,'disabled')
}
showHide=function(url,target,refresh)
{
   var obj = $(target+"_switch");
   if($(target).style.display!='none')
   {
       Element.hide(target);
       Element.removeClassName(obj,"openfolder");
       Element.addClassName(obj,"closefolder");       
   }
   else
   {
       var tmpRefresh = refresh || 'false';
       if(tmpRefresh==true || $(target).innerHTML=='')
       {
           $(target).style.display='';
           loadAjax(url,target);           
       }
       else
       {
           Element.show(target);           
       }
       Element.removeClassName(obj,"closefolder");
       Element.addClassName(obj,"openfolder");                   
   }
}

function toggleFine(id)
{
	el = document.getElementById(id);
	if(el)
	{
		if(el.style.display == 'none')
			Effect.Appear(id);
		else
			Effect.Fade(id);
	}
}
function toggleMore(moreTextId,brief,all)
{
	if($(brief).style.display == 'none')
	{
		$(brief).style.display = 'inline'
		$(all).style.display = 'none'
		$(moreTextId).innerHTML = "<img src='/gkpcommon/images/open_green.gif'> show more"
	}
	else
	{
		$(brief).style.display = 'none'
		$(all).style.display = 'inline'
		$(moreTextId).innerHTML = "<img src='/gkpcommon/images/close_red.gif'> show less"
	}
	
}

function showSubMenu(id,obj)
{
	var x = document.getElementById(id);
	var coors = findPos(obj);
	//$(id).innerHTML="coors[1]:"+coors[1]+",coors[0]:"+coors[0]; 
	x.style.top = (coors[1]-10) + 'px';
	x.style.left = (coors[0]+30) + 'px';
	x.style.visibility='visible';
	x.style.zIndex="100000"
	Element.show(id);		
}
function hideSubMenu(id,obj)
{
	Element.hide(id);		
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}


/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: kojak :: http://commoncoder.com */

// fieldname, warningname, remainingname, maxchars
function CheckFieldLength(fn,wn,rn,mc) {
  var len = fn.value.length;
  if (len > mc) {
    fn.value = fn.value.substring(0,mc);
    len = mc;
  }
  document.getElementById(wn).innerHTML = len;
  document.getElementById(rn).innerHTML = mc - len;
}


function loadAjaxFromPortletComplete(e,target,url1,cnt)
{
	if(e.getResponseHeader('location')!=null && e.getResponseHeader('location')!='')
	{
		url = e.getResponseHeader('location');
		url = unescape(url);
		//create i frame
		var iframe = document.createElement('iframe');
		iframe.setAttribute('src',url);
		iframe.setAttribute('name','testframe');
		iframe.setAttribute('id','testframe');
		iframe.setAttribute('style','display:none');
		var body = document.getElementsByTagName('body')[0];
		//attaching iframe to body
		body.appendChild(iframe);
		//listen to page load complete event
		Event.observe(iframe,'load',function(e){
			loadAjaxFromPortlet(url1, target,cnt);
		});
	}
	else
	{
		//alert('here');
		$(target).style.display = "";
	}
}

function loadAjaxFromPortlet(url,target,cnt)
{
	//alert(url)
	cnt = cnt || 0;
	cnt++;
	
	//just a counter to ensure we are never in a dead loop
	if(cnt>2){
		return false;
	}
	
	$(target).style.display = "none";
	//cannot use on success, because a url redirect header is a 303 instead of a 200
	var ajax = new Ajax.Updater(target,url,{
		method:'get',
		evalScripts:true,
		onComplete:function(e){
			loadAjaxFromPortletComplete(e,target,url,cnt);
		}
	});
}	
	
function createCookie(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=/";
}

function readCookie(name)
{
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
  return null;
}

function eraseCookie(name)
{
  createCookie(name, "", -1);
}



Sv5Animation=function()
{
	this.uniqueId =  new Date();
	this.target = '' ;
	this.options = {};
	this.type = 'slide';
	this.options.interval = 2 * 1000;// conver to seconds
	this.nextRotate = 0;
	this.itemToClear=0;
	this.arrayOfElements = new Array();
}
Sv5Animation.prototype.getElementArray = function()
{
	return this.arrayOfElements;
}
Sv5Animation.prototype.addElement = function(element)
{
	this.arrayOfElements[this.arrayOfElements.length] = $(element).innerHTML;
}
Sv5Animation.prototype.addDetails = function(image,url,title)
{
	var res = '<div><img src="'+image+'"/>'+
						'<div><a href="'+url+'" target="_top">'+title+'</a></div></div>';
	this.arrayOfElements[this.arrayOfElements.length] = res;
}

Sv5Animation.prototype.start = function(targetContainer, opt)
{
	var jonsobj = new Object();
	jonsobj['this'] = this;

	this.arrayOfElements.sort(randOrd);
	this.uniqueId =  new Date();
	this.target = targetContainer;
	this.options = opt;
	this.type = this.options.effect;
	this.options.interval = this.options.interval * 1000;// conver to seconds
	Element.hide(this.target);
	
  this.itemToClear=setInterval(function(){
  	jonsobj['this'].rotateContent();
	  }, 
  1000 );
}

Sv5Animation.prototype.rotateContent=function()
{
	var jonsobj = new Object();
	jonsobj['this'] = this;
	
	if(this.arrayOfElements.length > 0)
	{
		if(! this.arrayOfElements[this.nextRotate] )
			{
			this.arrayOfElements.sort(randOrd);
			this.nextRotate=0;
			}
		if($(this.target))
		{
			$(this.target).innerHTML = this.arrayOfElements[this.nextRotate];
			if(this.type=='slide' && $(this.target))
				Effect.SlideDown(this.target);
			else if(this.type=='fade' && $(this.target))
				Effect.Appear(this.target);
			this.nextRotate++;
			clearInterval(this.itemToClear);

			this.itemToClear=setInterval( function(){
					jonsobj['this'].rotateContentHide(); 
				}, 
			this.options.interval );
			
		}
	}
}
Sv5Animation.prototype.rotateContentHide=function()
{
	var jonsobj = new Object();
	jonsobj['this'] = this;
	
	if(this.type=='slide' && $(this.target))
		Effect.SlideUp(this.target);
	else if(this.type=='fade' && $(this.target))
		Effect.Fade(this.target);
	clearInterval(this.itemToClear);
	this.itemToClear=setInterval( function(){
		jonsobj['this'].rotateContent();
	} , 1100 );
  
}
function randOrd(){
	return (Math.round(Math.random())-0.5); }
	
	
	
function Trim(STRING){
		STRING = LTrim(STRING);
		return RTrim(STRING);
}

function RTrim(STRING){
	while(STRING.charAt((STRING.length -1))==" "){
	STRING = STRING.substring(0,STRING.length-1);
	}
	return STRING;
}


function LTrim(STRING){
	while(STRING.charAt(0)==" "){
	STRING = STRING.replace(STRING.charAt(0),"");
	}
	return STRING;
}
function isEmail(value)
{
	re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
	if (!re.test(value))
		{
			return false;
		}
  return true;
}

// html
// bIgnoreFont, bRemoveStyles booleans according to the values set in the dialog
// Output: the cleaned string
function AlcassoftCleanWord( html, bIgnoreFont, bRemoveStyles )
{
	try{
		CleanWordKeepsStructure = false;
	
		html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
		html = html.replace(/<o:p>.*?<\/o:p>/g, '&nbsp;') ;
	
		// Remove mso-xxx styles.
		html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
	
		// Remove margin styles.
		html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
		html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
	
		html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
		html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
	
		html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
	
		html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
	
		html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
	
		html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
		html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;
	
		// Remove FONT face attributes.
		if ( bIgnoreFont )
		{
			html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
			html = html.replace( /\s*face=[^ >]*/gi, '' ) ;
	
			html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
		}
	
		// Remove Class attributes
		html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	
		// Remove styles.
		if ( bRemoveStyles )
			html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
	
		// Remove empty styles.
		html =  html.replace( /\s*style="\s*"/gi, '' ) ;
	
		html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
	
		html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
	
		// Remove Lang attributes
		html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	
		html = html.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ;
	
		html = html.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
	
		// Remove XML elements and declarations
		html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
	
		// Remove Tags with XML namespace declarations: <o:p><\/o:p>
		html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
	
		// Remove comments [SF BUG-1481861].
		html = html.replace(/<\!--.*?-->/g, '' ) ;
	
		html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
	
		html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
	
		// Remove "display:none" tags.
		html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none(.*?)<\/\1>/ig, '' ) ;
	
		// Remove language tags
		html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	
		// Remove onmouseover and onmouseout events (from MS Word comments effect)
		html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
		html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;
	
		if ( CleanWordKeepsStructure )
		{
			// The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
			html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
	
			// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
			html = html.replace( /<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
			html = html.replace( /<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
		}
		else
		{
			html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
			html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
			html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
			html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
			html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
			html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
	
			html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
	
			// Transform <P> to <DIV>
			var re = new RegExp( '(<P)([^>]*>.*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
			html = html.replace( re, '<div$2<\/div>' ) ;
	
			// Remove empty tags (three times, just to be sure).
			// This also removes any empty anchor
			html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
			html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
			html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
		}
	}
	catch(e){
	
	}
	return html ;
}