JavaScript Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsWeb DesignJavaScript Development

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old October 2nd, 2012, 08:12 AM
postonoh postonoh is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Apr 2011
Posts: 2 postonoh User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 27 m 50 sec
Reputation Power: 0
Question I am working to display database driven web links on pages

I am working on a iPad flip book project. Using html c# Jquery Ajax and Javascript sql server database

I have access all the data in the database to display the books base on client ID. The book works fine the problem is
I have web links or page links that goes on each page. I using ajax and to retrieve the value which works.
The problem I am having is wiring the links to the proper page.

I can pull the links when I add them to the pages. Only the links of the odd pages are wired. but are wire to both pages.

Example on page one. When page loads it does an ajax post if there are any links on page one return those links and
wire them on page one. Then page two ajax post get links for page two and wire them on page two.

Right now it is wiring page one link to page one and two. When I turn the page it is wiring page three links to page three and four and so on.


jquery, ajax and javascript code:
The bold code is my ajax post and retrieval of the links.
the links are prepended to the pages.
Code:
<script type="text/javascript">
var ContentCached = 1;// The is var CurrentPage = 1; 
var Contents = new Array(); 
var HotLinks = new Array(); 
var links = 0; 
var mask = 0; 
var OrgHeight; 
var OrgWidth; 
var Orientation = "portrait"; 
var doubleOrSingle = 'double'; 
var ResizeTimer; 
var Resizing = false; 
var timer = null; 
var LinkOverlayImg; 
var timeoutID; 
var timeoutIDFromButton; 
var DirectPage = false; //Number of times the links have blinked 
var linkBorderBlinked = 0; 
var timerCount = 0; 
var DirectPage = false; 
 //Fills the conents array with the address of images from the server //it calls a page method GetUnloadedContent, passes to it the
 //book id that it gets form the query string function
 FillContentsArray() { $.ajax({ type: "POST", //Ajax type post 
   url: "tabletBook.aspx/GetUnloadedContent", //URL plus Pagemethod call 
data: "{'bookid': '" + BookID + "'}", // bookid 
contentType: "application/json; charset=utf-8", //This is required or you will get all sorts of strange things :-) 
dataType: "json", //We need to specifiy JSON as to have the AJAX serilize the data between Client and server 
success: function (msg) { // The msg that comes back has in it the d attribute which in this case contains an array from the server 
Contents = msg.d; //Lets copy the passed back array to a global array 
$.ajax({ // Now since we got here , we call another page method which will get is the Original Page width and hieght - *****This is very Important, we need this for the Resize Calculations******** 
type: "POST", //Post 
url: "tabletBook.aspx/GetWidthHeight", //URL Pluse pagemethod 
data: "{'bookid': '" + BookID + "'}", //BookId 
contentType: "application/json; charset=utf-8", //Need this as above 
dataType: "json", //See above 
success: function (msg) { //The msg here will return an array that has 2 values , the width and height 
OrgWidth = msg.d[0]; //Lets save the values in globals 
OrgHeight = msg.d[1]; // Now we proceed with the rest of the page build 
GetPageContent(); //This function will Get and load the first page of content 
ResizeME(); // We call resize me here to resize the intail page to match the ipad screen 
PrecacheContent(); // Call to this function will start precaching the image 
}
 }); 
} 
});
 }

//Pre caches Images and that were passed in in the contents array 
//This could probably be done a more AJAX fashion, This function will //Eat up CPU Cycles, so for very large books expect it to be slow function 
PrecacheContent() { 
//Check if we still need to pull down images 
if (ContentCached < Contents.length) {
 $("<img>").load(function () {
 // if so , then create a temp image object and Bind to the load function 
//Once the load function executes that means the image is done loading 
//Lets get it and set it to the correct page 
$("#Page-" + (ContentCached).toString()).css("background-image", "url('" + Contents[ContentCached] + "'),");
 // images is loading 
$("#Page-" + (ContentCached).toString()).prepend($("<img src='books/images/ajax-loader.gif' style='position:absolute;left:45%;top:50%;z-index:5000'></img>").addClass("loadPic"));
 //Lets add the class loaded to it so we can indicate that it is loaded and need not to be pulled again 
$("#Page-" + (ContentCached).toString()).addClass("loaded"); 
//Since the book pages are set as the background image lets size them to 100% 
$("#Page-" + (ContentCached).toString()).css("background-size", "100% 100%"); //Since the page is loaded , lets make sure it is visible $("#Page-" + (ContentCached).toString()).show(); 
//increase the ContentCahced by one ContentCached = ContentCached + 1; 
//Call Precache content again until all images are loaded //
 PrecacheContent(); 
$('.loadPic').remove(); return; }).attr("src", Contents[ContentCached]); 
//set the url of the temp image to the content image
 } return; 
//Make sure to return 
}

 //Gets the first page, this can be modified to show a loader image like on the desktop books, once the image loads 
