include('script/ajax.js');

var map;


function displayTable(newUtilisateur){

    var table = "";
    for (k=0;k<newUtilisateur.length;k++){
        table += newUtilisateur[k].getAttribute("name") + ": ";
        table += newUtilisateur[k].getAttribute("distance");
        table += "  \n";
    }
    alert(table);
}

function sortUtilisateurs(utilisateurs){
    var newUtilisateur;
    var i, j, k;
    
    newUtilisateur = new Array(Math.min(5, utilisateurs.length));

    var maxuser = utilisateurs[0];

    for(j=0;j<utilisateurs.length;j++){
        if(utilisateurs[j].getAttribute("distance")>maxuser.getAttribute("distance")){
            maxuser = utilisateurs[j];
        }
    }

    for(j=0;j<newUtilisateur.length;j++){
        newUtilisateur[j] = maxuser;
    }
        
    for(i=0; i< utilisateurs.length; i++){
        for(j=0;j<newUtilisateur.length;j++){
            var d1 = parseFloat(utilisateurs[i].getAttribute("distance"));
            var d2 = parseFloat(newUtilisateur[j].getAttribute("distance"));
            if( d1< d2){
                for(k=(newUtilisateur.length-2);k>=j;k--){
                    newUtilisateur[k+1] = newUtilisateur[k];
                }
                newUtilisateur[j] = utilisateurs[i];
                break;
            }
        }
    }
    
    return newUtilisateur;
}

function waitShops(){
    var selectField = document.getElementById("list_magasins");
    while(selectField.hasChildNodes()){
        selectField.removeChild(selectField.childNodes[0]);
    }
    var img = document.createElement("img");
    img.setAttribute("src", "../custom/neutral/attente.gif");
    selectField.appendChild(img);    
}

function updateShops(){
    var cpElement = document.getElementById("cpField");

    var request = createRequest();
    request.onreadystatechange=function(){
        if(request.readyState==0){
        }
        if(request.readyState==1){
        }
        if(request.readyState==2){
        }
        if(request.readyState==3){
        }
        if(request.readyState==4){
            if(request.status == 200){
                try {
                    // récuperation latitude et longitude
                    var selectField = document.getElementById("list_magasins");

                    
                    while(selectField.hasChildNodes()){
                        selectField.removeChild(selectField.childNodes[0]);
                    }

                    var ulNode = document.createElement("ul");
                    selectField.appendChild(ulNode);

                    var domResponse = request.responseXML;
                    var utilisateurs = domResponse.getElementsByTagName("utilisateur");

                    utilisateurs = sortUtilisateurs(utilisateurs);


                    for(var i=0; i< utilisateurs.length; i++){

                        var liNode = document.createElement("li");
                        ulNode.appendChild(liNode);
                        var child = document.createElement("a");
                        liNode.appendChild(child);
                        
                        child.appendChild(document.createTextNode(utilisateurs[i].getAttribute('name')));
                        child.appendChild(document.createElement("br"));
                        child.appendChild(document.createTextNode(utilisateurs[i].getAttribute('adresse')));
                        child.appendChild(document.createElement("br"));
                        child.appendChild(document.createTextNode(utilisateurs[i].getAttribute('ville')));
                        child.setAttribute("href", "javascript:updateInfos("+utilisateurs[i].getAttribute('id')+")");
                  
                    }
                } catch (exception) {
                    alert("updateShops : "+exception);
                }
            }
        }
    }

    request.open("GET","stubs/nearestShops.php?city="+cpElement.value,true);
    request.send(null);
}

function updateInfos(clientID){


    var request = createRequest();
    request.onreadystatechange=function(){
        if(request.readyState==0){
        }
        if(request.readyState==1){
        }
        if(request.readyState==2){
        }
        if(request.readyState==3){
        }
        if(request.readyState==4){
            if(request.status == 200){
                try {
                    //centrage de la carte
                    var domResponse = request.responseXML;
                    var utilisateurs = domResponse.getElementsByTagName("utilisateur");
                    var i=0;
                    var latitude = 0;
                    var longitude = 0;
                    for(i=0; i<utilisateurs.length; i++){
                        // création de la description HTML
                        var html = "";
                        html+="<html>";
                        html+="<b>";
                        if(utilisateurs[i].getAttribute("name").match("null")==null){
                            html += utilisateurs[i].getAttribute("name")+"<br/>";
                        }
                        if(utilisateurs[i].getAttribute("adresse").match("null")==null){
                            html += utilisateurs[i].getAttribute("adresse")+"<br/>";
                        }
                        if(utilisateurs[i].getAttribute("ville").match("null")==null){
                            html += utilisateurs[i].getAttribute("ville")+"<br/>";
                        }
                        html+="</b>";
                        //                        if(utilisateurs[i].getAttribute("vinyl")=="true"){
                        //                            html += "vinyl<br/>";
                        //                        }
                        //                        if(utilisateurs[i].getAttribute("papier")=="true"){
                        //                            html += "papier<br/>";
                        //                        }
                        //                        if(utilisateurs[i].getAttribute("toile")=="true"){
                        //                            html += "toile<br/>";
                        //                        }
                        //                        if(utilisateurs[i].getAttribute("photo_10x15")=="true"){
                        //                            html += "photo_10x15<br/>";
                        //                        }
                        //                        if(utilisateurs[i].getAttribute("scanner")=="true"){
                        //                            html += "scanner<br/>";
                        //                        }
                        html += "<a href=\"?clientID="+clientID+"\">Entrer</a></br>";

                        html+="</html>";

                        latitude = utilisateurs[i].getAttribute("latitude");
                        longitude = utilisateurs[i].getAttribute("longitude");

                        var point = new GLatLng(latitude,longitude);

                        map.clearOverlays();
                        map.addOverlay(createMarker(point, html));
                    }
                } catch (exception) {
                    alert("updateInfos:"+exception);
                }
            }
        }
    }

    var clientInputField = document.getElementById("clientInputField");
    clientInputField.value = ""+clientID;
    
    request.open("GET","stubs/clientStub.php?clientID="+clientID,true);
    request.send(null);
}

function createMarker(point, texte){
    // create the marker
    var baseIcon = new GIcon();
    baseIcon.iconSize=new GSize(30,35);
    baseIcon.iconAnchor=new GPoint(15,35);
    baseIcon.infoWindowAnchor=new GPoint(15,0);
    var icone = new GIcon(baseIcon, '../custom/neutral/magasin.png', null, '');
    var marker;
    //    alert(navigator.appVersion);
    //    if (navigator.appName == 'Microsoft Internet Explorer') {
    //        marker = new GMarker(point);
    //    }
    //    else{
    marker = new GMarker(point,{
        icon:icone,
        title:"Cliquez pour sélectionner le magasin"
    });

    //    }
    map.addOverlay(marker);
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(texte);
    });
    return marker;
}

function centerMap(point) {
    //    if (GBrowserIsCompatible()) {
    map.setCenter(point, 13);
//    }else{
//        alert("navigateur non compatible");
//    }
}

function initialize() {
    //    if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(45, 0), 5);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    updateInfos();
//    }else{
//        alert("navigateur non compatible");
//    }
}