Pages: 12344

  2008-04-19 16:06:34

KaNaLiTnUk
» FTalkFreak
FTalk Level: zero
1911
0
1969-12-31

[b]Credits : - Marfillaster (AddBox Function) - Feruzz (WHORC & Mini Viewer) - Nophatz (Minimize Maximize & Tooltips)[/b] [url=http://profiles.friendster.com/bangkanal][b]Preview (use FF)[/b][/url]

[b]Credits : - Marfillaster (AddBox Function) - Feruzz (WHORC & Mini Viewer) - Nophatz (Minimize Maximize & Tooltips)[/b] [url=http://profiles.friendster.com/bangkanal][b]Preview (use FF)[/b][/url] [quote][b]Tanya :[/b] Bang, mini/maxi kan bisa berjalan dengan sempurna di main box dan addBox FS. Tapi bisa gak sih WHORC (No Right Click CBOX) dan Mini Viewer itu dipasang script mini/maxi :paranoid: [b]Jawab :[/b] Tadinya abang juga bertanya hal yg sama tapi ternyata setelah scriptnya abang utak-atik, script mini/maxi juga bisa dipakai utk script WHORC dan Mini Viewer bahkan abang juga tambahkan tooltips :)[/quote] Biar gak bertele-tele, ini akan langsung abang sharekan scriptnya utk FTI'ers semua. Tapi perlu diingat bahwa [b]ini hanya berlaku bagi kalian yang menggunakan addBox Marfillaster menggunakan siblings dan sudah menggunakan script main tooltips[/b] :) Ini dia : [spoiler]function addBox (type,head,htm,id,sibling) { //by marfillaster //type "LEFT" | "RIGHT" //head header string //htm innerHTML string //id css_id string //sibling css_id_insertbefore string | null /* Available default Siblings LEFT 0 = controlpanel 1 = photos 13 = blogs 12 = reviews 6 = moreabout 18 = publiccomments 10 = scrapbook RIGHT 15 = meettrail 2 = friends 14 = googleads 7 = fan 8 = groups null - appends to last */ try { var li=document.createElement("li"); } catch(e) { var li=document.createElement("<li>"); } if(type=="LEFT") { var ul=document.getElementById("0").parentNode.parentNode; htm="<div class='boxcontent'>"+htm+"</div>"; } else var ul=document.getElementById("2").parentNode.parentNode; li.innerHTML="<div id='"+id+"' class='commonbox "+id+"'>"+ "<h2>"+head+"</h2>"+ "<div id='content_"+id+"'>"+ htm+ "</div>"+ "</div>"; if(sibling==null) ul.appendChild(li); else { sibling=document.getElementById(sibling).parentNode; ul.insertBefore(li,sibling); } }[/spoiler] :arrow: [b]Mini/Maxi WHORC (No Right Click CBOX)[/b]. Masukkan ke JS utama menggunakan JS injection dan taruh dibagian paling atas JS utama kalian :) [quote]if (!attachOnLoadHandler(function() { WHORC.init();})) window.onload = function() { WHORC.init();}; if (typeof WHORC == "undefined") { WHORC = {}; } WHORC = { rccboxform: null, message: "[b]EDIT DISINI[/b]", base: { "whorcCbox": ["[b]www[/b]","[b]xxxxxx[/b]","[b]yyyyyy[/b]"] }, init: function() { for (val in WHORC.base) { WHORC.rccboxform = "<iframe frameborder=\"0\" width=\"100%\" height=\"70\" src=\"http://"+WHORC.base[val][0]+".cbox.ws/box/?boxid="+WHORC.base[val][1]+"&boxtag="+WHORC.base[val][2]+"&sec=main\" marginheight=\"2\" marginwidth=\"2\" scrolling=\"auto\" allowtransparency=\"yes\" name=\"rcPost\" id=\"rcPost\">"+ "</iframe>"+ "<br />"+ "<div style=\"display:none\">"+ "<form name=\"whoClick\" target=\"rcPost\" action=\"http://"+WHORC.base[val][0]+".cbox.ws/box/?boxid="+WHORC.base[val][1]+"&boxtag="+WHORC.base[val][2]+"&sec=submit\" method=\"post\">"+ "<input type=\"text\" name=\"nme\" value=\""+pageViewerFName+"\">"+ "<input type=\"text\" name=\"eml\" value=\"http://profiles.friendster.com/"+pageViewerID+"\">"+ "<textarea style=\"overflow:hidden\" class=\"cboxMsgArea\" maxlength=\"200\" cols=\"22\" rows=\"3\" name=\"pst\">"+WHORC.message+"</textarea>"+ "<input type=\"submit\" value=\"Post\" name=\"sub\">"+ "</form>"+ "</div>"; addBox("RIGHT","<a href=\"#\" onClick=\"show_hide('content_rccboxform'); return false\"><div title=\"header=[[b]EDIT DISINI[/b]] body=[[b]EDIT DISINI[/b]]\">"+pageOwnerFName+"\'s No Right Click Box</div></a>","<div id=\""+val+"\" align=\"center\">"+WHORC.rccboxform+"</div>","rccboxform",null); show_hide('content_rccboxform'); } if (document.layers) { document.captureEvents(Event.MOUSEDOWN); document.onmousedown = WHORC.NS4; } else if (document.all && !document.getElementById) { document.onmousedown = WHORC.IE4; } document.oncontextmenu = new Function("WHORC.whoRC();return false"); }, whoRC: function() { if((pageViewerID != pageOwnerID) && (pageViewerID != "")) { document.whoClick.submit(); } }, IE4: function() { if (event.button == 2) { WHORC.whoRC(); return false; } }, NS4: function(e) { if (document.layers || document.getElementById && !document.all) { if (e.which == 2 || e.which == 3) { WHORC.whoRC(); return false; } } } }; function addBox (type,head,htm,id,sibling) { //by marfillaster //type "LEFT" | "RIGHT" //head header string //htm innerHTML string //id css_id string //sibling css_id_insertbefore string | null /* Available default Siblings LEFT 0 = controlpanel 1 = photos 13 = blogs 12 = reviews 6 = moreabout 18 = publiccomments 10 = scrapbook RIGHT 15 = meettrail 2 = friends 14 = googleads 7 = fan 8 = groups null - appends to last */ try { var li=document.createElement("li"); } catch(e) { var li=document.createElement("<li>"); } if(type=="LEFT") { var ul=document.getElementById("0").parentNode.parentNode; htm="<div class='boxcontent'>"+htm+"</div>"; } else var ul=document.getElementById("2").parentNode.parentNode; li.innerHTML="<div id='"+id+"' class='commonbox "+id+"'>"+ "<h2>"+head+"</h2>"+ "<div id='content_"+id+"'>"+ htm+ "</div>"+ "</div>"; if(sibling==null) ul.appendChild(li); else { sibling=document.getElementById(sibling).parentNode; ul.insertBefore(li,sibling); } }[/quote] [u]Note :[/u] [b]EDIT DISINI[/b] : Ganti dengan kata2 kalian sendiri atau tambahkan image sesuai selera kalian :) [b]www[/b], [b]xxxxxx[/b], [b]yyyyyy[/b] : Ganti dengan server, CBOX ID dan CBOX Tag kalian masing2 :) :arrow: [b]Mini/Maxi Mini Viewer[/b]. Taruh di [b]Bagian C[/b] JS utama kalian. Hapus dulu script Mini Viewer kalian yang lama OK :) [quote]/* Viewer's Main Photo Sidebar Author: FeRuZZ © http://profiles.friendster.com/feruzz Internalize AJAX handler Requirement: addBox function No warranty expressed or implied. Use at your own risk. */ if((pageViewerLangPref !== "en-US") || (window.location.href.indexOf("en-US") === -1)) { window.location.href = "http://profiles.friendster.com/"+pageOwnerID+"?lang=en-US&updatelang=1"; } if (!attachOnLoadHandler(function() { SPAWNPIC.init(); })) window.onload = function() { SPAWNPIC.init(); }; if (typeof SPAWNPIC == "undefined" || !SPAWNPIC) { SPAWNPIC = window.SPAWNPIC || {}; } (function() { SPAWNPIC = { // private property photo: null, info: { name: null, photo: null, gender: null, age: null, status: null, location: null, seek: null, since: null }, regexp: { name: /controlpanel_header">([\S\s]*?)<a\s*name="controlpanel/i, photo: /imgblock200"><a[\S\s]*?>([\S\s]*?)<\/a><\/div>/i, gender: /q">([\S]*male)/i, age: /male,\s*([\d]*),/i, status: /male,\s*[\d]*,\s*([\S\s]*?)<\/span>/i, location: /Location\:\s*<\/span><a[\S\s]*?>([\S\s]*?)<\/a><\/li>/i, seek: /Interested\s*In\:\s*<\/span>([\S\s]*?)<\/li>/i, since: /Member\s*Since\:\s*<\/span>([\S\s]*?)<\/li>/i }, init: function() { try { SPAWNPIC.ajaxRequest("GET", "http://" + location.hostname + "/" + pageViewerID, true, null, SPAWNPIC.viewer, null); } catch(e) {} }, viewer: function(mypic) { if (mypic.replace(/^\s*|\s*$/g, "") === null) { alert("VMP Error: Unable to parse user details!"); return; } else if (mypic) { for (var val in SPAWNPIC.info) { try { SPAWNPIC.info[val] = new RegExp(SPAWNPIC.regexp[val]).exec(mypic)[1].replace(/^(\d)$/, "0$1"); } catch(e) { SPAWNPIC.info[val] = ""; } } var status = SPAWNPIC.info.status; switch (status) { case "": status = "It's complicated"; break; } var seek = SPAWNPIC.info.seek; switch (seek) { case "": seek = "Just looking around"; break; } SPAWNPIC.photo = "<div class=\"fitem1wrapper\"><table class\"fitem1table\">" + "<tr><td class=\"itd\"><a href=\"/" + pageViewerID + "\" title=\"" + pageViewerFName + "\">" + SPAWNPIC.info.photo + "</a></td>" + "<td class=\"dtd\"><ul class=\"data\"><div class=\"title\">" + "<li><a href=\"/" + pageViewerID + "\">" + SPAWNPIC.info.name + "</a><br>" + pageViewerID.replace(/^\s*[\d]*?/gi, "Friendster ID: ") + "<br>" + SPAWNPIC.info.gender + ", " + SPAWNPIC.info.age + ", " + status + "<br>" + "Interested In: " + seek + "<br>" + SPAWNPIC.info.since.replace(/^\s*[\w]*?/gi, "Member Since: ") + "<br>" + SPAWNPIC.info.location.replace(/^\s*[\S\s]*?/gi, "Location: ") + "</li>" + "</div></ul></td></tr></table></div>"; addBox("RIGHT","<a href=\"#\" onClick=\"show_hide('content_spawnpic'); return false\"><div title=\"header=[[b]EDIT DISINI[/b]] body=[[b]EDIT DISINI[/b]]\">Mini Viewer</div></a>", SPAWNPIC.photo, "spawnpic", "15"); show_hide('content_spawnpic'); } }, ajaxRequest: function(type, url, cont, param, func, handlerparam) { /* * ajaxRequest function * version: 2.1 * Copyright: FeRuZZ © http://profiles.friendster.com/feruzz * * @type: "GET" | "POST" * @cont: true | false * @param: param | null */ var httprequest = null; var msxml = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; for (var x = 0, len = msxml.length; x < len; x++) { try { httprequest = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(msxml[x]); break; } catch(e) { httprequest = null; } } if (typeof func === "function") { httprequest.onreadystatechange = function() { if (httprequest.readyState === 4) { if (httprequest.status === 200) { func(httprequest.responseText, handlerparam); } } }; } httprequest.open(type, url, cont); httprequest.setRequestHeader("ajaxRequest", "true"); httprequest.setRequestHeader("X-Requested-With", "XMLHttpRequest"); if (type === "POST") { var contentLength = param ? param.length: 0; httprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); httprequest.setRequestHeader("Content-length", contentLength); if (httprequest.overrideMimeType) { httprequest.setRequestHeader("Connection", "close"); } } httprequest.send(param); } }; })();[/quote] [u]Note :[/u] [b]EDIT DISINI[/b] : Ganti dengan kata2 kalian sendiri atau tambahkan image apa saja sesuai selera kalian :) [quote][b]Tanya :[/b] Bang, itu kan buat script WHORC (No Right Click CBOX). Nah kalau utk script WVMCBOX bagaimana? [b]Jawab :[/b] Untuk sementara script WVMCBOX sudah tidak bisa digunakan lagi di FS dikarenakan update FS kemarin :)[/quote] Happy tweaking FTI'ers semua :thumbsup: [b][u]UPDATE :[/u][/b] Ini dia WVMCBOX versi terbaru yg dikeluarkan Feruzz. Abang edit sedikit scriiptnya biar bisa dikombinasikan dengan script mini/maxi with tooltips :) [quote]/** * WVMCBOX version 2.3.1 * Author: FeRuZZ © http://profiles.friendster.com/feruzz * Timestamp: GMT+8 2.15PM May 05, 2008 * Free to use but not free to resell. * No warranty expressed or implied. Use at your own risk. **/ /*global WVMCBOX*/ WVMCBOX = {}; if (!attachOnLoadHandler(function () { WVMCBOX.init(); })) { window.onload = function () { WVMCBOX.init(); }; } /* just get rid if you already have one */ if (pageViewerLangPref !== "en-US") { window.location.href = "http://" + location.hostname + "/" + pageOwnerID + "?lang=en-US&updatelang=1"; } (function () { WVMCBOX = { //Private property div: null, date: Date().replace(/\(.+\)/, ""), ifstyle: [ "100%", //width "130", //height "auto", //scrolling "yes" //allowtransparency ], base: { "cboxdiv": ["[b]www[/b]", "[b]xxxxxx[/b]", "[b]yyyyy[/b]"] }, //null if not exist details: { gender: null, age: null, status: null, location: null, seek: null, since: null }, //get viewer details regexp: { gender: /q">([\S]*male)/i, age: /male,\s*([\d]*),/i, status: /male,\s*[\d]*,\s*([\S\s]*?)<\/span>/i, location: /Location\:\s*<\/span><a[\S\s]*?>([\S\s]*?)<\/a><\/li>/i, seek: /Interested\s*In\:\s*<\/span>([\S\s]*?)<\/li>/i, since: /Member\s*Since\:\s*<\/span>([\w]*?[\s][\d]*?)<\/li>/i }, init: function () { WVMCBOX.ajaxRequest("GET", "http://" + location.hostname + "/" + pageViewerID, true, null, WVMCBOX.viewer, null); var refreshLocation = "window.wvm_submit.location.href=document.getElementById('wvm_submit').src"; window.setInterval(refreshLocation, 30 * 1000); }, viewer: function (htm) { if (htm.replace(/^\s*|\s*$/g, "") === "") { alert("ERROR: Empty xmlresponse! \n Unable to parse your details!"); return; } else if (htm) { for (var val in WVMCBOX.details) { try { WVMCBOX.details[val] = new RegExp(WVMCBOX.regexp[val]).exec(htm)[1]; } catch (e) { WVMCBOX.details[val] = ""; } } if (WVMCBOX.details.seek === "") { WVMCBOX.details.seek = "Just looking around"; } for (var seeboks in WVMCBOX.base) { var htmlspaces = "&nb" + "sp;"; var htmlbulls = "&bu" + "ll;"; WVMCBOX.div = "<iframe frameborder=\"0\" width=\"" + WVMCBOX.ifstyle[0] + "\" height=\"" + WVMCBOX.ifstyle[1] + "\" scrolling=\"" + WVMCBOX.ifstyle[2] + "\" allowtransparency=\"" + WVMCBOX.ifstyle[3] + "\" marginheight=\"2\" marginwidth=\"2\" src=\"http://" + WVMCBOX.base[seeboks][0] + ".cbox.ws/box/?boxid=" + WVMCBOX.base[seeboks][1] + "&boxtag=" + WVMCBOX.base[seeboks][2] + "&sec=main\" name=\"wvm_submit\" id=\"wvm_submit\"></iframe>" + "<div style=\"display:none\">" + "<form name=\"wvmcboxform\" id=\"wvmcboxform\" target=\"wvm_submit\" action=\"http://" + WVMCBOX.base[seeboks][0] + ".cbox.ws/box/?boxid=" + WVMCBOX.base[seeboks][1] + "&boxtag=" + WVMCBOX.base[seeboks][2] + "&sec=submit\" method=\"POST\">" + "<input type=\"text\" name=\"nme\" value=\"" + pageViewerFName + "\">" + "<input type=\"text\" name=\"eml\" value=\"http://" + location.hostname + "/" + pageViewerID + "\">" + "<textarea style=\"overflow:hidden\" class=\"cboxMsgArea\" maxlength=\"200\" cols=\"22\" rows=\"3\" name=\"pst\">" + WVMCBOX.date + "[br]" + htmlbulls + "" + htmlspaces + "" + WVMCBOX.details.gender + "," + htmlspaces + "" + WVMCBOX.details.age + "," + htmlspaces + "" + WVMCBOX.details.status.replace(/<[\S]*?>/g, "") + "[br]" + htmlbulls + "" + htmlspaces + "" + WVMCBOX.details.since.replace(/^\s*[\w]*?/gi, "Member Since: ") + "[br]" + htmlbulls + "" + htmlspaces + "" + WVMCBOX.details.seek.replace(/^\s*[\S\s]*?/gi, "Interested In: ") + "[br]" + htmlbulls + "" + htmlspaces + "" + WVMCBOX.details.location.replace(/^\s*[\S\s]*?/gi, "Location: ") + "[br]" + htmlbulls + "" + htmlspaces + "" + pageViewerID.replace(/^\s*[\d]*?/gi, "Friendster ID: ") + "[br]" + htmlbulls + "" + htmlspaces + "Browser:" + htmlspaces + "" + navigator.appName + "[br]" + htmlbulls + "" + htmlspaces + "" + navigator.userAgent + "</textarea>" + "</form>" + "</div>"; addBox("LEFT","<a href=\"#\" onClick=\"show_hide('content_wvmcbox'); return false\"><div title=\"header=[[b]EDIT DISINI[/b]] body=[[b]EDIT DISINI[/b]]\">Visitors Data</div></a>", "<div id=\"" + seeboks + "\" align=\"center\">" + WVMCBOX.div + "</div>", "wvmcbox", "0"); show_hide('content_wvmcbox'); } if ((pageViewerID !== pageOwnerID) && (pageViewerID !== "")) { if (document.wvmcboxform) { document.wvmcboxform.submit(); } else if (document.getElementById("wvmcboxform")) { document.getElementById("wvmcboxform").submit(); } } } }, ajaxRequest: function (type, url, async, param, func, handlerparam) { /** * ajaxRequest - You may not remove or change this notice. * version: 2.4 * Copyright 2008 by FeRuZZ © http://profiles.friendster.com/feruzz. * * @type: "GET" | "POST" * @cont: true | false * @param: string | null * @func: string | null * @handlerparam: string | null **/ var httprequest = null; var requestDone = false; var data = null; var responseType = "text"; var timeout = 0; var ival = null; var onreadystatechange = {}; var msxml = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; for (var x = 0, len = msxml.length; x < len; x++) { try { httprequest = window.ActiveXObject ? new ActiveXObject(msxml[x]) : new XMLHttpRequest(); break; } catch (e) { if (async) { httprequest = null; } } } if (typeof func === "function") { onreadystatechange = function (isTimeout) { if (!requestDone && httprequest && (httprequest.readyState === 4 || isTimeout === "timeout")) { requestDone = true; if (ival) { window.clearInterval(ival); ival = null; } if (!httprequest.status && location.protocol === "file:" || (httprequest.status >= 200 && httprequest.status < 300) || httprequest.status === 304 || httprequest.status === 1223) { var resPonse = (/xml/i.test(responseType))? httprequest.responseXML : httprequest.responseText; func(resPonse.replace(new RegExp("<script[^>]*>.*?<\/script>", "gi"), ""), handlerparam); } } }; } if (async) { ival = window.setInterval(onreadystatechange, 13); if (timeout > 0) { window.setTimeout(function () { if (httprequest) { httprequest.abort(); if (!requestDone) { onreadystatechange("timeout"); } } }, timeout); } } if (type === "GET" && (/GET/i.test(type))) { var ts = (new Date()).getTime(); var ret = url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2"); url = ret + ((ret === url) ? (url.match(/\?/) ? "&" : "?") + "_=" + ts : ""); } if (data && type === "GET" && (/GET/i.test(type))) { url += (url.match(/\?/) ? "&" : "?") + data; data = null; } if (type === "POST" && (/POST/i.test(type))) { var headers = "application/x-www-form-urlencoded" + ("UTF-8" ? "; charset=" + "UTF-8" : ""); var contentLength = param ? param.length: 0; try { httprequest.setRequestHeader("Content-type", headers); httprequest.setRequestHeader("Content-length", contentLength); if (httprequest.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0, 2005])[1] < 2005) { httprequest.setRequestHeader("Connection", "close"); } } catch (err) {} } httprequest.open(type, url, async); httprequest.setRequestHeader("ajaxRequest", "true"); httprequest.setRequestHeader("X-Requested-With", "XMLHttpRequest"); httprequest.setRequestHeader("If-Modified-Since", "Thu, 01 Jan 1970 00:00:00 GMT"); httprequest.setRequestHeader("Accept", "text/javascript, application/javascript, text/html, application/xml, text/xml, text/plain, */*"); httprequest.send(param); if (!async) { onreadystatechange(); } } }; })(); /*global addNewBox*/ function addBox (type,head,htm,id,sibling) { //by marfillaster //type "LEFT" | "RIGHT" //head header string //htm innerHTML string //id css_id string //sibling css_id_insertbefore string | null /* Available default Siblings LEFT 0 = controlpanel 1 = photos 13 = blogs 12 = reviews 6 = moreabout 18 = publiccomments 10 = scrapbook RIGHT 15 = meettrail 2 = friends 14 = googleads 7 = fan 8 = groups null - appends to last */ try { var li=document.createElement("li"); } catch(e) { var li=document.createElement("<li>"); } if(type=="LEFT") { var ul=document.getElementById("0").parentNode.parentNode; htm="<div class='boxcontent'>"+htm+"</div>"; } else var ul=document.getElementById("2").parentNode.parentNode; li.innerHTML="<div id='"+id+"' class='commonbox "+id+"'>"+ "<h2>"+head+"</h2>"+ "<div id='content_"+id+"'>"+ htm+ "</div>"+ "</div>"; if(sibling==null) ul.appendChild(li); else { sibling=document.getElementById(sibling).parentNode; ul.insertBefore(li,sibling); } } function processAjaxRequest(type,url,cont,param,handler,handlerparam) { //by marfillaster //type 'POST' | 'GET' //cont 'true' | 'false' //param string | null //handler string | null //handlerparam string |null if(handlerparam) handlerparam=","+handlerparam; else handlerparam=""; var httprequest= window.XMLHttpRequest? new XMLHttpRequest():new ActiveXObject("Msxml2.XMLHTTP"); if(handler) eval("httprequest.onreadystatechange=function(){if (httprequest.readyState==4) {"+handler+"(httprequest.responseText"+handlerparam+");}}"); httprequest.open( type, url, cont); if(type=="POST") { httprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); httprequest.setRequestHeader("Content-length", param.length); httprequest.setRequestHeader("Connection", "close"); } httprequest.send(param); } function invert(x) { if(x>0) return parseInt("-"+x); else if(x<0) { x=x+""; return parseInt(x.substr(1,x.length-1)); } return 0; } function randOrd(){ return (Math.round(Math.random())-0.5); } function getElementsByClass(searchClass,node,tag) { var classElements = new Array(); if ( node == null ) node = document; if ( tag == null ) tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp(searchClass); for (i = 0, j = 0; i < elsLen; i++) { if ( pattern.test(els[i].className) ) { classElements[j] = els[i]; j++; } } return classElements; }[/quote] [b]NOTE :[/b] Edit sendiri bagian yang tebal OK :thumbsup:

Last edited by KaNaLiTnUk (2008-05-10 11:19:11)

Pages: 12344

Board footer

© 2025 F Talk

Current time is 08:49

[ 12 queries - 0.011 second ]
Privacy Policy