//then it can be hidden and the page shown (Just a thought) function 
GetPageContent() {
 if (CurrentPage == 0) {
 //If Current page is 0 
//Get it and set the background to the image
$("#Page-" + (CurrentPage).toString()).css("background-image", "url('" + Contents[CurrentPage] + "')"); 
$("#Page-" + (ContentCached).toString()).prepend($("<img src='books/images/ajax-loader.gif' style='position:absolute;left:45%;top:50%;z-index:5000'></img>").addClass("loadPic")); 
$("#Page-" + (CurrentPage).toString()).fadeIn("fast"); 
//Show the page 
$("#Page-" + (CurrentPage).toString()).addClass("loaded"); 
// set it to loaded 
$("#Page-" + (CurrentPage).toString()).css("background-size", "100% 100%");
 //Fix the size 
$("#Page-" + (CurrentPage)).show(); 
$('.loadPic').remove(); 
} else {
 //The is left empty on purpose 
} 
}
 //This function gets called by window resize and by orientation change events 
//it will get the window height and 95 percent of the width 
//it will continue to loop untill we get a good hieght and width function
 ResizeME() { 
var winH100prc = $(window).height(); //Get the window height 
var winW95prc = .95 * $(window).width(); // Get 95% of the window width 
var bookHeight = winH100prc - 50; 
//set the book height to the window height - 50 pixels 
while (true) { 
// Keep looping until we get a good size 
var PageWidth; if (Orientation == "portrait") { 
// if we are in protriat mode Height > Widht 
PageWidth = winW95prc - 50; // the Page width is 50 px less then the window width
 } else {
 //if landscape , we need room for 2 pages 
PageWidth = winW95prc / 2; // the page width is the 95% of window width /2 
} 
var ratio = PageWidth / OrgWidth; // lets get a change ratio by dividing the current page width by the original page width 
var newHieght = OrgHeight * ratio; // lets get the new height 
if ((newHieght) > bookHeight) { 
// if the height is still off the page 
winW95prc = winW95prc - 50; // subtract 50 pixels and loop continue; 
} else {
//othereise , set the size of the book 
$("#book").turn("size", winW95prc, newHieght); 
$("#book").turn("resize"); //Call the resize method to resize all book elements 
break; 
//exit the loop 
} 
}
 }

 //Bind to the window resize function , some times the IPAD or mobile browser
 //will call the resize function instead of Orientation change 
$(window).resize(function () {
 if (!Resizing) { 
//We set a flag here so we need to do this once, Resize events on all browser fire many times persecond, 
//Which will cause you to lose sleep trying to figure it out. 
ResizeTimer = setTimeout(function () { 
// lets set a time out for one second before we resize anything
 if ($(window).width() > $(window).height()) {
 // if the window width is greater then window height 
Orientation = "landscape"; // we are in landscape mode 
$("#book").turn("display", 'double'); //set the book to display double pages 
$("#book").turn("resize"); // resize the book to fit
 } else { 
//we are in portrait mode 
Orientation = "portrait";
 $("#book").turn("display", 'single'); //Set the book to single page 
$("#book").turn("resize"); 
//Reize the book 
} ResizeME(); 
//Call the resize function to make certain the images get resized 
clearTimeout(ResizeTimer); //Clear the timer flag
 Resizing = false; //reset the size flag
 }, 1200); } 
});
 //Binding to the orientationchange event , this event will
 //fire an unknown number of times when the device changes orientation 
