Microsoft Word - CS215-a6.doc UNIVERSITY OF REGINA Department of Computer Science CS 215 – Web & Database Programming Winter 2021 Assignment #6: Micro-Blogging Website – AJAX Updates Due: Tuesday...

1 answer below »
AJAX and PHP


Microsoft Word - CS215-a6.doc UNIVERSITY OF REGINA Department of Computer Science CS 215 – Web & Database Programming Winter 2021 Assignment #6: Micro-Blogging Website – AJAX Updates Due: Tuesday April 13, 2021 by 11:55 PM This is the fifth in the series of assignments for building a micro-blogging website. In the first assignment, you built an interface mock-up of the site. In the second assignment, you implemented the client-side programming. In the third assignment, you designed and built the database. In the fourth assignment, you used PHP to implement the server-side programming. In this last assignment, you will implement AJAX-based updating of information. Because the assignments build upon each other, you may wish to make modifications to your previous assignment submission before starting this assignment. For this assignment, you are required to use DOM2 event registration, event handling functions, and make all updates to the page by manipulating the DOM. The data format must be JSON and efforts should be taken to only provide the data necessary to update the page with new information. You are not permitted to use third-party libraries that simplify or abstract the JavaScript or PHP coding. There are three new pieces to add to your system that will take advantage of AJAX technology: A. Save the likes and dislikes Whenever the user clicks on a like or dislike icon for any post or repost, AJAX should be used to send this information to the server where it is saved in the database. The response should be a JSON object that contains the updated number of likes and dislikes for the post, which is then used to dynamically update the page (without the need to reload it). You should also ensure that the like and dislike buttons show the status of the current user’s vote actions (refer back to Assignments 3 and 5). Pay careful attention to the process for turning these likes and dislikes on and off, ensuring that a given user can only either like or dislike a given post, and verifying that this works properly for multiple users making independent selections. B. Periodically check the number of likes and dislikes on the Post List Page Using one of the timer functions in JavaScript, configure your system to dynamically check with the server to find out the number of likes and dislikes for each post and repost (every 20 seconds). Use AJAX to retrieve this information from the server, JSON as the data format, and JavaScript to process the data and manipulate the DOM to update the web page as needed. CS 215 (Winter 2021): Assignment #6 2 C. Periodically check for new posts on the Post List Page Using one of the timer functions in JavaScript, configure the Post List Page to dynamically check with the server every 90 seconds to find out if there are any new posts to include on the Main Page. Use AJAX to request the new post information, JSON as the data format, and JavaScript to process the data and manipulate the DOM to update the web page as needed. In order to avoid sending the full list of posts back each time, you may find it useful to keep track of the ID or date/time of the most recent post, and use this to ensure that only new posts are provided back from the AJAX call. If new posts are found, these should be added to the top of the list (with appropriate links as per the previous assignment). For each new post that is added to the top of the page, an equivalent number should be removed from the bottom of the page. For this to work properly with the like and dislike feature (part A above), you will need to ensure that new events have been dynamically registered on the like and dislike icons for the new posts. Since the pages you have built for the previous assignments will each be modified, you should ensure that they are still HTML5 compliant (following the syntax rules of XTHML), use CSS, and that there is a proper separation of the specification of the content from the specification of the presentation rules, the specification of the JavaScript code, and the specification of the PHP processing code. Grading Scheme This assignment will be graded out of 10 marks, based on the following criteria: 2 mark: Using AJAX to submit the like and dislike interaction 1 mark: JSON processing and dynamic page update after a new like or dislike 1 mark: Periodic check of the like and dislike counts using AJAX 1 mark: JSON processing and dynamic page updates of counts 1 mark: Periodic check for new posts 2 mark: JSON processing and dynamic update of page with new posts 1 mark: Removal of old posts 1 mark: Adding event listeners on like/dislike for new posts Submissions All of the files for this assignment should be posted to your personal website on Hercules (a separate directory for this assignment, with a link on your home page), as well as uploaded to UR Courses (a single zip file). CS 215 (Winter 2021): Assignment #6 3 A simple submission log file should be provided that includes your name, student number, class number, the URL of where you have posted the files on Hercules, and a listing of the files you have submitted along with a short explanation of the purpose of each file. Failure to provide these support documents will result in delays in the grading of your assignment and possibly a deduction in your grade. Late submissions (up to 12 hours) will not be accepted with an automatic 20% grade deduction (-2 marks). If there are exceptional circumstances that kept you from submitting your assignment on-time, you should consult with your instructor as soon as you are able to do so. See the syllabus for more details on the late policy for this class.
Answered 8 days AfterApr 06, 2021

Answer To: Microsoft Word - CS215-a6.doc UNIVERSITY OF REGINA Department of Computer Science CS 215 – Web &...

Sanghamitra answered on Apr 15 2021
152 Votes
79762/dislike.php
session_start();
if(isset($_SESSION["email"]))
{
    //If somebody is logged in, display a welcome message
    $email=$_SESSION["email"];
    $conn = mysqli_connect("localhost","li992","961209","li992");
    if ($conn->connect_error)
    {
        die ("Connection failed: " . $conn->connect_error);
    }
    $q="SELECT * FROM USER where email = '$email'";
    $r = $conn->query($q);
    $row = $r->fetch_assoc();
    $username=$row["username"];
    $DOB=$row["DOB"];
    $userID=$row["user_id"];
    
// get like and dislike value and store it when it triggered
    if(isset($_POST["blogID"])){
        $inputBID=$_POST["blogID"];
        $inputRID=0;
        $testLike="SELECT * FROM dislikes WHERE Repost_id='$inputRID' AND Post_id='$inputBID'AND User_id='$userID'";
        $testr=mysqli_query($conn,$testLike);
        if(mysqli_num_rows($testr)==0){
            $inputLike="INSERT INTO dislikes (Repost_id,Post_id,User_id,value) VALUES ('$inputRID','$inputBID','$userID',2)";
            $conn->query($inputLike);
            $testLike="SELECT * FROM dislikes WHERE Repost_id='$inputRID' AND Post_id='$inputBID'AND User_id='$userID'";
         $testr=mysqli_query($conn,$testLike);
            $row2 = mysqli_fetch_assoc($testr);
            echo json_encode($row2);
        }
        else{
            echo json_encode(array('result'=>0));
        }
        
        $conn->close();
    }
    
    if(isset($_POST["repostID"])){
        $inputBID=0;
        $inputRID=$_POST["repostID"];
        $testLike="SELECT * FROM Likes WHERE Repost_id='$inputRID' AND Post_id='$inputBID'AND User_id='$userID'";
        $testr=mysqli_query($conn,$testLike);
        if(mysqli_num_rows($testr)==0){
            $inputLike="INSERT INTO Likes (Repost_id,Post_id,User_id,value) VALUES ('$inputRID','$inputBID','$userID',2)";
            $conn->query($inputLike);
            $result=1;
        }
        else{
            $result=0;
        }
        echo $result;
        $conn->close();
    }
    
}
?>
79762/dislike.png
79762/index.html


Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit est similique earum a quam quis doloremque quos dicta, ab saepe ipsam sint consequuntur velit commodi accusantium? Magni expedita libero recusandae.




Make a Post!





PrithviPatel
Oct 9, 1999 @ 5:30am

Some text..
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus quia veniam nam pariatur, quo amet provident, omnis, unde eligendi natus voluptas ab quidem. Suscipit eveniet veniam numquam repudiandae, quidem dolorum nobis odio ducimus vero earum iste ut aspernatur dolores provident nihil illo dolor est, quibusdam quis tempore. Veritatis, consectetur eaque!



10
10


PrithviPatel
Oct 9, 1999 @ 5:30am

Some text..
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus quia veniam nam pariatur, quo amet provident, omnis, unde eligendi natus voluptas ab quidem. Suscipit eveniet veniam numquam repudiandae, quidem dolorum nobis odio ducimus vero earum iste ut aspernatur dolores provident nihil illo dolor est, quibusdam quis tempore. Veritatis, consectetur eaque!



10
10


PrithviPatel
Oct 9, 1999
@ 5:30am
This is a repost..
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Temporibus, odit?



10
10



PrithviPatel
Oct 9, 1999 @ 5:30am

Some text..
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus quia veniam nam pariatur, quo amet provident, omnis, unde eligendi natus voluptas ab quidem. Suscipit eveniet veniam numquam repudiandae, quidem dolorum nobis odio ducimus vero earum iste ut aspernatur dolores provident nihil illo dolor est, quibusdam quis tempore. Veritatis, consectetur eaque!



10
10

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Assumenda quasi modi, obcaecati quibusdam aspernatur non! Ratione id corrupti amet animi perspiciatis, quibusdam recusandae fugit ipsam alias tenetur? Voluptatem, nobis rem.
79762/index.php


Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit est similique earum a quam quis doloremque quos dicta, ab saepe ipsam sint consequuntur velit commodi accusantium? Magni expedita libero recusandae.




Make a Post!





PrithviPatel
Oct 9, 1999 @ 5:30am

Some text..
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus quia veniam nam pariatur, quo amet provident, omnis, unde eligendi natus voluptas ab quidem. Suscipit eveniet veniam numquam repudiandae, quidem dolorum nobis odio ducimus vero earum iste ut aspernatur dolores provident nihil illo dolor est, quibusdam quis tempore. Veritatis, consectetur eaque!



10
10


PrithviPatel
Oct 9, 1999 @ 5:30am

Some text..
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus quia veniam nam pariatur, quo amet provident, omnis, unde eligendi natus voluptas ab quidem. Suscipit eveniet veniam numquam repudiandae, quidem dolorum nobis odio ducimus vero earum iste ut aspernatur dolores provident nihil illo dolor est, quibusdam quis tempore. Veritatis, consectetur eaque!



10
10


PrithviPatel
Oct 9, 1999 @ 5:30am
This is a repost..
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Temporibus, odit?



10
10



PrithviPatel
Oct 9, 1999 @ 5:30am

Some text..
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus quia veniam nam pariatur, quo amet provident, omnis, unde eligendi natus voluptas ab quidem. Suscipit eveniet veniam numquam repudiandae, quidem dolorum nobis odio ducimus vero earum iste ut aspernatur dolores provident nihil illo dolor est, quibusdam quis tempore. Veritatis, consectetur eaque!



10
10

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Assumenda quasi modi, obcaecati quibusdam aspernatur non! Ratione id corrupti amet animi perspiciatis, quibusdam recusandae fugit ipsam alias tenetur? Voluptatem, nobis rem.
79762/jquery.js
/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here