<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml">
<head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>French Language Test | Learn French Lab</title><meta name="keywords" content="French language test,delf a1,delf exams,learn french online,free french lesons"><meta name="description" content="What is my level in French? Take this French language test  (DELF A1) to assess your Comprehension and linguistic skills  according to the European Framework of Reference for Languages."><link href="/sd/support-files/style.css" rel="stylesheet" type="text/css">
<!-- start: tool_blocks.sbi_html_head -->
<link rel="canonical" href="http://www.learnfrenchlab.com/french-language-test.html" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://www.learnfrenchlab.com/learn-French.xml">
<meta property="og:site_name" content="Learn French Lab" />
<meta property="og:title" content="French Language Test | Learn French Lab" />
<meta property="og:description" content="What is my level in French? Take this French language test  (DELF A1) to assess your Comprehension and linguistic skills  according to the European Framework of Reference for Languages." />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://www.learnfrenchlab.com/french-language-test.html" />
<meta property="og:image" content="http://www.learnfrenchlab.com/images/delf-a1-ce1.jpg" />
<meta property="og:image" content="http://www.learnfrenchlab.com/learn-french-fb.jpg" />
<meta property="og:image" content="http://www.learnfrenchlab.com/images/gateau.jpg" />
<!-- end: tool_blocks.sbi_html_head -->
<!-- start: shared_blocks.36602901#end-of-head -->

<script type="text/javascript">var switchTo5x=true;</script>
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript" src="http://s.sharethis.com/loader.js"></script>

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-36556650-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>


 


<script src="support-files/media-net-sticky.js" type="text/javascript"></script>




<!-- end: shared_blocks.36602901#end-of-head -->
    <script type="text/javascript" src="/sd/support-files/fix.js"></script>
    <script type="text/javascript">        FIX.designMode = "legacy";
        FIX.doEndOfHead();
    </script>
</head>
<body>

    <div id="PageWrapper">

      <div id="Header">
        <div class="Liner">
<!-- start: shared_blocks.36602888#top-of-header -->


<!-- end: shared_blocks.36602888#top-of-header -->
<!-- start: shared_blocks.36602871#bottom-of-header -->


<!-- end: shared_blocks.36602871#bottom-of-header -->
</div><!-- end Liner -->
      </div><!-- end Header -->

      <div id="ContentWrapper">
        <div id="ContentColumn">
          <div class="Liner">
<!-- start: shared_blocks.36602868#above-h1 -->

<!-- start: tool_blocks.faceit_like.1 --><!-- end: tool_blocks.faceit_like.1 -->

<!-- end: shared_blocks.36602868#above-h1 -->
<h1 style="text-align: center">French Language Test<br/><br/></h1>
<!-- start: shared_blocks.36602915#below-h1 -->


<!-- end: shared_blocks.36602915#below-h1 -->
<p>What is my level in French? Take this DELF A1 French Language Test to assess your Comprehension and linguistic skills according to the Common European Framework of Reference for Languages (CEFR).</p>
<h2 style="text-align: center">Test 1/4<br/></h2>
<div class="ImageBlock"><div class="noalignment"><img src="http://www.learnfrenchlab.com/images/delf-a1-ce1.jpg" width="520" alt="French language test" title="French language test"></div></div>
<style type="text/css">


/* This is the CSS stylesheet used in the exercise. */
/* Elements in square brackets are replaced by data based on configuration settings when the exercise is built. */

/* BeginCorePageCSS */

/* Made with executable version 6.3 Release 0 Build 4 */


/* Hack to hide a nested Quicktime player from IE, which can't handle it. */
* html object.MediaPlayerNotForIE {
        display: none;
}

body{
        font-family: Arial,Geneva,sans-serif;
        background-color: #C0C0C0;
        color: #000000;
 
        margin-right: 5%;
        margin-left: 5%;
        font-size: small;
}

p{
        text-align: left;
        margin: 0px;
        font-size: 100%;
}

table,div,span,td{
        font-size: 100%;
        color: #000000;
}

div.Titles{
        padding: 0.5em;;
        text-align: center;
        color: #000000;
}

button{
        font-family: Arial,Geneva,sans-serif;
        font-size: 100%;
        display: inline;
}

.ExerciseTitle{
        font-size: 140%;
        color: #000000;
}

.ExerciseSubtitle{
        font-size: 120%;
        color: #000000;
}

div.StdDiv{
        background-color: #dddddd;
        text-align: center;
        font-size: 100%;
        color: #000000;
        padding: 0.5em;
        border-style: solid;
        border-width: 1px 1px 1px 1px;
        border-color: #000000;
        margin-bottom: 1px;
}

/* EndCorePageCSS */

.RTLText{
        text-align: right;
        font-size: 150%;
        direction: rtl;
        font-family: "Simplified Arabic", "Traditional Arabic", "Times New Roman", Arial,Geneva,sans-serif; 
}

.CentredRTLText{
        text-align: center;
        font-size: 150%;
        direction: rtl;
        font-family: "Simplified Arabic", "Traditional Arabic", "Times New Roman", Arial,Geneva,sans-serif; 
}

button p.RTLText{
        text-align: center;
}

.RTLGapBox{
        text-align: right;
        font-size: 150%;
        direction: rtl;
        font-family: "Times New Roman", Arial,Geneva,sans-serif;
}

.Guess{
        font-weight: bold;
}

.CorrectAnswer{
        font-weight: bold;
}

div#Timer{
        padding: 0.25em;
        margin-left: auto;
        margin-right: auto;
        text-align: center;
        color: #000000;
}

span#TimerText{
        padding: 0.25em;
        border-width: 1px;
        border-style: solid;
        font-weight: bold;
        display: none;
        color: #000000;
}

span.Instructions{

}

div.ExerciseText{

}

.FeedbackText, .FeedbackText span.CorrectAnswer, .FeedbackText span.Guess, .FeedbackText span.Answer{
        color: #000000;
}

.LeftItem{
        font-size: 100%;
        color: #000000;
        text-align: left;
}

.RightItem{
        font-weight: bold;
        font-size: 100%;
        color: #000000;
}

span.CorrectMark{

}

input, textarea{
        font-family: Arial,Geneva,sans-serif;
        font-size: 120%;
}

select{
        font-size: 100%;
}

div.Feedback {
        background-color: #C0C0C0;
        left: 33%;
        width: 34%;
        top: 33%;
        z-index: 1;
        border-style: solid;
        border-width: 1px;
        padding: 5px;
        text-align: center;
        color: #000000;
        position: absolute;
        display: none;
        font-size: 100%;
}




div.ExerciseDiv{
        color: #000000;
}

/* JMatch flashcard styles */
table.FlashcardTable{
        background-color: transparent;
        color: #000000;
        border-color: #000000;
        margin-left: 5%;
        margin-right: 5%;
        margin-top: 2em;
        margin-bottom: 2em;
        width: 90%;
        position: relative;
        text-align: center;
        padding: 0px;
}

table.FlashcardTable tr{
        border-style: none;
        margin: 0px;
        padding: 0px;
        background-color: #dddddd;
}

table.FlashcardTable td.Showing{
        font-size: 140%;
        text-align: center;
        width: 50%;
        display: table-cell;
        padding: 2em;
        margin: 0px;
        border-style: solid;
        border-width: 1px;
        color: #000000;
        background-color: #dddddd;
}

table.FlashcardTable td.Hidden{
        display: none;
}

/* JMix styles */
div#SegmentDiv{
        margin-top: 2em;
        margin-bottom: 2em;
        text-align: center;
}

a.ExSegment{
        font-size: 120%;
        font-weight: bold;
        text-decoration: none;
        color: #000000;
}

span.RemainingWordList{
        font-style: italic;
}

div.DropLine {
        position: absolute;
        text-align: center;
        border-bottom-style: solid;
        border-bottom-width: 1px;
        border-bottom-color: #000000;
        width: 80%;
}

/* JCloze styles */

.ClozeWordList{
        text-align: center;
        font-weight: bold;
}

div.ClozeBody{
        text-align: left;
        margin-top: 2em;
        margin-bottom: 2em;
        line-height: 2.0
}

span.GapSpan{
        font-weight: bold;
}

/* JCross styles */

table.CrosswordGrid{
        margin: auto auto 1em auto;
        border-collapse: collapse;
        padding: 0px;
        background-color: #000000;
}

table.CrosswordGrid tbody tr td{
        width: 1.5em;
        height: 1.5em;
        text-align: center;
        vertical-align: middle;
        font-size: 140%;
        padding: 1px;
        margin: 0px;
        border-style: solid;
        border-width: 1px;
        border-color: #000000;
        color: #000000;
}

table.CrosswordGrid span{
        color: #000000;
}

table.CrosswordGrid td.BlankCell{
        background-color: #000000;
        color: #000000;
}

table.CrosswordGrid td.LetterOnlyCell{
        text-align: center;
        vertical-align: middle;
        background-color: #ffffff;
        color: #000000;
        font-weight: bold;
}

