// Arnaud Huret 15/10/09

var nOffset = nSlides = nCurrentSlideId = nSlidesShownCount = 0;
var bAutoScroll = true;
var nSlideWidth = 900; // TODO get it via the DOM
var nDefaultSpeed = 1200; //ms
var nFullSpeed = 1; //ms
var nMaxRuns = 1;
var objPageLocators;
var pageLocatorItems = "";
var timer;
var pageLocaterDivName = "nav_slider";
var slidesIdName = "#slides";
var newsIdName = "#news";
var strCookieName = "C0_currentSlide";


function startSlideShow(){

	if(bAutoScroll) {
		nSlidesShownCount++
		setCurrentSlideId();
		animateSlide(nOffset,nDefaultSpeed);	
		
		if (nCurrentSlideId  != nSlides -1) {
			nOffset -=nSlideWidth;
		} else {
			nOffset = 0;
		}
		
		if (nSlidesShownCount == (nMaxRuns * nSlides) + 1) {
			stopSlideShow();
		}
		timer = setTimeout("startSlideShow()", 10000);

	}
}

function stopSlideShow() {
	if(bAutoScroll){
		if (nOffset != 0 && nOffset <= -nSlideWidth) {
			nOffset +=nSlideWidth; // The timer as already run and incremented nOffset
		}
		bAutoScroll = false;
		clearTimeout(timer);
	}
}

function setCurrentSlideId(){
	nCurrentSlideId = -nOffset % (nSlideWidth - 1);
	setPageLocatorStyle(nCurrentSlideId);
}

function setPageLocators(){
	for(var i = 0; i < nSlides; i++) {
		pageLocatorItems += "<a href='javascript:goToSlide("+ i +");' id='a" + i +"'>&#8226;<\/a>";
	}
	objPageLocators.innerHTML = pageLocatorItems;
}

function setPageLocatorStyle(slideId){
	for(var i = 0; i < nSlides; i++) { // Remove all styles previously set. Louzy ...
        document.getElementById("a" + i).className = "";
      }
	document.getElementById("a" + slideId ).className = "currentPageLocator";	
}

function goToSlide(slideId, nSpeed){
	stopSlideShow();
	nOffset = slideId * -nSlideWidth;
	setCurrentSlideId();
	if(nSpeed !=null) {
		animateSlide(nOffset,nSpeed);
	} else {
		animateSlide(nOffset,nDefaultSpeed);
	}
	setPageLocatorStyle(slideId);
}

function viewSlide(action){
	stopSlideShow();
	switch(action){
		case "+":
			nOffset -=nSlideWidth;
			if(nOffset == -nSlideWidth * nSlides) {
				nOffset = 0;
			}
			break;

		case "-": 
			if(nOffset == 0) {
				nOffset = -nSlideWidth * (nSlides -1) ;
			} else {
				nOffset +=nSlideWidth;
			}
			break;
		}

	setCurrentSlideId();	
	animateSlide(nOffset,nDefaultSpeed);
}

function animateSlide(nOffset,nAnimationSpeed){ //  jQuery
	nSpeed = (nAnimationSpeed != null) ? nAnimationSpeed : nDefaultSpeed;
	$(slidesIdName).animate({left: nOffset + "px"}, nSpeed, "swing");
	setCookieSlideshow(nCurrentSlideId);
	// writeToStatusBar("slideID = " + nCurrentSlideId + " - Cookie value = " + getCookie(strCookieName) + " - Speed = " + nSpeed);
}

function hide_label(label_id) {
	document.getElementById(label_id).className = 'hidden';
}

function toggle_hints(label_id, input_id) { 
	// If the input has no value, the label is shown on top of the input, otherwise it's hidden
	var strLabel = document.getElementById(label_id);
	var strInput = document.getElementById(input_id);
	if (strInput.value == null || strInput.value == 'undefined' || strInput.value == '') {
		strLabel.className = 'shown';
	} else {
		strLabel.className = 'hidden';
	};
}

function detectEnter(ev){
	var charCode = (navigator.appName == "Netscape") ? ev.which : window.event.keyCode;
	if (charCode == 0x0d) {
		login();
		return false;
	}
	return true;
}

function check_uncheck(obj){
	obj.className = (obj.className == 'unchecked') ? 'checked':'unchecked'; 
}

