-1) { var s = source.indexOf("", e); // Se agregan las etiquetas al arreglo de datos scripts.push(source.substring(s_e+1, e)); // Se separan de la respuesta asÃncrona source = source.substring(0, s) + source.substring(e_e+1); } // Iteración de cada script obtenido para ejecutarlo for(var i = 0; i < scripts.length; i++) { try { if (window.execScript) { window.execScript(scripts[i]) } else { eval(scripts[i]); } } catch(ex) { // error } } // Se devuelve el código ya limpio del script return source; } // END AJAX_ParseRequestScript /** * Analiza el tipo de petición y ejecuta una fucnión de acuerdo a ello. */ function AJAX_GetRequestType(url, state) { Ext.Ajax.request({ url: url, method: 'POST', params: { state: state, task: 'getAJAXRequestType' }, success: function(response, opts) { data = Ext.decode(response.responseText); switch(data.ajaxRequestType) { case 1: //console.log('Caso 1'); AJAX_Request(data.elID, data.url, data.insertionMethod, data.state, '', 0); break; case 2: //console.log('Caso 2'); AJAX_Request(data.elID, data.url, data.insertionMethod, data.state, '', 0); break; case 3: //console.log('Caso 3'); AJAX_LoadURL(data.url, data.state); break; } }, failure: function(response, opts) { //alert('AJAX_GetRequestType: server-side failure with status code ' + response.status); } }); } // END AJAX_GetRequestType /** * Genera el código del URL especificado */ function AJAX_LoadURL(url, state) { Ext.Ajax.request({ url: url, method: 'POST', params: { state: state }, success: function(response, opts) { recentHash = state; currentHash = state; window.location.hash = '!/' + state; var jsonData = Ext.decode(response.responseText); var fnName = jsonData.fn + '(args);'; var fn = new Function('args', fnName); fn(jsonData.args); //window[jsonData.fn](jsonData.args); @todo: eliminar después de probar todo //alert('AJAX_LoadURL: server-side success with status code ' + response.status + ', url: ' + url + ', state: ' + state); }, failure: function(response, opts) { //alert('AJAX_LoadURL: server-side failure with status code ' + response.status + ', url: ' + url + ', state: ' + state); } }); } // END AJAX_LoadURL var recentHash = undefined; var currentHash = window.location.hash.split('#!/')[1]; window.onload = function() { initialiseStateFromURL(); setInterval(initialiseStateFromURL, 500); } function initialiseStateFromURL() { //console.log('recentHash: ' + recentHash); //console.log('currentHash: ' + currentHash); if(recentHash == undefined && currentHash != undefined) { //console.log('Caso 1, desde bookmark'); recentHash = currentHash; AJAX_GetRequestType('http://www.sportconcepts.com.mx/intfc.php?App', currentHash); } if(recentHash != undefined && currentHash != undefined) { if(recentHash != currentHash) { //console.log('Caso 2, cambiaron de página, actualizar a hash: ' + currentHash); AJAX_GetRequestType('http://www.sportconcepts.com.mx/intfc.php?App', currentHash); } } currentHash = window.location.hash.split('#!/')[1]; } /** * Elimina un elemento del DOM definido por el id 'elID' */ function DOM_RemoveEl(elID) { if(Ext.get(elID)) { Ext.get(elID).remove(); } else { // TODO: notificar que el layer o elID no existe } } // END DOM_RemoveEl /** * Oculta un elemento definido por el id 'elID' */ function FX_HideEl(elID) { if(Ext.get(elID)) { Ext.get(elID).fadeOut({ endOpacity: 0, easing: 'easeOut', duration: .5, remove: false, useDisplay: true }); } else { // TODO: notificar que el layer o elID no existe } } // END FX_HideEl /** * Muestra un elemento definido por el id 'elID' * @ */ function FX_ShowEl(elID, endOpacity) { if(Ext.get(elID)) { endOpacity = endOpacity || 1; Ext.get(elID).fadeIn({ endOpacity: endOpacity, easing: 'easeOut', duration: .5, remove: false, useDisplay: true }); } else { // TODO: notificar que el layer o elID no existe } } // END FX_ShowEl /** * Muestra el elemento definido por showElID y oculta el elemento hideElID */ function FX_SwitchEl(hideElID, showElID) { if(Ext.get(showElID)) { if(Ext.get(showElID).isVisible()) { FX_HideEl(showElID); } var task = new Ext.util.DelayedTask(function() { FX_HideEl(hideElID); FX_ShowEl(showElID); }); task.delay(500); } else { // TODO: notificar que el layer o elID no existe } } // END FX_ShowEl /** * Proporciona un mecanismo para desplegar una mascara mientras se lee el contenido de la pagina */ function FX_LoadMask(elID) { if(Ext.get(elID)) { var height = Ext.lib.Dom.getViewHeight(true); var width = Ext.lib.Dom.getViewWidth(); Ext.get(elID).setStyle({ width: width + 'px', height: height + 'px' }).show(); Ext.get(elID).setOpacity(0.8); } else { // TODO: notificar que el layer o elID no existe } } // END FX_LoadMask

In August 13th, 2009 Merrill Winpenny, Director of Sport Concepts S.A. de C.V. alongside Charlie Cooke (Director of Coerver Coaching Americas) sign the Coerver Licensee Agreement for Mexico.
That same day the first clinic for Coerver Coaching in Mexico takes place at Winpenny Football School.
Coerver Coaching's mission is to provide the world's best youth soccer educational services and products at its player camps, schools and coaches clinics.
O ur aim is to make the benefits of Coerver Coaching available as widely as possible through its network of Coerver Coaching licensees.
Instead each step is integral to the others and the player improvement is achieved, as the techniques at each level become stronger.