var _editor_url="http://www.allenellis.com/data/areaedit/";
var _editor_backend=null;
var _editor_lang=(window.ocp_lang)?ocp_lang.toLowerCase():'en';

// Startup
var pageLoaded=false;
function scriptLoadStuff()
{
   // Dynamic images need preloading
   var i;
   var preloader=new Image();
   var images=new Array();
   images[0]="http://www.allenellis.com/themes/default/images/cat_browser_gradiant_hover.png";
   images[1]="http://www.allenellis.com/themes/default/images/menu_bullet_hover.gif";
   for(i=0;i<images.length;i++) preloader.src=images[i];

/*   for (i=0;i<document.forms.length;i++)   Causes form contents to get lost on clicking back: bad
      if (document.forms[i].className!='autocomplete') document.forms[i].setAttribute('autocomplete','off');*/
   if (self.expandImages) expandImages();
   for (i=0;i<document.images.length;i++)
   {
      var j=document.images[i];
      if (j.className=='img_thumb')
      {
         j.style.opacity=0.7;
         j.style.MozOpacity=0.7;
         j.style.filter="alpha(opacity='70')";
      }
   }
   if (isBrokenAlphaIE()) fixImages();
   doMenuExpansion();

   // Tell ocPortal we have Javascript, so don't degrade things for reasons of compatibility
   SetCookie('js_on',1,120);
   SetCookie('screen_width',getWindowWidth(),120);

   if (window.pageSpecificLoad) pageSpecificLoad();

   if (self.load_html_edit)
   {
      for (i=0;i<document.forms.length;i++)
      {
         load_html_edit(document.forms[i]);
      }
   }

   pageLoaded=true;
}

// By Netscape
function SetCookie(cookieName,cookieValue,nDays)
{
   var today=new Date();
   var expire=new Date();
   if (nDays==null || nDays==0) nDays=1;
   expire.setTime(today.getTime()+3600000*24*nDays);
   document.cookie=cookieName+"="+escape(cookieValue)+";expires="+expire.toGMTString()+";path=/";
}

function isInteger(val)
{
   if (isBlank(val)) return false;
	for(var i=0;i<val.length;i++) if(!isDigit(val.charAt(i))) return false;
	return true;
}

function submitHandler(form)
{
   if (form.onsubmit()) form.submit();
}

function is_opera()
{
   return browser_matches('opera');
}

function is_ie()
{
   return browser_matches('ie');
}

function browser_matches(code)
{
   var browser=navigator.userAgent.toLowerCase();
   var os=navigator.platform.toLowerCase()+' '+browser;

   var is_opera=browser.indexOf('opera')!=-1;
   var is_konqueror=browser.indexOf('konqueror')!=-1;
   var is_safari=browser.indexOf('applewebkit')!=-1;
   var is_gecko=(browser.indexOf('gecko')!=-1) && !is_opera && !is_konqueror;
   var is_ie=(browser.indexOf('msie')!=-1) && !is_opera;
   var is_ie_old=(browser.indexOf('msie 7')==-1);
   var is_ie_new=!is_ie_old;

   switch (code)
   {
      case 'wysiwyg':
         return is_ie || is_gecko;
      case 'windows':
         return os.indexOf('windows')!=-1 || os.indexOf('win32')!=-1;
      case 'mac':
         return os.indexOf('mac')!=-1;
      case 'linux':
         return os.indexOf('linux')!=-1;
      case 'odd_os':
         return (os.indexOf('windows')==-1) && (os.indexOf('mac')==-1) && (os.indexOf('linux')==-1);
      case 'opera':
         return is_opera;
      case 'ie':
         return is_ie;
      case 'ie_old':
         return is_ie_old;
      case 'ie_new':
         return is_ie_new;
      case 'has_artificial_monopoly':
         return is_ie;
      case 'has_fanboys':
         return is_gecko;
      case 'gecko':
         return is_gecko;
      case 'konqueror':
         return is_konqueror;
      case 'safari':
         return is_safari;
      case 'odd_browser':
         return !is_opera && !is_konqueror && !is_safari && !is_gecko && !is_ie;
      case 'quirk__internalised_list_indent':
         return is_gecko;
      case 'quirk__list_indent_in_ul_instead_of_li':
         return is_opera;
   }

   // Should never get here
   return false;
}