table.CrosswordGrid td.NumLetterCell{
        text-align: left;
        vertical-align: top;
        background-color: #ffffff;
        color: #000000;
        padding: 1px;
        font-weight: bold;
}

.NumLetterCellText{
        cursor: pointer;
        color: #000000;
}

.GridNum{
        vertical-align: super;
        font-size: 66%;
        font-weight: bold;
        text-decoration: none;
        color: #000000;
}

.GridNum:hover, .GridNum:visited{
        color: #000000;
}

table#Clues{
        margin: auto;
        vertical-align: top;
}

table#Clues td{
        vertical-align: top;
}

table.ClueList{
  margin: auto;
}

td.ClueNum{
        text-align: right;
        font-weight: bold;
        vertical-align: top;
}

td.Clue{
        text-align: left;
}

div#ClueEntry{
        text-align: left;
        margin-bottom: 1em;
}

/* Keypad styles */

div.Keypad{
        text-align: center;
        display: none; /* initially hidden, shown if needed */
        margin-bottom: 0.5em;
}

div.Keypad button{
        font-family: Arial,Geneva,sans-serif;
        font-size: 120%;
        background-color: #ffffff;
        color: #000000;
        width: 2em;
}

/* JQuiz styles */

div.QuestionNavigation{
        text-align: center;
}

.QNum{
        margin: 0em 1em 0.5em 1em;
        font-weight: bold;
        vertical-align: middle;
}

textarea{
        font-family: Arial,Geneva,sans-serif;
}

.QuestionText{
        text-align: left;
        margin: 0px;
        font-size: 100%;
}

.Answer{
        font-size: 120%;
        letter-spacing: 0.1em;
}

.PartialAnswer{
        font-size: 120%;
        letter-spacing: 0.1em;
        color: #000000;
}

.Highlight{
        color: #000000;
        background-color: #ffff00;
        font-weight: bold;
        font-size: 120%;
}

ol.QuizQuestions{
        text-align: left;
        list-style-type: none;
}

li.QuizQuestion{
        padding: 1em;
        border-style: solid;
        border-width: 0px 0px 1px 0px;
}

ol.MCAnswers{
        text-align: left;
        list-style-type: upper-alpha;
        padding: 1em;
}

ol.MCAnswers li{
        margin-bottom: 1em;
}

ol.MSelAnswers{
        text-align: left;
        list-style-type: lower-alpha;
        padding: 1em;
}

div.ShortAnswer{
        padding: 1em;
}

.FuncButton {
        text-align: center;
        border-style: solid;

        border-left-color: #eeeeee;
        border-top-color: #eeeeee;
        border-right-color: #6e6e6e;
        border-bottom-color: #6e6e6e;
        color: #000000;
        background-color: #dddddd;

        border-width: 2px;
        padding: 3px 6px 3px 6px;
        cursor: pointer;
}

.FuncButtonUp {
        color: #dddddd;
        text-align: center;
        border-style: solid;

        border-left-color: #eeeeee;
        border-top-color: #eeeeee;
        border-right-color: #6e6e6e;
        border-bottom-color: #6e6e6e;

        background-color: #000000;
        color: #dddddd;
        border-width: 2px;
        padding: 3px 6px 3px 6px;
        cursor: pointer;
}

.FuncButtonDown {
        color: #dddddd;
        text-align: center;
        border-style: solid;

        border-left-color: #6e6e6e;
        border-top-color: #6e6e6e;
        border-right-color: #eeeeee;
        border-bottom-color: #eeeeee;
        background-color: #000000;
        color: #dddddd;

        border-width: 2px;
        padding: 3px 6px 3px 6px;
        cursor: pointer;
}

/*BeginNavBarStyle*/

div.NavButtonBar{
        background-color: #000000;
        text-align: center;
        margin: 2px 0px 2px 0px;
        clear: both;
        font-size: 100%;
}

.NavButton {
        border-style: solid;
        
        border-left-color: #7f7f7f;
        border-top-color: #7f7f7f;
        border-right-color: #000000;
        border-bottom-color: #000000;
        background-color: #000000;
        color: #ffffff;

        border-width: 2px;
        cursor: pointer;        
}

.NavButtonUp {
        border-style: solid;

        border-left-color: #7f7f7f;
        border-top-color: #7f7f7f;
        border-right-color: #000000;
        border-bottom-color: #000000;
        color: #000000;
        background-color: #ffffff;

        border-width: 2px;
        cursor: pointer;        
}

.NavButtonDown {
        border-style: solid;

        border-left-color: #000000;
        border-top-color: #000000;
        border-right-color: #7f7f7f;
        border-bottom-color: #7f7f7f;
        color: #000000;
        background-color: #ffffff;

        border-width: 2px;
        cursor: pointer;        
}

/*EndNavBarStyle*/

a{
        color: #0000FF;
}

a:visited{
        color: #0000CC;
}

a:hover{
        color: #0000FF;
}

div.CardStyle {
        position: absolute;
        font-family: Arial,Geneva,sans-serif;
        font-size: 100%;
        padding: 5px;
        border-style: solid;
        border-width: 1px;
        color: #000000;
        background-color: #dddddd;
        left: -50px;
        top: -50px;
        overflow: visible;
}

.rtl{
        text-align: right;
        font-size: 140%;
}


</style>

<script type="text/javascript">

//<![CDATA[

<!--




function Client(){
//if not a DOM browser, hopeless
        this.min = false; if (document.getElementById){this.min = true;};

        this.ua = navigator.userAgent;
        this.name = navigator.appName;
        this.ver = navigator.appVersion;  

//Get data about the browser
        this.mac = (this.ver.indexOf('Mac') != -1);
        this.win = (this.ver.indexOf('Windows') != -1);

//Look for Gecko
        this.gecko = (this.ua.indexOf('Gecko') > 1);
        if (this.gecko){
                this.geckoVer = parseInt(this.ua.substring(this.ua.indexOf('Gecko')+6, this.ua.length));
                if (this.geckoVer < 20020000){this.min = false;}
        }
        
//Look for Firebird
        this.firebird = (this.ua.indexOf('Firebird') > 1);
        
//Look for Safari
        this.safari = (this.ua.indexOf('Safari') > 1);
        if (this.safari){
                this.gecko = false;
        }
        
//Look for IE
        this.ie = (this.ua.indexOf('MSIE') > 0);
        if (this.ie){
                this.ieVer = parseFloat(this.ua.substring(this.ua.indexOf('MSIE')+5, this.ua.length));
                if (this.ieVer < 5.5){this.min = false;}
        }
        
//Look for Opera
        this.opera = (this.ua.indexOf('Opera') > 0);
        if (this.opera){
                this.operaVer = parseFloat(this.ua.substring(this.ua.indexOf('Opera')+6, this.ua.length));
                if (this.operaVer < 7.04){this.min = false;}
        }
        if (this.min == false){
                alert('Your browser may not be able to handle this page.');
        }
        
//Special case for the horrible ie5mac
        this.ie5mac = (this.ie&&this.mac&&(this.ieVer<6));
}

var C = new Client();

//for (prop in C){
//      alert(prop + ': ' + C[prop]);
//}



//CODE FOR HANDLING NAV BUTTONS AND FUNCTION BUTTONS

//[strNavBarJS]
function NavBtnOver(Btn){
        if (Btn.className != 'NavButtonDown'){Btn.className = 'NavButtonUp';}
}

function NavBtnOut(Btn){
        Btn.className = 'NavButton';
}

function NavBtnDown(Btn){
        Btn.className = 'NavButtonDown';
}
//[/strNavBarJS]

function FuncBtnOver(Btn){
        if (Btn.className != 'FuncButtonDown'){Btn.className = 'FuncButtonUp';}
}

function FuncBtnOut(Btn){
        Btn.className = 'FuncButton';
}

function FuncBtnDown(Btn){
        Btn.className = 'FuncButtonDown';
}

function FocusAButton(){
        if (document.getElementById('CheckButton1') != null){
                document.getElementById('CheckButton1').focus();
        }
        else{
                if (document.getElementById('CheckButton2') != null){
                        document.getElementById('CheckButton2').focus();
                }
                else{
                        document.getElementsByTagName('button')[0].focus();
                }
        }
}




//CODE FOR HANDLING DISPLAY OF POPUP FEEDBACK BOX

var topZ = 1000;

function ShowMessage(Feedback){
        var Output = Feedback + '<br /><br />';
        document.getElementById('FeedbackContent').innerHTML = Output;
        var FDiv = document.getElementById('FeedbackDiv');
        topZ++;
        FDiv.style.zIndex = topZ;
        FDiv.style.top = TopSettingWithScrollOffset(30) + 'px';

        FDiv.style.display = 'block';

        ShowElements(false, 'input');
        ShowElements(false, 'select');
        ShowElements(false, 'object');
        ShowElements(true, 'object', 'FeedbackContent');

//Focus the OK button
        setTimeout("document.getElementById('FeedbackOKButton').focus()", 50);
        
//
//      RefreshImages();
//
}

