var ajaxDisabled = 1;
var errMsg = "";
var ajaxSeqNum;
var freeKid = 0;
var freeKidWarningShowed = 0;
var planCache = {};


function timeoutHandler() {
    location.replace("/info/product_selector/index.jsp");
}





/**
 * Loads the plan data for the given plan. Maintains a cache of known plan
 * descriptions to reduce latency.
 */
function getUrl(plan) {
    if (planCache[plan[0]] != undefined) {
        document.getElementById("productinfo").innerHTML = planCache[plan[0]];
        return;
    }

    var xmlHttp = GetXmlHttpObject();
    if (xmlHttp==null) {
        alert ("Your browser does not support AJAX!");
        return;
    }

    var ajax_url="/info/AjaxServlet?action=getProductInformation"
        + "&key=" + plan[0]
        + "&Seq="+plan[1];

    xmlHttp.onreadystatechange= function() {
        if (xmlHttp.readyState==4) {
            var result = xmlHttp.responseText;
            result = result.split("<!--AjaxSeq:" );

            var seq= result[1];
            seq = seq.substring(0,seq.indexOf('-->') );
            planCache[plan[0]] = result[0];
            //check the sequence to avoid the messup because of
            // the async communication
            if (seq==ajaxSeqNum) {
                document.getElementById("productinfo").innerHTML=result[0];

            }
        }
    };

    xmlHttp.open("GET",ajax_url,true);
    xmlHttp.send(null);
}


function getQuote(plan) {
    var xmlHttpQuote = GetXmlHttpObject();

    if (xmlHttpQuote==null) {
        alert ("Your browser does not support AJAX!");
        return;
    }

    var ajax_url = "/info/AjaxServlet?action=getQuote"
        + "&productCode=" + plan[2]
        + "&subProductCode=" + plan[3]
        + "&productFamily=" + plan[4]
        + "&membershipType=G"
        + "&age=" + plan[5]
        + "&isStudent=" + plan[6]
        + "&Seq=" + plan[1]
        + "&dob=" + plan[8];


    xmlHttpQuote.onreadystatechange = function() {
        stateChangedQuote(xmlHttpQuote,plan);
    };
    
	xmlHttpQuote.open("GET",ajax_url,true);

    xmlHttpQuote.send(null);

}

function stateChangedQuote(xmlHttpQuote,plan) {
    if (xmlHttpQuote.readyState==4) {

		var quote = xmlHttpQuote.responseText.split("/");
        
		if (quote[0]>0 && quote[1]==ajaxSeqNum) {
            var price = quote[0];
            if(quote[2] == 'freekid' ){
                freeKid = 1;
                var relation = document.getElementById("relation").value;
                if( relation=='Daughter' || relation=='Son'){
                    price = 0.00;
                }
            } else {
                freeKid = 0;
                if (quote[2] == '4thkid') {
                    if (!freeKidWarningShowed) {
						/*
                        var pos = objectPosition(document.getElementById("dayOfBirth"));
                        document.getElementById("freeKid").style.left = pos.left + 90;
                        document.getElementById("freeKid").style.top = pos.top;
                        MM_showHideLayers('freeKid','','show');
                        freeKidWarningShowed = 1;
                        */
                        $("#freeKidDialog").dialog('open');
                    }
                }
            }

            setPriceForPerson(price);

            if (saveEnabled == 1) {
                document.getElementById("addButton").disabled = false;
                document.getElementById("formAddtoBasket").style.display = 'inline';
            }
            document.getElementById("CurrentPrice").value=quote[0];


			var gender		= $('#gender option:selected').text();
			var yob			= plan[8].substring(6,10);
			var description = $('#HIsFamily').getValue();
			var cover		= $('#HospitalType').getValue();
			var room		= $('#HRoom').getValue();
			var level		= $('#HDtDLevel').getValue();

			if (description=="0")
			{
				description = $("label[for='singleChoice']").text();
			} else{
				description = $("label[for='familiChoice']").text();
			}

			if (cover=="0"){cover="None";}
			if (cover=="1"){cover="Public";}
			if (cover=="2"){cover="Private";}
			if (cover=="3"){cover="Hi tech";}

			if (room=="2")
			{
				room = $("label[for='SemiRoom']").text();
			} else{
				room = $("label[for='PrivateRoom']").text();
			}

			if (level=="0"){level="None";}
			if (level=="1"){level="Level 1";}
			if (level=="2"){level="Level 2";}

			var price	= $('#CurrentPrice').getValue();

			pageTracker._trackPageview('/virtual/planfinder/app/gender-'+gender+'/yob-'+yob+'/description-'+description+'/cover-'+cover+'/room-'+room+'/level-'+level+'/price-'+price);


        }
    }
}

