//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.

function AC_AddExtension(src, ext)
{
if (src.indexOf('?') != -1)
return src.replace(/\?/, ext+'?'); 
else
return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
var str = '<object ';
for (var i in objAttrs)
str += i + '="' + objAttrs[i] + '" ';
str += '>';
for (var i in params)
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
str += '<embed ';
for (var i in embedAttrs)
str += i + '="' + embedAttrs[i] + '" ';
str += ' ></embed></object>';

document.write(str);
}

function AC_FL_RunContent(){
var ret = 
AC_GetArgs
(  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
, "application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
var ret = 
AC_GetArgs
(  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
, null
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
var ret = new Object();
ret.embedAttrs = new Object();
ret.params = new Object();
ret.objAttrs = new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase();    

switch (currArg){	
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] = args[i+1];
break;
case "src":
case "movie":	
args[i+1] = AC_AddExtension(args[i+1], ext);
ret.embedAttrs["src"] = args[i+1];
ret.params[srcParamName] = args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblClick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
ret.objAttrs[args[i]] = args[i+1];
break;
case "width":
case "height":
case "align":
case "vspace": 
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "id":
case "tabindex":
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
}
}
ret.objAttrs["classid"] = classid;
if (mimeType) ret.embedAttrs["type"] = mimeType;
return ret;
}


function MM_CheckFlashVersion(reqVerStr,msg){
  with(navigator){
    var isIE  = (appVersion.indexOf("MSIE") != -1 && userAgent.indexOf("Opera") == -1);
    var isWin = (appVersion.toLowerCase().indexOf("win") != -1);
    if (!isIE || !isWin){  
      var flashVer = -1;
      if (plugins && plugins.length > 0){
        var desc = plugins["Shockwave Flash"] ? plugins["Shockwave Flash"].description : "";
        desc = plugins["Shockwave Flash 2.0"] ? plugins["Shockwave Flash 2.0"].description : desc;
        if (desc == "") flashVer = -1;
        else{
          var descArr = desc.split(" ");
          var tempArrMajor = descArr[2].split(".");
          var verMajor = tempArrMajor[0];
          var tempArrMinor = (descArr[3] != "") ? descArr[3].split("r") : descArr[4].split("r");
          var verMinor = (tempArrMinor[1] > 0) ? tempArrMinor[1] : 0;
          flashVer =  parseFloat(verMajor + "." + verMinor);
        }
      }
      // WebTV has Flash Player 4 or lower -- too low for video
      else if (userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 4.0;

      var verArr = reqVerStr.split(",");
      var reqVer = parseFloat(verArr[0] + "." + verArr[2]);
  
      if (flashVer < reqVer){
        if (confirm(msg))
          window.location = "http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash";
      }
    }
  } 
}

// License: http://creativecommons.org/licenses/by/2.5/
// Author: Rafael Lima (http://rafael.adm.br)
var css_browser_selector = function() {
var 
ua=navigator.userAgent.toLowerCase(),
is=function(t){ return ua.indexOf(t) != -1; },
h=document.getElementsByTagName('html')[0],
b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
var c=b+os+' js';
h.className += h.className?' '+c:c;
}();


function setCheckboxes(the_form,do_check,field_name) {
var elts=(typeof(document.forms[the_form].elements[field_name])!='undefined')
? document.forms[the_form].elements[field_name]
: (typeof(document.forms[the_form].elements[field_name])!='undefined')
? document.forms[the_form].elements[field_name]
: document.forms[the_form].elements[field_name];
var elts_cnt=(typeof(elts.length)!='undefined')
? elts.length
: 0;
if (elts_cnt) {
for (var i = 0; i < elts_cnt; i++) {
elts[i].checked = do_check;
}
} else {
elts.checked = do_check;
}
return true;
}




function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function externalLinks() {
   if (!document.getElementsByTagName) return;
   var anchors = document.getElementsByTagName("a");
   for (var i=0; i<anchors.length; i++) {
      var anchor = anchors[i];
      if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
         anchor.target = "_blank";
   }
}

// define onload events
addLoadEvent(externalLinks);

function windowPrint() {
   if (!document.getElementsByTagName) return;
	 document.getElementById("print").style.display = 'block';
   var anchors = document.getElementsByTagName("a");
   for (var i=0; i<anchors.length; i++) {
      var anchor = anchors[i];
			if (anchor.getAttribute("href") && anchor.className == "print")
			//anchor.style.display = 'block';
         anchor.onclick = function() { window.print(); return false; };
   }
}

// define onload events
addLoadEvent(windowPrint);

/* Start image rollover */
var actImgTag;
var selImgTag;
var clsRoll;
var imgList;
var images;
var activeImages;
var inactiveImages;

// UIR (Unobtrusive Image Rollover) v2.0.1-20060309
if (document.getElementById) {
   function initUIR() {
      actImgTag = "_on";
      //actImgTag = "";
      selImgTag = "_sel";
      clsRoll = "roll";

      imgList = '';
      var images = document.getElementsByTagName('img');

      for (var i=0; i<images.length; i++) {
         if (eval('/' + clsRoll + '/').test(images[i].className)) {
            imgList += images[i].src + ",";

            setEvents(images[i]);
         }
      }

      if (imgList != '') {
         imgList = imgList.substring(0, imgList.length-1);
         preload(imgList.split(","));
      }
   }

   function setEvents(element) {
      element.parentNode.onmouseover = function() { roll(this); }
      element.parentNode.onmouseout = function() { roll(this); }
      element.parentNode.onfocus = function() { roll(this); }
      element.parentNode.onblur = function() { roll(this); }
   }

   function preload(imgList) {
      activeImages = new Array(imgList.length);
      inactiveImages = new Array(imgList.length);

      for (var i=0; i<imgList.length; i++) {
         activeImages[i] = new Image();
         activeImages[i].src = getBaseName(imgList[i]) + actImgTag + getExt(imgList[i]);
         inactiveImages[i] = new Image();
         inactiveImages[i].src = getBaseName(imgList[i]) + getExt(imgList[i]);
      }
   }

   function getBaseName(filename) {
      if (eval('/'+actImgTag+'\./').test(filename)) filename = filename.replace(actImgTag+'.', '.');
      if (eval('/'+selImgTag+'\./').test(filename)) filename = filename.replace(selImgTag+'.', '.');
      return filename.substring(0, filename.lastIndexOf('.'));
   }

   function getExt(filename) {
      return filename.substring(filename.lastIndexOf('.'), filename.length);
   }

   function getImage(imageName, isActive) {
      (isActive==0) ? images = inactiveImages : images = activeImages;
      for (var i=0; i<images.length; i++) {
         if (getBaseName(imageName) == getBaseName(images[i].src)) {
            return images[i];
            break;
         }
      }
      return [];
   }

   function roll(element) {
      var src, newSrc;
      var node, currNode;

      for (var i=0; i<element.childNodes.length; i++) {
         currNode = element.childNodes[i];
         if (currNode.nodeType==1 && /img/i.test(currNode.nodeName)) {
            node = i;
            break;
         }
      }
      src = element.childNodes[node].src;
      if (!(eval('/'+selImgTag+'\./').test(src))) {
         newSrc = getImage(src,!(eval('/'+actImgTag+'\./').test(src))).src;
      }
      if (!(typeof(newSrc)=='undefined')) element.childNodes[node].src = newSrc;
   }

   addLoadEvent(initUIR);
} // (C) 2005 Emanuele Rodriguez <erodri@gmail.com>

/* End image rollover */



/*
        Textarea-maxlength by frequency decoder (http://www.frequency-decoder.com/)

        Released under a Creative Commons nc-sa license.

        ---------------------------------------------------------------------------

        These two functions are called from within the namespace so should really
        be declared within the namespace but I've made an exception here as they
        are functions that will inevitably be used by other scripts.
*/


function addEvent( obj, type, fn, tmp ) {
	if( obj.attachEvent ) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function(){obj["e"+type+fn]( window.event );}
		obj.attachEvent( "on"+type, obj[type+fn] );
	} else
		obj.addEventListener( type, fn, false );
}