function ShowElements(Show, TagName, ContainerToReverse){
// added third argument to allow objects in the feedback box to appear
//IE bug -- hide all the form elements that will show through the popup
//FF on Mac bug : doesn't redisplay objects whose visibility is set to visible
//unless the object's display property is changed

        //get container object (by Id passed in, or use document otherwise)
        TopNode = document.getElementById(ContainerToReverse);
        var Els;
        if (TopNode != null) {
                Els = TopNode.getElementsByTagName(TagName);
        } else {
                Els = document.getElementsByTagName(TagName);
        }

        for (var i=0; i<Els.length; i++){
                if (TagName == "object") {
                        //manipulate object elements in all browsers
                        if (Show == true){
                                Els[i].style.visibility = 'visible';
                                //get Mac FireFox to manipulate display, to force screen redraw
                                if (C.mac && C.gecko) {Els[i].style.display = '';}
                        }
                        else{
                                Els[i].style.visibility = 'hidden';
                                if (C.mac && C.gecko) {Els[i].style.display = 'none';}
                        }
                } 
                else {
                        // tagName is either input or select (that is, Form Elements)
                        // ie6 has a problem with Form elements, so manipulate those
                        if (C.ie) {
                                if (C.ieVer < 7) {
                                        if (Show == true){
                                                Els[i].style.visibility = 'visible';
                                        }
                                        else{
                                                Els[i].style.visibility = 'hidden';
                                        }
                                }
                        }
                }
        }
}



function HideFeedback(){
        document.getElementById('FeedbackDiv').style.display = 'none';
        ShowElements(true, 'input');
        ShowElements(true, 'select');
        ShowElements(true, 'object');
        if (Finished == true){
                Finish();
        }
}


//GENERAL UTILITY FUNCTIONS AND VARIABLES

//PAGE DIMENSION FUNCTIONS
function PageDim(){
//Get the page width and height
        this.W = 600;
        this.H = 400;
        this.W = document.getElementsByTagName('body')[0].clientWidth;
        this.H = document.getElementsByTagName('body')[0].clientHeight;
}

var pg = null;

function GetPageXY(El) {
        var XY = {x: 0, y: 0};
        while(El){
                XY.x += El.offsetLeft;
                XY.y += El.offsetTop;
                El = El.offsetParent;
        }
        return XY;
}

function GetScrollTop(){
        if (typeof(window.pageYOffset) == 'number'){
                return window.pageYOffset;
        }
        else{
                if ((document.body)&&(document.body.scrollTop)){
                        return document.body.scrollTop;
                }
                else{
                        if ((document.documentElement)&&(document.documentElement.scrollTop)){
                                return document.documentElement.scrollTop;
                        }
                        else{
                                return 0;
                        }
                }
        }
}

function GetViewportHeight(){
        if (typeof window.innerHeight != 'undefined'){
                return window.innerHeight;
        }
        else{
                if (((typeof document.documentElement != 'undefined')&&(typeof document.documentElement.clientHeight !=
     'undefined'))&&(document.documentElement.clientHeight != 0)){
                        return document.documentElement.clientHeight;
                }
                else{
                        return document.getElementsByTagName('body')[0].clientHeight;
                }
        }
}

function TopSettingWithScrollOffset(TopPercent){
        var T = Math.floor(GetViewportHeight() * (TopPercent/100));
        return GetScrollTop() + T; 
}

//CODE FOR AVOIDING LOSS OF DATA WHEN BACKSPACE KEY INVOKES history.back()
var InTextBox = false;

function SuppressBackspace(e){ 
        if (InTextBox == true){return;}
        if (C.ie) {
                thisKey = window.event.keyCode;
        }
        else {
                thisKey = e.keyCode;
        }

        var Suppress = false;

        if (thisKey == 8) {
                Suppress = true;
        }

        if (Suppress == true){
                if (C.ie){
                        window.event.returnValue = false;       
                        window.event.cancelBubble = true;
                }
                else{
                        e.preventDefault();
                }
        }
}

if (C.ie){
        document.attachEvent('onkeydown',SuppressBackspace);
        window.attachEvent('onkeydown',SuppressBackspace);
}
else{
        if (window.addEventListener){
                window.addEventListener('keypress',SuppressBackspace,false);
        }
}

function ReduceItems(InArray, ReduceToSize){
        var ItemToDump=0;
        var j=0;
        while (InArray.length > ReduceToSize){
                ItemToDump = Math.floor(InArray.length*Math.random());
                InArray.splice(ItemToDump, 1);
        }
}

function Shuffle(InArray){
        var Num;
        var Temp = new Array();
        var Len = InArray.length;

        var j = Len;

        for (var i=0; i<Len; i++){
                Temp[i] = InArray[i];
        }

        for (i=0; i<Len; i++){
                Num = Math.floor(j  *  Math.random());
                InArray[i] = Temp[Num];

                for (var k=Num; k < (j-1); k++) {
                        Temp[k] = Temp[k+1];
                }
                j--;
        }
        return InArray;
}

function WriteToInstructions(Feedback) {
        document.getElementById('InstructionsDiv').innerHTML = Feedback;

        RefreshImages();

}



Imgs = new Array();

function PreloadImages(){
        var a = PreloadImages.arguments;
        for (var i=0; i<a.length; i++){
                Imgs[i] = new Image();
                Imgs[i].src = a[i];
        }
}

function RefreshImages(){
        for (var i=0; i<document.images.length; i++){
                if (document.images[i].name.substring(0,6) != 'NavBar'){
                        document.images[i].src = document.images[i].src;
                }
        }
}