//it is unknown because each browser, implements this event 
//Differently 
$(window).bind("orientationchange", function (e) {
 $("#BookContainer").fadeOut(); //lets fade out the book 
if (!Resizing) { // f the resizing flag is false
 //set the resize timer 
ResizeTimer = setTimeout(function () {// lets set a time out for one second before we resize anything 
if ($(window).width() > $(window).height()) { 
Orientation = "landscape"; //same as above 
$("#book").turn("display", 'double'); //same as above 
$("#book").turn("resize"); //same as above 
$("#book").bind("turned", function (e, page) { 
var v = $("#book").turn("view"); $("#CView").val(v[0] + " - " + v[1]).css({ 'text-align': 'center' }); CurrentPage = page; }); 
} else { 
Orientation = "portrait";//same as above 
$("#book").turn("display", 'single'); //same as above 
$("#book").turn("resize"); //same as above 
$("#book").bind("turned", function (e, page) { var v = $("#book").turn("view"); $("#CView").val(v[0]).css({ 'text-align': 'center' }); CurrentPage = page; }); 
} ResizeME(); //same as above 
$("#BookContainer").fadeIn(); 
//Fade the book in 
clearTimeout(ResizeTimer); 
Resizing = false; 
}, 1200); 
} 
});

 //Bind to the window load event, once all screen assets have 
//loaded, you may init the book and begin to load the image 
$(window).load(function () { 
//Get images from server and fill content array 
FillContentsArray(); 
//Lets check if we started landscape or portrait 
//set the display correctly 
if ($(window).width() > $(window).height()) {
 Orientation = "landscape"; 
doubleOrSingle = "double" 
} else { 
Orientation = "portrait"; doubleOrSingle = "single";
 } 
//Events for buttons 
$("#btnRight").bind("tap", function (e, page) { 
$("#book").turn("next"); }); // click left button turn previous
 $("#btnLeft").bind("tap", function (e, page) {
 $("#book").turn("previous"); }); //swipe page from edge of page left 
$(window).bind("swipeleft", function (e, page) { $("#book").turn("next"); }); //swipe page from edge of page right 
$(window).bind("swiperight", function (e, page) { $("#book").turn("previous"); }); 
//Stops Page current location 
$("#btnAutoStop").bind("tap", function (e, page) { clearInterval(timer); });
 //Go the First Pages 
$("#btnFirst").bind("tap", function (e, page) { 
$("#book").turn("page", 1) })
 $("#book").bind("zoom.doubleTap", function (event) {
 if ($(this).zoom("value") == 0) { $(this).zoom("zoomIn", event); } else { $(this).zoom("zoomOut"); } });
 //Goto the Last Pages $("#btnLast").bind("tap", function (e, page) {
 // pages = Contents.length; 
$("#book").turn("page", $("#book").turn("pages")); 
}); //Call the turn js plugin 
$("#book").turn({ acceleration: true, display: doubleOrSingle, inclination: 0, duration: 650, peel: 'br' } );
 //This function is called when the pages are turned 
$("#btnAutoPlay").click(function () { Play(); }); 
$("#book").bind("turning", function (e, page) {
 //Check if the page is loaded for both left and right 
//If not loaded load the page and then display
 if (!$("#Page-" + (page - 1).toString()).hasClass("loaded")) {
//If not show a loader image (You may have to tweak this) 
$("#Page-" + (page - 1).toString()).prepend($('<img src="books/images/ajax-loader.gif", style="position:absolute;left:40%;top:50%;z-index:5000"/>').addClass("ShowLoading")); 
$("#Page-" + (page - 1).toString()).css("background-image", "url('" + Contents[page - 1] + "')"); 
$("#Page-" + (page - 1).toString()).addClass("loaded"); 
$("#Page-" + (page - 1).toString()).fadeIn("fast", function () {
 $(".ShowLoading").remove(); 
$("#Page-" + (page - 1).toString()).remove(".ShowLoading"); 
});
 $("#Page-" + (page - 1).toString()).css("background-size", "100% 100%"); 
} else { 
$("#Page-" + (page).toString()).show(); 
} if (!$("#Page-" + (page).toString()).hasClass("loaded")) { 
$("#Page-" + (page).toString()).prepend($('<img src="books/images/ajax-loader.gif", style="position:absolute;left:40%;top:50%;z-index:5000"/>').addClass("ShowLoading")); 
$("#Page-" + (page).toString()).css("background-image", "url('" + Contents[page] + "')") ;
$("#Page-" + (page).toString()).addClass("loaded"); 
$("#Page-" + (page).toString()).fadeIn("fast", function () { 
$(".ShowLoading").remove(); $("#Page-" + (page).toString()).remove(".ShowLoading"); }); 
$("#Page-" + (page).toString()).css("background-size", "100% 100%"); 
} else {
 }
 }); 