function removeEvent( obj, type, fn ) {
	if( obj.detachEvent ) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
	} else
		obj.removeEventListener( type, fn, false );
}


// Declare the namespace
var fdTextareaController;

(function() {
	function fdTextareaMaxlength(inp, maxlength) {
		this._inp       = inp;
		this._max       = Number(maxlength);
		var self        = this;

		self.maxlength = function() {
			if(self._inp.disabled) return false;

			if(self._inp.value.length > self._max) {
				self._inp.value = self._inp.value.substring(0, self._max);
				return false;
			}

			return true;
		}


		// Has Safari keypress foibles ? Needs tested...
		addEvent(self._inp, 'keypress', self.maxlength, false);

		// Sorry folks, but using the "onblur" event is the only way to cut the text down to size
		// after a users cut & paste action
		addEvent(self._inp, 'blur',     self.maxlength, false);

		// IE only event 'onpaste'

		// Conditional compilation used to load only in IE win.
		// As we don't need the onblur event for IE, we remove it at the same time.

		/*@cc_on @*/
		/*@if (@_win32)
		addEvent(self._inp, 'paste', function(){ setTimeout(self.maxlength, 50); }, true);
		removeEvent(self._inp, 'blur', self.maxlength, false);
		/*@end @*/

		// Call the maxlength function immediately to trim any text inserted server-side to the required length.
		self.maxlength();
		};

		// Construct the previously declared namespace
		fdTextareaController = {
		textareas: [],

		_construct: function( e ) {

			var regExp_1 = /fd_max_([0-9]+){1}/ig;

			var textareas = document.getElementsByTagName("textarea");

			for(var i = 0, textarea; textarea = textareas[i]; i++) {
				if(textarea.className && textarea.className.search(regExp_1) != -1) {
					max = parseInt(textarea.className.match(regExp_1)[0].replace(/fd_max_/ig, ''));
					if(max) fdTextareaController.textareas[fdTextareaController.textareas.length] = new fdTextareaMaxlength(textarea, max);
				}
			}

		},

		_deconstruct: function( e ) {

		}
	}
})();

// onload events
addEvent(window, 'load', fdTextareaController._construct, false);
addEvent(window, 'unload', fdTextareaController._deconstruct, false);
