function strtr (str, from, to) {
    // http://kevin.vanzonneveld.net
    // +   original by: Brett Zamir (http://brett-zamir.me)
    // +      input by: uestla
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Alan C
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: $trans = {'hello' : 'hi', 'hi' : 'hello'};
    // *     example 1: strtr('hi all, I said hello', $trans)
    // *     returns 1: 'hello all, I said hi'
    // *     example 2: strtr('äaabaaccasdeöoo', 'äaö','aao');
    // *     returns 2: 'aaabaaccasdeooo'
    // *     example 3: strtr('ääääääää', 'ä', 'a');
    // *     returns 3: 'aaaaaaaa'
    // *     example 4: strtr('http', 'pthxyz','xyzpth');
    // *     returns 4: 'zyyx'
    // *     example 5: strtr('zyyx', 'pthxyz','xyzpth');
    // *     returns 5: 'http'
 
    var fr = '', i = 0, j = 0, lenStr = 0, lenFrom = 0;
    var tmpFrom = [];
    var tmpTo   = [];
    var ret = '';
    var match = false;
 
    // Received replace_pairs?
    // Convert to normal from->to chars
    if (typeof from === 'object') {
        for (fr in from) {
            tmpFrom.push(fr);
            tmpTo.push(from[fr]);
        }
 
        from = tmpFrom;
        to   = tmpTo;
    }
    
    // Walk through subject and replace chars when needed
    lenStr  = str.length;
    lenFrom = from.length;
    for (i = 0; i < lenStr; i++) {
        match = false;
        for (j = 0; j < lenFrom; j++) {

            if (str.substr(i, 1) == from[j]) {
                match = true;
 
                // Fast forward
                i = (i + 1)-1;
                
                break;
            }
        }
        
        if (false !== match) {
            ret += to[j];
        } else {
            ret += str[i];
        }
    }
 
    return ret;
}

function tr(str, from, to) {
for(var i = 0; i < from.length; i++) {
str = str.replace(new RegExp(from.charAt(i),'g'), to.charAt(i));
}

return str;
}

         
function toAscii(str) { 
  var win = "ìšèøžýáíéòïúùóöüä";
  var ascii="escrzyaietnduuooua";      
               
  return tr(str,win,ascii);
}     
            
function symCheckEmail(val) {   
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(val)){
            return (true)
    }                
    return (false)
}

