학교에서 공부하는 동안 조너선 에드워즈의 데이비드 브레이너드 전기를 읽으며 영적 훈련과 신학 훈련의 균형을 추구한 맥체인은 신학을 시작한지 정확히 4년 후 1935년 11월 목사 안수를 받았다. 맥체인은 이듬해 스코틀랜드 던디로 갔다.
그가 그곳에서 사역을 시작할 때 스코틀랜드의 주요 도시들이 그랬던 것처럼 던디 역시 급속한 산업화,교통 발달,인구 증가로 큰 변화를 겪고 있었다. 맥체인이 사역을 시작할 즈음 던디는 사회적 조건,교육과 문화,정치적 변화가 급속하게 진행되고 있었다.
맥체인은 교회 인근 3400명의 비신자들을 대상으로 혁신적이고 급진적인 목회를 시작했다. 그는 완전원고를 작성해서 설교하는 일반 목회자들과 달리 메시지의 핵심을 정리,암기한 후 교인들의 눈에 맞춰 설교했다. 기도와 묵상으로 준비한 그의 설교는 놀라운 능력을 수반해 청중을 깊은 잠에서 깨웠다.
', STYLE: '.playBox_thx #player.player,.playBox_thx #player.player object{min-height:' + Math.max(Global.innerHeight * 0.6, 580) + 'px !important}.tips_container{position:absolute;top:3em;padding:1em 2em;right:50px;color:green;opacity:0.4;background:#ddd;z-index:999999}.tips_container:hover{opacity:0.8}.tips_container .tips_toggleWide{color:red;cursor:pointer;display:none}.tips_close{position:absolute;right:3px;top:3px}', NODEINSERTED_HACK: '@-moz-keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}@-webkit-keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}@-o-keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}@keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}embed,object{animation-duration:.001s;-ms-animation-duration:.001s;-moz-animation-duration:.001s;-webkit-animation-duration:.001s;-o-animation-duration:.001s;animation-name:nodeInserted;-ms-animation-name:nodeInserted;-moz-animation-name:nodeInserted;-webkit-animation-name:nodeInserted;-o-animation-name:nodeInserted;}', TOGGLE_BTN: '.tips_container .tips_toggleWide' }; var DONE = []; var UTIL = { addCss: function (str) { var style = document.createElement('style'); style.textContent = str; document.head.appendChild(style); }, procFlash: function (elem) { if (DONE.indexOf(elem) !== -1) { return; } if (this.reloadFlash(elem)) { DONE.push(elem); } }, reloadFlash: function (elem) { var attrs = ['data', 'src']; var players = CONSTANTS.PLAYERS; var reloaded = false; UTIL.forEach(attrs, function (attr) { UTIL.forEach(players, function (player) { var find = player.find; var replace = player.replace; var value = elem[attr]; var movie = elem.querySelector('param[name="movie"]'); if(movie&&movie.value){ movie.value = movie.value.replace(find,replace); } if (value && find.test(value)) { var nextSibling = elem.nextSibling; var parentNode = elem.parentNode; var clone = elem.cloneNode(true); clone[attr] = value.replace(find, replace); parentNode.removeChild(elem); parentNode.insertBefore(clone, nextSibling); //Baidu tieba shit. if(getComputedStyle(clone).display==='none'){ clone.style.display='block'; } reloaded = true; } }); }); return reloaded; }, forEach: function (arr, callback) { if (this.isArrayLike(arr)) { if (Array.prototype.forEach) { Array.prototype.forEach.call(arr, callback); } else { var i = 0; for (i = 0; i < arr.length; ++i) { callback.call(arr[i], arr[i]); } } } }, isArrayLike: function (obj) { if (typeof obj !== 'object') { return false; } var types = ['Array', 'NodeList', 'HTMLCollection']; var i = 0; for (i = 0; i < types.length; ++i) { if (Object.prototype.toString.call(obj).indexOf(types[i]) !== -1) { return true; } } return false; } }; var STORE; (function(){ var isStorage = true; if(!Global.localStorage){ isStorage = false; }else{ try{ var key = String(Math.random()); localStorage.setItem(key,'test'); if(localStorage.getItem(key)!=='test'){ throw 'not equal'; } localStorage.removeItem(key); }catch(e){ isStorage=false; } } STORE = { getItem: function(key){ if(isStorage){ return localStorage.getItem(key); } }, setItem: function(key, value){ if(isStorage){ localStorage.setItem(key, value); } } }; })(); function init() { function onAnimationStartHandler(e) { if (e.animationName === 'nodeInserted') { var target = e.target; if (target.nodeType === 1 && /OBJECT|EMBED|IFRAME/ig.test(target.nodeName)) { UTIL.procFlash(target); } } } UTIL.addCss(CONSTANTS.NODEINSERTED_HACK); /*Chrome*/ document.body.addEventListener('webkitAnimationEnd', onAnimationStartHandler, false); } function tips() { var holder = document.body.querySelector(CONSTANTS.TIPS_HOLDER); if (holder) { var div = document.createElement('div'); if (document.defaultView.getComputedStyle(holder, null).getPropertyValue('position') !== 'relative') { div.style.position = 'relative'; } div.innerHTML = CONSTANTS.TIPS; div.querySelector('.tips_close').addEventListener('click',function(e){ if(e.preventDefault){ e.preventDefault(); } div.parentNode.removeChild(div); return false; },false); holder.appendChild(div); UTIL.addCss(CONSTANTS.STYLE); } } function share(elem) { var pairs = CONSTANTS.SHARES; UTIL.forEach(pairs, function (item) { elem.value = elem.value.replace(item.find, item.replace); }); } function setTHX(opt){ var player = document.querySelector('object#movie_player'); var parent = document.body.querySelector('.playBox'); var wide = document.body.querySelector('.playBox_thx'); if(opt&&player){ try{ player.setTHX(opt); }catch(e){} switch(opt){ case 'on': if (parent && !wide) { parent.className += ' playBox_thx'; } break; case 'off': if (parent && wide) { parent.className = 'playBox'; } break; } } } var CONTROLLER = [ { host: '.', fn: function () { init(); } }, { host: 'youku.com', fn: function () { var matches = document.body.querySelectorAll(CONSTANTS.SHARE_DOM); UTIL.forEach(matches, share); tips(); if(STORE.getItem('THX')==='on'){ setTHX(STORE.getItem('THX')); } var toggle = document.body.querySelector(CONSTANTS.TOGGLE_BTN); toggle.style.display='inline'; toggle.addEventListener('click',function(){ STORE.setItem('THX',STORE.getItem('THX')==='on'?'off':'on'); setTHX(STORE.getItem('THX')); },false); } }, { host: 'tudou.com', fn: function () { function hack(){ var TUI_copyToClip = Global.TUI&&Global.TUI.copyToClip; if(TUI_copyToClip&&TUI_copyToClip.toString().indexOf('arguments')===-1){ Global.TUI.copyToClip = function () { var matches = document.body.querySelectorAll(CONSTANTS.SHARE_DOM); UTIL.forEach(matches, share); TUI_copyToClip.apply(Global.TUI, arguments); }; clearInterval(inter); } } tips(); var tudouPlayer = document.body.querySelector('#playerObject'); var normalDom = document.querySelector('.normal'); if (tudouPlayer && normalDom) { normalDom.className = normalDom.className.replace('normal','widescreen'); } var inter = setInterval(hack,100); try{ Global.playerEx.event.fire('scale',[true]); }catch(e){} } } ]; var host = location.host; function PROC(item) { if (host.indexOf(item.host) !== -1) { item.fn(); return; } } UTIL.forEach(CONTROLLER, PROC); })(window);