
(function(){var slideSpeed=5.5;var slideInterval=0;var currentPage=null;var currentDialog=null;var currentWidth=0;var currentHash=location.hash;var hashPrefix="#_";var pageHistory=[];var newPageCount=0;var animating=false;window.iui={showPage:function(page,backwards)
{if(page)
{if(currentDialog)
{currentDialog.removeAttribute("selected");currentDialog=null;}
if(hasClass(page,"dialog"))
showDialog(page);else
{var fromPage=currentPage;currentPage=page;if(!page.id)
page.id="__"+(++newPageCount)+"__";location.href=currentHash=hashPrefix+page.id;pageHistory.push(page.id);if(fromPage)
setTimeout(slidePages,0,fromPage,page,backwards);else
updatePage(page,fromPage);}}},showPageById:function(pageId)
{var page=$(pageId);if(page)
{var index=pageHistory.indexOf(pageId);var backwards=index!=-1;if(backwards)
pageHistory.splice(index,pageHistory.length);iui.showPage(page,backwards);}},showPageByHref:function(href,args,method,replace,cb)
{var req=new XMLHttpRequest();req.onerror=function()
{if(cb)
cb(false);};req.onreadystatechange=function()
{if(req.readyState==4)
{jsonObj=eval("("+req.responseText+")");text=TrimPath.processDOMTemplate(jsonObj.template,jsonObj.data)
if(replace)
replaceElementWithSource(replace,text);else
{var frag=document.createElement("div");frag.innerHTML=text;iui.insertPages(frag.childNodes);}
if(cb)
setTimeout(cb,1000,true);}};if(args)
{req.open(method||"GET",href,true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");req.setRequestHeader("Content-Length",args.length);req.send(args.join("&"));}
else
{req.open(method||"GET",href,true);req.send(null);}},insertPages:function(nodes)
{var targetPage;for(var i=0;i<nodes.length;++i)
{var child=nodes[i];if(child.nodeType==1)
{if(!child.id)
child.id="__"+(++newPageCount)+"__";var clone=$(child.id);if(clone)
clone.parentNode.replaceChild(child,clone);else
document.body.appendChild(child);if(child.getAttribute("selected")=="true"||!targetPage)
targetPage=child;--i;}}
if(targetPage)
iui.showPage(targetPage);},getSelectedPage:function()
{for(var child=document.body.firstChild;child;child=child.nextSibling)
{if(child.nodeType==1&&child.getAttribute("selected")=="true")
return child;}}};addEventListener("load",function(event)
{var page=iui.getSelectedPage();if(page)
iui.showPage(page);setTimeout(preloadImages,0);setTimeout(checkOrientAndLocation,0);setInterval(checkOrientAndLocation,300);},false);addEventListener("click",function(event)
{var link=findParent(event.target,"a");if(link)
{function unselect(){link.removeAttribute("selected");}
if(link.href&&link.hash&&link.hash!="#")
{link.setAttribute("selected","true");iui.showPage($(link.hash.substr(1)));setTimeout(unselect,500);}
else if(link==$("backButton"))
history.back();else if(link.getAttribute("type")=="submit")
submitForm(findParent(link,"form"));else if(link.getAttribute("type")=="cancel")
cancelDialog(findParent(link,"form"));else if(link.target=="_replace")
{link.setAttribute("selected","progress");iui.showPageByHref(link.href,null,null,link,unselect);}
else if(!link.target)
{link.setAttribute("selected","progress");iui.showPageByHref(link.href,null,null,null,unselect);}
else
return;event.preventDefault();}},true);addEventListener("click",function(event)
{var div=findParent(event.target,"div");if(div&&hasClass(div,"toggle"))
{div.setAttribute("toggled",div.getAttribute("toggled")!="true");event.preventDefault();}},true);function checkOrientAndLocation()
{if(animating)
return;if(window.innerWidth!=currentWidth)
{currentWidth=window.innerWidth;var orient=currentWidth==320?"profile":"landscape";document.body.setAttribute("orient",orient);setTimeout(scrollTo,100,0,1);}
if(location.hash!=currentHash)
{var pageId=location.hash.substr(hashPrefix.length)
iui.showPageById(pageId);}}
function showDialog(page)
{currentDialog=page;page.setAttribute("selected","true");if(hasClass(page,"dialog")&&!page.target)
showForm(page);}
function showForm(form)
{form.onsubmit=function(event)
{event.preventDefault();submitForm(form);};form.onclick=function(event)
{if(event.target==form&&hasClass(form,"dialog"))
cancelDialog(form);};}
function cancelDialog(form)
{form.removeAttribute("selected");}
function updatePage(page,fromPage)
{var pageTitle=$("pageTitle");if(page.title)
pageTitle.innerHTML=page.title;if(page.localName.toLowerCase()=="form"&&!page.target)
showForm(page);var backButton=$("backButton");if(backButton)
{var prevPage=$(pageHistory[pageHistory.length-2]);if(prevPage&&!page.getAttribute("hideBackButton"))
{backButton.style.display="inline";backButton.innerHTML=prevPage.title?prevPage.title:"Back";}
else
backButton.style.display="none";}
animating=false;}
function slidePages(fromPage,toPage,backwards)
{animating=true;var titlebar=findParent($("pageTitle"),"div");var titlebar2=titlebar.cloneNode(true);titlebar2.style.position="absolute";titlebar2.style.top="0";titlebar2.style.width=titlebar.offsetWidth+"px";titlebar2.style.left="100%";document.body.appendChild(titlebar2);if(backwards)
{var from2=fromPage.cloneNode(true);from2.style.left="100%";document.body.appendChild(from2);scrollTo(320,1);}
setTimeout(function()
{if(backwards)
{fromPage.style.left="100%";document.body.removeChild(from2);}
toPage.style.left=backwards?"0":"100%";toPage.setAttribute("selected","true");scrollTo(0,1);animating=true;var percent=100;var timer=setInterval(slide,slideInterval);function slide()
{percent-=slideSpeed;if(percent<=0)
{percent=0;clearInterval(timer);if(!hasClass(toPage,"dialog"))
fromPage.removeAttribute("selected");}
var x=backwards?(320+(((percent-100)/100)*320)):((100-percent)/100)*320;scrollTo(x,1);if(percent==0)
{if(!backwards)
{var page2=toPage.cloneNode(true);page2.style.left="0";document.body.appendChild(page2);setTimeout(function(){scrollTo(0,1);toPage.style.left="0";document.body.removeChild(page2);},0);}
setTimeout(function(){document.body.removeChild(titlebar2);setTimeout(updatePage,0,toPage,fromPage);},0);}}},0);}
function preloadImages()
{var preloader=document.createElement("div");preloader.id="preloader";document.body.appendChild(preloader);}
function submitForm(form)
{iui.showPageByHref(form.action||"POST",encodeForm(form),form.method);}
function encodeForm(form)
{function encode(inputs)
{for(var i=0;i<inputs.length;++i)
{if(inputs[i].name)
args.push(inputs[i].name+"="+escape(inputs[i].value));}}
var args=[];encode(form.getElementsByTagName("input"));encode(form.getElementsByTagName("select"));return args;}
function findParent(node,localName)
{while(node&&(node.nodeType!=1||node.localName.toLowerCase()!=localName))
node=node.parentNode;return node;}
function hasClass(self,name)
{var re=new RegExp("(^|\\s)"+name+"($|\\s)");return re.exec(self.getAttribute("class"))!=null;}
function replaceElementWithSource(replace,source)
{var page=replace.parentNode;var parent=replace;while(page.parentNode!=document.body)
{page=page.parentNode;parent=parent.parentNode;}
var frag=document.createElement(parent.localName);frag.innerHTML=source;page.removeChild(parent);while(frag.firstChild)
page.appendChild(frag.firstChild);}
function $(id){return document.getElementById(id);}
function ddd(){console.log.apply(console,arguments);}})();