//this function runs when the page is loaded
function init() {
    //updateMenu();
    updateExternalLinks();
    replaceChecks();
    initRotator();
}

document.getElementsByClassName = function(className, parentElement) {
  var children = ($(parentElement) || document.body).getElementsByTagName('*');
  return $A(children).inject([], function(elements, child) {
    if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
      elements.push(child);
    return elements;
  });
}

function updateMenu() {
	var isJS = /javascript/i;
    //get all the input fields on the page
    menuItems = document.getElementsByClassName('header_menuitem',document.getElementById('header_logo_mainmenu'));
    //cycle trough the menuItems fields
    for(var i=0; i < menuItems.length; i++) {
    	//Put an ID on each menuItem
    	menuItems[i].id=i;
    	//Change the appearance
    	menuItems[i].onmouseover=function(){
    					this.className='header_menuitem_on';
    				}
    	menuItems[i].onmouseout=function(){
    					this.className='header_menuitem';
    				}
    	//Set the onmouseclick event depending on the link inside the element
    	links = menuItems[i].getElementsByTagName('a');
		if(links.length){
			var onClickStr = new String(links[0].onclick);
			var hrefStr = new String(links[0].href);
			if(onClickStr.match(isJS)) {
				menuItems[i].onclick=links[0].onclick;
				links[0].onclick=null;
			} else if(hrefStr.match(isJS)){
				menuLinks[i]=links[0].href;
				menuItems[i].onclick=function(){
							var hrefStr = new String(menuLinks[this.id]);
							eval(hrefStr.substr(9).valueOf());
						}
				links[0].href="javascript:void(0);";
			} else{
				menuLinks[i]=links[0].href;
				menuItems[i].onclick=function(){ document.location=menuLinks[this.id]}
				//changing the href on IE is buggy so special treatment for IE
				if (typeof document.body.style.maxHeight != "undefined") {
				  // IE 7, mozilla, safari, opera 9... or some other cool browser
				  links[0].href="javascript:void(0);";
				} else {
				  // IE6, older browsers, do nothing
				}
			}
		}
    }
}

function updateExternalLinks() {
 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";
 }
}

function showHideFAQ(id){
	faq = document.getElementById('faq_'+id);
	if(faq.style.display=='')
		faq.style.display='none';
	else faq.style.display='';
}

function rollMenu(idSubmenu){
	if(document.getElementById('submenu'+idSubmenu)==null) return;
	/*if(document.getElementById(idSubmenu).style.display=='none'){
		document.getElementById(idSubmenu).style.display='';
	} else {
		document.getElementById(idSubmenu).style.display='none';
	}*/
	clearTimeout(timeout);
	clearTimeout(currentMenuRollTimeout);
	currentMenuRoll=idSubmenu;
	document.getElementById('menu'+idSubmenu).className='menu_item on';
	currentMenuRollTimeout=setTimeout('rollMenuDo('+idSubmenu+')',1000);
}
function rollMenuDo(idSubmenu){
	document.getElementById('submenu'+idSubmenu).style.display='';
	openSubmenus[openSubmenus.length]='submenu'+idSubmenu;
}

function contains (container, containee) {
	while (containee) {
	if (container == containee) {
	return true;
	}
	containee = containee.parentNode;
	}
	return false;
}

function mouseLeaves(element, evt){
	if (typeof evt.toElement != 'undefined' && evt.toElement && typeof element.contains != 'undefined') {
		return !element.contains(evt.toElement);
	}else if (typeof evt.relatedTarget != 'undefined' && evt.relatedTarget) {
		return !contains(element, evt.relatedTarget);
	} else return false;
}

function closeSubmenus(){
	var i=0;
	for(i=0;i<openSubmenus.length;i++){
		document.getElementById(openSubmenus[i]).style.display='none';
	}
	openSubmenus=new Array();
}

//CHECKBOXES
function replaceChecks() {
    //get all the input fields on the page
    inputs = document.getElementsByTagName('input');

    //cycle trough the input fields
    for(var i=0; i < inputs.length; i++) {

        //check if the input is a checkbox
        if(inputs[i].getAttribute('type') == 'checkbox') {

            //create a new image
            var img = document.createElement('img');

            //check if the checkbox is checked
            if(inputs[i].checked) {
                img.src = imgTrue;
            } else {
                img.src = imgFalse;
            }

            //set image ID and onclick action
            img.id = 'checkImage'+i;
            //set image
            img.onclick = new Function('checkChange('+i+')');
            //place image in front of the checkbox
            inputs[i].parentNode.insertBefore(img, inputs[i]);

            //hide the checkbox
            inputs[i].style.display='none';
        }
    }
}

//change the checkbox status and the replacement image
function checkChange(i) {
    if(inputs[i].checked) {
        //inputs[i].checked = '';
        document.getElementById('checkImage'+i).src=imgFalse;
    } else {
        //inputs[i].checked = 'checked';
        document.getElementById('checkImage'+i).src=imgTrue;
    }
    inputs[i].click();
}

function verifyChecks() {

    //get all the input fields on the page
    inputs = document.getElementsByTagName('input');

    //cycle trough the input fields
    for(var i=0; i < inputs.length; i++) {
    	//check if the input is a checkbox
        if(inputs[i].getAttribute('type') == 'checkbox') {
        	if(inputs[i].checked) {
		        document.getElementById('checkImage'+i).src=imgTrue;
		    } else {
		        document.getElementById('checkImage'+i).src=imgFalse;
		    }
        }
    }
}

function checkboxCheck(id){
	document.getElementById(id).click();
	verifyChecks();
}

