function dateline_init (p_date_from, p_date_to, from_calend){
	
	date_from = p_date_from;
	date_to = p_date_to;
	
	var ar_date_from = p_date_from.split(".");
	var ar_date_to = p_date_to.split(".");
	
	ar_date_from[0] = parseInt(ar_date_from[0],10); ar_date_from[1] = parseInt(ar_date_from[1],10); ar_date_from[2] = parseInt(ar_date_from[2],10);
	ar_date_to[0] = parseInt(ar_date_to[0],10); ar_date_to[1] = parseInt(ar_date_to[1],10); ar_date_to[2] = parseInt(ar_date_to[2],10);
	
	var js_date_from = new Date(ar_date_from[2], (ar_date_from[1]-1), ar_date_from[0])
	var js_date_to = new Date(ar_date_to[2], (ar_date_to[1]-1), ar_date_to[0])
	
	var one_day=1000*60*60*24

	var days_cout = Math.ceil((js_date_to.getTime()-js_date_from.getTime())/(one_day))
	
	var dl_cont = '';
	var cm = 0;
	ar_info = new Array()
	ar_f = new Array()
	ar_e = new Array()
	
	if (days_cout>20000){
		for(dli=ar_date_from[2];dli<=ar_date_to[2];dli=dli+10){
			ar_info[cm] = dli+"-"+(dli+9)+"гг.";
			ar_f[cm] = "01.01."+dli;
			ar_e[cm] = "31.12."+(dli+9);
			dl_cont += '<div class="dateline_ris_item_g"><img src="/bitrix/templates/xteam2/images/map/dateline_ris_g.gif" alt="'+ar_info[cm]+'" title="'+ar_info[cm]+'" width="2" height="7"></div>';
			cm++
		}
		$('#dateline_legend').text('десятилетия')
	}else if (days_cout>1500){
		for(dli=ar_date_from[2];dli<=ar_date_to[2];dli++){
			ar_info[cm] = dli;
			ar_f[cm] = "01.01."+dli;
			ar_e[cm] = "31.12."+dli;
			dl_cont += '<div class="dateline_ris_item_g"><img src="/bitrix/templates/xteam2/images/map/dateline_ris_g.gif" alt="'+dli+'" title="'+dli+'" width="2" height="7"></div>';
			cm++
		}
		$('#dateline_legend').text('годы')
	}else if (days_cout>350){
		mon_cout = ((ar_date_to[2]-ar_date_from[2]-1)*12) + (13-ar_date_from[1]) + (ar_date_to[1]);
		for(dli=1;dli<=mon_cout;dli++){
			ar_info[cm] = GetMonText(date("m", mktime(0, 0, 0, ar_date_from[1]+dli-1, 1, ar_date_from[2])), "FULL")+",&nbsp;"+date("Y", mktime(0, 0, 0, ar_date_from[1]+dli-1, 1, ar_date_from[2]));
			ar_f[cm] = date("01.m.Y", mktime(0, 0, 0, ar_date_from[1]+dli-1, 1, ar_date_from[2]));
			ar_e[cm] = date("t.m.Y", mktime(0, 0, 0, ar_date_from[1]+dli-1, 1, ar_date_from[2]));
			dl_cont += '<div class="dateline_ris_item_g"><img src="/bitrix/templates/xteam2/images/map/dateline_ris_g.gif" alt="'+ar_info[cm]+'" title="'+ar_info[cm]+'" width="2" height="7"></div>';
			cm++
		}
		$('#dateline_legend').text('месяцы')
	}else if (days_cout>60){
		for(dli=0;dli<=days_cout;dli+=7){		
			ar_f[cm] = date("d.m.Y", mktime(0, 0, 0, ar_date_from[1], ar_date_from[0]+dli, ar_date_from[2]));
			ar_e[cm] = date("d.m.Y", mktime(0, 0, 0, ar_date_from[1], ar_date_from[0]+dli+6, ar_date_from[2]));
			arwdate1 = date("j.n", mktime(0, 0, 0, ar_date_from[1], ar_date_from[0]+dli, ar_date_from[2])).split(".");
			arwdate2 = date("j.n", mktime(0, 0, 0, ar_date_from[1], ar_date_from[0]+dli+6, ar_date_from[2])).split(".");
			
			if(arwdate1[1]==arwdate2[1])
				ar_info[cm] = arwdate1[0]+"-"+arwdate2[0]+"&nbsp;"+GetMonText(arwdate1[1]);
			else
				ar_info[cm] = arwdate1[0]+"&nbsp;"+GetMonText(arwdate1[1])+"&nbsp;-&nbsp;"+arwdate2[0]+"&nbsp;"+GetMonText(arwdate2[1]);
			
			dl_cont += '<div class="dateline_ris_item_g"><img src="/bitrix/templates/xteam2/images/map/dateline_ris_g.gif" alt="'+ar_info[cm]+'" title="'+ar_info[cm]+'" width="2" height="7"></div>';
			cm++
		}
		$('#dateline_legend').text('недели')
	}else{
		for(dli=0;dli<=days_cout;dli++){
			ar_info[cm] = date("d.m.Y", mktime(0, 0, 0, ar_date_from[1], ar_date_from[0]+dli, ar_date_from[2]));
			this_w = date("w", mktime(0, 0, 0, ar_date_from[1], ar_date_from[0]+dli, ar_date_from[2]));
			ar_f[cm] = ar_info[cm];
			ar_e[cm] = ar_info[cm];
			if(this_w==0)
				dl_cont += '<div class="dateline_ris_item_o"><img src="/bitrix/templates/xteam2/images/map/dateline_ris_o.gif" alt="'+ar_info[cm]+'" title="'+ar_info[cm]+'" width="2" height="11"></div>';
			else
				dl_cont += '<div class="dateline_ris_item_g"><img src="/bitrix/templates/xteam2/images/map/dateline_ris_g.gif" alt="'+ar_info[cm]+'" title="'+ar_info[cm]+'" width="2" height="7"></div>';
			cm++
		}
		$('#dateline_legend').text('дни')
	}
	
	$('.dateline_ris').html(dl_cont);
	$('#dateline_info_c_l').html(ar_info[0]);
	$('#dateline_info_c_r').html(ar_info[(ar_info.length-1)]);
	
	initDates(true)
	
	if(from_calend=="Y"){
		clear_markers();
		ajax_markers();
	}
	
	//alert(days_cout);

}