function toggleSectionTable(id)
{
   toggleSectionInline(id,browser_matches('ie')?'block':'table');
}

function toggleSectionInline(id,type)
{
   var itm=document.getElementById(id);
   var pic=document.getElementById('e_'+id);

   if (itm.style.display=='none')
   {
      itm.style.display=type;
      if (pic) pic.src="http://www.allenellis.com/themes/default/images/contract.png";
   }
   else
   {
      itm.style.display='none';
      if (pic) pic.src="http://www.allenellis.com/themes/default/images/expand.png";
   }
   if (pic) fixImage(pic);
}

function hideTag(element)
{
   var itm=element.lastChild;
   var pics=element.getElementsByTagName('img');
   var pic=pics[0];

   if (itm.style.display=='none')
   {
      itm.style.display='inline';
      pic.src="http://www.allenellis.com/themes/default/images/contract.png";
   }
   else
   {
      itm.style.display='none';
      pic.src="http://www.allenellis.com/themes/default/images/expand.png";
   }
   fixImage(pic);
}

function changeClass(box,theId,to,from)
{
   var cell=document.getElementById(theId);
   cell.className=(box.checked)?to:from;
}

function getMouseX(event)
{
   return event.pageX?event.pageX:event.clientX+getWindowScrollX();
}

function getMouseY(event)
{
   return event.pageY?event.pageY:event.clientY+getWindowScrollY();
}

function getWindowWidth()
{
   if (window.innerWidth) return window.innerWidth-18;
   if ((document.documentElement) && (document.documentElement.clientWidth)) return document.documentElement.clientWidth;
   if ((document.body) && (document.body.clientWidth)) return document.body.clientWidth;
   return 0;
}

function getWindowHeight()
{
   if (window.innerHeight) return window.innerHeight-18;
   if ((document.documentElement) && (document.documentElement.clientHeight)) return document.documentElement.clientHeight;
   if ((document.body) && (document.body.clientHeight)) return document.body.clientHeight;
   return 0;
}

function getWindowScrollX()
{
  	if (window.pageXOffset) return window.pageXOffset;
  	if ((document.documentElement) && (document.documentElement.scrollLeft)) return document.documentElement.scrollLeft;
  	if ((document.body) && (document.body.scrollLeft)) return document.body.scrollLeft;
  	if (window.scrollX) return window.scrollX;
   return 0;
}

function getWindowScrollY()
{
  	if (window.pageYOffset) return window.pageYOffset;
  	if ((document.documentElement) && (document.documentElement.scrollTop)) return document.documentElement.scrollTop;
  	if ((document.body) && (document.body.scrollTop)) return document.body.scrollTop;
  	if (window.scrollTop) return window.scrollTop;
   return 0;
}

function doMenuExpansion()
{
   // Go through menu expanders
   var menuArr=document.getElementsByTagName('div');
   var i;
   for (i=0;i<menuArr.length;i++)
   {
      if (menuArr[i].id.indexOf('_expand_')!=-1)
      {
         url_expanded=document.URL.indexOf('keep_'+menuArr[i].id);
         if ((url_expanded==-1) && (menuArr[i].style.display=='inline')) menuArr[i].style.display='none';
      }
   }
}

