﻿var cal_cont = "calender";
var map_cont = "map";
var ecz_list = "lstEczaneler";
var marker_url = "images/ecz_marker.png";
function init(dateformat,serviceurl,serverDate){
    calenderSetup.dateformat = dateformat
    calenderSetup.addCalender(cal_cont);
    mapSetup.setParameters(serviceurl);
    calenderSetup.updateListener(calenderSetup.setInitDate(serverDate.evalJSON(true)),true);
    //calenderSetup.updateListener(calenderSetup.calender.initDate);
}

var dataSetup = {
    setData:function()
    {
        $(ecz_list).innerHTML = "";
        if(this.eczdata.len > 0){
            for(i=0;i<this.eczdata.len;i++){
                var option = document.createElement("option");
                option.innerHTML = this.eczdata["DATA"+i].eadi + " // " + this.eczdata["DATA"+i].mah;
                $(ecz_list).appendChild(option);
            }
            this.setEczEvents();
            this.setEczData(0);
            $(ecz_list).options[0].selected = true;
        }else{
            var option = document.createElement("option");
            option.innerHTML = "----KAYIT BULUNAMADI----";
            $(ecz_list).appendChild(option);
            
            $("lblEczaci").innerHTML = "";
            $("lblAdi").innerHTML = "";
            $("lblMahalle").innerHTML = "";
            $("lblAdres").innerHTML = "";
            $("lblTarif").innerHTML = "";
            $("lblTelefon").innerHTML = "";
        }
    },
    setEczEvents:function(){
        Event.observe($(ecz_list),"change",function(){
            var index = $(ecz_list).selectedIndex;
            this.setEczData(index);    
        }.bind(this));
    },
    setEczData:function(index){
        
        $("lblEczaci").innerHTML = this.eczdata["DATA"+index].ezadi;
        $("lblAdi").innerHTML = this.eczdata["DATA"+index].eadi;
        $("lblMahalle").innerHTML = this.eczdata["DATA"+index].mah;
        
        if(this.eczdata["DATA"+index].yoltur == "Cadde"){
            $("lblAdres").innerHTML = this.eczdata["DATA"+index].yoladi + " Caddesi No:" + this.eczdata["DATA"+index].kapi;
        }else if(this.eczdata["DATA"+index].yoltur == "Sokak"){
            $("lblAdres").innerHTML = this.eczdata["DATA"+index].yoladi + " Sokağı No:" + this.eczdata["DATA"+index].kapi;
        }else if(this.eczdata["DATA"+index].yoltur == "Bulvar"){
            $("lblAdres").innerHTML = this.eczdata["DATA"+index].yoladi + " Bulvarı No:" + this.eczdata["DATA"+index].kapi;
        }
        
        if(typeof(this.eczdata["DATA"+index].tarif) != "object"){
            $("lblTarif").innerHTML = this.eczdata["DATA"+index].tarif;
        }else{
            $("lblTarif").innerHTML = "";
        }
            
        $("lblTelefon").innerHTML = this.eczdata["DATA"+index].tel;

         var cllx = parseFloat(this.eczdata["DATA"+index].cllx.replace(",","."));
         var clly = parseFloat(this.eczdata["DATA"+index].clly.replace(",","."));
         var curx = parseFloat(this.eczdata["DATA"+index].curx.replace(",","."));
         var cury = parseFloat(this.eczdata["DATA"+index].cury.replace(",","."));
         var centerX = (cllx+curx)/2;
         var centerY = (clly+cury)/2;
         mapSetup.removeMarker();
         mapSetup.setCenter(centerX, centerY);
         mapSetup.setMarker(centerX, centerY);
    }
}
var mapSetup = {
    map : null,
    zoom : 8,
    addMap : function(container,mapurl,cllx,clly,curx,cury){
        if(container==""){
            container = map_cont;
        }
        OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3; 
        OpenLayers.ImgPath = "images/"
        this.map = new OpenLayers.Map( 
            $(container), {
                maxExtent: new OpenLayers.Bounds(cllx,clly,curx,cury), 
                maxResolution: "auto"});
       
       /* this.layer = new OpenLayers.Layer.WMS("NCWMS",[mapurl,mapurl,mapurl,mapurl,mapurl],
        {layers: "NCWMS", request: 'GETMAP'} );*/
        
        this.layer = new OpenLayers.Layer.WMS("NCWMS",[mapurl,mapurl],
        {layers: "NCWMS", request: 'GETMAP'} );
        
        //this.layer.singleTile = true;
        
        this.layer.setTileSize(new OpenLayers.Size(512,512));
        this.layer.buffer =0;
        this.layer.events.register("loadstart", this.layer, function() {
            $("loading").style.display = "";        
        });
        this.layer.events.register("loadend", this.layer, function() {
            $("loading").style.display = "none";            
        });
        this.map.addLayer(this.layer);
    },
    setCenter : function(cx,cy){
        this.map.setCenter(new OpenLayers.LonLat(cy, cx),this.zoom);
    },
    setParameters : function(serviceurl){
       var url = serviceurl;
       new Ajax.Request(url,{
            method:'GET',
            parameters:{REQUEST:'GETPARAMS'},
            onSuccess: function(transport){
                var data = transport.responseText.evalJSON(true);
                this.mapurl = data.serviceurl;
                this.projectname = data.projectname;
                this.cllx = parseFloat(data.cllx);
                this.clly = parseFloat(data.clly);
                this.curx = parseFloat(data.curx);
                this.cury = parseFloat(data.cury);
                this.addMap("",this.mapurl,this.cllx,this.clly,this.curx,this.cury);
               /* //debug
                this.zoomExtent();*/
                dataSetup.setData();
             }.bind(this),
            onFailure: function(){ 
              alert("Harita servisi ile haberleşilemiyor. Lütfen tekrar deneyiniz.");  
           }
        });
    },
    zoomExtent:function(){
        this.map.zoomToMaxExtent();
    },
    setMarker:function(cx,cy){
        this.markers = new OpenLayers.Layer.Markers("markers");
        this.map.addLayer(this.markers);

        var size = new OpenLayers.Size(34,34);
        var offset = new OpenLayers.Pixel(-(size.w/2), -(size.w/2));
        var icon = new OpenLayers.Icon(marker_url,size,offset);
        this.marker = new OpenLayers.Marker(new OpenLayers.LonLat(cy,cx),icon);
        this.markers.addMarker(this.marker);
    },
    removeMarker:function(){
        try{
            this.markers.removeMarker(this.marker)
        }catch(e){}
        
    }
}

