+ A 20 años de la creación del Centro de Matemática este propuso comenzar a realizar un evento periódico que promoviera el desarrollo de la investigación en Matemática y a su vez estimulara y organizara el estudio de esta tanto a nivel de grado como de posgrado e influyera en su desarrollo en todos sus niveles. Así fue que en el año 2007 el CMAT en conjunto con el IMERL comenzó a organizar está serie de Coloquios bianuales de Matemática orientados al público matemático en general, sean investigadores, estudiantes de grado y posgrado de matemática, docentes universitarios y de secundaria, estudiantes de profesorado (IPA, CERP), etc. El evento es de carácter gratuito y cuenta con cursos para docentes, para estudiantes de grado y posgrado y varias conferencias dictadas por investigadores tanto nacionales como invitados extranjeros.
+
+
+
+
+
+
+
+
Publicaciones Matemática del Uruguay (PMU)
+
Los Coloquios se publican regularmente en las PMU.
+
+
+
-
+
diff --git a/js/app.js b/js/app.js
index d7233ec..3d27c9f 100644
--- a/js/app.js
+++ b/js/app.js
@@ -11,8 +11,34 @@ function showmsg(msgTxt,ok){
}
$("#statusmsg").show();
}
+function inputvalidate(){
+ var parent = $(this).parents("div.form-group");
+ if($(this).is(":invalid"))
+ parent.addClass("has-error");
+ else{
+ parent.removeClass("has-error");
+ //parent.removeClass("has-warning");
+ parent.addClass("has-success");
+ }
+}
+function validateTextarea(){
+ if($(this).val() == ""){
+ //$('#detallefinan').removeClass("has-warning");
+ $('#detallefinan').addClass("has-error");
+ $("#detallefinan textarea").tooltip("hide");
+ $("#detallefinan textarea").tooltip("destroy");
+ }
+ else{
+ //$('#detallefinan').removeClass("has-warning");
+ $('#detallefinan').removeClass("has-error");
+ $('#detallefinan').addClass("has-success");
+
+ }
+}
+
$(document).ready(function(){
var ruta = window.location.pathname;
+
$("#statusmsg").hide();
$("#header").load("snippets/header.html");
$("#footer").load("snippets/footer.html");
@@ -20,9 +46,18 @@ $(document).ready(function(){
$("#menu li a").click(function(){
$(this).addClass("selected").siblings().removeClass("selected");
});
+ $('input').focusin(inputvalidate);
+ $('input').focusout(inputvalidate);
+ $('input').keyup(inputvalidate);
+ $("#detallefinan textarea").focusin(validateTextarea);
+ $("#detallefinan textarea").focusout(validateTextarea);
+ $("#detallefinan textarea").keyup(validateTextarea);
+ //$('input:invalid').parents('div.form-group').addClass('has-warning');
+
$('#contactform').submit(function(event){
$("#statusmsg").hide();
event.preventDefault();
+
var post = $.post('contact.php', $(this).serialize());
post.done(function(data){
data = $.parseJSON(data);
@@ -40,36 +75,117 @@ $(document).ready(function(){
console.log(error)
});
});
- $("#detallefinan").hide();
+ $("#detallefinan").hide();
+ $("#detallefinan textarea").val("");
+
$('input:radio[name="financiacion"]').change(function(){
if($(this).is(':checked') && $(this).val() == "si"){
- $("#detallefinan").show();
- $('#detallefinan textarea').prop('required',true);
+ $("#detallefinan").show();
+ $("#detallefinan textarea").addClass("has-error");
}
- else{
+ else
$("#detallefinan").hide();
- $('#detallefinan textarea').prop('required',false);
- $("#detallefinan textarea").value("");
- }
});
- $('#doctype').change(function(){
- if(this.value == "C.I"){
- $('#txtdocnro').attr('placeholder',"1234567-0");
- }
- if(this.value == "Otro"){
- $('#txtdocnro').attr('placeholder',"Escriba su documento de identidad");
- }
- if(this.value == "Tipo:"){
- $('#txtdocnro').attr('placeholder',"Seleccion un tipo de documento");
- }
+
+ var tipodoc;
+ $('#tipodoc li a').click(function(event){
+ event.preventDefault();
+ $('#btntipodoc').tooltip("hide");
+ $('btnpais').tooltip("destroy");
+ tipodoc = $(this).text();
+ $("#btntipodoc").text($(this).text());
+ $("#btntipodoc").val($(this).text());
+ if(tipodoc == "Otro"){
+ $("#txtdocnro").attr('placeholder', 'Escriba su documento');
+ $("#txtdocnro").removeAttr('pattern');
+ }
+ if(tipodoc == "C.I."){
+ $("#txtdocnro").attr('placeholder', '1234567-0');
+ $("#txtdocnro").attr('pattern', '[0-9]{5,7}-[0-9]');
+ }
+ });
+ var pais;
+ $('#lstpais li a').click(function(event){
+ event.preventDefault();
+ pais = $(this).text();
+ $('#btnpais').tooltip("hide");
+ $('btnpais').tooltip("destroy");
+ $("#btnpais").text($(this).text());
+ $("#btnpais").val($(this).text());
+ });
+ var trabaja;
+ $('#lsttrabaja li a').click(function(event){
+ event.preventDefault();
+ trabaja = $(this).text();
+ $('#btntrabaja').tooltip("hide");
+ $('btnpais').tooltip("destroy");
+ $("#btntrabaja").text($(this).text());
+ $("#btntrabaja").val($(this).text());
+ });
- });
$('#registerform').submit(function(event){
- $("#statusmsg").hide();
+ var fail = false;
+ $("#statusmsg").hide();
event.preventDefault();
- var post = $.post('register.php', $(this).serialize());
- post.done(function(data){
+ if(tipodoc == null){
+
+ $('#btntipodoc').tooltip({
+ "title":"Seleccione Tipo de Documento",
+ "html":true,
+ "pacement":"auto left",
+ "trigger":"manual",
+ "delay":{"show":100,"hide":2000}
+
+ });
+ $('#btntipodoc').tooltip("show");
+ fail=true;
+
+ }
+ if(pais == null){
+ $('#btnpais').tooltip({
+ "title":"Seleccione País",
+ "html":true,
+ "pacement":"auto left",
+ "trigger":"manual",
+ "delay":{"show":100,"hide":2000}
+
+ });
+ $('#btnpais').tooltip("show");
+ fail=true;
+ }
+ if(trabaja == null){
+ $('#btntrabaja').tooltip({
+ "title":"Especifique donde trabaja",
+ "html":true,
+ "pacement":"auto left",
+ "trigger":"manual",
+ "delay":{"show":100,"hide":2000}
+
+ });
+ $('#btntrabaja').tooltip("show");
+ fail=true;
+
+ }
+ if($("#detallefinan textarea").val()=="" &&
+ $('input:radio[name="financiacion"]:checked').val()=="si"){
+ $("#detallefinan textarea").tooltip({
+ "title":"Escriba el detalle",
+ "html":true,
+ "pacement":"auto left",
+ "trigger":"manual"
+ });
+ $("#detallefinan textarea").tooltip("show");
+ fail=true;
+ }
+ if(!fail){
+ $("#txtpais").val(pais);
+ $("#txttipodoc").val(tipodoc);
+ $("#txttrabaja").val(trabaja);
+ console.log($(this).serialize());
+ var post = $.post('register.php', $(this).serialize());
+ post.done(function(data){
+ console.log(data);
data = $.parseJSON(data);
if(data.success){
showmsg(data.message,true);
@@ -82,10 +198,11 @@ $(document).ready(function(){
}
console.log(data)
- });
- post.fail(function(error){
- console.log(error)
-
- });
+ });
+ post.fail(function(error){
+ console.log(error)
+
+ });
+ }
});
});
\ No newline at end of file
diff --git a/lib/recaptchalib.php b/lib/recaptchalib.php
new file mode 100644
index 0000000..32c4f4d
--- /dev/null
+++ b/lib/recaptchalib.php
@@ -0,0 +1,277 @@
+ $value )
+ $req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
+
+ // Cut the last '&'
+ $req=substr($req,0,strlen($req)-1);
+ return $req;
+}
+
+
+
+/**
+ * Submits an HTTP POST to a reCAPTCHA server
+ * @param string $host
+ * @param string $path
+ * @param array $data
+ * @param int port
+ * @return array response
+ */
+function _recaptcha_http_post($host, $path, $data, $port = 80) {
+
+ $req = _recaptcha_qsencode ($data);
+
+ $http_request = "POST $path HTTP/1.0\r\n";
+ $http_request .= "Host: $host\r\n";
+ $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+ $http_request .= "Content-Length: " . strlen($req) . "\r\n";
+ $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
+ $http_request .= "\r\n";
+ $http_request .= $req;
+
+ $response = '';
+ if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
+ die ('Could not open socket');
+ }
+
+ fwrite($fs, $http_request);
+
+ while ( !feof($fs) )
+ $response .= fgets($fs, 1160); // One TCP-IP packet
+ fclose($fs);
+ $response = explode("\r\n\r\n", $response, 2);
+
+ return $response;
+}
+
+
+
+/**
+ * Gets the challenge HTML (javascript and non-javascript version).
+ * This is called from the browser, and the resulting reCAPTCHA HTML widget
+ * is embedded within the HTML form it was called from.
+ * @param string $pubkey A public key for reCAPTCHA
+ * @param string $error The error given by reCAPTCHA (optional, default is null)
+ * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
+
+ * @return string - The HTML to be embedded in the user's form.
+ */
+function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
+{
+ if ($pubkey == null || $pubkey == '') {
+ die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create");
+ }
+
+ if ($use_ssl) {
+ $server = RECAPTCHA_API_SECURE_SERVER;
+ } else {
+ $server = RECAPTCHA_API_SERVER;
+ }
+
+ $errorpart = "";
+ if ($error) {
+ $errorpart = "&error=" . $error;
+ }
+ return '
+
+ ';
+}
+
+
+
+
+/**
+ * A ReCaptchaResponse is returned from recaptcha_check_answer()
+ */
+class ReCaptchaResponse {
+ var $is_valid;
+ var $error;
+}
+
+
+/**
+ * Calls an HTTP POST function to verify if the user's guess was correct
+ * @param string $privkey
+ * @param string $remoteip
+ * @param string $challenge
+ * @param string $response
+ * @param array $extra_params an array of extra variables to post to the server
+ * @return ReCaptchaResponse
+ */
+function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
+{
+ if ($privkey == null || $privkey == '') {
+ die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create");
+ }
+
+ if ($remoteip == null || $remoteip == '') {
+ die ("For security reasons, you must pass the remote ip to reCAPTCHA");
+ }
+
+
+
+ //discard spam submissions
+ if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
+ $recaptcha_response = new ReCaptchaResponse();
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = 'incorrect-captcha-sol';
+ return $recaptcha_response;
+ }
+
+ $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
+ array (
+ 'privatekey' => $privkey,
+ 'remoteip' => $remoteip,
+ 'challenge' => $challenge,
+ 'response' => $response
+ ) + $extra_params
+ );
+
+ $answers = explode ("\n", $response [1]);
+ $recaptcha_response = new ReCaptchaResponse();
+
+ if (trim ($answers [0]) == 'true') {
+ $recaptcha_response->is_valid = true;
+ }
+ else {
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = $answers [1];
+ }
+ return $recaptcha_response;
+
+}
+
+/**
+ * gets a URL where the user can sign up for reCAPTCHA. If your application
+ * has a configuration page where you enter a key, you should provide a link
+ * using this function.
+ * @param string $domain The domain where the page is hosted
+ * @param string $appname The name of your application
+ */
+function recaptcha_get_signup_url ($domain = null, $appname = null) {
+ return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
+}
+
+function _recaptcha_aes_pad($val) {
+ $block_size = 16;
+ $numpad = $block_size - (strlen ($val) % $block_size);
+ return str_pad($val, strlen ($val) + $numpad, chr($numpad));
+}
+
+/* Mailhide related code */
+
+function _recaptcha_aes_encrypt($val,$ky) {
+ if (! function_exists ("mcrypt_encrypt")) {
+ die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
+ }
+ $mode=MCRYPT_MODE_CBC;
+ $enc=MCRYPT_RIJNDAEL_128;
+ $val=_recaptcha_aes_pad($val);
+ return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
+}
+
+
+function _recaptcha_mailhide_urlbase64 ($x) {
+ return strtr(base64_encode ($x), '+/', '-_');
+}
+
+/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
+function recaptcha_mailhide_url($pubkey, $privkey, $email) {
+ if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
+ die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
+ "you can do so at http://www.google.com/recaptcha/mailhide/apikey");
+ }
+
+
+ $ky = pack('H*', $privkey);
+ $cryptmail = _recaptcha_aes_encrypt ($email, $ky);
+
+ return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
+}
+
+/**
+ * gets the parts of the email to expose to the user.
+ * eg, given johndoe@example,com return ["john", "example.com"].
+ * the email is then displayed as john...@example.com
+ */
+function _recaptcha_mailhide_email_parts ($email) {
+ $arr = preg_split("/@/", $email );
+
+ if (strlen ($arr[0]) <= 4) {
+ $arr[0] = substr ($arr[0], 0, 1);
+ } else if (strlen ($arr[0]) <= 6) {
+ $arr[0] = substr ($arr[0], 0, 3);
+ } else {
+ $arr[0] = substr ($arr[0], 0, 4);
+ }
+ return $arr;
+}
+
+/**
+ * Gets html to display an email address given a public an private key.
+ * to get a key, go to:
+ *
+ * http://www.google.com/recaptcha/mailhide/apikey
+ */
+function recaptcha_mailhide_html($pubkey, $privkey, $email) {
+ $emailparts = _recaptcha_mailhide_email_parts ($email);
+ $url = recaptcha_mailhide_url ($pubkey, $privkey, $email);
+
+ return htmlentities($emailparts[0]) . "...@" . htmlentities ($emailparts [1]);
+
+}
+
+
+?>
diff --git a/register-old.html b/register-old.html
new file mode 100644
index 0000000..f859584
--- /dev/null
+++ b/register-old.html
@@ -0,0 +1,85 @@
+
+
+
+
+ 6to Coloquio Uruguayo de Matémática
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Registrarse
+
+
+ Success! Indicates a successful or positive action.
+