// Tooltips
function activateTooltip(ac,event,tooltip,width)
{
   if (!pageLoaded) return;
   if (tooltip=='') return;

   var tooltipElement;
   if (ac.tooltipId)
   {
      tooltipElement=document.getElementById(ac.tooltipId);
   } else
   {
      tooltipElement=document.createElement("div");
      tooltipElement.style.left='5px';
      tooltipElement.style.top='5px';
      tooltipElement.className="ocp_tooltip";
      tooltipElement.innerHTML=tooltip;
      tooltipElement.style.zIndex=1;
      if ((is_ie()) || (width=='auto')) tooltipElement.style.width=width; else tooltipElement.style.maxWidth=width;
      tooltipElement.style.position='absolute';
      tooltipElement.id=Math.floor(Math.random()*1000);
      ac.tooltipId=tooltipElement.id;
      document.body.appendChild(tooltipElement);
   }
   tooltipElement.style.display='block';

   repositionTooltip(ac,event);
}
function repositionTooltip(ac,event)
{
   if (!pageLoaded) return;
   if (!ac.tooltipId) return;

   var tooltipElement=document.getElementById(ac.tooltipId);
   if (tooltipElement)
   {
      var x=(event.type=='focus')?(getWindowScrollX()+getWindowWidth()/2):(getMouseX(event)+10);
      var y=(event.type=='focus')?(getWindowScrollY()+getWindowHeight()/2-40):(getMouseY(event)+10);
      var x_excess=x-getWindowWidth()-getWindowScrollX()+tooltipElement.scrollWidth+10;
      if (x_excess>0) x-=x_excess;
      var y_excess=y-getWindowHeight()-getWindowScrollY()+tooltipElement.scrollHeight+10;
      if (y_excess>0) y-=y_excess;
      tooltipElement.style.left=x+'px';
      tooltipElement.style.top=y+'px';
   }
}
function deactivateTooltip(ac,event)
{
   if ((!pageLoaded) || (!ac.tooltipId)) return;

   var tooltipElement=document.getElementById(ac.tooltipId);
   if (tooltipElement) tooltipElement.style.display='none';
}

// Marking things (to avoid illegally nested forms)
function addFormMarkedPosts(work_on,prefix)
{
   var elements=document.getElementsByTagName('input');
   var i;
   var append='';
   for (i=0;i<elements.length;i++)
      if ((elements[i].type=='checkbox') && (elements[i].name.substring(0,prefix.length)==prefix) && (elements[i].checked))
         append+='&'+elements[i].name+'=1';
   work_on.action+=append;
}
function markAllTopics()
{
   var e=document.getElementsByTagName('input');
   var i;
   for (i=0;i<e.length;i++)
   {
      if ((e[i].type=='checkbox') && (e[i].name.substr(0,5)=='mark_'))
      {
         e[i].checked=!e[i].checked;
         changeClass(e[i],e[i].parentNode.parentNode.parentNode.id,'ocf_on','ocf_off');
      }
   }
}

// PNG hack
function fixImages()
{
   for(var i=0;i<document.images.length;i++) fixImage(document.images[i]);
}
// By Erik Arvidsson
function isBrokenAlphaIE()
{
   return ((/MSIE ((5\.5)|[6])/.test(navigator.userAgent)) && (navigator.platform=="Win32") && (!is_opera()));
}
// Loosely by PieNG (http://dynarch.com/mishoo/articles.epl?art_id=430)
function fixImage(img)
{
   if (!isBrokenAlphaIE()) return;

   var imgName=img.src.toUpperCase();
   if (imgName.substring(imgName.length-3,imgName.length)=="PNG")
   {
      if ((img.className) && (img.className=='blend'))
      {
         srcURL=img.src;
         img.src="http://www.allenellis.com/data/images/blank.gif";
         img.runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+srcURL+"',sizingMethod='image'); ";

         if (img.title)
         {
            var title=img.title;
            img.attachEvent("onmousemove",function() { repositionTooltip(img,event); });
            img.attachEvent("onmouseout",function() { deactivateTooltip(img,event); });
            img.attachEvent("onmouseover",function() { activateTooltip(img,event,title,'auto'); });
            img.title="";
         }
      }
   }
}

function addEventListenerAbstract(element,the_event,command,bubble)
{
	if(element)
	{
		if(element.addEventListener)
		{
			//W3C
			return element.addEventListener(the_event,command,bubble);
		}
		else if(element.attachEvent)
		{
			//Microsoft - no bubbling :(
			return element.attachEvent("on"+the_event,command);
		}
		else return false;
	}
	else return false;
}
