/*global document window $ alert */
function noCache(sep) { 
  var d = new Date(); 
  var trick = d.getYear() + "ie" + d.getMonth() + "t" + d.getDate() + "r" + d.getHours() + "i" + d.getMinutes() + "c" + d.getSeconds() + "k" + d.getMilliseconds(); 
  if (sep !== "?") { 
    sep = "&"; 
  } 
  return sep + "nocache=" + trick; 
}


// Function to allow one JavaScript file to be included by another.
// Copyright (C) 2006-08 www.cryer.co.uk
function IncludeJavaScript(jsFile) {
  document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}

function emailCheck (emailStr) {
  /* The following pattern is used to check if the entered e-mail address
     fits the user@domain format.  It also is used to separate the username
     from the domain. */
  var emailPat=/^(.+)@(.+)$/;
  /* The following string represents the pattern for matching all special
     characters.  We don't want to allow special characters in the address. 
     These characters include ( ) < > @ , ; : \ " . [ ]    */
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
  /* The following string represents the range of characters allowed in a 
     username or domainname.  It really states which chars aren't allowed. */
  var validChars="\[^\\s" + specialChars + "\]";
  /* The following pattern applies if the "user" is a quoted string (in
     which case, there are no rules about which characters are allowed
     and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
     is a legal e-mail address. */
  var quotedUser="(\"[^\"]*\")";
  /* The following pattern applies for domains that are IP addresses,
     rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
     e-mail address. NOTE: The square brackets are required. */
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  /* The following string represents an atom (basically a series of
     non-special characters.) */
  var atom=validChars + '+';
  /* The following string represents one word in the typical username.
     For example, in john.doe@somewhere.com, john and doe are words.
     Basically, a word is either an atom or quoted string. */
  var word="(" + atom + "|" + quotedUser + ")";
  // The following pattern describes the structure of the user
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  /* The following pattern describes the structure of a normal symbolic
     domain, as opposed to ipDomainPat, shown above. */
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  
  
  /* Finally, let's start trying to figure out if the supplied address is
     valid. */
  
  /* Begin with the coarse pattern to simply break up user@domain into
     different pieces that are easy to analyze. */
  var matchArray=emailStr.match(emailPat);
  if (matchArray===null) {
    /* Too many/few @'s or something; basically, this address doesn't
       even fit the general mould of a valid e-mail address. */
      return false;
  }
  var user=matchArray[1];
  var domain=matchArray[2];
  
  // See if "user" is valid 
  if (user.match(userPat)===null) {
      // user is not valid
      return false;
  }
  
  /* if the e-mail address is at an IP address (as opposed to a symbolic
     host name) make sure the IP address is valid. */
  var IPArray=domain.match(ipDomainPat);
  if (IPArray!==null) {
      // this is an IP address
        for (var i=1;i<=4;i++) {
          if (IPArray[i]>255) {
            return false;
          }
      }
      return true;
}

// Domain is symbolic name
var domainArray=domain.match(domainPat);
if (domainArray===null) {
    return false;
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g");
var domArr=domain.match(atomPat);
var len=domArr.length;
if (domArr[domArr.length-1].length<2) {
   // the address must end in a two letter or three letter word.
   return false;
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="This address is missing a hostname!";
   return false;
}

// If we've gotten this far, everything's valid!
return true;
}

function getOffsetTop(obj){
  var retValue=0;
  var x;
  while(obj){
    try{
      x=parseInt(obj.offsetTop,10);
      if (!isNaN(x) ){
        retValue+=x;
      }
    }
    catch(e){
      alert(e);
    }
    obj=obj.parentNode;
  }
  return retValue;
}
function getClientSize (orientation) {
	var w = 0;
	var h = 0;

	//IE
	if(!window.innerWidth){
		//strict mode
		if(!(document.documentElement.clientWidth === 0)){
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
		}
		//quirks mode
		else{
			w = document.body.clientWidth;
			h = document.body.clientHeight;
		}
	}
	//w3c
	else{
		w = window.innerWidth;
		h = window.innerHeight;
	}
	if (orientation ==="h"){
      return h;
    }
    else {
      return "w";
    }
}
function getBoxHeight (obj, minHeight, reminder){
  var t = getOffsetTop (obj);
  var h = getClientSize("h");
  var dh = h - t - reminder;
    if (dh > minHeight){
      return dh;
    }
  else {
    return minHeight;
  }
}
function display_masked_page (){
  $("loader-mask").style.visibility="hidden";
  $("loader-mask").style.display = "none";
}
function mask_page(){
  $("loader-mask").style.visibility="hidden";
  $("loader-mask").style.display = "none";
}

function isInteger(s){
  for (var i = 0; i < s.length; i++){   
    // Check that current character is number.
    var c = s.charAt(i);
    if (((c < "0") || (c > "9"))) {
      return false;
    }
  }
    // All characters are numbers.
  return true;
}
function trim_inside(s){
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++){   
      // Check that current character isn't whitespace.
      var c = s.charAt(i);
      if (c !== " ") {
          returnString += c;
      }
    }
    return returnString;
}
function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) === -1) {
            returnString += c;
        }
    }
    return returnString;
}


// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/

function write_mailto_link(coded, key) {
    var shift = coded.length, link = "", i = 0, ltr = "";
    for (i = 0; i < coded.length; i += 1) {
        if (key.indexOf(coded.charAt(i)) === -1) {
            ltr = coded.charAt(i);
            link += (ltr);
        }
        else {     
            ltr = (key.indexOf(coded.charAt(i)) - shift + key.length) % key.length;
            link += (key.charAt(ltr));
        }
    }
    document.write("<a href='mailto:" + link + "'>" + link + "</a>");
}
function CJL_getCurrentStyle(elem, prop){
   if( elem.currentStyle ){  
      var ar = prop.match(/\w[^-]*/g);
      var s = ar[0];
      
      for(var i = 1; i < ar.length; ++i)		   
      {
         s += ar[i].replace(/\w/, ar[i].charAt(0).toUpperCase());
      }
           
      return elem.currentStyle[s]
   }
   else if( document.defaultView.getComputedStyle ){
      return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);
   }
}
function add_info_editeur(html_text){
  $("info_editeur_container").innerHTML = html_text;
}
function show_info_editeur (show){
  var iframeContainer = $("info_editeur_container"), ref = $("contenu");
  var scroll=$("info_editeur_scroll");
  var refSize= parseInt( $("contenu").offsetHeight,10);
  if (CJL_getCurrentStyle($("info_editeur_container"), "display") ==="none"){
    iframeContainer.style.height=refSize -3 + "px";
    scroll.style.height=refSize -40 + "px";
    ref.style.display="none";
     iframeContainer.style.display="block";
  }
  else {
    $("info_editeur_container").style.display="none";
    $("contenu").style.display="block";
    
  }
}