jQuery.fn.extend({ 

	meerkat: function(options) {

		var defaults = {
			background: 'none',
			opacity: null,
			height: 'auto',
			width: '100%',
			position: 'bottom',
			close: '.close',
			dontShowAgain: '#dont-show',
			dontShowAgainAuto: false,
			animationIn: 'none',
			animationOut: null,
			easingIn: 'swing',
			easingOut: 'swing',
			animationSpeed: 'normal',
			cookieExpires: 0,
			removeCookie: '.removeCookie',
			delay: 0,
			onMeerkatShow: function() {},
			timer: null		
		};

		var settings = jQuery.extend(defaults, options);
		
	
		if(jQuery.easing.def){
			settings.easingIn = settings.easingIn;
			settings.easingOut = settings.easingOut;
		}else {
			settings.easingIn = 'swing';
			settings.easingOut = 'swing';
		}

		if(settings.animationOut === null){
			settings.animationOut = settings.animationIn;	
		}

		settings.delay = settings.delay * 1000;
		if(settings.timer != null){
			settings.timer = settings.timer * 1000;
		}

		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 nameEQ = name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i < ca.length;i++) {
				var c = ca[i];
				while (c.charAt(0)===' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		}
		
		function eraseCookie(name) {
			createCookie(name,"",-1);
		}		
		jQuery(settings.removeCookie).click(function(){ eraseCookie('meerkat')});

		return this.each(function() {
			var element = jQuery(this);
			if(readCookie('meerkat') != "dontshow"){
				settings.onMeerkatShow.call(this);

				function animateMeerkat(showOrHide, fadeOrSlide){					
					var meerkatWrap = jQuery('#meerkat-wrap');
					if(fadeOrSlide === "slide"){				
						if(settings.position === "left" || settings.position === "right"){
							var animationType = 'width';
						} else {
							var animationType = 'height';
						}
					} else {
						var animationType = "opacity";
					} 
					var animationProperty = {};
					animationProperty[animationType] = showOrHide;

					if(showOrHide === "show"){
						if(fadeOrSlide !== "none"){
							if(settings.delay > 0){
								jQuery(meerkatWrap).hide().delay(settings.delay).animate(animationProperty,settings.animationSpeed, settings.easingIn);
							} else {
								jQuery(meerkatWrap).hide().animate(animationProperty,settings.animationSpeed, settings.easingIn);
							}							
						} else if ((fadeOrSlide === "none")&&(settings.delay > 0)){
							jQuery(meerkatWrap).hide().delay(settings.delay).show(0);
						} else {
							jQuery(meerkatWrap).show();
						}
						jQuery(element).show(0);
					}

					if(showOrHide === "hide"){
						if(fadeOrSlide !== "none"){
							if(settings.timer !== null){
								jQuery(meerkatWrap).delay(settings.timer).animate(animationProperty,settings.animationSpeed, settings.easingOut,
								  function(){
								    jQuery(this).destroyMeerkat(); 
								    if(settings.dontShowAgainAuto === true) { createCookie('meerkat','dontshow', settings.cookieExpires); }
								  });
							}
							jQuery(settings.close).click(function(){
								jQuery(meerkatWrap).stop().animate(animationProperty,settings.animationSpeed, settings.easingOut, function(){jQuery(this).destroyMeerkat();});
								return false;
							});
							jQuery(settings.dontShowAgain).click(function(){
								jQuery(meerkatWrap).stop().animate(animationProperty,settings.animationSpeed, settings.easingOut, function(){jQuery(this).destroyMeerkat();});
								createCookie('meerkat','dontshow', settings.cookieExpires);
								return false;
							});
						} else if((fadeOrSlide === "none")&&(settings.timer !== null)) {
							jQuery(meerkatWrap).delay(settings.timer).hide(0).queue(function(){
								jQuery(this).destroyMeerkat();
							});
						} else {
							jQuery(settings.close).click(function(){
								jQuery(meerkatWrap).hide().queue(function(){
									jQuery(this).destroyMeerkat();
								});
								return false;
							});
							jQuery(settings.dontShowAgain).click(function(){
								jQuery(meerkatWrap).hide().queue(function(){
									jQuery(this).destroyMeerkat();
								});
								createCookie('meerkat','dontshow', settings.cookieExpires);
								return false;
							});
						}
					}
				}


				jQuery('html, body').css({'margin':'0', 'height':'100%'});
				jQuery(element).wrap('<div id="meerkat-wrap"><div id="meerkat-container"></div></div>');
				jQuery('#meerkat-wrap').css({'text-align':'left','position':'fixed', 'z-index': '10000', 'width': settings.width, 'height': settings.height}).css(settings.position, "0");
				jQuery('#meerkat-container').css({'background': settings.background, 'height': settings.height});

				if(settings.position === "left" || settings.position === "right"){ jQuery('#meerkat-wrap').css("top", 0);}

				if(settings.opacity != null){
					jQuery("#meerkat-wrap").prepend('<div class="opacity-layer"></div>');
					jQuery('#meerkat-container').css({'background': 'transparent', 'z-index' : '2', 'position': 'relative'});
					jQuery(".opacity-layer").css({
							'position': 'absolute', 
							'left' : '0',
							'top' : '0', 
							'height': '100%', 
							'width': '100%',  
							'background': settings.background, 
							"opacity" : settings.opacity
						});					

				}
				if(jQuery.browser.msie && jQuery.browser.version <= 6){
					jQuery('#meerkat-wrap').css({'position':'absolute', 'bottom':'-1px', 'z-index' : '0'});
					if(jQuery('#ie6-content-container').length == 0){			
					jQuery('body').children()
						.filter(function (index) {
							return jQuery(this).attr('id') != 'meerkat-wrap';
						})
					.wrapAll('<div id="ie6-content-container"></div>');
					jQuery('html, body').css({'height':'100%', 'width':'100%', 'overflow':'hidden'});
					jQuery('#ie6-content-container').css({'overflow':'auto', 'width':'100%', 'height':'100%', 'position':'absolute'});
					var bgProperties = document.body.currentStyle.backgroundColor+ " ";
					bgProperties += document.body.currentStyle.backgroundImage+ " ";
					bgProperties += document.body.currentStyle.backgroundRepeat+ " ";
					bgProperties += document.body.currentStyle.backgroundAttachment+ " ";
					bgProperties += document.body.currentStyle.backgroundPositionX+ " ";
					bgProperties += document.body.currentStyle.backgroundPositionY;
					jQuery("body").css({'background':'none'});
					jQuery("#ie6-content-container").css({'background' : bgProperties});
					}
					var ie6ContentContainer = document.getElementById('ie6-content-container');					
					if((ie6ContentContainer.clientHeight < ie6ContentContainer.scrollHeight) && (settings.position != 'left')) {
						jQuery('#meerkat-wrap').css({'right' : '17px'});
					}
				}

				switch (settings.animationIn)
				{
					case "slide":
						animateMeerkat("show", "slide");
						break;
					case "fade":
						animateMeerkat("show", "fade");
						break;
					case "none":
						animateMeerkat("show", "none");
						break;
					default:
						alert('The animationIn option only accepts "slide", "fade", or "none"');
				}

				switch (settings.animationOut)
				{
					case "slide":
						animateMeerkat("hide", "slide");
						break;

					case "fade":
						animateMeerkat("hide", "fade");
						break;

					case "none":
						if(settings.timer != null){
							jQuery('#meerkat-wrap').delay(settings.timer).hide(0).queue(function(){
								jQuery(this).destroyMeerkat();
							});
						}
						jQuery(settings.close).click(function(){
							jQuery('#meerkat-wrap').hide().queue(function(){
								jQuery(this).destroyMeerkat();
							});
						});
						jQuery(settings.dontShowAgain).click(function(){
							jQuery('#meerkat-wrap').hide().queue(function(){
								jQuery(this).destroyMeerkat();
							});
							createCookie('meerkat','dontshow', settings.cookieExpires);
						});
						break;

					default:
					  alert('The animationOut option only accepts "slide", "fade", or "none"');
				}
			} else {
				jQuery(element).hide();	
			}
		});
	},
	destroyMeerkat: function() {
		jQuery('#meerkat-wrap').replaceWith( jQuery('#meerkat-container').contents().hide() );		
	}
});


/*! 
* jQuery Countdown Timer 1.2 Plugin
* Copyright 2011 Tom Ellis http://www.webmuse.co.uk
* Licensed under MIT License
* See http://www.webmuse.co.uk/license/
*/
(function($) {
   
	$.fn.countdown = function( options ) {  
	
		var defaults = {
				date: new Date(),
				updateTime: 1000,
				htmlTemplate: "%{d} <span class=\"cd-time\">days</span> %{h} <span class=\"cd-time\">hours</span> %{m} <span class=\"cd-time\">mins</span> %{s} <span class=\"cd-time\">sec</span>",
				minus: false,
				onChange: null,
				onComplete: null,
				leadingZero: false,
                minutesOnly: false
			},
			opts = {},
			rDate = /(%\{d\}|%\{h\}|%\{m\}|%\{s\})/g,
			rDays = /%\{d\}/,
			rHours = /%\{h\}/,
			rMins = /%\{m\}/,
			rSecs = /%\{s\}/,
			complete = false,
			template,
			floor = Math.floor,
			onChange = null,
			onComplete = null;
		   
		$.extend( opts, defaults, options );
		
		template = opts.htmlTemplate;
		
		return this.each(function() {
		
			var $this = $(this),
				timer,
				TodaysDate = new Date(),
				CountdownDate = new Date( opts.date ),
				msPerDay = 864E5, //24 * 60 * 60 * 1000
				timeLeft = CountdownDate.getTime() - TodaysDate.getTime(),
				e_daysLeft = timeLeft / msPerDay,
				daysLeft = floor(e_daysLeft),
				e_hrsLeft = (e_daysLeft - daysLeft)*24, //Gets remainder and * 24
				hrsLeft = floor(e_hrsLeft),
				minsLeft = floor((e_hrsLeft - hrsLeft)*60),					
				e_minsleft = (e_hrsLeft - hrsLeft)*60, //Gets remainder and * 60
				secLeft = floor((e_minsleft - minsLeft)*60),
				time = "";

			if( opts.onChange){
				$this.bind("change", opts.onChange);
			}
			
			if( opts.onComplete ){
				$this.bind("complete", opts.onComplete);
			}

            hrsLeft = hrsLeft + daysLeft*24;
			
            // SYMPACT
            if (opts.minutesOnly) {
                minsLeft = minsLeft+60*hrsLeft;
            }
                
			if ( opts.leadingZero ) {
			
				if ( daysLeft < 10) {
					daysLeft = "0" + daysLeft;
				}
				
				if ( hrsLeft < 10) {
					hrsLeft = "0" + hrsLeft;
				}
				
				if ( minsLeft < 10) {
					minsLeft = "0" + minsLeft;
				}
				
				if ( secLeft < 10) {
					secLeft = "0" + secLeft;
				}
			}

			//Set initial time
			if ( TodaysDate <= CountdownDate || opts.minus ) {
				time = template.replace( rDays, daysLeft ).replace( rHours, hrsLeft ).replace( rMins, minsLeft ).replace( rSecs, secLeft );
			} else {
				time = template.replace( rDate, "00");
				complete = true;
			}
							
			timer = window.setInterval(function(){
				
				TodaysDate = new Date(),
				CountdownDate = new Date( opts.date ),
				msPerDay = 864E5, //24 * 60 * 60 * 1000
				timeLeft = CountdownDate.getTime() - TodaysDate.getTime(),
				e_daysLeft = timeLeft / msPerDay,
				daysLeft = floor(e_daysLeft),
				e_hrsLeft = (e_daysLeft - daysLeft)*24, //Gets remainder and * 24
				hrsLeft = floor(e_hrsLeft),
				minsLeft = floor((e_hrsLeft - hrsLeft)*60),					
				e_minsleft = (e_hrsLeft - hrsLeft)*60, //Gets remainder and * 60
				secLeft = floor((e_minsleft - minsLeft)*60),
				time = "";

                hrsLeft = hrsLeft + daysLeft*24;
                
                // SYMPACT
                if (opts.minutesOnly) {
                    minsLeft = minsLeft+60*hrsLeft;
                }
				
				if ( opts.leadingZero ) {
				
					if ( daysLeft < 10) {
						daysLeft = "0" + daysLeft;
					}
					
					if ( hrsLeft < 10) {
						hrsLeft = "0" + hrsLeft;
					}
					
					if ( minsLeft < 10) {
						minsLeft = "0" + minsLeft;
					}
					
					if ( secLeft < 10) {
						secLeft = "0" + secLeft;
					}
				}

				if ( TodaysDate <= CountdownDate || opts.minus ) {
					time = template.replace( rDays, daysLeft ).replace( rHours, hrsLeft ).replace( rMins, minsLeft ).replace( rSecs, secLeft );
				} else {
					time = template.replace( rDate, "00");
					complete = true;
				}
								
				$this.html( time );
				
				$this.trigger('change', [timer] );
			    
				if ( complete ){

					$this.trigger('complete');
					clearInterval( timer );
				}       		
			
			}, opts.updateTime);


		    $this.html( time );
			
			if ( complete ){
				$this.trigger('complete');
				clearInterval( timer );
			}
			
		});
	};
       
})(jQuery);            



   // Original JavaScript code by Duncan Crombie: dcrombie@chirp.com.au
   // Please acknowledge use of this code by including this header.

   // CONSTANTS
  var separator = " ";  // use comma as 000's separator
  var decpoint = ".";  // use period as decimal point
  var percent = "%";
  var currency = "$";  // use dollar sign for currency

  function formatNumber(number, format, print) {  // use: formatNumber(number, "format")

    if (print) document.write("formatNumber(" + number + ", \"" + format + "\")<br>");

    if (number - 0 != number) return null;  // if number is NaN return null
    var useSeparator = format.indexOf(separator) != -1;  // use separators in number
    var usePercent = format.indexOf(percent) != -1;  // convert output to percentage
    var useCurrency = format.indexOf(currency) != -1;  // use currency format
    var isNegative = (number < 0);
    number = Math.abs (number);
    if (usePercent) number *= 100;
    format = strip(format, separator + percent + currency);  // remove key characters
    number = "" + number;  // convert number input to string

     // split input value into LHS and RHS using decpoint as divider
    var dec = number.indexOf(decpoint) != -1;
    var nleftEnd = (dec) ? number.substring(0, number.indexOf(".")) : number;
    var nrightEnd = (dec) ? number.substring(number.indexOf(".") + 1) : "";

     // split format string into LHS and RHS using decpoint as divider
    dec = format.indexOf(decpoint) != -1;
    var sleftEnd = (dec) ? format.substring(0, format.indexOf(".")) : format;
    var srightEnd = (dec) ? format.substring(format.indexOf(".") + 1) : "";

     // adjust decimal places by cropping or adding zeros to LHS of number
    if (srightEnd.length < nrightEnd.length) {
      var nextChar = nrightEnd.charAt(srightEnd.length) - 0;
      nrightEnd = nrightEnd.substring(0, srightEnd.length);
      if (nextChar >= 5) nrightEnd = "" + ((nrightEnd - 0) + 1);  // round up

 // patch provided by Patti Marcoux 1999/08/06
      while (srightEnd.length > nrightEnd.length) {
        nrightEnd = "0" + nrightEnd;
      }

      if (srightEnd.length < nrightEnd.length) {
        nrightEnd = nrightEnd.substring(1);
        nleftEnd = (nleftEnd - 0) + 1;
      }
    } else {
      for (var i=nrightEnd.length; srightEnd.length > nrightEnd.length; i++) {
        if (srightEnd.charAt(i) == "0") nrightEnd += "0";  // append zero to RHS of number
        else break;
      }
    }

     // adjust leading zeros
    sleftEnd = strip(sleftEnd, "#");  // remove hashes from LHS of format
    while (sleftEnd.length > nleftEnd.length) {
      nleftEnd = "0" + nleftEnd;  // prepend zero to LHS of number
    }

    nleftEnd = separate(nleftEnd, separator);  // add separator
    var output = nleftEnd + ((nrightEnd != "") ? "." + nrightEnd : "");  // combine parts
    output = ((useCurrency) ? currency : "") + output + ((usePercent) ? percent : "");
    if (isNegative) {
      // patch suggested by Tom Denn 25/4/2001
      output = (useCurrency) ? "(" + output + ")" : "-" + output;
    }
    return output;
  }

  function strip(input, chars) {  // strip all characters in 'chars' from input
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++)
      if (chars.indexOf(input.charAt(i)) == -1)
        output += input.charAt(i);
    return output;
  }

  function strip2(input) {  // strip all characters in 'chars' from input
     return strip(input," ");
  }

  function separate(input, separator) {  // format input using 'separator' to mark 000's
    input = "" + input;
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++) {
      if (i != 0 && (input.length - i) % 3 == 0) output += separator;
      output += input.charAt(i);
    }

    return output;
  }