var calenderSetup = {
    dateformat : "yyyy-mm-dd",
    addCalender : function(id){
        Date.prototype.daynames = ["Pazar","Pazartesi", "Sali", "Carsamba", "Persembe", "Cuma", "Cmartesi"];
        Date.prototype.monthnames = ["Ocak", "Subat", "Mart", "Nisan", "Mayis", "Haziran", "Temmuz", "Agustos", "Eylul", "Ekim", "Kasim", "Aralik"];
        var options = Object.extend({
            titleformat:'mmm yyyy',
            closebutton:'X',
            dayheadlength:2,
            weekdaystart:0,
            planner: false
            },arguments[0] || { });
        this.calender = new scal(id,this.updateListener.bind(this),options);
        return this.calender
    },
    updateListener:function(d,init){
        var dd = "";
        if(!init){
            dd = this.parseDateWithFormat(d);
        }else{
            dd = d;
        }
        new Ajax.Request('/eczane/services/eczsvc.aspx?date='+dd,{
            method:'get',
            onComplete: function(transport){
                var data = transport.responseText.evalJSON(true);
                dataSetup.eczdata = data;
                dataSetup.setData();
                //$("dataLoading").style.visibility = "hidden";
            }.bind(this),
            onFailure: function(){ 
                alert("Eczane servisi ile haberleşilemiyor. Lütfen tekrar deneyiniz.");
            }
        });
    },
    parseDateWithFormat:function(date){
        var df = this.dateformat.toString().split("-");
        var result = "";
        for(var i=0;i<3;i++){
            if(df[i] == "yyyy"){
                result += parseInt(date.format("yyyy"),10)+"-";
            }else if(df[i] == "mm"){
                result += parseInt(date.format("mm"),10)+"-";
            }else if(df[i] == "dd"){
                result += parseInt(date.format("dd"),10)+"-";
            }
        }
        return result.substring(0,result.length-1);
    },
    setInitDate:function(serverDate){
        var year,month,day;
		if(serverDate.hour>=1 && serverDate.hour<=6)
		{
			var dt = this.getPrevDay(calenderSetup.calender.initDate);
			year = dt.format("yyyy");
			month = dt.format("mm");
			day = dt.format("dd");
		}
		else
		{
			year = calenderSetup.calender.initDate.format("yyyy");
			month = calenderSetup.calender.initDate.format("mm");
			day = calenderSetup.calender.initDate.format("dd");
		}
		
        var df = this.dateformat.split("-");
        var result = "";
        for(var i=0;i<3;i++){
            if(df[i] == "yyyy"){
                result += year+"-";
            }else if(df[i] == "mm"){
                result += month+"-";
            }else if(df[i] == "dd"){
                result += day+"-";
            }
        }
        return result.substring(0,result.length-1);
        
    },
	getNextDay:function(d){
		return new Date(d.getTime() + (1000 * 60 * 60 * 24));
	},
	getPrevDay:function(d){
		return new Date(d.getTime() - (1000 * 60 * 60 * 24));
	}
}