/**
 * Displays the given price to the user. If the given price is
 * a number, then the euro sign is prepended. If it is not a
 * number it will be displayed as-is. The latter behaviour is
 * used for the "Loading..." string.
 */
function setPriceForPerson(price) {
    if (Number(price)) {
        price = "&euro;" + price;

    }

    document.getElementById("productquote").innerHTML = ""
        + "<div style=\"font-size: 120%; padding: 0 0 0 0; margin: 0 0 0 0;\">"
        + "<strong>Price for this person:<br />"
        + "<div style=\"font-size: 200%;\">" + price + "</div>"
        + "</strong></div>";
    var requestCallbackRow = document.getElementById("requestCallBackRow");
    if (requestCallbackRow) {
        requestCallbackRow.style.display = "block";
    }
}

function checkFreeKid(field){
    if (freeKid ==1){
        if (field.value=='Daughter' || field.value=='Son') {
            setPriceForPerson("0.00");
        } else {
            setPriceForPerson(document.getElementById("CurrentPrice").value);
        }
    }
}

function saveProduct() {
    if (ajaxDisabled==1) return; //disable Ajax after save product submitted.
    var xmlHttpSave=GetXmlHttpObject();
    if (xmlHttpSave==null) {
        alert ("Your browser does not support AJAX!");
        return;
    }

    var ajax_url="/info/AjaxServlet?action=saveProduct"	;

    ajax_url +=	"&HIsFamily=" + document.getElementById("HIsFamily").value
        + "&HospitalType="+ document.getElementById("HospitalType").value
        + "&HRoom="+ document.getElementById("HRoom").value
        + "&HDtDLevel="+ document.getElementById("HDtDLevel").value
        + "&PTitle="+ document.getElementById("PTitle").value
        + "&PFirstName="+ document.getElementById("PFirstName").value
        + "&PSurname="+ document.getElementById("PSurname").value
        + "&PGender="+ document.getElementById("PGender").value
        + "&PRelation="+ document.getElementById("PRelation").value
        + "&PDateBirth="+ document.getElementById("PDateBirth").value
        + "&PStudent="+ document.getElementById("PStudent").value
        + "&PCollege="+ document.getElementById("PCollege").value
        + "&CurrentKey="+ document.getElementById("CurrentKey").value
        + "&CurrentPrice="+ document.getElementById("CurrentPrice").value
        + "&CurrentProductName="+ document.getElementById("CurrentProductName").value
        + "&FormTimeStamp="+ document.getElementById("FormTimeStamp").value;

    xmlHttpSave.onreadystatechange = function() {
        stateChangedForSave(xmlHttpSave);
    };
    xmlHttpSave.open("GET",ajax_url,true);
    xmlHttpSave.send(null);

    if(sessionBegin){
        clearTimeout(alarm);
        alarm = setTimeout ("timeoutHandler()",3000); //Wait 3 seconds for return
    }
}

function stateChangedForSave(xmlHttpSave) {
    if (xmlHttpSave.readyState==4) {
        var result=xmlHttpSave.responseText;
        result = result.split("<!--Separator>");
        document.getElementById("savedModelDiv").innerHTML=result[0];
        document.getElementById("buyonlineButton").style.display='inline';
        quoteMessage = result[1];
        document.getElementById("emailbutton").className = "button_receive_on";
        document.getElementById("emailbutton").disabled=false;
        document.getElementById("buybutton").className = "button_online_on";
        document.getElementById("buybutton").disabled=false;
        document.getElementById("clearbutton").className = "button_clear_on";
        document.getElementById("clearbutton").disabled=false;
        clearTimeout(alarm);
        alarm = setTimeout ("timeoutHandler()",timeoutValue*1000+15000);
    }
}

