// *********************************************************************// // CopyRight (C) 2001-2002 BY Alawi Hussain BaAqeel (abaaqeel@hotmail.com) // ********************** F R E E P R O G R A M *********************// // *********************************************************************// // show or hide filter // set 1 for showing or 0 for hiding var enableFilter = 1; ////////////////////////// set default parameters ////////////////////////// function poet_setDefaultVar() { // إذا لم يوجد الخط الذي حدده المستخدم // فإن الاتش تي ام ال يختار تلقائيا واحد من الخطوط التالية علىالترتيب // فإن لم يجد الأول انتقل إلى الثاني وهكذا poetDefaultFont = "tahoma,ms sans serif,verdana,arial,helvetica"; poetType = "0", poetLine = "200%", poetAlign = "center", poetUse = "sp"; poetLength = "0"; poetFontName = "", poetFontSize = "4", //1 to 7 poetFontColor = "", poetFontBold = "", poetFontItalic = ""; poetBackColor = "none", poetBackImage = "none"; poetFilter = ""; poetBorderStyle = "none", poetBorderWidth = "medium", poetBorderColor = "black"; poetChar = ""; poetSerialNum = "0", poetSerialNumColor = ""; } ////////////////////////////////////////////////////////////////////////// var poetSpaceWidth, poetExtendWidth; var poetToolFix, poetDiff; var poetLetters1 = "اأإآؤءدذرزوةى" var poetLetters2 = "اأإآؤئبتثجحخدذرزسشصضطظعغفقكلمنهويةى"; var poetLetters3 = "ًٌٍَُِّْ"; function create_testWidth_table() { if (!document.getElementById("testWidth")) { var HTML = "
" document.body.insertAdjacentHTML("afterBegin", HTML); } } function poet_getValue(t, p) { if (!p) { return ""; } var r = new RegExp("([ \"]|^)" + t + "[ ]*=[ ]*\"[^\"]*\"", "i"); var m = p.match(r); if (!m) { r = new RegExp("([ \"]|^)" + t + "[ ]*=[ ]*[^\" ]*([ ]|$)", "i"); m = p.match(r); if (!m) return ""; } m = m[0]; m = m.replace(/\"/gi,""); var i = m.search("="); return m.substring(i + 1); } function poet_getDefault(p, d) { p = poet_trim(p); return poet_trim((p?p:d)); } function poet_setArg(arg) { var par; par = poet_getValue("font", arg) + ",,,,"; //comas = number of arrays - 1 par = par.split(","); poetFontName = poet_getDefault(par[0], poetFontName); poetFontSize = poet_getDefault(par[1], poetFontSize); poetFontColor = poet_getDefault(par[2], poetFontColor); poetFontBold = poet_getDefault(par[3], poetFontBold); poetFontItalic = poet_getDefault(par[4], poetFontItalic); par = poet_getValue("border", arg) + ",,"; par = par.split(","); poetBorderStyle = poet_getDefault(par[0], poetBorderStyle); poetBorderWidth = poet_getDefault(par[1], poetBorderWidth); poetBorderColor = poet_getDefault(par[2], poetBorderColor); par = poet_getValue("num", arg) + ","; par = par.split(","); poetSerialNum = poet_getDefault(par[0], poetSerialNum); poetSerialNumColor = poet_getDefault(par[1], poetSerialNumColor); par = poet_getValue("type", arg); poetType = poet_getDefault(par, poetType); par = poet_getValue("line", arg); poetLine = poet_getDefault(par, poetLine); par = poet_getValue("align", arg); poetAlign = poet_getDefault(par, poetAlign); par = poet_getValue("use", arg); poetUse = poet_getDefault(par, poetUse).toLowerCase(); par = poet_getValue("length", arg); poetLength = poet_getDefault(par, poetLength); if (poetLength > 200) poetLength = 200; par = poet_getValue("bkcolor", arg); poetBackColor = poet_getDefault(par, poetBackColor); par = poet_getValue("bkimage", arg); poetBackImage = poet_getDefault(par, poetBackImage); par = poet_getValue("char", arg); poetChar = poet_getDefault(par, poetChar); if (enableFilter) { par = poet_getValue("filter", arg); poetFilter = poet_getDefault(par, poetFilter); } //////////// set style /////////// var facesize = new Array("xx-small","x-small","small","medium","large","x-large","xx-large"); if (poetFontSize < 1) poetFontSize = 1; else if (poetFontSize > 7) poetFontSize = 4; else poetFontSize = facesize[poetFontSize - 1]; poetFontName += "," + poetDefaultFont; testWidth.style.fontFamily = poetFontName; testWidth.style.fontSize = poetFontSize; testWidth.style.fontWeight = poetFontBold; testWidth.style.fontStyle = poetFontItalic; /////////////////////////////////// } function poet_trim(t) { t = t.replace(/^[ ]+/,""); t = t.replace(/[ ]+$/,""); return t; } function poet_textWidth(t) { testWidth.innerHTML= t.replace(/ /g, " "); return (testWidth.clientWidth - 2) * 0.75; } function poet_strReplace(t, s1, s2, c) { if (c <= 0) return; t=t.split(s1); var s=""; for (var i=t.length-1;i>0;i--) if (c-->0) s = s2 + t[i] + s; else s = s1 + t[i] + s; s = t[0] + s; return s; } function poet_count(str, ch) { var c = 0; for (var i = 0; i < str.length; i++) c += (str.charAt(i) == ch); return c; } function poet_space(n) { if (n == 1) return " "; return " " + poet_space(n-1); } function poet_createExtend(t) { var alef = "اأإآ"; var s = ""; var befor = "", ch = ""; t = t.replace(/الله/g,"@"); for (i = 0; i < t.length; i++) { ch = t.charAt(i); if (poetLetters2.indexOf(ch.charAt(0)) != -1 || ch.charAt(0) == "ء") { if (befor != "") if (poetLetters1.indexOf(befor.charAt(0)) == -1 && poetLetters2.indexOf(ch.charAt(0)) != -1 && (befor.charAt(0) != "ل" || alef.indexOf(ch.charAt(0)) == -1)) s += "^"; befor = ch; s += ch; } else { s += ch; if (poetLetters3.indexOf(ch.charAt(0)) == -1) befor = ""; } } s = s.replace(/@/g,"الله"); return s; } function poet_extend(n) { if (n <= 0) return ""; if (n == 1) return "ـ"; return "ـ" + poet_extend(n-1); } function poet_justifyBYextend(t, w) { var ex = 0, i, d, n, p, m; ex = poet_count(t, "^"); if (ex == 0) return t; d = Math.floor((w - poet_textWidth(t.replace(/\^/g,""))) / poetExtendWidth); t = t.split(" "); n = 0; for (i = 0; i < t.length; i++) n += (t[i].indexOf("^") != -1); p = Math.floor(d / n); m = d % n; for (i = t.length-1; i >= 0; i--) { ex = poet_count(t[i], "^"); if (ex == 0) continue; d = p + (m-- > 0); n = Math.floor(d / ex); if (n > 0) t[i] = t[i].replace(/\^/g, "^" + poet_extend(n)); if (d % ex > 0) t[i] = poet_strReplace(t[i], "^", "ـ", d % ex); } t = t.join(" "); t = t.replace(/\^/g, ""); return t; } function poet_justifyBYspace(t, w, dir) { var sp = 0, i, d, tw, n; sp = poet_count(t, " "); if (sp != 0) { d = Math.floor((w - poet_textWidth(t)) / poetSpaceWidth); n = Math.floor(d / sp); if (n > 0) t = t.replace(/ /g, poet_space(n + 1)); if (d % sp > 0) t = poet_strReplace(t, poet_space(n + 1), poet_space(n + 2), d % sp); } tw = w - poet_textWidth(t); if (tw > 0) { i = t.lastIndexOf(" "); if (i == -1) if (dir == 0) return t; else i = ((dir==2)?-1:t.length-1); tw -= poetDiff; t = t.substr(0, i+1) + poetToolFix.replace(/letter-spacing:normal/,"letter-spacing:"+tw+"pt ") + t.substr(i+1); } return t; } function poet_justify(t, w, dir) { if (poetUse == "ex") t = poet_justifyBYextend(t, w); return poet_justifyBYspace(t, w, dir); } function doPoetry(preview) { poet_setDefaultVar(); var d = document.getElementsByTagName("DIV"); var poetry = d[d.length-1].innerText; var arg = d[d.length-1].tag; var L, R, i, j, cr, MTW; var poetSide, poetSideNum; create_testWidth_table(); poet_setArg(arg); poetToolFix = ""; testWidth.innerHTML = poetToolFix; poetDiff = (testWidth.clientWidth - 2) * 0.75; poetToolFix = poetToolFix.replace(/ /g,"^"); poetry = poetry.replace(/[\^@ـ]/g,""); poetry = poetry.replace(/[ ]+/g," "); poetry = poetry.replace(/^[\r\n]+/,""); poetry = poetry.replace(/[\r\n]+$/,""); poetry = poetry.replace(/\n/g,""); poetry = poetry.replace(/[ ]*\r[ ]*/g,"\r"); poetry = poetry.replace(/[ ]*=[ ]*/g,"="); poetry = poetry.replace(/^[ ]+/,""); poetry = poetry.replace(/[ ]+$/,""); poetry += "\r"; poetExtendWidth = poet_textWidth("ش" + "ــ" + "ش"); poetExtendWidth -= poet_textWidth("ش" + "ـ" + "ش"); poetSpaceWidth = poet_textWidth("ش" + " " + "ش"); poetSpaceWidth -= poet_textWidth("ش" + " " + "ش"); if (poetUse=="ex") { var test = poet_textWidth(poetry); poetry = poet_createExtend(poetry); test = (poet_textWidth(poetry.replace(/\^/g, "ـ")) - test) / poet_count(poetry,"^"); if (test != poetExtendWidth) //problem in some fonts poetry = poetry.replace(/\^/g, "^ـ"); } testWidth.innerHTML = poetry.replace(/\r/g,"| "; HTML += poetSideNum HTML += " | "; HTML += ""; HTML += poetSide; HTML += " | "; HTML += "