function GetMonText (m, type){
	m = parseInt(m, 10);
	arMonText1 = new Array("", "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
	arMonText2 = new Array("", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
	if (type=="FULL")
		return arMonText2[m];
	else
		return arMonText1[m];
}



function arraySearch(arr,val) {
	for (var i=0; i<arr.length; i++)
		if (arr[i] == val)
			return i;
	return false;
}

function mktime () {
    var no=0, i = 0, ma=0, mb=0, d = new Date(), dn = new Date(), argv = arguments, argc = argv.length;
 
    var dateManip = {
        0: function (tt){ return d.setHours(tt); },
        1: function (tt){ return d.setMinutes(tt); },
        2: function (tt){ var set = d.setSeconds(tt); mb = d.getDate() - dn.getDate(); d.setDate(1); return set;},
        3: function (tt){ var set = d.setMonth(parseInt(tt, 10)-1); ma = d.getFullYear() - dn.getFullYear(); return set;},
        4: function (tt){ return d.setDate(tt+mb);},
        5: function (tt){
            if (tt >= 0 && tt <= 69) {
                tt += 2000;
            }
            else if (tt >= 70 && tt <= 100) {
                tt += 1900;
            }
            return d.setFullYear(tt+ma);
        }
        // 7th argument (for DST) is deprecated
    };
 
    for (i = 0; i < argc; i++){
        no = parseInt(argv[i]*1, 10);
        if (isNaN(no)) {
            return false;
        } else {
            // arg is number, let's manipulate date object
            if (!dateManip[i](no)){
                // failed
                return false;
            }
        }
    }
    for (i = argc; i < 6; i++) {
        switch (i) {
            case 0:
                no = dn.getHours();
                break;
            case 1:
                no = dn.getMinutes();
                break;
            case 2:
                no = dn.getSeconds();
                break;
            case 3:
                no = dn.getMonth()+1;
                break;
            case 4:
                no = dn.getDate();
                break;
            case 5:
                no = dn.getFullYear();
                break;
        }
        dateManip[i](no);
    }
 
    return Math.floor(d.getTime()/1000);
}

function date ( format, timestamp ) {
    var that = this;
    var jsdate=(
        (typeof(timestamp) == 'undefined') ? new Date() : // Not provided
        (typeof(timestamp) == 'number') ? new Date(timestamp*1000) : // UNIX timestamp
        new Date(timestamp) // Javascript Date()
    ); // , tal=[]
    var pad = function (n, c){
        if ( (n = n + "").length < c ) {
            return new Array(++c - n.length).join("0") + n;
        } else {
            return n;
        }
    };
    var _dst = function (t) {
        // Calculate Daylight Saving Time (derived from gettimeofday() code)
        var dst=0;
        var jan1 = new Date(t.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
        var june1 = new Date(t.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st
        var temp = jan1.toUTCString();
        var jan2 = new Date(temp.slice(0, temp.lastIndexOf(' ')-1));
        temp = june1.toUTCString();
        var june2 = new Date(temp.slice(0, temp.lastIndexOf(' ')-1));
        var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
        var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
 
        if (std_time_offset === daylight_time_offset) {
            dst = 0; // daylight savings time is NOT observed
        } else {
            // positive is southern, negative is northern hemisphere
            var hemisphere = std_time_offset - daylight_time_offset;
            if (hemisphere >= 0) {
                std_time_offset = daylight_time_offset;
            }
            dst = 1; // daylight savings time is observed
        }
        return dst;
    };
    var ret = '';
    var txt_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    var txt_ordin = {1: "st", 2: "nd", 3: "rd", 21: "st", 22: "nd", 23: "rd", 31: "st"};
    var txt_months =  ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
 
    var f = {
        // Day
            d: function (){
                return pad(f.j(), 2);
            },
            D: function (){
                var t = f.l();
                return t.substr(0,3);
            },
            j: function (){
                return jsdate.getDate();
            },
            l: function (){
                return txt_weekdays[f.w()];
            },
            N: function (){
                //return f.w() + 1;
                return f.w() ? f.w() : 7;
            },
            S: function (){
                return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th';
            },
            w: function (){
                return jsdate.getDay();
            },
            z: function (){
                return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0;
            },
 
        // Week
            W: function (){
 
                var a = f.z(), b = 364 + f.L() - a;
                var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;
 
                if (b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
                    return 1;
                } 
                if (a <= 2 && nd >= 4 && a >= (6 - nd)){
                    nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
                    return that.date("W", Math.round(nd2.getTime()/1000));
                }
                
                var w = (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
 
                return (w ? w : 53);
            },
 
        // Month
            F: function (){
                return txt_months[f.n()];
            },
            m: function (){
                return pad(f.n(), 2);
            },
            M: function (){
                var t = f.F();
                return t.substr(0,3);
            },
            n: function (){
                return jsdate.getMonth() + 1;
            },
            t: function (){
                var n;
                if ( (n = jsdate.getMonth() + 1) == 2 ){
                    return 28 + f.L();
                }
                if ( n & 1 && n < 8 || !(n & 1) && n > 7 ){
                    return 31;
                }
                return 30;
            },
 
        // Year
            L: function (){
                var y = f.Y();
                return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0;
            },
            o: function (){
                if (f.n() === 12 && f.W() === 1) {
                    return jsdate.getFullYear()+1;
                }
                if (f.n() === 1 && f.W() >= 52) {
                    return jsdate.getFullYear()-1;
                }
                return jsdate.getFullYear();
            },
            Y: function (){
                return jsdate.getFullYear();
            },
            y: function (){
                return (jsdate.getFullYear() + "").slice(2);
            },
 
        // Time
            a: function (){
                return jsdate.getHours() > 11 ? "pm" : "am";
            },
            A: function (){
                return f.a().toUpperCase();
            },
            B: function (){
                // peter paul koch:
                var off = (jsdate.getTimezoneOffset() + 60)*60;
                var theSeconds = (jsdate.getHours() * 3600) +
                                 (jsdate.getMinutes() * 60) +
                                  jsdate.getSeconds() + off;
                var beat = Math.floor(theSeconds/86.4);
                if (beat > 1000) {
                    beat -= 1000;
                }
                if (beat < 0) {
                    beat += 1000;
                }
                if ((String(beat)).length == 1) {
                    beat = "00"+beat;
                }
                if ((String(beat)).length == 2) {
                    beat = "0"+beat;
                }
                return beat;
            },
            g: function (){
                return jsdate.getHours() % 12 || 12;
            },
            G: function (){
                return jsdate.getHours();
            },
            h: function (){
                return pad(f.g(), 2);
            },
            H: function (){
                return pad(jsdate.getHours(), 2);
            },
            i: function (){
                return pad(jsdate.getMinutes(), 2);
            },
            s: function (){
                return pad(jsdate.getSeconds(), 2);
            },
            u: function (){
                return pad(jsdate.getMilliseconds()*1000, 6);
            },
 
        // Timezone
            e: function () {
                return 'UTC';
            },
            I: function (){
                return _dst(jsdate);
            },
            O: function (){
               var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
               t = (jsdate.getTimezoneOffset() > 0) ? "-"+t : "+"+t;
               return t;
            },
            P: function (){
                var O = f.O();
                return (O.substr(0, 3) + ":" + O.substr(3, 2));
            },
            T: function () {
                return 'UTC';
            },
            Z: function (){
               return -jsdate.getTimezoneOffset()*60;
            },
 
        // Full Date/Time
            c: function (){
                return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P();
            },
            r: function (){
                return f.D()+', '+f.d()+' '+f.M()+' '+f.Y()+' '+f.H()+':'+f.i()+':'+f.s()+' '+f.O();
            },
            U: function (){
                return Math.round(jsdate.getTime()/1000);
            }
    };
 
    return format.replace(/[\\]?([a-zA-Z])/g, function (t, s){
        if ( t!=s ){
            // escaped
            ret = s;
        } else if (f[s]){
            // a date function exists
            ret = f[s]();
        } else {
            // nothing special
            ret = s;
        }
        return ret;
    });
}








function dateline_info_act(){
	ob_l = document.getElementById("dateline_info_l");
	ob_r = document.getElementById("dateline_info_r");
	drag_l = document.getElementById("box_ppdrag_l");
	drag_r = document.getElementById("box_ppdrag_r");

	pos_l_x = drag_l.offsetLeft-(Math.round(ob_l.offsetWidth/2))+6;
	pos_l_y = drag_l.offsetTop-ob_l.offsetHeight-1;
	
	pos_r_x = drag_r.offsetLeft-(Math.round(ob_r.offsetWidth/2))+6;
	pos_r_y = drag_r.offsetTop-ob_r.offsetHeight-1;

	
	ob_l.style.left = pos_l_x + 'px';
	ob_l.style.top = pos_l_y + 'px';
	ob_r.style.left = pos_r_x + 'px';
	ob_r.style.top = pos_r_y + 'px';
}

function array_flip( trans ) {
    var key, tmp_ar = new Array;
    for( key in trans ) {
        tmp_ar[trans[key]] = key;
    }
    return tmp_ar;
}

function sortNumber(a,b){
	return a - b;
}