function EscapeDoubleQuotes(InString){
        return InString.replace(/"/g, '&quot;')
}

function TrimString(InString){
        var x = 0;

        if (InString.length != 0) {
                while ((InString.charAt(InString.length - 1) == '\u0020') || (InString.charAt(InString.length - 1) == '\u000A') || (InString.charAt(InString.length - 1) == '\u000D')){
                        InString = InString.substring(0, InString.length - 1)
                }

                while ((InString.charAt(0) == '\u0020') || (InString.charAt(0) == '\u000A') || (InString.charAt(0) == '\u000D')){
                        InString = InString.substring(1, InString.length)
                }

                while (InString.indexOf('  ') != -1) {
                        x = InString.indexOf('  ')
                        InString = InString.substring(0, x) + InString.substring(x+1, InString.length)
                 }

                return InString;
        }

        else {
                return '';
        }
}

function FindLongest(InArray){
        if (InArray.length < 1){return -1;}

        var Longest = 0;
        for (var i=1; i<InArray.length; i++){
                if (InArray[i].length > InArray[Longest].length){
                        Longest = i;
                }
        }
        return Longest;
}

//UNICODE CHARACTER FUNCTIONS
function IsCombiningDiacritic(CharNum){
        var Result = (((CharNum >= 0x0300)&&(CharNum <= 0x370))||((CharNum >= 0x20d0)&&(CharNum <= 0x20ff)));
        Result = Result || (((CharNum >= 0x3099)&&(CharNum <= 0x309a))||((CharNum >= 0xfe20)&&(CharNum <= 0xfe23)));
        return Result;
}

function IsCJK(CharNum){
        return ((CharNum >= 0x3000)&&(CharNum < 0xd800));
}

//SETUP FUNCTIONS
//BROWSER WILL REFILL TEXT BOXES FROM CACHE IF NOT PREVENTED
function ClearTextBoxes(){
        var NList = document.getElementsByTagName('input');
        for (var i=0; i<NList.length; i++){
                if ((NList[i].id.indexOf('Guess') > -1)||(NList[i].id.indexOf('Gap') > -1)){
                        NList[i].value = '';
                }
                if (NList[i].id.indexOf('Chk') > -1){
                        NList[i].checked = '';
                }
        }
}

//EXTENSION TO ARRAY OBJECT
function Array_IndexOf(Input){
        var Result = -1;
        for (var i=0; i<this.length; i++){
                if (this[i] == Input){
                        Result = i;
                }
        }
        return Result;
}
Array.prototype.indexOf = Array_IndexOf;

//IE HAS RENDERING BUG WITH BOTTOM NAVBAR
function RemoveBottomNavBarForIE(){
        if ((C.ie)&&(document.getElementById('Reading') != null)){
                if (document.getElementById('BottomNavBar') != null){
                        document.getElementById('TheBody').removeChild(document.getElementById('BottomNavBar'));
                }
        }
}




//HOTPOTNET-RELATED CODE

var HPNStartTime = (new Date()).getTime();
var SubmissionTimeout = 30000;
var Detail = ''; //Global that is used to submit tracking data

function Finish(){
//If there's a form, fill it out and submit it
        if (document.store != null){
                Frm = document.store;
                Frm.starttime.value = HPNStartTime;
                Frm.endtime.value = (new Date()).getTime();
                Frm.mark.value = Score;
                Frm.detail.value = Detail;
                Frm.submit();
        }
}





//JQUIZ CORE JAVASCRIPT CODE

var CurrQNum = 0;
var CorrectIndicator = ':-)';
var IncorrectIndicator = 'X';
var YourScoreIs = 'Your score is ';

//New for 6.2.2.0
var CompletedSoFar = 'Questions completed so far: ';
var ExerciseCompleted = 'You have completed the exercise.';
var ShowCompletedSoFar = true;

var ContinuousScoring = false;
var CorrectFirstTime = 'Questions answered correctly first time: ';
var ShowCorrectFirstTime = true;
var ShuffleQs = false;
var ShuffleAs = false;
var DefaultRight = 'Correct!';
var DefaultWrong = 'Sorry! Try again.';
var QsToShow = 5;
var Score = 0;
var Finished = false;
var Qs = null;
var QArray = new Array();
var ShowingAllQuestions = false;
var ShowAllQuestionsCaption = 'Show all questions';
var ShowOneByOneCaption = 'Show questions one by one';
var State = new Array();
var Feedback = '';
var TimeOver = false;
var strInstructions = '';
var Locked = false;

//The following variable can be used to add a message explaining that
//the question is finished, so no further marking will take place.
var strQuestionFinished = '';

function CompleteEmptyFeedback(){
        var QNum, ANum;
        for (QNum=0; QNum<I.length; QNum++){
//Only do this if not multi-select
                if (I[QNum][2] != '3'){
                for (ANum = 0; ANum<I[QNum][3].length; ANum++){
                        if (I[QNum][3][ANum][1].length < 1){
                                if (I[QNum][3][ANum][2] > 0){
                                        I[QNum][3][ANum][1] = DefaultRight;
                                }
                                else{
                                        I[QNum][3][ANum][1] = DefaultWrong;
                                }
                        }
                }
                }
        }
}

function SetUpQuestions(){
        var AList = new Array(); 
        var QList = new Array();
        var i, j;
        Qs = document.getElementById('Questions');
        while (Qs.getElementsByTagName('li').length > 0){
                QList.push(Qs.removeChild(Qs.getElementsByTagName('li')[0]));
        }
        var DumpItem = 0;
        if (QsToShow > QList.length){
                QsToShow = QList.length;
        }
        while (QsToShow < QList.length){
                DumpItem = Math.floor(QList.length*Math.random());
                for (j=DumpItem; j<(QList.length-1); j++){
                        QList[j] = QList[j+1];
                }
                QList.length = QList.length-1;
        }
        if (ShuffleQs == true){
                QList = Shuffle(QList);
        }
        if (ShuffleAs == true){
                var As;
                for (var i=0; i<QList.length; i++){
                        As = QList[i].getElementsByTagName('ol')[0];
                        if (As != null){
                        AList.length = 0;
                                while (As.getElementsByTagName('li').length > 0){
                                        AList.push(As.removeChild(As.getElementsByTagName('li')[0]));
                                }
                                AList = Shuffle(AList);
                                for (j=0; j<AList.length; j++){
                                        As.appendChild(AList[j]);
                                }
                        }
                }
        }
        
        for (i=0; i<QList.length; i++){
                Qs.appendChild(QList[i]);
                QArray[QArray.length] = QList[i];
        }

//Show the first item
        QArray[0].style.display = '';
        
//Now hide all except the first item
        for (i=1; i<QArray.length; i++){
                QArray[i].style.display = 'none';
        }               
        SetQNumReadout();
        
        SetFocusToTextbox();
}

function SetFocusToTextbox(){
//if there's a textbox, set the focus in it
        if (QArray[CurrQNum].getElementsByTagName('input')[0] != null){
                QArray[CurrQNum].getElementsByTagName('input')[0].focus();
//and show a keypad if there is one
                if (document.getElementById('CharacterKeypad') != null){
                        document.getElementById('CharacterKeypad').style.display = 'block';
                }
        }
        else{
        if (QArray[CurrQNum].getElementsByTagName('textarea')[0] != null){
                QArray[CurrQNum].getElementsByTagName('textarea')[0].focus();   
//and show a keypad if there is one
                        if (document.getElementById('CharacterKeypad') != null){
                                document.getElementById('CharacterKeypad').style.display = 'block';
                        }
                }
//This added for 6.0.4.11: hide accented character buttons if no textbox
                else{
                        if (document.getElementById('CharacterKeypad') != null){
                                document.getElementById('CharacterKeypad').style.display = 'none';
                        }
                }
        }
}

function ChangeQ(ChangeBy){
//The following line prevents moving to another question until the current
//question is answered correctly. Uncomment it to enable this behaviour. 
//      if (State[CurrQNum][0] == -1){return;}
        if (((CurrQNum + ChangeBy) < 0)||((CurrQNum + ChangeBy) >= QArray.length)){return;}
        QArray[CurrQNum].style.display = 'none';
        CurrQNum += ChangeBy;
        QArray[CurrQNum].style.display = '';
//Undocumented function added 10/12/2004
        ShowSpecialReadingForQuestion();
        SetQNumReadout();
        SetFocusToTextbox();
}

var HiddenReadingShown = false;
function ShowSpecialReadingForQuestion(){
//Undocumented function for showing specific reading text elements which change with each question
//Added on 10/12/2004
        if (document.getElementById('ReadingDiv') != null){
                if (HiddenReadingShown == true){
                        document.getElementById('ReadingDiv').innerHTML = '';
                }
                if (QArray[CurrQNum] != null){
//Fix for 6.0.4.25
                        var Children = QArray[CurrQNum].getElementsByTagName('div');
                        for (var i=0; i<Children.length; i++){
                        if (Children[i].className=="HiddenReading"){
                                        document.getElementById('ReadingDiv').innerHTML = Children[i].innerHTML;
                                        HiddenReadingShown = true;
//Hide the ShowAllQuestions button to avoid confusion
                                        if (document.getElementById('ShowMethodButton') != null){
                                                document.getElementById('ShowMethodButton').style.display = 'none';
                                        }
                                }
                        }       
                }
        }
}

function SetQNumReadout(){
        document.getElementById('QNumReadout').innerHTML = (CurrQNum+1) + ' / ' + QArray.length;
        if ((CurrQNum+1) >= QArray.length){
                if (document.getElementById('NextQButton') != null){
                        document.getElementById('NextQButton').style.visibility = 'hidden';
                }
        }
        else{
                if (document.getElementById('NextQButton') != null){
                        document.getElementById('NextQButton').style.visibility = 'visible';
                }
        }
        if (CurrQNum <= 0){
                if (document.getElementById('PrevQButton') != null){
                        document.getElementById('PrevQButton').style.visibility = 'hidden';
                }
        }
        else{
                if (document.getElementById('PrevQButton') != null){
                        document.getElementById('PrevQButton').style.visibility = 'visible';
                }
        }
}

var I=new Array();
I[0]=new Array();I[0][0]=100;
I[0][1]='';
I[0][2]='1';
I[0][3]=new Array();
I[0][3][0]=new Array('Jeanne','Bravo!',1,100,1);
I[0][3][1]=new Array('jeanne','Bravo!',1,100,1);
I[1]=new Array();I[1][0]=100;
I[1][1]='';
I[1][2]='0';
I[1][3]=new Array();
I[1][3][0]=new Array('un message administratif.','C\'est faux!',0,0,1);
I[1][3][1]=new Array('un message amical.','Bravo!',1,100,1);
I[1][3][2]=new Array('on ne sait pas.','C\'est faux!',0,0,1);
I[2]=new Array();I[2][0]=100;
I[2][1]='';
I[2][2]='0';
I[2][3]=new Array();
I[2][3][0]=new Array('Pour accepter une invitation','C\'est faux!',0,0,1);
I[2][3][1]=new Array('Pour inviter une amie','Bravo!',1,100,1);
I[2][3][2]=new Array('.Pour remercier son amie.','C\'est faux!',0,0,1);
I[3]=new Array();I[3][0]=100;
I[3][1]='';
I[3][2]='0';
I[3][3]=new Array();
I[3][3][0]=new Array('<img src="http://www.learnfrenchlab.com/images/gateau.jpg" alt="DELF A1" title="DELF A1" width="100" height="86"></img>','C\'est faux!',0,0,1);
I[3][3][1]=new Array('<img src="http://www.learnfrenchlab.com/images/bouteille-vin.jpg" alt="DELF A1" title="DELF A1" width="61" height="100"></img>','Bravo!',1,100,1);
I[3][3][2]=new Array('<img src="http://www.learnfrenchlab.com/images/french-phrases-thank-you.jpg" alt="DELF A1" title="DELF A1" width="100" height="86"></img>','C\'est faux!',0,0,1);
I[4]=new Array();I[4][0]=100;
I[4][1]='';
I[4][2]='0';
I[4][3]=new Array();
I[4][3][0]=new Array('l\'hiver','Bravo!',1,100,1);
I[4][3][1]=new Array('le printemps','C\'est faux!',0,0,1);
I[4][3][2]=new Array('l\'automne','C\'est faux!',0,0,1);


function StartUp(){
        RemoveBottomNavBarForIE();

//If there's only one question, no need for question navigation controls
        if (QsToShow < 2){
                document.getElementById('QNav').style.display = 'none';
        }
        
//Stash the instructions so they can be redisplayed
        strInstructions = document.getElementById('InstructionsDiv').innerHTML;
        

        

        

        PreloadImages('http://www.learnfrenchlab.com/images/gateau.jpg','http://www.learnfrenchlab.com/images/bouteille-vin.jpg','http://www.learnfrenchlab.com/images/french-phrases-thank-you.jpg');

        
        CompleteEmptyFeedback();

        SetUpQuestions();
        ClearTextBoxes();
        CreateStatusArray();
        

        
//Check search string for q parameter
        if (document.location.search.length > 0){
                if (ShuffleQs == false){
                        var JumpTo = parseInt(document.location.search.substring(1,document.location.search.length))-1;
                        if (JumpTo <= QsToShow){
                                ChangeQ(JumpTo);
                        }
                }
        }
//Undocumented function added 10/12/2004
        ShowSpecialReadingForQuestion();
}

function ShowHideQuestions(){
        FuncBtnOut(document.getElementById('ShowMethodButton'));
        document.getElementById('ShowMethodButton').style.display = 'none';
        if (ShowingAllQuestions == false){
                for (var i=0; i<QArray.length; i++){
                                QArray[i].style.display = '';
                        }
                document.getElementById('Questions').style.listStyleType = 'decimal';
                document.getElementById('OneByOneReadout').style.display = 'none';
                document.getElementById('ShowMethodButton').innerHTML = ShowOneByOneCaption;
                ShowingAllQuestions = true;
        }
        else{
                for (var i=0; i<QArray.length; i++){
                                if (i != CurrQNum){
                                        QArray[i].style.display = 'none';
                                }
                        }
                document.getElementById('Questions').style.listStyleType = 'none';
                document.getElementById('OneByOneReadout').style.display = '';
                document.getElementById('ShowMethodButton').innerHTML = ShowAllQuestionsCaption;
                ShowingAllQuestions = false;    
        }
        document.getElementById('ShowMethodButton').style.display = 'inline';
}

function CreateStatusArray(){
        var QNum, ANum;
//For each item in the item array
        for (QNum=0; QNum<I.length; QNum++){
//Check if the question still exists (hasn't been nuked by showing a random selection)
                if (document.getElementById('Q_' + QNum) != null){
                        State[QNum] = new Array();
                        State[QNum][0] = -1; //Score for this q; -1 shows question not done yet
                        State[QNum][1] = new Array(); //answers
                        for (ANum = 0; ANum<I[QNum][3].length; ANum++){
                                State[QNum][1][ANum] = 0; //answer not chosen yet; when chosen, will store its position in the series of choices
                        }
                        State[QNum][2] = 0; //tries at this q so far
                        State[QNum][3] = 0; //incrementing percent-correct values of selected answers
                        State[QNum][4] = 0; //penalties incurred for hints
                        State[QNum][5] = ''; //Sequence of answers chosen by number
                }
                else{
                        State[QNum] = null;
                }
        }
}



function CheckMCAnswer(QNum, ANum, Btn){
//if question doesn't exist, bail
        if (State[QNum].length < 1){return;}
        
//Get the feedback
        Feedback = I[QNum][3][ANum][1];
        
//Now show feedback and bail if question already complete
        if (State[QNum][0] > -1){
//Add an extra message explaining that the question
// is finished if defined by the user
                if (strQuestionFinished.length > 0){Feedback += '<br />' + strQuestionFinished;}
//Show the feedback
                ShowMessage(Feedback);
//New for 6.2.2.1: If you want to mark an answer as correct even when it's the final choice, uncomment this line.
//              if (I[QNum][3][ANum][2] >= 1){Btn.innerHTML = CorrectIndicator;}else{Btn.innerHTML = IncorrectIndicator;}       
                return;
        }
        
//Hide the button while processing
        Btn.style.display = 'none';

//Increment the number of tries
        State[QNum][2]++;
        
//Add the percent-correct value of this answer
        State[QNum][3] += I[QNum][3][ANum][3];
        
//Store the try number in the answer part of the State array, for tracking purposes
        State[QNum][1][ANum] = State[QNum][2];
        if (State[QNum][5].length > 0){State[QNum][5] += ' | ';}
        State[QNum][5] += String.fromCharCode(65+ANum);
        
//Should this answer be accepted as correct?
        if (I[QNum][3][ANum][2] < 1){
//It's wrong

//Mark the answer
                Btn.innerHTML = IncorrectIndicator;
                
//Remove any previous score unless exercise is finished (6.0.3.8+)
                if (Finished == false){
                        WriteToInstructions(strInstructions);
                }       
                
//Check whether this leaves just one MC answer unselected, in which case the Q is terminated
                var RemainingAnswer = FinalAnswer(QNum);
                if (RemainingAnswer > -1){
//Behave as if the last answer had been selected, but give no credit for it
//Increment the number of tries
                        State[QNum][2]++;               
                
//Calculate the score for this question
                        CalculateMCQuestionScore(QNum);
                        
//Get the overall score and add it to the feedback
                        CalculateOverallScore();
//New for 6.2.2.1
                        var QsDone = CheckQuestionsCompleted();
                        if ((ContinuousScoring == true)||(Finished == true)){
                                Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.' + '<br />' + QsDone;
                                WriteToInstructions(YourScoreIs + ' ' + Score + '%.' + '<br />' + QsDone);
                        }
                        else{
                                WriteToInstructions(QsDone);
                        }
                }
        }
        else{
//It's right
//Mark the answer
                Btn.innerHTML = CorrectIndicator;
                                
//Calculate the score for this question
                CalculateMCQuestionScore(QNum);
                
//New for 6.2.2.0
                var QsDone = CheckQuestionsCompleted();

//Get the overall score and add it to the feedback
                if (ContinuousScoring == true){
                        CalculateOverallScore();
                        if ((ContinuousScoring == true)||(Finished == true)){
                                Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.' + '<br />' + QsDone;
                                WriteToInstructions(YourScoreIs + ' ' + Score + '%.' + '<br />' + QsDone);
                        }
                }
                else{
                        WriteToInstructions(QsDone);
                }
        }
        
//Show the button again
        Btn.style.display = 'inline';
        
//Finally, show the feedback    
        ShowMessage(Feedback);
        
//Check whether all questions are now done
        CheckFinished();
}

function CalculateMCQuestionScore(QNum){
        var Tries = State[QNum][2] + State[QNum][4]; //include tries and hint penalties
        var PercentCorrect = State[QNum][3];
        var TotAns = GetTotalMCAnswers(QNum);
        var HintPenalties = State[QNum][4];
        
//Make sure it's not already complete

        if (State[QNum][0] < 0){
//Allow for Hybrids
                if (HintPenalties >= 1){
                        State[QNum][0] = 0;
                }
                else{
//This line calculates the score for this question
                        if (TotAns == 1){
                                State[QNum][0] = 1;
                        }
                        else{
                                State[QNum][0] = ((TotAns-((Tries*100)/State[QNum][3]))/(TotAns-1));
                        }
                }
//Fix for Safari bug added for version 6.0.3.42 (negative infinity problem)
                if ((State[QNum][0] < 0)||(State[QNum][0] == Number.NEGATIVE_INFINITY)){
                        State[QNum][0] = 0;
                }
        }
}

function GetTotalMCAnswers(QNum){
        var Result = 0;
        for (var ANum=0; ANum<I[QNum][3].length; ANum++){
                if (I[QNum][3][ANum][4] == 1){ //This is an MC answer
                        Result++;
                }
        }
        return Result;
}

function FinalAnswer(QNum){
        var UnchosenAnswers = 0;
        var FinalAnswer = -1;
        for (var ANum=0; ANum<I[QNum][3].length; ANum++){
                if (I[QNum][3][ANum][4] == 1){ //This is an MC answer
                        if (State[QNum][1][ANum] < 1){ //This answer hasn't been chosen yet
                                UnchosenAnswers++;
                                FinalAnswer = ANum;
                        }
                }
        }
        if (UnchosenAnswers == 1){
                return FinalAnswer;
        }
        else{
                return -1;
        }
}





function CalculateOverallScore(){
        var TotalWeighting = 0;
        var TotalScore = 0;
        
        for (var QNum=0; QNum<State.length; QNum++){
                if (State[QNum] != null){
                        if (State[QNum][0] > -1){
                                TotalWeighting += I[QNum][0];
                                TotalScore += (I[QNum][0] * State[QNum][0]);
                        }
                }
        }
        if (TotalWeighting > 0){
                Score = Math.floor((TotalScore/TotalWeighting)*100);
        }
        else{
//if TotalWeighting is 0, no questions so far have any value, so 
//no penalty should be shown.
                Score = 100; 
        }
}

//New for 6.2.2.0
function CheckQuestionsCompleted(){
        if (ShowCompletedSoFar == false){return '';}
        var QsCompleted = 0;
        for (var QNum=0; QNum<State.length; QNum++){
                if (State[QNum] != null){
                        if (State[QNum][0] >= 0){
                                QsCompleted++;
                        }
                }
        }
//Fixes for 6.2.2.2
        if (QsCompleted >= QArray.length){
                return ExerciseCompleted;
        }
        else{
                return CompletedSoFar + ' ' + QsCompleted + '/' + QArray.length + '.';
        }
}

function CheckFinished(){
        var FB = '';
        var AllDone = true;
        for (var QNum=0; QNum<State.length; QNum++){
                if (State[QNum] != null){
                        if (State[QNum][0] < 0){
                                AllDone = false;
                        }
                }
        }
        if (AllDone == true){
        
//Report final score and submit if necessary
                CalculateOverallScore();
                FB = YourScoreIs + ' ' + Score + '%.';
                if (ShowCorrectFirstTime == true){
                        var CFT = 0;
                        for (QNum=0; QNum<State.length; QNum++){
                                if (State[QNum] != null){
                                        if (State[QNum][0] >= 1){
                                                CFT++;
                                        }
                                }
                        }
                        FB += '<br />' + CorrectFirstTime + ' ' + CFT + '/' + QsToShow;
                }
                
//New for 6.2.2.0
                FB += '<br />' + ExerciseCompleted;
                
                WriteToInstructions(FB);
                
                Finished == true;




                TimeOver = true;
                Locked = true;
                


                Finished = true;
                Detail = '<?xml version="1.0"?><hpnetresult><fields>';
                for (QNum=0; QNum<State.length; QNum++){
                        if (State[QNum] != null){
                                if (State[QNum][5].length > 0){
                                        Detail += '<field><fieldname>Question #' + (QNum+1) + '</fieldname><fieldtype>question-tracking</fieldtype><fieldlabel>Q ' + (QNum+1) + '</fieldlabel><fieldlabelid>QuestionTrackingField</fieldlabelid><fielddata>' + State[QNum][5] + '</fielddata></field>';
                                }
                        }
                }
                Detail += '</fields></hpnetresult>';
                setTimeout('Finish()', SubmissionTimeout);
        }

}





//CORE CODE FOR CHECKING SHORT ANSWER GUESSES AGAINST ANSWER ARRAYS

var CaseSensitive = false;
var ShowAlsoCorrect = true;
var PleaseEnter = 'Please enter a guess.';
var HybridTries = 2;
var PartlyIncorrect = 'Your answer is partly wrong: ';
var CorrectList = 'Correct answers: ';
var NextCorrect = 'Next correct letter in the answer: ';
var CurrBox = null;

function TrackFocus(BoxID){
        InTextBox = true;
        CurrBox = document.getElementById(BoxID);
}

function LeaveGap(){
        InTextBox = false;
}

function TypeChars(Chars){
        if (CurrBox != null){
//Following check added for 6.0.4.4 to avoid error message in IE6
                if (CurrBox.style.display != 'none'){
                        CurrBox.value += Chars;
                        CurrBox.focus();
                }
        }
}

function CheckGuess(Guess, Answer, CaseSensitive, PercentCorrect, Feedback){
        this.Guess = Guess;
        this.Answer = Answer;
        this.PercentCorrect = PercentCorrect;
        this.Feedback = Feedback;
        if (CaseSensitive == false){
                this.WorkingGuess = Guess.toLowerCase();
                this.WorkingAnswer = Answer.toLowerCase();
        }
        else{
                this.WorkingGuess = Guess;
                this.WorkingAnswer = Answer;                            
        }
        this.Hint = '';
        this.HintPenalty = 1/Answer.length;
        this.CorrectStart = '';
        this.WrongMiddle = '';
        this.CorrectEnd = '';
        this.PercentMatch = 0;
        this.DoCheck();
}

function CheckGuess_DoCheck(){
//Check if it's an exact match
        if (this.WorkingAnswer == this.WorkingGuess){
                this.PercentMatch = 100;
                this.CorrectStart = this.Guess;
        return;
        }
//Figure out how much of the beginning is correct
        var i = 0;
        var CorrectChars = 0;
        while (this.WorkingAnswer.charAt(i) == this.WorkingGuess.charAt(i)){
                i++;
                CorrectChars++;
        }
//Stash the hint
        this.Hint = this.Answer.charAt(i);
        
        this.CorrectStart = this.Guess.substring(0, i);
        
//If there's more to the answer, look at the rest of it
        if (i<this.Guess.length){
        
//Figure out how much of the end is correct
                var j = this.WorkingGuess.length-1;
                var k = this.WorkingAnswer.length-1;
                while ((j>=i)&&((this.WorkingAnswer.charAt(k) == this.WorkingGuess.charAt(j))&&(CorrectChars < this.Answer.length))){
                        CorrectChars++;
                        j--;
                        k--;
                }
                this.CorrectEnd = this.Guess.substring(j+1, this.Guess.length);
                this.WrongMiddle = this.Guess.substring(i, j+1);
        }
        if (TrimString(this.WrongMiddle).length < 1){this.WrongMiddle = '_';}
//Calculate match score based on how much of the guess is correct
        if (CorrectChars < this.Answer.length){
                this.PercentMatch = Math.floor(100*CorrectChars)/this.Answer.length;
        }
        else{
                this.PercentMatch = Math.floor((100 * CorrectChars)/this.Guess.length);
        }       
}

CheckGuess.prototype.DoCheck = CheckGuess_DoCheck;

function CheckAnswerArray(CaseSensitive){
        this.CaseSensitive = CaseSensitive;
        this.Answers = new Array();
        this.Score = 0;
        this.Feedback = '';
        this.Hint = '';
        this.HintPenalty = 0;
        this.MatchedAnswerLength = 1;
        this.CompleteMatch = false;
        this.MatchNum = -1;
}

function CheckAnswerArray_AddAnswer(Guess, Answer, PercentCorrect, Feedback){
        this.Answers.push(new CheckGuess(Guess, Answer, this.CaseSensitive, PercentCorrect, Feedback));
}

CheckAnswerArray.prototype.AddAnswer = CheckAnswerArray_AddAnswer;

function CheckAnswerArray_ClearAll(){
        this.Answers.length = 0;
}

CheckAnswerArray.prototype.ClearAll = CheckAnswerArray_ClearAll;

function CheckAnswerArray_GetBestMatch(){
//First check for a 100% match
        for (var i=0; i<this.Answers.length; i++){
                if (this.Answers[i].PercentMatch == 100){
                        this.Feedback = this.Answers[i].Feedback;
                        this.Score = this.Answers[i].PercentCorrect;
                        this.CompleteMatch = true;
                        this.MatchNum = i;
                        return;
                }
        }
//Now check for the best alternative match
        var PercentMatch = 0;
        var BestMatch = -1;
        for (i=0; i<this.Answers.length; i++){
                if ((this.Answers[i].PercentMatch > PercentMatch)&&(this.Answers[i].PercentCorrect == 100)){
                        BestMatch = i;
                        PercentMatch = this.Answers[i].PercentMatch;
                }
        }
        if (BestMatch > -1){
                this.Score = this.Answers[BestMatch].PercentMatch;
                this.Feedback = PartlyIncorrect + ' ';
                this.Feedback += '<span class="PartialAnswer">' + this.Answers[BestMatch].CorrectStart;
                this.Feedback += '<span class="Highlight">' + this.Answers[BestMatch].WrongMiddle + '</span>';
                this.Feedback += this.Answers[BestMatch].CorrectEnd + '</span>';
                this.Hint = '<span class="PartialAnswer">' + this.Answers[BestMatch].CorrectStart;
                this.Hint += '<span class="Highlight">' + this.Answers[BestMatch].Hint + '</span></span>';
                this.HintPenalty = this.Answers[BestMatch].HintPenalty;
        }
        else{
                this.Score = 0;
                this.Feedback = '';
        }
}

CheckAnswerArray.prototype.GetBestMatch = CheckAnswerArray_GetBestMatch;

function CheckShortAnswer(QNum){
//bail if question doesn't exist or exercise finished
        if ((State[QNum].length < 1)||(Finished == true)){return;}
        
//bail if question already complete
        if (State[QNum][0] > -1){return;}

//Get the guess (TrimString added to fix bug for 6.0.4.3)
        var G = TrimString(document.getElementById('Q_' + QNum + '_Guess').value);
        
//If no guess, bail with message; no penalty
        if (G.length < 1){
                ShowMessage(PleaseEnter);
                return;
        }

//Increment tries
        State[QNum][2]++;
        
//Create a check object
        var CA = new CheckAnswerArray(CaseSensitive);

        CA.ClearAll();
        for (var ANum=0; ANum<I[QNum][3].length; ANum++){
                CA.AddAnswer(G, I[QNum][3][ANum][0], I[QNum][3][ANum][3], I[QNum][3][ANum][1]);
        }
        CA.GetBestMatch();
        
//Store any match in the state tracking field
        if (State[QNum][5].length > 0){State[QNum][5] += ' | ';}
        if (CA.MatchNum > -1){
                State[QNum][5] += String.fromCharCode(65+CA.MatchNum);
        }
//Else store the student's answer
        else{
                State[QNum][5] += G;
        }

//Add the percent correct value for this answer to the Q State (works for all
//situations, wrong or right)
        State[QNum][3] += CA.Score;
        
//Now branch, based on the nature of the match
//Is it a complete match?
        if (CA.CompleteMatch == true){
                
//Is it with a wrong answer, or a right answer?
                if (CA.Score == 100){
//It's right
                        CalculateShortAnsQuestionScore(QNum);
                        
//New for 6.2.2.0
                        var QsDone = CheckQuestionsCompleted();
                        
//Get correct answer list if required, assuming there are any other correct alternatives
                        if (ShowAlsoCorrect == true){
                                var AlsoCorrectList = GetCorrectList(QNum, G, false);
                                if (AlsoCorrectList.length > 0){
                                        CA.Feedback += '<br />' + CorrectList + '<br />' + AlsoCorrectList;
                                }
                        }       
                
//Get the overall score and add it to the feedback
                        if (ContinuousScoring == true){
                                CalculateOverallScore();
                                CA.Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.' + '<br />' + QsDone;
                                WriteToInstructions(YourScoreIs + ' ' + Score + '%.' + '<br />' + QsDone);
                        }
                        else{
                                WriteToInstructions(QsDone);
                        }
                        ShowMessage(CA.Feedback);
//Put the answer in
                        ReplaceGuessBox(QNum, G);
                        CheckFinished();
                        return;
                }
        }
        
//Otherwise, it's a match to a predicted wrong/partially correct, or a partial
//match to a right answer
        if (CA.Feedback.length < 1){CA.Feedback = DefaultWrong;}
//Remove any previous score unless exercise is finished (6.0.3.8+)
        if (Finished == false){
                WriteToInstructions(strInstructions);
        }       
        ShowMessage(CA.Feedback);

//If necessary, switch a hybrid question to m/c
        if (State[QNum][2] >= HybridTries){
                SwitchHybridDisplay(QNum);
        }
}

function CalculateShortAnsQuestionScore(QNum){
        var Tries = State[QNum][2] + State[QNum][4]; //include tries and hint penalties;
        var PercentCorrect = State[QNum][3];
        var HintPenalties = State[QNum][4];

//Make sure it's not already complete
        if (State[QNum][0] < 0){
                if (HintPenalties >= 1){
                        State[QNum][0] = 0;
                }
                else{
                        State[QNum][0] = (PercentCorrect/(100*Tries));
                }
                if (State[QNum][0] < 0){
                        State[QNum][0] = 0;
                }
        }
}

function SwitchHybridDisplay(QNum){
        if (document.getElementById('Q_' + QNum + '_Hybrid_MC') != null){
                document.getElementById('Q_' + QNum + '_Hybrid_MC').style.display = '';
                if (document.getElementById('Q_' + QNum + '_SA') != null){
                        document.getElementById('Q_' + QNum + '_SA').style.display = 'none';
                }
        }
}

function GetCorrectArray(QNum){
        var Result = new Array();
        for (var ANum=0; ANum<I[QNum][3].length; ANum++){
                if (I[QNum][3][ANum][2] == 1){ //This is an acceptable correct answer
                        Result.push(I[QNum][3][ANum][0]);
                }
        }       
        return Result;
}

function GetCorrectList(QNum, Answer, IncludeAnswer){
        var As = GetCorrectArray(QNum);
        var Result = '';
        for (var ANum=0; ANum<As.length; ANum++){
                if ((IncludeAnswer == true)||(As[ANum] != Answer)){
                        Result += As[ANum] + '<br />';
                }
        }
        return Result;
}

function GetFirstCorrectAnswer(QNum){
        var As = GetCorrectArray(QNum);
        if (As.length > 0){
                return As[0];
        }
        else{
                return '';
        }
}

function ReplaceGuessBox(QNum, Ans){
        if (document.getElementById('Q_' + QNum + '_SA') != null){
                var El = document.getElementById('Q_' + QNum + '_SA');
                while (El.childNodes.length > 0){
                        El.removeChild(El.childNodes[0]);
                }
                var A = document.createElement('span');
                A.setAttribute('class', 'Answer');
                var T = document.createTextNode(Ans);
                A.appendChild(T);
                El.appendChild(A);
        }
}











//-->

//]]>

</script>


</head>

<body onload="StartUp()" id="TheBody" >

<!-- BeginTopNavButtons -->



<!-- EndTopNavButtons -->

<div class="Titles">
        <h2 class="ExerciseTitle">DELF A1 - CE ex1</h2>

        <h3 class="ExerciseSubtitle">Quiz - DELF A1 </h3>



</div>

<div id="InstructionsDiv" class="StdDiv">
        <div id="Instructions">Answer the question asked and click on the question mark next to the right answer. Then click on the arrow to see the next question or click on "show all questions".</div>
</div>




<div id="MainDiv" class="StdDiv">
 
<div id="QNav" class="QuestionNavigation">

<p style="text-align: right;">
<button id="ShowMethodButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOver(this)" onclick="ShowHideQuestions(); return false;">Show all questions</button>
</p>

<div id="OneByOneReadout">
<button id="PrevQButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOver(this)" onclick="ChangeQ(-1); return false;">&lt;=</button>

<span id="QNumReadout" class="QNum">&nbsp;</span>

<button id="NextQButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOver(this)" onclick="ChangeQ(1); return false;">=&gt;</button>
<br />
</div>

</div>
 
<ol class="QuizQuestions" id="Questions">
<li class="QuizQuestion" id="Q_0" style="display: none;"><div class="QuestionText">Qui a &#x00E9;crit cette carte?</div><div class="ShortAnswer" id="Q_0_SA"><form method="post" action="" onsubmit="return false;"><div><input type="text" id="Q_0_Guess" onfocus="TrackFocus('Q_0_Guess')" onblur="LeaveGap()" class="ShortAnswerBox" size="9"></input><br /><br /><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckShortAnswer(0)">Check</button></div></form></div></li>
<li class="QuizQuestion" id="Q_1" style="display: none;"><div class="QuestionText">C'est: </div><ol class="MCAnswers"><li id="Q_1_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_1_0_Btn" onclick="CheckMCAnswer(1,0,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;un message administratif.</li><li id="Q_1_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_1_1_Btn" onclick="CheckMCAnswer(1,1,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;un message amical.</li><li id="Q_1_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_1_2_Btn" onclick="CheckMCAnswer(1,2,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;on ne sait pas.</li></ol></li>
<li class="QuizQuestion" id="Q_2" style="display: none;"><div class="QuestionText">Pourquoi est-ce qu'elle a &#x00E9;crit cette carte?</div><ol class="MCAnswers"><li id="Q_2_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_2_0_Btn" onclick="CheckMCAnswer(2,0,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;Pour accepter une invitation</li><li id="Q_2_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_2_1_Btn" onclick="CheckMCAnswer(2,1,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;Pour inviter une amie</li><li id="Q_2_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_2_2_Btn" onclick="CheckMCAnswer(2,2,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;.Pour remercier son amie.</li></ol></li>
<li class="QuizQuestion" id="Q_3" style="display: none;"><div class="QuestionText">Qu'est-ce qu' Alice doit apporter?</div><ol class="MCAnswers"><li id="Q_3_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_3_0_Btn" onclick="CheckMCAnswer(3,0,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;<img src="http://www.learnfrenchlab.com/images/gateau.jpg" alt="DELF A1" title="DELF A1" width="100" height="86"></img></li><li id="Q_3_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_3_1_Btn" onclick="CheckMCAnswer(3,1,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;<img src="http://www.learnfrenchlab.com/images/bouteille-vin.jpg" alt="DELF A1" title="DELF A1" width="61" height="100"></img></li><li id="Q_3_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_3_2_Btn" onclick="CheckMCAnswer(3,2,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;<img src="http://www.learnfrenchlab.com/images/french-phrases-thank-you.jpg" alt="DELF A1" title="DELF A1" width="100" height="86"></img></li></ol></li>
<li class="QuizQuestion" id="Q_4" style="display: none;"><div class="QuestionText">A Nantes, le 5 janvier, c'est:</div><ol class="MCAnswers"><li id="Q_4_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_4_0_Btn" onclick="CheckMCAnswer(4,0,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;l'hiver</li><li id="Q_4_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_4_1_Btn" onclick="CheckMCAnswer(4,1,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;le printemps</li><li id="Q_4_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)"  onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_4_2_Btn" onclick="CheckMCAnswer(4,2,this)">&nbsp;&nbsp;?&nbsp;&nbsp;</button>&nbsp;&nbsp;l'automne</li></ol></li></ol>