function checkBox(field) {
    if (field.checked) {
        document.getElementById("P"+field.name).value=1;
        document.getElementById("college").disabled=false;
    } else {
        document.getElementById("P"+field.name).value=0;
        document.getElementById("college").disabled=true;
        document.getElementById("college").value="";
    }
    loadProduct();
}

function checkRadio(field) {
    document.getElementById("H"+field.name).value  = field.value;
    loadProduct();
}




function GetXmlHttpObject() {
    try {
        // Firefox, Opera 8.0+, Safari
        return new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return null;
}

function checkAction() {
    return document.getElementById("action").value != "";
}


function checkPersonInfo(){
    //if it is single type, max 2 people allows. to be added after confirmation

    var err = 0;
    var errMessage = "Please complete the personal information.";

    var title = document.getElementById("title").value;
    if( title ==-1 ){
        if(err ==0){
            err++;
            document.getElementById("title").focus();
        }
    }else{
        document.getElementById("titleCaption").className = "smalltext";
        document.getElementById("PTitle").value = title;
    }

    var firstName = document.getElementById("firstName").value;
    if( /\w+/.test(firstName)){
        document.getElementById("firstNameCaption").className = "smalltext";
        document.getElementById("PFirstName").value = firstName;
    }else{
        if(err ==0){
            err++;
            document.getElementById("firstName").focus();
        }
    }

    var surname = document.getElementById("surname").value;
    if( /\w+/.test(surname)){
        document.getElementById("PSurname").value = surname;
    }else{
        if(err ==0){
            err++;
            document.getElementById("surname").focus();
        }
    }

    if(validDate(document.getElementById("dayOfBirth"))){
        document.getElementById("PDateBirth").value = document.getElementById("dayOfBirth").value;
    } else {
        if(err ==0) {
            err++;
            errMessage = "Invalid date of birth.";
            document.getElementById("dayOfBirth").focus();
            document.getElementById("dayOfBirth").select();
        }
    }

    //Check relation if not policy holder
    if(!isPolicyHolder){
        var relation = document.getElementById("relation").value;
        if( relation != -1){
            document.getElementById("PRelation").value = document.getElementById("relation").value;
        }else{
            //alert(relation);
            if(err ==0){
                err++;
                document.getElementById("relation").focus();
            }
        }

        var studentStatus = document.getElementById("PStudent").value;
        var age = getAge(document.getElementById("dayOfBirth").value);

        if(studentStatus == 1){

            if (age>20 || age<18){
                if(err ==0){
                    err++;
                    errMessage = "A student must be over the age of 18 years and under 21 years.";
                    /*document.getElementById("dayOfBirth").focus();
                    document.getElementById("dayOfBirth").select();*/
                }
            }
            var collegeName = document.getElementById("college").value;
            if( /\w+/.test(collegeName)){
                document.getElementById("PCollege").value = collegeName;
            }else{
                if(err ==0){
                    err++;
                    document.getElementById("college").focus();
                }
            }
        }

        if(age<18){
            var curKey = document.getElementById("CurrentKey").value;
            if( (curKey=="HS_Gold" || curKey=="HS_Silver") && hasHealthSteps==0){
                if(err ==0){
                    err++;
                    errMessage = "Child cannot have Healthsteps if no adult have the same plan.";
                    /*document.getElementById("dayOfBirth").focus();
                    document.getElementById("dayOfBirth").select();*/
                }
            }
        }
    }
    document.getElementById("PGender").value = document.getElementById("gender").value;

    if(err>0){
        alert (errMessage);
        //return false;
    }else{
        document.getElementById("addButton").disabled = true;
        saveEnabled = 0;
        saveProduct();
        sliderHospital.setDisabled(true);
        sliderDayToDay.setDisabled(true);
        disableInput(document.getElementById("selectorInput"));
        ajaxDisabled = 1;
    }
    return false;
}


function validEmailAddress(obj) {
    var addr=obj.value;
    if (/^(.+)@(.+)\.(.+)$/.test(addr)) {
        document.getElementById("sendEmailButton").disabled = false;
    }else{
        document.getElementById("sendEmailButton").disabled = true;
    }
}


function sendEmail() {
    var email =  document.getElementById("emailaddress").value;
    if (emailCheck(email)) {
        getUrlMail();
    }
}

function getUrlMail() {
    var xmlHttpMail=GetXmlHttpObject();
    if (xmlHttpMail==null) {
        alert ("Your browser does not support AJAX!");
        return;
    }

    var ajax_url="/info/AjaxServlet";
    xmlHttpMail.onreadystatechange = function() {};

    xmlHttpMail.open("POST",ajax_url,true);

    var parameters = "recipient=" + encodeURI(document.getElementById("emailaddress").value)
        + "&action=" + encodeURI("sendAjaxEmail")
        + "&fromEmailAddress=" + encodeURI("info@vhi.ie")
        + "&subject=" + encodeURI("Your Quick Quote from Vhi Healthcare")
        + "&msg="+ encodeURI(quoteMessage);

    xmlHttpMail.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttpMail.setRequestHeader("Content-length", parameters.length);
    xmlHttpMail.setRequestHeader("Connection", "close");
    xmlHttpMail.send(parameters);
}






function validAlpha(obj) {
  var chr = obj.value;
  if (/[^\w\'\s]/g.test(chr)) {
      obj.value=obj.value.replace(/[^\w\'\s]/g,'');
  }
  if (/\'\'/g.test(chr)) {
      obj.value=obj.value.replace(/\'\'/g,'\'');
  }
}




function validDate(obj) {


  var date=obj.value;
  var test1 = /^\d{1,2}\/?\d{1,2}\/\d{4}$/.test(date);
  date=date.split('/');

  var d = new Date(date[2],date[1]-1,date[0]);
  var test2=(1*date[0]==d.getDate() && 1*date[1]==(d.getMonth()+1) && 1*date[2]==d.getFullYear());
 
  if (test1 && test2) {

	  var age = calage( d.getDate(),(d.getMonth()+1) , d.getFullYear()) ;

	  if(isPolicyHolder) {

          if (age<18){
              errMsg="The first named person, or policyholder, must be aged over 18 years.";
              return false;
          }
      }else{

        var studentStatus = document.getElementById("PStudent").value;

        if(studentStatus == 1){
            if (age>20 || age<18){
                    errMsg = "A student must be over the age of 18 years and under 21 years.";
					return false;
            }
		}
	  }


      return true;
  } else {

      if (date=="") {
          errMsg="Please complete the personal details.";
      } else {
          errMsg="The date is not valid.";
      }
      return false;
  }
}

function getAge(str) {
    var date = str.split('/');
    var d = new Date(date[2],date[1]-1,date[0]);
    return calage( d.getDate(),(d.getMonth()+1) , d.getFullYear());
}


function addmore() {
    location.href="/info/product_selector/index.jsp";
}

function disableInput(obj) {
    var nodes = obj.getElementsByTagName("*");
    for(var i=0; i < nodes.length; i++) {
        if (nodes[i].type == "text"
            || nodes[i].type == "radio"
            || nodes[i].type == "checkbox"
            || nodes[i].type == "select-one") {
            nodes[i].disabled=true;
        }
    }
}

function clearBasket() {
    if (confirm('Are you sure? This will clear all the quote information you have entered.')) {
        document.forms.frmClear.submit();
    }
}

function getClientSize() {
    return {
        width: document.body.clientWidth,
        height: document.body.clientHeight
    };
}
function getScrollSize() {
    return {
        width: document.body.scrollWidth,
        height: document.body.scrollHeight
    };
}


function showHelpLayer(layerId) {
//    document.body.style.overflow = "hidden";
    var overlay = document.getElementById("overlayLayer").style;
    // iframe is needed to fix IE bug
    var iframe = document.getElementById("overlayHelper").style;
    var help = document.getElementById(layerId);
    // firefox fix
    document.getElementById("sliderHospitalDiv").style.display="none";
    document.getElementById("sliderDayToDayDiv").style.display="none";

    var resize = function() {
        var clientSize = getClientSize();
        var scrollSize = getScrollSize();
        overlay.width = iframe.width = scrollSize.width;
        overlay.height = iframe.height = Math.max(clientSize.height, scrollSize.height);
        help.style.top = (clientSize.height / 2) - (help.clientHeight / 2);
        help.style.left = (clientSize.width / 2) - (help.clientWidth / 2);
    };

    window.onresize = resize;

    iframe.display = "block";
    overlay.display = "block";
    help.style.display = "block";
    help.style.top = -100000000; // display the help box way off screen, this lets
    help.style.left = -10000000; // us get the size of the box without drawing it
    resize();
}

function hideHelpLayer(layerId) {
    var overlay = document.getElementById("overlayLayer");
    var iframe = document.getElementById("overlayHelper");
    var help = document.getElementById(layerId);
    overlay.style.width = 0;
    overlay.style.height = 0;
    iframe.style.width = 0;
    iframe.style.height = 0;
    // firefox fix
    document.getElementById("sliderHospitalDiv").style.display="block";
    document.getElementById("sliderDayToDayDiv").style.display="block";
    overlay.style.display = "none";
    iframe.style.display = "none";
    help.style.display = "none";
    window.onresize = null;
}


function objectPosition(obj) {
    var left = 0;
    var top = 0;
    while(obj.offsetParent) {
        left += obj.offsetLeft;
        top += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return {
        left: left,
        top: top
    };

}

var startyear = "1950";
var endyear = "2010";
var dat = new Date();

var curday = dat.getDate();
var curmon = dat.getMonth()+1;
var curyear = dat.getFullYear();

function checkleapyear(datea)
{
	if(datea.getYear()%4 == 0)
	{
		if(datea.getYear()% 10 != 0)
		{
			return true;
		}
		else
		{
			if(datea.getYear()% 400 == 0)
				return true;
			else
				return false;
		}
	}
return false;
}
function DaysInMonth(Y, M) {
    with (new Date(Y, M, 1, 12)) {
        setDate(0);
        return getDate();
    }
}
function datediff(date1, date2) {
    var y1 = date1.getFullYear(), m1 = date1.getMonth(), d1 = date1.getDate(),
	 y2 = date2.getFullYear(), m2 = date2.getMonth(), d2 = date2.getDate();

    if (d1 < d2) {
        m1--;
        d1 += DaysInMonth(y2, m2);
    }
    if (m1 < m2) {
        y1--;
        m1 += 12;
    }
    return [y1 - y2, m1 - m2, d1 - d2];
}

function calage(calday,calmon,calyear)
{

var curd = new Date(curyear,curmon-1,curday);
var cald = new Date(calyear,calmon-1,calday);

var diff =  Date.UTC(curyear,curmon,curday,0,0,0) - Date.UTC(calyear,calmon,calday,0,0,0);

var dife = datediff(curd,cald);


return(dife[0]);

}




/* ******************************************************************************   */
/* ******************************************************************************   */
/* ******************************************************************************   */



function init() {
	/*
		document.getElementById("dayOfBirth").value = dob;
		
		document.getElementById("HospitalType").value = htype;
		document.getElementById("HRoom").value = hroom;
		document.getElementById("HDtDLevel").value = hdtdlevel;
			*/				
    document.getElementById("productinfo").innerHTML=document.getElementById("default_productinfo").innerHTML;

		/*
    sliderHospital.setValue(2); //will triger loadProduct if ajax enabled
    sliderDayToDay.setValue(1);
		*/
    ajaxDisabled = 0;
    $dob = $('#dayOfBirth').val();
    if ($dob!='dd/mm/yyyy') {
    	loadProduct();
    }
}

function bsSliderChangeHospital(val) {
    document.getElementById("HospitalType").value  = val;
    if (val < 1) {
        document.getElementById("AccomDiv").style.display  = 'none';
        /*${"#AccomDiv"}.slideUp();*/
        document.getElementById("HRoom").value ='0';
    } else {
        if (document.getElementById("PrivateRoom").checked) {
					document.getElementById("HRoom").value ='3';
        }
        if(document.getElementById("SemiRoom").checked) {
            document.getElementById("HRoom").value ='2';
        }
        document.getElementById("AccomDiv").style.display = 'block';
        /*${'#AccomDiv'}.slideDown();*/
    }
    loadProduct();
}

function bsSliderChangeDayToDay(val) {
  document.getElementById("HDtDLevel").value  = val;
  loadProduct();
}

function loadProduct() {
		$('#right_side_content').slideUp(500, loadProductCallback);
}

function loadProductCallback() {
	if (ajaxDisabled == 1) return; //disable loading after save
		/* validate date, set focus, shows product info msg */
    if (!validDate(document.getElementById("dayOfBirth"))) {
        document.getElementById("productinfo").innerHTML=document.getElementById("default_productinfo").innerHTML;
        alert(errMsg);
        /*document.getElementById("dayOfBirth").select();
        document.getElementById("dayOfBirth").focus();
        */
        return;
    }
		
    if (document.getElementById("HDtDLevel").value == 0 && document.getElementById("HospitalType").value == 0) {
        document.getElementById("productinfo").innerHTML=document.getElementById("default_productinfo").innerHTML;
        document.getElementById("addButton").disabled=true;
        document.getElementById("productquote").innerHTML="";
        document.getElementById("formAddtoBasket").style.display = 'none';
        return;
    }

    //Disable the save button and clear the summary before got key
//    document.getElementById("productquote").innerHTML="Loading";
    setPriceForPerson("Loading...");
    document.getElementById("addButton").disabled=true;
    document.getElementById("CurrentKey").value="";
    getKey();
		
		$('#right_side_content').slideDown(1000,highlight);
    return;
}

function highlight(){
	/*$('#rightSide').effect("highlight", {color:'#EAA9fA'}, 1500);*/
};



function getKey() {
    if (ajaxDisabled==1) return; //disable Ajax after save product submitted.
    var xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert ("Your browser does not support AJAX!");
        return;
    }

    var dob =  document.getElementById("dayOfBirth").value;
    ajaxSeqNum = new Date().getTime();
    var ajax_url="/info/AjaxServlet?action=getProductDef"
        + "&Isfamily=" + document.getElementById("HIsFamily").value
        + "&Hospitaltype=" + document.getElementById("HospitalType").value
        + "&PrivateRoom=" + document.getElementById("HRoom").value
        + "&DtDLevel=" + document.getElementById("HDtDLevel").value
        + "&Dob=" + dob
        + "&IsStudent=" + document.getElementById("PStudent").value
        + "&Seq=" + ajaxSeqNum;

    xmlHttp.onreadystatechange = function() { stateChangedForKey(xmlHttp); };
    xmlHttp.open("GET",ajax_url,true);
    xmlHttp.send(null);
}

function stateChangedForKey(xmlHttp) {
    if (xmlHttp.readyState==4)	{
        var resp = xmlHttp.responseText;
		
        var plan = resp.split('|');
        if (plan[1] == ajaxSeqNum) {
            document.getElementById("CurrentKey").value=plan[0];
            document.getElementById("productinfo").innerHTML="Loading "+ plan[0];
            document.getElementById("CurrentProductName").value=plan[7];

            if (plan[0]!="null" && plan[2]!="null" && plan[5]>=0) {

				plan[5] = getAge(plan[8]);

                getUrl(plan);

				getQuote(plan);

            }
            if (sessionBegin) {
                clearTimeout(alarm);
            }
            sessionBegin = 1;
            if(sessionBegin){
                alarm = setTimeout ("timeoutHandler()",timeoutValue*1000+15000);
            }
        }
    }
}

/* fired by onChange on date field */
function validDateInput(obj,e) {
    if(e.keyCode == 8 || e.keyCode==46) {
        return;
    }

    var date=obj.value;
    if (/[^\d/]|(\/\/$)/g.test(date)) {
        obj.value=obj.value.replace(/[^\d/]/g,'');
        obj.value=obj.value.replace(/\/{2}/g,'/');
        return;
    }
    if (/^\d{2}$/.test(date)) {
        obj.value=obj.value+'/';
        return;
    }
    if (/^\d{1,2}\/\d{2}$/.test(date)) {
        obj.value=obj.value+'/';
        return;
    }

    var test1= /^\d{1,2}\/?\d{1,2}\/\d{4}$/.test(date);
    date=date.split('/');
    var d = new Date(date[2],date[1]-1,date[0]);
    var test2=(1*date[0]==d.getDate() && 1*date[1]==(d.getMonth()+1) && 1*date[2]==d.getFullYear());
    if (test1 && test2) {
        loadProduct();
    }
}
