function ask_window_hide(){ clearInterval(topic_box_timer); if(message_box_timer!=0) clearInterval(message_box_timer); $('#shadow').hide(); $('#window').hide(); $('#ask-button').show(); ask_window_hide_helper(); } function ask_window_show(){ toId=0; $('#ask-button').hide(); $('#shadow').show(); $('#window').show(); $.getScript('/files/pub/peercall.js'); scroll_down(); renew_box(); topic_box_timer=setInterval('renew_box()',15000); draw_timer=setInterval('check_draw()', 1000); ask_window_show_helper(); } function add_new_question(text){ if(typeof(text)=='undefined') text=$('#write-new-area').val(); $.post(ask_new_message_url, {message: text, topic: add_new_topic, subject: ukurs}, function(data){ renew_box(function(){ open_ask(parseInt(data)); }); } ); } var audioOn=true; var tplSet=false; var fromId, toId; var toTime=0; var fromTime=0; setInterval(function(){fromTime+=1;},60000); function getPeerId(pid){ fromId=pid; refreshPeers(); } function getPeerTo(pid,time){ toId=pid; if(!time) time=0; toTime=time; refreshPeers(); } function refreshPeers(){ if(fromId && toId && toTime!=0 && toTime>fromTime-5){ $('#callBtn').show(); } else $('#callBtn').hide(); } function scroll_down(){ var o=document.getElementById('chat-panel'); o.scrollTop = o.scrollHeight; } var topic_box_timer; var history_box=[]; var current_ask=0; var ask_hash=''; function renew_box(f){ var y=$('#scroller').get(0).scrollTop; $.post(ask_topic_url, {selected: current_ask}, function(data) { $('#topic-box').html(data); if(typeof(f)!='undefined') f(); }); $('#scroller').get(0).scrollTop=y; } function check_alert(newmsg){ var need_alert=false; for(var key in newmsg){ var s=newmsg[key]; var find=false; for(var key2 in window.readmsg){ if(window.readmsg[key2]==s){ find=true; break; } } if(!find) need_alert=true; window.readmsg.push(s); } if(need_alert){ var audio=document.getElementById('audio1'); if(audioOn) audio.play(); } } var xInterval=0; var message_box_timer=0; var last_loaded_msg=0; function load_new_messages(ask_id){ $.post(ask_messages_board_url, {type: 'partical', ask_id: ask_id, last_msg: last_loaded_msg, time: ask_date, fromId: fromId}, function(data) { if(data.indexOf('div')!==-1){ $('#chat-message-box').append(data); //$('#chat-panel').get(0).scrollTop=1000000000; scroll_down(); } else { $('#fake-div').html(''); $('#fake-div').append(data); } }); } function del_msg(ask_id, msg_id){ $.post(ask_messages_board_url, {type: 'del_msg', ask_id: ask_id, amsg: msg_id}, function(data) { $('#msg'+msg_id).hide(); }); } var is_ask_open=1; var ask_status=0; var ask_date=0; var context, canvas, empty_img; var tmp_image = new Image(); tmp_image.onload = function () { context.drawImage(tmp_image, 0, 0); }; function open_ask(id){ set_testing_status(0); toId=0; toTime=0; refreshPeers(); if(current_ask!=0) $('#question'+current_ask).removeClass('question-new'); if(message_box_timer!=0) clearInterval(message_box_timer); current_ask=id; ask_date=0; $('#new-message').hide(); $('#welcome-message').hide(); $('#chat-message-box').html(''); $('#write-area').val('Введите здесь своё сообщение'); $('#write-area').css('color','#AAAAAA'); $.post(ask_messages_board_url, {type: 'total', ask_id: id}, function(data) { is_ask_open=1; $('#chat-message-box').html(data); $('#question'+current_ask).addClass('question-new'); if(!is_ask_open){ $('#write-panel').hide(); $('#accept-panel').show(); } else { $('#write-panel').show(); $('#accept-panel').hide(); message_box_timer=setInterval('load_new_messages('+id+')', 5000); if(ask_status==2){ $('#control-panel').show(); } else { $('#control-panel').hide(); } } check_draw(); $('#desk').show(); context.clearRect(0, 0, canvas.width, canvas.height); //tmp_image.crossOrigin = "anonymous"; tmp_image.src=to_canvas+'?id'+Math.random(); //context.drawImage(empty_img,0,0,canvas.width,canvas.height); //$('#chat-panel').get(0).scrollTop=1000000000; scroll_down(); }); } function accept_question(){ $.post(ask_messages_board_url, {type: 'accept', ask_id: current_ask, time: $('#answer-time').val()}, function(data) { if(data.indexOf('success')!==-1){ message_box_timer=setInterval('load_new_messages('+current_ask+')', 10000); $('#accept-panel').hide(); $('#write-panel').show(); load_new_messages(current_ask); ask_status=2; $('#control-panel').show(); } else { alert('Ученика принял другой консультант.'); $('#desk').hide(); $('#welcome-message').show(); } }); } function add_new_message(){ if(message_box_timer!=0) clearInterval(message_box_timer); $.post(ask_new_message_url, {message: $('#write-area').val(), ask_id: current_ask}, function(data){ load_new_messages(current_ask); message_box_timer=setInterval('load_new_messages('+current_ask+')', 10000); } ); $('#write-area').val(''); } var drawing=false; var drawing2=false; var draw_data=''; var draw_timer=0; var mouse_down=false; var mx=0; var my=0; var to_image=''; var to_canvas=''; function draw_omd(e,touch){ //if(!mouse_down){ //if(!touch && typeof(e.changedTouches)!='undefined' && e.changedTouches.length>0) touch=true; if(!touch || e.changedTouches.length==1){ history_box.push(context.getImageData(0, 0, canvas.width, canvas.height)); if(history_box.length>20) history_box.splice(0,history_box.length-20); } if(touch){ $('#cancel-btn').show(); } mouse_down=true; var offset = $('#draw-desk-img').offset(); var posY = offset.top/* - window.scrollTop*/; var posX = offset.left/* - window.scrollLeft*/; if(touch){ var new_x=e.changedTouches[0].pageX-posX; var new_y=e.changedTouches[0].pageY-posY; } else { var new_x=e.pageX-posX; var new_y=e.pageY-posY; } mx=new_x; my=new_y; draw_omm(e,touch); } function draw_omu(e,touch){ //if(touch && e.changedTouches.length>0) return false; mouse_down=false; mx=-10000; my=-10000; } function cancel_draw(){ if(history_box.length>0){ var hb=history_box[history_box.length-1]; context.clearRect(0,0,canvas.width,canvas.height); context.putImageData(hb, 0, 0); //context.drawImage(hb, 0, 0, canvas.width,canvas.height); history_box.splice(-1,1); drawing=true; check_draw(); } } var tplZoom=100; var tplWidth=0; var tplHeight=0; window.onkeypress = function(e) { if (e.ctrlKey==true && (e.keyCode==122 || e.keyCode==1103) || e.keyCode==26){ cancel_draw(); } var changeZoom=false; if(e.keyCode==43){ tplZoom+=10; changeZoom=true; } if(e.keyCode==45){ if(tplZoom>50){ tplZoom-=10; changeZoom=true; } else if(tplZoom>20){ tplZoom-=5; changeZoom=true; } else if(tplZoom>0){ tplZoom-=3; changeZoom=true; } } if(changeZoom){ var td=$('#tplData').get(0); var newWidth=Math.floor(tplWidth/100*tplZoom); var newHeight=Math.floor(tplHeight/100*tplZoom); var oldX=parseInt(td.style.left); var oldY=parseInt(td.style.top); var oldWidth=parseInt(td.style.width); var oldHeight=parseInt(td.style.height); td.style.width=newWidth+'px'; td.style.height=newHeight+'px'; td.style.left=(oldX+Math.round((oldWidth-newWidth)/2))+'px'; td.style.top=(oldY+Math.round((oldHeight-newHeight)/2))+'px'; } } window.onkeyup = function(e) { if(e.keyCode==27){ tplSet=0; $('#tplData').hide(); $('#cancelTplSet').hide(); } } //$('*').mouseup(function(){ // mouse_down=false; //}); var tmp_canvas = document.createElement('CANVAS'); var tmp_context=tmp_canvas.getContext('2d'); /*function toDataURL(img) { var dataURL; tmp_canvas.height = canvas.height; tmp_canvas.width = canvas.width; tmp_context.drawImage(this, 0, 0); dataURL = tmp_canvas.toDataURL("image/png"); tmp_context.clearRect(0,0,tmp_canvas.width,tmp_canvas.height); return dataURL; }*/ function check_draw(){ if(current_ask){ //отправка if(drawing){ var data=canvas.toDataURL("image/png");//context.getImageData(0,0,canvas.width,canvas.height); if(data!=draw_data){ draw_data=data; $.post("/files/ask/index.php", {ask: current_ask, hash: ask_hash, data: data, type: check_draw_type},function(){}); } drawing=false; } check_draw_helper1(); //получение if(!drawing2) $('#desk-img').attr('src',to_image+'?id='+Math.random()); if(is_student){ $.post("/files/ask/index.php", {ask: current_ask, hash: ask_hash, type: 3},function(r){ if(r=='1'){ var tmp = new Image(); tmp.onload=function(){ context.clearRect(0,0,canvas.width,canvas.height); context.drawImage(tmp, 0, 0, canvas.width,canvas.height); } tmp.src=to_image.replace('h','s')+'?id='+Math.random(); } }); } } } var erase=false; var cutCircle = function(context, x, y, radius){ context.beginPath(); context.globalCompositeOperation = 'destination-out'; context.arc(x, y, radius, 0, Math.PI*2, true); context.fill(); context.globalCompositeOperation = 'source-over'; context.closePath(); } function tplMM(e,touch){ var ex=e.pageX; var ey=e.pageY; if(touch){ ex=e.changedTouches[0].pageX; ey=e.changedTouches[0].pageY; } var offset = $('#draw-desk-img').offset(); var posY = offset.top-43; var posX = offset.left-231; var td=$('#tplData').get(0); td.style.left=(ex-posX-Math.round(td.width/2))+'px'; td.style.top=(ey-posY-Math.round(td.height/2))+'px'; } function tplC(e,touch){ var ex=e.pageX; var ey=e.pageY; var isRightMB; if ("which" in e) isRightMB = e.which == 3; else if ("button" in e) isRightMB = e.button == 2; if(touch){ ex=e.changedTouches[0].pageX; ey=e.changedTouches[0].pageY; } var offset = $('#draw-desk-img').offset(); var posY = offset.top; var posX = offset.left; var td=$('#tplData').get(0); tplSet=false; if(!isRightMB){ if(tplZoom!=100){ var newWidth=Math.floor(tplWidth/100*tplZoom); var newHeight=Math.floor(tplHeight/100*tplZoom); context.drawImage($('#tplData').get(0), ex-posX-Math.round(td.width/2), ey-posY-Math.round(td.height/2), newWidth, newHeight); } else context.drawImage($('#tplData').get(0), ex-posX-Math.round(td.width/2), ey-posY-Math.round(td.height/2)); history_box.push(context.getImageData(0, 0, canvas.width, canvas.height)); drawing=true; } $('#tplData').hide(); $('#cancelTplSet').hide(); } function draw_omm(e,touch){ if(e.altKey || (touch && e.changedTouches.length==2)){ //var offset2 = $('#eraser').offset(); var ex=e.pageX; var ey=e.pageY; if(touch){ ex=Math.floor(e.changedTouches[0].pageX+(e.changedTouches[1].pageX-e.changedTouches[0].pageX)/2); ey=Math.floor(e.changedTouches[0].pageY+(e.changedTouches[1].pageY-e.changedTouches[0].pageY)/2); } $('#eraser').css('left',(ex-/*25*/13)+'px'); $('#eraser').css('top',(ey-/*25*/13)+'px'); $('#eraser').show(); erase=true; } else { $('#eraser').hide(); erase=false; } if(tplSet){ tplMM(e,touch); return false; } if(mouse_down){ var offset = $('#draw-desk-img').offset(); var posY = offset.top/* - window.scrollTop*/; var posX = offset.left/* - window.scrollLeft*/; var new_y=my; var new_x=mx; if(touch && e.changedTouches.length>2) return false; if(erase || (touch && e.changedTouches.length==2)){ if(touch){ new_x=ex-posX; new_y=ey-posY; } cutCircle(context,ex-posX,ey-posY,/*25*/13); draw_omm_helper(ex,ey,posX,posY); drawing=true; } else { if(touch){ if(e.changedTouches.length!=1) return false; new_y=e.changedTouches[0].pageY-posY; new_x=e.changedTouches[0].pageX-posX; //if(Math.floor(Math.sqrt(Math.pow(Math.abs(new_x-mx))+Math.pow(Math.abs(new_y-my))))>10) return false; if(Math.abs(new_x-mx)>100 || Math.abs(new_y-my)>100) return false; } else { if(!e.shiftKey) new_y=e.pageY-posY; if(!e.ctrlKey) new_x=e.pageX-posX; } if(mx!=-10000){ drawing=true; context.beginPath(); draw_omm_helper2(); context.moveTo(mx,my); context.lineTo(new_x,new_y); context.stroke(); } } mx=new_x; my=new_y; } }