</div>



<div class="Feedback" id="FeedbackDiv">
<div class="FeedbackText" id="FeedbackContent"></div>
<button id="FeedbackOKButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="HideFeedback(); return false;">&nbsp;OK&nbsp;</button>
</div>

<!-- BeginBottomNavButtons -->



<!-- EndBottomNavButtons -->

<!-- BeginSubmissionForm -->

<!-- EndSubmissionForm -->

</body>
<table class="columns_block grid_block" border="0" style="width: 100%;"><tr><td class="column_0" style="width: 50%;vertical-align:top;">
</td><td class="column_1" style="width: 50%;vertical-align:top;">
<table class="columns_block grid_block" border="0" style="width: 100%;"><tr><td class="column_0" style="width: 50%;vertical-align:top;">
<p><br/></p><p>Click the arrow "Next Exercise" for more.</p>
</td><td class="column_1" style="width: 50%;vertical-align:top;">
<div class="ImageBlock"><div class="noalignment"><a href="http://www.learnfrenchlab.com/learn-french-online-free.html" title="Go to Learn French Online Free "><img src="http://www.learnfrenchlab.com/images/next-exercise.jpg" width="79" alt="French exercises" title="French exercises"></a></div></div>
</td></tr></table>
</td></tr></table>
<!-- start: shared_blocks.36602898#below-paragraph-1 -->