function showHideHelpForm($language){
	var htmlCode = "";
	if($language=="fr_CA"){
		htmlCode+="<b>Obtenez de l'aide à propos de cette page:</b><br /><br />";
	} else {
		htmlCode+="<b>Get help about this page:</b><br /><br />";
	}
	htmlCode+="<div style='float:left;width:37%;'>";
	if($language=="fr_CA"){
		htmlCode+="Vous ne comprenez pas quelque chose sur cette page ou vous avez besoin de plus de précisions?<br /><br />";
		htmlCode+="Remplissez simplement ce formulaire et un de nos représentant se fera un plaisir de vous apporter les éclaircissements nécessaires.<br /><br />";
		htmlCode+="Nous saurons exactement sur quelle page vous vous trouviez, il est donc inutile de le préciser.";
	} else {
		//default to english
		htmlCode+="You don't understand something on this page or you need more information?<br /><br />";
		htmlCode+="Simply fill this form and a representative will be glad to give you the appropriate clarifications.<br /><br />";
		htmlCode+="We will know exactly from which page you are sending us this request, so there is no need to specify it.";
	}
	htmlCode+="</div>";
	htmlCode+="<table id='tableHelpForm'>";
	if($language=="fr_CA"){
		htmlCode+="<tr><td>&nbsp;</td><td class='note'>(*): Champs obligatoires</td></tr>";
		htmlCode+="<tr><td class='title'>Nom*:</td><td><input type='text' id='helpFormName' /></td></tr>";
		htmlCode+="<tr><td class='title'>Courriel*:</td><td><input type='text' id='helpFormEmail' /></td></tr>";
		htmlCode+="<tr><td class='title'>Téléphone:</td><td><input type='text' id='helpFormPhone' /></td></tr>";
		htmlCode+="<tr><td class='title'>Question*:</td><td><textarea id='helpFormMessage'></textarea></td></tr>";
		htmlCode+="<tr><td>&nbsp;</td><td><button onclick=\"submitHelpForm('"+$language+"')\">Envoyer</button>&nbsp;<button onclick='cancelHelpForm()'>Annuler</button></td></tr>";
	} else {
		htmlCode+="<tr><td>&nbsp;</td><td class='note'>(*): Mandatory fields</td></tr>";
		htmlCode+="<tr><td class='title'>Name*:</td><td><input type='text' id='helpFormName' /></td></tr>";
		htmlCode+="<tr><td class='title'>Email*:</td><td><input type='text' id='helpFormEmail' /></td></tr>";
		htmlCode+="<tr><td class='title'>Phone:</td><td><input type='text' id='helpFormPhone' /></td></tr>";
		htmlCode+="<tr><td class='title'>Question*:</td><td><textarea id='helpFormMessage'></textarea></td></tr>";
		htmlCode+="<tr><td>&nbsp;</td><td><button onclick=\"submitHelpForm('"+$language+"')\">Send</button>&nbsp;<button onclick='cancelHelpForm()'>Cancel</button></td></tr>";
	}
	htmlCode+="</table>";

	//We fill and empty the div each time we click the button (instead of just hiding it)
	//because of a crazy IE bug!!
	if(document.getElementById('divHelpForm').style.display=='none'){
		document.getElementById('divHelpForm').innerHTML=htmlCode;
		document.getElementById('divHelpForm').style.display='';
	} else {
		document.getElementById('divHelpForm').innerHTML='';
		document.getElementById('divHelpForm').style.display='none';
	}
}

function cancelHelpForm(){
	document.getElementById('divHelpForm').innerHTML=''; //Still the IE crazy bug!
	document.getElementById('divHelpForm').style.display='none';
}

function submitHelpForm($language){
	var emailFilter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.([a-zA-Z]{2,6})$/

	var emptyNameMessage, emptyMailMessage ,emptyQuestionMessage;
	if($language=="fr_CA"){
		emptyNameMessage="Merci de saisir votre nom.";
		emptyMailMessage="Merci de saisir votre adresse de courriel.";
		emptyQuestionMessage="Merci de saisir votre question.";
		badEmailMessage="L'adresse de courriel saisie est invalide. Merci de la vérifier.";
	} else {
		emptyNameMessage="Please enter your name.";
		emptyMailMessage="Please enter your email address.";
		emptyQuestionMessage="Please enter your question.";
		badEmailMessage="The entered email address is invalid. Please check it.";
	}
	//check if all required fields are filled
	if(document.getElementById('helpFormName').value==""){ alert(emptyNameMessage); return;	}
	if(document.getElementById('helpFormEmail').value==""){ alert(emptyMailMessage); return; }
	if(document.getElementById('helpFormMessage').value==""){ alert(emptyQuestionMessage); return; }
	//check email address (syntax check only)
	if(!emailFilter.test(document.getElementById('helpFormEmail').value)){
		alert(badEmailMessage); return;
	}
	window.open('./helpForm.php','helpForm','resizable=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,fullscreen=no,dependent=no,width=300,height=200,left=200,top=150')
}

function sendPage(){
	window.open('./sendPage.php','sendPage','resizable=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,fullscreen=no,dependent=no,width=450,height=450,left=50,top=50');
}

/**
* INITIALISATIONS
**/
var menuLinks=Array();
document.getElementsByClassName = function(className, parentElement) {
	var children = parentElement.getElementsByTagName('*');
	var result = Array();
	for(var i=0; i < children.length; i++) {
		if(children[i].className==className) result.push(children[i]);
	}
	return result;
}

var openSubmenus=new Array();
var currentMenuRoll;
var currentMenuRollTimeout;
var openSubmenu=0;
var timeout;
var imgFalse = './images/checkbox_false.png';
var imgTrue = './images/checkbox_true.png';
var inputs; //For checkboxes
window.onload = init;