function setCookieSlideshow(strVal){
	setCookie(strCookieName, strVal, null, "/", null, false);
}

function setCookieInterfacePref(web_interface){
	var dateExpires = new Date();
	dateExpires.setTime(dateExpires.getTime() + (365 * 24 * 60 * 60 * 1000));
	setCookie("COInterface", web_interface, dateExpires , "/", null, false);
}

function defineLocaleCookieAndSet(customer, type, strLocale){
	var dateExpires = new Date();
	var cookieName = customer + type + "Locale"; //type = ex : login,...
	dateExpires.setTime(dateExpires.getTime() + (365 * 24 * 60 * 60 * 1000));
	setCookie(cookieName, strLocale, dateExpires, "/", null, false);
}
function setCookie(strName, strValue, expires, strPath, strDomain, bSecure){
	document.cookie = strName + "=" + escape(strValue) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((strPath) ? "; path=" + strPath : "") +
	((strDomain) ? ";domain=" + strDomain : "") +
	((bSecure) ? "; secure" : "");
}

function getCookie(check_name) {
	var allCookies = document.cookie.split( ';' );
	var tempCookie = '';
	var cookieName = '';
	var cookieValue = '';
	var bCookieFound = false; 

	for (i = 0; i < allCookies.length; i++){
		tempCookie = allCookies[i].split( '=' ); // split each name=value pair
		cookieName = tempCookie[0].replace(/^\s+|\s+$/g, ''); // trim left/right whitespace
		if (cookieName == check_name){ // if the extracted name matches passed check_name
			bCookieFound = true;
			if (tempCookie.length > 1){ // case where cookie has no value but exists
				cookieValue = unescape(tempCookie[1].replace(/^\s+|\s+$/g, ''));
			}
			return cookieValue; // In case the cookie is initialized but has no value, null is returned
			break;
		}
		tempCookie = null;
		cookieName = '';
	}
	if (!bCookieFound){
		return null;
	}
}

function writeToStatusBar(msg){
    window.status=msg;
    return true;
}

function submitLostPassword(){
	if(checkEMail()) {
		document.LostPasswordForm.submit();
		}
}

var startpage = "";

function login(){
	if (document.EntryForm.web_interface.checked) {
		setCookieInterfacePref("classic");
	} else {
		setCookieInterfacePref("ajax");
		startpage = "&startpage=%2Fnui%2Fvirtualoffice.jsp";	
	}

	if (document.EntryForm.Secure.checked) {
		secureLogin(); 
	} else {
		normalLogin();
	}
}

function countDigits(str){ 
	var nDigits = 0 ; 
		for(i = 0 ; i < str.length ; i++){ 
			var c = str.charAt(i) ; 
			if(("0" <= c) && (c <= "9")) nDigits++ ; 
		} 
	return nDigits ; 
}

var numbers = "0123456789";
var bad_chars = "'`\"\\/:; ";
var bad_chars_no_space = "'`\"\\/:;";
var bad_name_chars = "`\"\\/:;~!@#$%^&*()+={}[]|<>/?,";
var bad_name_chars_numbers = bad_name_chars + numbers;
var bad_email_chars = "`\"\\/ (){}[]|<>/,&+=*'%?!~#^:;";
var bad_username_chars = bad_chars + "~!@#$%^&*()-+={}[]|<>,./?\ ";
var bad_password_chars = bad_username_chars;

function containsOneOf(str, chars){
	var i; 
	for(i = 0; i < chars.length ; i++){
		if(str.indexOf(chars.charAt(i)) >= 0) 
		return true ; 
		} 
		return false ; 
}

function containsBadAddress(str, address){
		if(str.indexOf(address) >= 0) 
		return true ;
}

function isAlphaNumeric(c){
	return (('0' <= c) && (c <='9')) || (('A' <= c) && (c <= 'Z')) || (('a' <= c) && (c <= 'z'));
}

function isAlphaNumericString(str){
	var i;
	for (i = 0; i < str.length ; i++) {
		if (!isAlphaNumeric(str.charAt(i))) {
			return false;
		}
	}
	return true;
}

function changeLang(lang){
	defineLocaleCookieAndSet("ContactOffice", "Login", lang);
}