//This function is called as you start to turn the page, it will load the new page form 
//the contents array, this is where you would pull links via an ajax call 
//you dont draw them here though 
$("#book").bind("start", function (e, page) { 
$("#Page-" + page.page).css("background-image", "url('" + Contents[page.page] + "')"); 
$("#Page-" + (page.page).toString()).css("background-size", "100% 100%"); 
$("#Page-" + page.next).css("background-image", "url('" + Contents[page.next] + "')"); 
$("#Page-" + (page.next).toString()).css("background-size", "100% 100%"); 
LinkLoading(BookID, page.page); 
LinkLoading(BookID, page.next); 
}); 

// Once the page has been completed turned , display the page numbers in the header or what ever //you want to do after the page has turned, this could be where //you would draw your links posts, or what ever other assets you want to display $("#book").bind("turned", function (e, page) { 
$(".imgLink").remove(); 
var v = $("#book").turn("view"); $("#CView").val(v[0]).css({ 'text-align': 'center' }); 
$("#pgDiv" + (page - 1).toString()).remove();
 $("#Page-" + (page - 1).toString()).css("background-size", "100% 100%").append(HotLinks); 
$("#pgDiv" + (page).toString()).remove(); 
$("#Page-" + (page).toString()).css("background-size", "100% 100%").append(HotLinks); 
 BlinkLinks();
 }); 

//When the book first loads it calls this event //it basiclly gets called every time the book //reaches page one $("#book").bind("first", function (e) { CurrentPage = 0; GetPageContent(); }); //we need an inital size for the book $("#book").css("width", "100px"); $("#book").css("height", "100px"); ResizeME(); // Call resize to get the correct sizes //remember by this time in the execution, your assets are loaded 

$("#book").fadeIn("fast"); // Show the book LinkLoading(BookID, CurrentPage); }); 


$(".imgLink").live("mouseover", function () { $(this).css("background-image", "url(" + LinkOverlayImg + ")"); $(this).css("cursor", "pointer"); }); $(".imgLink").live("mouseout", function () { $(this).css("background-image", "url(books/images/transparent.gif)"); }); 

$(".imgLink").live("tap", function (e, page) {
 var LinkType = $(this).attr("linkType"); 
if (LinkType.toUpperCase() == "WEB") {
 var href = $(this).attr("title"); window.open(href, "_blank"); 
} else if (LinkType.toUpperCase() == "DIRECTPAGE") {
 var pgLink = $(this).attr("title"); $("#book").turn("page", parseInt(pgLink));
 } else if (LinkType.toUpperCase() == "IMAGELINK") {
 href = $(this).attr("title"); } else if (LinkType.toUpperCase() == "VIDEOLINK") 
{ //video link
 } 
});
 //When the doc is ready , show a loader image, for some add reason I cant get it to display, I will //leave it for you to figure out $(document).ready(function () { 
$(loaderImage).prepend("#book").prepend($('<img src="books/images/ajax-loader.gif", style="position:absolute;left:40%;top:50%;z-index:5000"/>').addClass("ShowLoading")); 
BookID = getParameterByName("bookid"); //Get the query string param that has the book Id 
CurrentPage = 0; //set the current page to zero 
$(".Showloading").remove(); 
}); 
function Play() {
 timer = setInterval(function (e, page) {
 var way = 1; 
if (way == 1)
 { 
$("#book").turn("next"); 
} 
}, 1650); 
}

 // Ajax call to get the hot links from the database and return function 
LinkLoading(BookID, page) { 
//Starting code for the search for links 
$.ajax({ type: "POST", // AJAX type post 
url: "tabletbook.aspx/GetPageLinks", 
data: '{"BookID": "' + BookID + '", "page": "' + page + '"}', 
contentType: "application/json; charset=utf-8", //This is required or you will get all sorts of strange things :-) 
dataType: "json", //We need to specify JSON as to have the AJAX serialize the data between Client and server 
success: function (link) { // The msg that comes back has in it the d attribute which in this case contains an array from the server HotLinks = link.d; //Lets copy the links to a global array 
$.ajax({ type: "POST",
 url: "tabletbook.aspx/GetLinkOverImage", 
data: '{"BookID": "' + BookID + '"}', 
contentType: "application/json; charset=utf-8", //This is required or you will get all sorts of strange things :-) 
dataType: "json", //We need to specify JSON as to have the AJAX serialize the data between Client and server 
success: function (ret)
 { 
LinkOverlayImg = ret.d;
 } 
}); 
} 
}); 
}
 </script>

Last edited by postonoh : October 2nd, 2012 at 08:40 AM. Reason: to make the code a better read

Reply With Quote
Reply

Viewing: Dev Shed ForumsWeb DesignJavaScript Development > I am working to display database driven web links on pages

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap