PCv5/app/static/scripts/pc-utils.js

74 lines
2.3 KiB
JavaScript

function setCookie(name, value) {
var end = new Date();
end.setTime( end.getTime() + 3600 * 1000 );
var str=name+"="+escape(value)+"; expires="+end.toGMTString()+"; path=/";
document.cookie = str;
}
function getCookie(name) {
var debut = document.cookie.indexOf(name);
if( debut == -1 ) return null;
var end = document.cookie.indexOf( ";", debut+name.length+1 );
if( end == -1 ) end = document.cookie.length;
return unescape( document.cookie.substring( debut+name.length+1, end ) );
}
function close_important(element) {
element.style.opacity = 0;
setTimeout(function(){ element.parentNode.removeChild(element); }, 200);
}
/*
Send post ajax request to url defined in action.
Callback the function defined in the callback attribute from the submit type.
*/
function ajaxWrapper(evt){
evt.preventDefault();
var elems = evt.target;
var params = "";
// do not embed submit value (-1)
for(i = 0; i < elems.length-1; i++){
if(params) params += "&";
params += encodeURIComponent(elems[i].name)+"="+encodeURIComponent(elems[i].value);
}
const req = new XMLHttpRequest();
req.open("POST", evt.target.action, true);
req.setRequestHeader('Content-Type',"application/x-www-form-urlencoded");
req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
req.onreadystatechange = function(){
if(req.readyState == 4 && (req.status == 200 || req.status == 0)){
var fn = window[elems[elems.length-1].getAttribute("callback")];
if(typeof fn == 'function'){
fn(req.responseText);
}
}
}
req.send(params);
}
/*
Add event listener on submit for all form with class with-ajax.
*/
window.onload = function(){
var ele;
var elems = document.getElementsByClassName('with-ajax');
for(i = 0; i < elems.length; i++){
ele = elems[i];
if(ele.addEventListener){ // Normal people
ele.addEventListener("submit", ajaxWrapper, false);
}else if(ele.attachEvent){ // Retarded user using IE
ele.attachEvent("onsubmit", ajaxWrapper);
}
}
if(getCookie('pc_notif') == 'true')
document.getElementsByClassName('alert')[0].parentNode.removeChild(document.getElementsByClassName('alert')[0]);
if(getCookie('pc_notif_2') == 'true')
document.getElementsByClassName('alert')[0].parentNode.removeChild(document.getElementsByClassName('alert')[0]);
}
function login(response){
alert(response);
}