<!-- end: shared_blocks.36602898#below-paragraph-1 -->
<p style="text-align: center;"><a href="http://www.learnfrenchlab.com" onclick="return FIX.track(this);">Return from French Language Test to Homepage</a><br/></p>
<!-- start: shared_blocks.36602895#above-socialize-it -->


<!-- end: shared_blocks.36602895#above-socialize-it -->
<!-- start: shared_blocks.36602870#socialize-it -->


<!-- end: shared_blocks.36602870#socialize-it -->
<!-- start: shared_blocks.36602885#below-socialize-it -->


<!-- end: shared_blocks.36602885#below-socialize-it -->
</div><!-- end Liner -->
        </div><!-- end ContentColumn -->
      </div><!-- end ContentWrapper -->

      <div id="NavColumn">
        <div class="Liner">
<!-- start: shared_blocks.36602919#top-of-nav-column -->


<!-- end: shared_blocks.36602919#top-of-nav-column -->
<!-- start: shared_blocks.36602906#navigation -->

<!-- start: tool_blocks.navbar -->
    <div class="Navigation"><ul><li class="navbar_home"><a href="/">Home</a></li><li><a href="/french-grammar.html">Grammar</a></li><li><a href="/free-french-lessons.html">Exercises</a></li><li><a href="/french-vocabulary.html">Vocabulary</a></li><li><a href="/free-printable-worksheets.html">Free Worksheets</a></li><li><a href="/learn-french-online-free.html">Vocab Games</a></li><li><a href="/french-phrases.html">Phrases</a></li><li><a href="/french-pronunciation.html">Pronunciation</a></li><li><a href="/how-to-speak-french.html">French for Kids</a></li><li><a href="/french-learning-software.html">Software</a></li><li><a href="/learn-French-blog.html">What's New!</a></li><li><a href="/about.html">About</a></li><li><a href="/contact.html">Contact Me</a></li></ul></div>
    <!-- end: tool_blocks.navbar -->

<!-- end: shared_blocks.36602906#navigation -->
<!-- start: shared_blocks.36602922#bottom-of-nav-column -->


<!-- end: shared_blocks.36602922#bottom-of-nav-column -->
</div><!-- end Liner -->
      </div><!-- end NavColumn -->

      <div id="ExtraColumn">
        <div class="Liner">
<!-- start: shared_blocks.36602874#top-extra-default -->


</br>
<meta name="google-translate-customization" content="dfe34281db128368-e8e4094cf8c7b307-g31c5125e7f163bdd-16"></meta>
<center><div id="google_translate_element"></div><script type="text/javascript">
function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');
}
</script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script></center>
</br>

<!-- start: shared_blocks.60653802#Line break -->
<br clear="all">
<!-- end: shared_blocks.60653802#Line break -->
<!-- start: tool_blocks.twitterfollow -->

        <div class="twitterFollow" style="text-align:right;">
        <a href="https://twitter.com/LearnFrenchLab" class="twitter-follow-button" data-show-count="false" data-size="medium" data-show-screen-name="true">Follow @LearnFrenchLab</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        </div>

        <!-- end: tool_blocks.twitterfollow -->
<div class="ImageBlock ImageBlockCenter"><a href="http://www.facebook.com/LearnFrenchLab" onclick="window.open('http://www.facebook.com/LearnFrenchLab'); return false;" onclick="return FIX.track(this);" title="Connect with Learn French Lab on Facebook"><img src="http://www.learnfrenchlab.com/images/facebook-learnfrenchlab.jpg" width="156" alt="Connect with Learn French Lab on Facebook" title="Connect with Learn French Lab on Facebook"></a></div>
<!-- start: tool_blocks.pinterestfollow -->
        <div class="pinterestFollow" style="text-align: center;">
            <a href="http://pinterest.com/frenchlanguage/" target="_blank" onclick="return FIX.track(this.href);">
                <img src="http://passets-lt.pinterest.com/images/about/buttons/follow-me-on-pinterest-button.png"
                     style="width: 156px;"
                     alt="Follow Me on Pinterest" title="Click the &quot;Follow All&quot; button when you land on Pinterest. If you are not logged into Pinterest, log in first. If you do not have a Pinterest account, create one. It's a great way to share photos and follow other &quot;pinners&quot; of things that interest you. Then close the window or tab to return to this page."/>
            </a>
        </div>
        <!-- end: tool_blocks.pinterestfollow -->
<!-- start: shared_blocks.60653802#Line break -->
<br clear="all">
<!-- end: shared_blocks.60653802#Line break -->
<!-- start: shared_blocks.60653802#Line break -->
<br clear="all">
<!-- end: shared_blocks.60653802#Line break -->

<!-- end: shared_blocks.36602874#top-extra-default -->
<!-- start: shared_blocks.36602911#extra-default-nav -->

<!-- media net sticky -->
<center id="media-net-sticky">

<script id="mNCC" language="javascript">  medianet_width='160';  medianet_height= '600';  medianet_crid='211725300';  </script>  <script id="mNSC" src="http://contextual.media.net/nmedianet.js?cid=8CUUU2J13" language="javascript"></script>

</center> 

<!-- end: shared_blocks.36602911#extra-default-nav -->
<!-- start: shared_blocks.36602879#bottom-extra-default -->


<!-- end: shared_blocks.36602879#bottom-extra-default -->
</div><!-- end Liner-->
      </div><!-- end ExtraColumn -->

      <div id="Footer">
        <div class="Liner">
<!-- start: shared_blocks.36602872#above-bottom-nav -->


<!-- end: shared_blocks.36602872#above-bottom-nav -->
<!-- start: shared_blocks.36602877#bottom-navigation -->


<!-- end: shared_blocks.36602877#bottom-navigation -->
<!-- start: shared_blocks.36602869#below-bottom-nav -->


<!-- end: shared_blocks.36602869#below-bottom-nav -->
<!-- start: shared_blocks.36602875#footer -->


<script type="text/javascript">stLight.options({publisher: "ur-54126533-82ae-e9e-d43c-d4838beeca2e"});</script>
<script>
var options={ "publisher": "ur-54126533-82ae-e9e-d43c-d4838beeca2e", "position": "left", "ad": { "visible": false, "openDelay": 5, "closeDelay": 0}, "chicklets": { "items": ["facebook", "twitter", "googleplus", "linkedin"]}};
var st_hover_widget = new sharethis.widgets.hoverbuttons(options);
</script>
<!-- start: tool_blocks.footer -->
    <div class="page_footer_container">
      <div class="page_footer_content">
        <div class="page_footer_liner" ><div class="page_footer_text" ><a href="http://www.learnfrenchlab.com/sitemap.html">Sitemap</a> &#160;&#160;  <a href="http://www.learnfrenchlab.com/french-websites.html">Links</a> &#160;&#160; <a href="http://www.learnfrenchlab.com/contact.html">Contact</a> &#160;&#160; <a href="http://www.learnfrenchlab.com/disclaimer.html">Disclaimer</a> &#160;&#160; <a href="http://www.learnfrenchlab.com/privacy-policy.html">Privacy Policy</a>
<br>

<br>
<A HREF="http://www.copyscape.com/plagiarism-software/"><IMG SRC="http://banners.copyscape.com/images/cs-bk-3d-234x16.gif" ALT="Protected by Copyscape Plagiarism Software" TITLE="Protected by Copyscape Plagiarism Checker - Do not copy content from this page." WIDTH="234" HEIGHT="16" BORDER="0"></A>
<br>

<br>
By <a href=https://plus.google.com/u/0/116623086972197351903/posts?hl=en-GB?rel=author>Annette Gilleron</a> © Copyright 2013 LearnFrenchLab.com - All rights reserved.</div></div>        
      </div></div>
     <!-- end: tool_blocks.footer -->


<!-- end: shared_blocks.36602875#footer -->
</div><!-- end Liner -->
      </div><!-- end Footer -->

    </div><!-- end PageWrapper -->

    <script type="text/javascript">
        FIX.doEndOfBody();
    </script>
<!-- start: tool_blocks.sbi_html_body_end -->            <div id="fb-root"></div><script>(function(d, s, id) {
                  var js, fjs = d.getElementsByTagName(s)[0];
                  if (d.getElementById(id)) {return;}
                  js = d.createElement(s); js.id = id;
                  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
                  fjs.parentNode.insertBefore(js, fjs);
                }(document, 'script', 'facebook-jssdk'));</script><!-- end: tool_blocks.sbi_html_body_end -->
<!-- Generated at 11:12:10 04-Jun-2013 -->

</body>
</html>