/* photoRibbon
Example:
items:[
    {
        image:'/images/ribbon/1.gif', // адрес картинки
        login:'title 1',              // подпись
        url:'/1.html'                 // страница перехода
    },
    {image:'/images/ribbon/2.gif',login:'title 2',url:'/2.html'},
    {image:'/images/ribbon/3.gif',login:'title 3',url:'/3.html'},
    {image:'/images/ribbon/4.gif',login:'title 4',url:'/4.html'}
];
container='ribbon';                           // id елемента, который будет выступать в качестве контейнера всех елементов ленты
container=document. getElementById('ribbon'); // или же сам елемент
params={
    height:300,   // высота всего блока (default:200)
    minWidth:100, // минимальная ширина картинки (default:90)
    maxWidth:150, // максимальная ширина картинки (default:150)
    spacing:10,   // расстояние между картинками, а также между лентой (таблицей) с картинками и границами блока (default:10)
    current:4,    // номер картинки, которая будет по центру при загрузке страницы (default:Math.floor(items.length/2))
    opacity:70    // прозрачность невыбранных картинок (default:50)
};
var ribbon=new photoRibbon(items,container,params); */
function photoRibbon(items,container,params){
    this.item=function(obj,num){
        attachParameters(this,obj.items[num]);
        this.num=num;
        this.fixHeight=function(){
            if(this.realSize){
                this.img.height=(this.realSize.height*this.img.width/this.realSize.width);
            }
        }
        this.imgOnload=function(obj){
            this.realSize={width:this.tempImg.offsetWidth,height:this.tempImg.offsetHeight};
            this.tempImg.width=obj.minWidth;
            this.td.replaceChild(this.tempImg, this.img);
            this.img=this.tempImg;
            obj.place();
            if(IE){ this.fixHeight(); }
        }
        var paramsTd={
            title:this.login,
            style:{ cursor:(IE ? 'hand' : 'pointer'), overrflow:'hidden' },
            height:obj.container.offsetHeight-obj.spacing*2,
            width:obj.minWidth,
            onclick:function(o,n){
                return function(){
                    if(n==o.current) location.href=o.items[num].url;
                    else o.select(n);
                }
            }(obj,num)
        }
        var paramsImg={
            src:this.image,
            alt:this.login,
            onreadystatechange:function(o,obj){
                return function(){ if(this.readyState=='loaded') o.imgOnload(i,obj); }
            }(this,obj),
            onload:function(o,obj){ return function(){ o.imgOnload(obj); } }(this,obj)
        };
        this.td=newElement('td',paramsTd,obj.tr);
        this.tempImg=newElement('img',paramsImg,obj.loader);
        this.img=newElement('img',{ src:'/arts/loading.gif', width:obj.minWidth, height:8},this.td);
        this.text=newElement('center',{innerHTML:this.login},this.td);
    }
    this.getIntStyle=function(elem,style){
        var r=parseInt(getElementComputedStyle(elem,style));
        return (isNaN(r) ? 0 : r);
    }
    this.photoX=function(num){
        var tblLeft=this.getIntStyle(this.table,'left');
        var bounds=getBounds(this.items[num].img,this.table);
        return bounds.left+tblLeft+this.items[num].img.width/2;
    }
    this.place=function(){
        for(var i=0, photoX, widthDiff, width; i<this.items.length; i++){
            photoX=this.photoX(i);
            if((diff=Math.abs(this.center-photoX))<this.maxWidth){
                perc=(1-diff/this.maxWidth);
                width=this.minWidth+(this.maxWidth-this.minWidth)*perc;
                setOpacity(this.items[i].td,this.opacity+(100-this.opacity)*perc);
            }else{
                width=this.minWidth;
                setOpacity(this.items[i].td,this.opacity);
            }
            this.items[i].img.width=width;
            if(IE) this.items[i].fixHeight();
        }
    }
    this.move=function(step){
        this.table.style.left=(this.getIntStyle(this.table,'left')+step)+'px';
        this.place();
    }
    this.select=function(num,f){
        if(typeof(num)=='number') this.current=num;
        if(this.current>this.items.length-1) this.current=0;
        if(this.current<0) this.current=this.items.length-1;
        var diff=this.center-this.photoX(this.current);
        var direct=(diff>0 ? 1: -1);
        if(!f){
            if(this.moveTimeout) f=function(x){ return x/10; };
            else f=function(x){ return (-1*Math.pow(x-diff/2,2)+Math.pow(diff/2,2)+1)/(diff*5); };
        }
        step=Math.ceil(Math.abs(f(diff)))*direct;
        this.move(step);
        clearTimeout(this.moveTimeout);
        this.moveTimeout=0;
        newDiff=(this.center-this.photoX(this.current));
        if(diff*newDiff>0){
            this.moveTimeout=setTimeout(function(o,n,f){ return function(){ o.select(n,f); } }(this,num,f),10);
        }else if(newDiff) this.move(newDiff);
    }
    this.next=function(){ this.select(++this.current); }
    this.prev=function(){ this.select(--this.current); }
    var defaultParams={
        height:200, minWidth:90, maxWidth:120,
        spacing:10, opacity:50,
        current:Math.floor(items.length/2)
    };
    var params=(typeof(params)=='object' ? params : {});
    attachParameters(defaultParams,params);
    attachParameters(this,defaultParams);
    attachParameters(this,{
        items:items,
        moveTimeout:0,
        mainContainer:(typeof(container)=='string' ? document.getElementById(container) : container)
    });
    if(this.items && this.mainContainer){
        this.mainContainer.innerHTML='';
        this.mainContainer.className='ribbon';
        if(this.height) this.mainContainer.style.height=this.height+'px';
        else this.height=this.mainContainer.offsetHeight;
        /* creating navigation buttons */
        var btnParams={ className:'btn', href:'javascript://', style:{top:(Math.round(this.height/2)-25)+'px'} };
        (this.lbtn=newElement('a',btnParams,this.mainContainer)).onclick=function(o){ return function(){ o.prev(); } }(this);
        (this.rbtn=newElement('a',btnParams,this.mainContainer)).onclick=function(o){ return function(){ o.next(); } }(this);
        this.lbtn.style.left=0;
        this.rbtn.style.right=0;
        newElement('font',{ innerHTML:'&lt;'},this.lbtn);
        newElement('font',{ innerHTML:'&gt;'},this.rbtn);
        /* creating background table */
        this.bg=newElement('table',{ className:"bg",cellSpacing:0,cellPadding:0,border:0,width:"100%"},this.mainContainer);
        var new_tr=this.bg.insertRow(0);
        var tdParams={height:Math.round(this.height/3),width:72};
        attachParameters(new_tr.insertCell(0),tdParams).innerHTML='<img src="/images/ribbon/left.gif" width="100%" height="100%" alt="" />';
        attachParameters(new_tr.insertCell(1),tdParams).innerHTML='<img src="/images/ribbon/center.gif" width="100%" height="100%" alt="" />';
        attachParameters(new_tr.insertCell(2),tdParams).innerHTML='<img src="/images/ribbon/right.gif" width="100%" height="100%" alt="" />';
        new_tr.cells[1].width='';
        /* create ribbon container and his content */
        this.container=newElement('div',{ className:'content',style:{ height:this.height+'px' } },this.mainContainer);
        this.center=this.container.offsetWidth/2;
        this.loader=newElement('div',{ style:{width:'0px', height:'0px', overflow:'hidden'}},this.container);
        this.table=newElement('table',{ cellSpacing:this.spacing, cellPadding:0, border:0 },this.container);
        this.table.style.left=this.container.offsetWidth+'px';
        this.tr=this.table.insertRow(0);
        /* add photo into conteiner */
        for(var i=0, itm; i<this.items.length; i++) this.items[i]=new this.item(this,i);
        this.select();
        /* resize fix handler */
        addHandler(window,'resize',function(o){
            return function(){
                o.center=o.container.offsetWidth/2;
                o.select();
            }
        }(this));
    }else return false;
}
var timeouts=Array();
function timeoutAction(elem_id,tsec,format,action,finish,uid){
    var elem=document.getElementById(elem_id);
    var day=hour=min=sec='';
    var time=Math.floor((new Date()).getTime()/1000);
    if(finish) tsec=finish-time;
    else finish=time+tsec;
    if(format.indexOf('dd')!=-1){
        day=Math.floor(tsec/(3600*24));
    }
    if(format.indexOf('hh')!=-1){
        hour=Math.floor((tsec-day*3600*24)/3600);
        if(hour<10) hour='0'+hour;
    }
    if(format.indexOf('mm')!=-1){
        min=Math.floor((tsec-day*3600*24-hour*3600)/60);
        if(min<10) min='0'+min;
    }
    if(format.indexOf('mm')!=-1){
        sec=tsec-day*3600*24-hour*3600-min*60;
        if(sec<10) sec='0'+sec;
    }
    elem.innerHTML=format.split('dd').join(day).split('hh').join(hour).split('mm').join(min).split('ss').join(tsec<=10 ? '<span style="color:#f00;'+(tsec%2==0 ? ' font-weight:bold;' : '')+'">'+sec+'</span>' : sec);
    if(tsec>0){
        if(!uid) var uid=uuid();
        func='timeoutAction("'+elem_id+'",'+(tsec-1)+',"'+format+'","'+action.split('"').join('\\"')+'",'+finish+',"'+uid+'")';
        timeouts[uid]=setTimeout(func,1000);
        return uid;
    }else{
        if(action) eval(action);
        return false;
    }
}
var add_fields_max=10;
function addTextField(element,params){
    if(typeof(element)=='string') element=document.getElementById(element);
    var tabla=null;
    var tr=null;
    if(tempobj=element){
        while(tempobj.tagName!='TABLE' && tempobj.tagName!='BODY'){
            if(tempobj.tagName=='TR') tr=tempobj;
            tempobj=(IE ? tempobj.parentElement : tempobj.parentNode);
        }
        if(tempobj.tagName=='TABLE') tabla=tempobj;
    }
    if(tabla){
        if(!params) params={};
        if(params.del_row && tr){
            for(i=0; i<tabla.rows.length; i++){
                if(tabla.rows[i]==tr && i!=0){
                    if(inp=tabla.rows[i-1].cells[0].childNodes[0]) inp.focus();
                    tabla.deleteRow(i);
                }
            }
        }else if(tabla.rows.length<add_fields_max){
            if(!params.name) params.name='';
            if(!params.name_next) params.name_next=params.name;
            if(!params.value) params.value='';
            var insert_num=tabla.rows.length;
            if(tr){
                for(i=0; i<tabla.rows.length; i++) if(tabla.rows[i]==tr) insert_num=i+1;
            }
            var new_row=tabla.insertRow(insert_num);
            var new_cell=new_row.insertCell(0);
            new_cell.id=uuid();
            new_cell.innerHTML='<input title="'+i18n('вниз/вверх - добавить/удалить')+'" name="'+params.name+'" type="text" autocomplete="off" maxlength="255" value="'+params.value+'" />';
            new_inp=new_cell.childNodes[0];
            new_cell=new_row.insertCell(1);
            new_cell.id=uuid();
            new_cell.innerHTML='<img class="img_button" src="'+SITE_URL+'arts/add.gif" alt="'+i18n('добавить')+'" title="'+i18n('добавить')+'" onclick="addTextField(this,{name:\''+params.name_next+'\'});" />';
            if(tabla.rows.length>1){
                new_cell=new_row.insertCell(2);
                new_cell.innerHTML='<img class="img_button" src="'+SITE_URL+'arts/delete.gif" alt="'+i18n('удалить')+'" title="'+i18n('удалить')+'" onclick="addTextField(this,{del_row:true});" />'
                new_cell.id=uuid();
            }
            if(element!=tabla) new_inp.focus();
            new_inp.onkeydown=function(e){
                if(!e && window.event) e=window.event;
                var keyCode=getCharCode(e);
                if(keyCode==40) addTextField(this,{name:params.name});
                if(keyCode==38) addTextField(this,{del_row:true});
            }
            show_or_hide(true,new_row.cells[0].id,true);
            show_or_hide(true,new_row.cells[1].id,true);
            if(tabla.rows.length>1) show_or_hide(true,new_row.cells[2].id,true);
        }else alert(i18n('Общее количество полей не должно превышать')+' '+add_fields_max);
    }
}
function changeCaptcha(elem){
    if(typeof(elem)=='string') var element=document.getElementById(elem);
    element.style.backgroundImage='url(/_freecap/freecap.php?'+uuid()+')';
}
function checkEmptyField(field,on){
    if(typeof(field)=='string') var field=document.getElementById(field);
    if(!on) var on='';
    if(field){
        var field_info=$("#"+field.name+"Info");
        if(on=='keyup'){
            if(field.value.trim()) field_info.html("");
        }else if(on=='blur'){
            if(!field.value.trim()) field_info.html(i18n('Это поле не должно быть пустым')+'<br />');
        }else{
            if(field.value.trim()) field_info.html("");
            else field_info.html(i18n('Это поле не должно быть пустым')+'<br />');
        }
    }
}
function listUploadedFiles(){
    loadContent('ajax/files.php?act=flash_uploaded_files','flash_upload_info','flash_upload_ajax_loader');
}
function delFile(file_id,ad_table){
    var receiveReq=getXmlHttpRequestObject();
    var img=document.getElementById('file_del_img_'+file_id);
    if(img){
        var prev_src=img.src;
        img.src='/arts/ajax-loader.gif';
    }
    receiveReq.open("GET", '/ajax/files.php?act=del_file&file_id='+file_id+(ad_table ? '&ad_table='+ad_table : ''), true);
    receiveReq.onreadystatechange=function(){
        if(receiveReq.readyState==4){
            eval(receiveReq.responseText);
            if(errors){
                if(img) img.src=prev_src;
                alert(errors);
            }else $('#file_conteiner_'+file_id).hide();
        }
    }
    receiveReq.send(null);
}
function checkInputFileExt(inp,inf_id,ext_arr){
    if(!ext_arr.inArray(inp.value.substr(inp.value.lastIndexOf('.')+1))){
        $('#'+inf_id).html(i18n('Неверный формат файла'));
        inp.value='';
    }else $('#'+inf_id).html('');
}
var navScrollPage=0;
var navScrollPagesCount=navScrollPimpDiffY=0;
var navScrollPimp=navScrollPimpTd=null;
function navScrollDragStart(e){
    var tempobj=(IE ? event.srcElement : e.target);
    while(tempobj.tagName!="HTML" && tempobj.tagName!="BODY" && tempobj!=navScrollPimp){
        tempobj=(IE ? tempobj.parentElement : tempobj.parentNode);
    }
    if(tempobj==navScrollPimp){
        navScrollPimpDiffY=mouseY-parseInt(navScrollPimp.style.top);
        addHandler(document,'mousemove',navScrollDrag);
        return false;
    }
}
function navScrollDrag(e){
    var top=(mouseY-navScrollPimpDiffY);
    var max=navScrollPimpTd.offsetHeight-navScrollPimp.offsetHeight;
    if(max<1) max=1;
    if(top>max) top=max;
    if(top<0) top=0;
    navScrollPage=Math.round(top*(navScrollPagesCount-1)/max);
    var ppos=max*navScrollPage/(navScrollPagesCount-1);
    navScrollPimp.style.top=(ppos+(top-ppos)/2)+'px';
    navScrollPimp.innerHTML=(navScrollPage+1);
    return false;
}
function navScrollPimpPos(){
    if(navScrollPimp && navScrollPagesCount>1){
        var max=navScrollPimpTd.offsetHeight-navScrollPimp.offsetHeight;
        navScrollPimp.style.top=max*navScrollPage/(navScrollPagesCount-1)+'px';
        navScrollPimp.innerHTML=(navScrollPage+1);
    }
}
function fixBlocksHeight(tid){
    var tabla=document.getElementById(tid);
    var tds=tabla.getElementsByTagName('tr')[0];
    var hh=22, ph=6, pad=22, koef, diff;
    tds=tds.childNodes;
    var b=0;
    this.blocks=Array();
    this.getElemByClassName=function(elem,className){
        var sd=elem.getElementsByTagName('div');
        for(var e=0; e<sd.length; e++){
            if(sd[e].className==className) return sd[e];
        }
        return false;
    }
    this.getBlocksHeights=function(){
        var heights=Array();
        for(var i=0; i<this.blocks.length; i++){
            var hsum=0;
            for(var d=0; d<this.blocks[i].length; d++) hsum+=this.blocks[i][d].offsetHeight;
            hsum+=(this.blocks[i].length-1)*ph;
            heights[i]=hsum;
        }
        return heights;
    }
    for(i=0; i<tds.length; i++){
        if(tds[i].tagName=='TD'){
            this.blocks[b]=Array();
            var divs=tds[i].getElementsByTagName('div');
            for(d=0; d<divs.length; d++){
                if(divs[d].className=='block') this.blocks[b].push(divs[d]);
            }
            b++;
        }
    }
    var heights=this.getBlocksHeights();
    for(var i=0, hmax=0; i<heights.length; i++) if(heights[hmax]<heights[i]) hmax=i;
    for(i=0; i<this.blocks.length; i++){
        if(hmax!=i){
            koef=heights[hmax]/heights[i];
            diff=hh*(koef-1)+ph*(1-1/this.blocks[i].length);
            for(d=0; d<this.blocks[i].length; d++){
                bc=this.getElemByClassName(this.blocks[i][d],'block_content');
                if(d<this.blocks[i].length-1) new_height=bc.offsetHeight*koef+diff;
                else{
                    var hs=this.getBlocksHeights();
                    new_height=bc.offsetHeight+hs[hmax]-hs[i];
                }
                bc.style.height=(new_height-pad)+'px';
            }
        }
    }
}
function chState(obj){
    var sp=obj.getElementsByTagName('div')[0];
    sp.className=(sp.className=='tree_icon' ? 'tree_icon_expand' : 'tree_icon');
    if(obj.className=='tree_line' || obj.className=='tree_line_expand'){
        obj.className=(obj.className=='tree_line' ? 'tree_line_expand' : 'tree_line');
    } else{
        obj.className=(obj.className=='tree_line_end' ? 'tree_line_expand_end' : 'tree_line_end');
    }
}
function encodeStr(str) {
	if (typeof(str) == 'undefined') string = '';
	else string = String(str);
	return string.split('+').join('%2b').split('&').join('%26').split('=').join('%3d').split('#').join('%23');
}
function add_quest(type) {
	var body = $("#body").val();
	if (body.length<1) body = tinyMCE.get('body').getContent();
	body = encodeStr(body);
	var ans = encodeStr($("#ans").val());
	var nam = encodeStr($("#name").val());
	var eml = encodeStr($("#email").val());
    $.getJSON('/ajax/online_print.php?body=' + body + '&ans=' + ans + '&cat=' + $("#cat").val() + '&type=' + type + '&code=' + $("#code").val() + '&name=' + nam + '&email=' + eml, function(data){
            if(data.error) {
                $("#err_message").html(data.error);
            } else {
                window.location.href="/" + type + "/" + data.question_id;
            }
    });
}
$(document).ready(function(){
    $(".council_ans_area input[type=button]").hover(
        function(){
            $(this).css("border","1px inset #CCC");
        },
        function(){
            $(this).css("border","1px outset #CCC");
        }
    );
    $(".js_link").hover(
        function(){
            $(this).toggleClass("js_link_active");
        },
        function(){
            $(this).toggleClass("js_link_active");
        }
    );
    $("div.consult_answer span, div.council_add_ans span").click(function(){
        $(this).next().toggle("slow");
        $(this).toggleClass("js_link_active");
    });
    $(".answer_button").click(function(){
        var node = false;
        if($(this).hasClass("parent_node")){
            node = "parent";
        }

        var el = $(this);
        str = '/ajax/online_print.php?question=' + this.id + '&body=' + el.parent().prev().children().val() + '&node=' + node;
        $.getJSON(str, function(data, textStatus) {
            if (data.error) {
                el.parent().prev().prev(".error").html(data.error).css("color", "#F00");
            } else {
                if (data.mod=="consultation") {
                    el.parents("div.council_block").after('<div class="consult_block">' + el.parent().prev().prev().prev().html() + '<div class="consult_body">' + el.parent().prev().children().val() + "</div></div>");
                    el.parents("div.consult_answer").remove();
                } else {
                    if (node == "parent") {
                        el.parents("div.consult_answer").after('<li class="council_child council_responce_child">Вы добавили ответ:<div class="council_body">' + el.parent().prev().children().val() + "</div></li>");
                        el.parents("div.consult_answer").remove();
                    } else {
                        el.parents("div.parent_node").html('<ol class="council_responce"><li>Вы добавили ответ:<div>' + el.parent().prev().children().val() + "</div></li></ol>");
                    }
                }
            }
        });
	});
});

