var navigationMode="list";TRANSITIONS_DURATION=0.35;ROOT_DIRECTORY="data/";var catalog=null;var elements;var current_button_width=0;var current_title_x=0;var is_portrait=false;var screen_width;var active_index;var active_element=null;var currentHash=location.hash;var hashPrefix="#_";var pageHistory=[];var checkTimer;function init(){window.addEventListener("orientationchange",orientation_changed,false);orientation_changed();if(navigationMode=="page"){elements={buttons:[null,null],titles:[null,null],pages:[document.getElementById("first_page"),document.getElementById("second_page")]};elements.pages[1].style.webkitTransform=get_page_transform_for_x(screen_width)}else{elements={buttons:[document.getElementById("first_button"),document.getElementById("second_button")],titles:[document.getElementById("first_title"),document.getElementById("second_title")],pages:[document.getElementById("first_page"),document.getElementById("second_page")]};elements.buttons[0].style.webkitTransform=get_header_transform_for_x(screen_width);elements.buttons[1].style.webkitTransform=get_header_transform_for_x(screen_width);elements.buttons[0].style.display="none";elements.buttons[1].style.display="none";elements.pages[1].style.webkitTransform=get_page_transform_for_x(screen_width);var b=navigator.userAgent.indexOf("iPhone",0);var a=navigator.userAgent.indexOf("iPod",0);if((b&a)>-1){elements.buttons[0].addEventListener("touchend",go_back,false);elements.buttons[1].addEventListener("touchend",go_back,false)}else{elements.buttons[0].addEventListener("click",go_back,false);elements.buttons[1].addEventListener("click",go_back,false)}}setTimeout(preloadImages,0);elements.pages[0].addEventListener("webkitTransitionEnd",transition_ended,false);Transitions.DEFAULTS.duration=TRANSITIONS_DURATION;if(navigationMode=="xml"){catalog=get_data_in_file("data.xml",init_data_loaded)}else{active_element=(document.getElementById("Home")).cloneNode(true);if(navigationMode=="list"){current_title_x=set_title_and_get_x(0,active_element.title,current_button_width);elements.titles[0].style.webkitTransform=get_header_transform_for_x(current_title_x)}active_element.style.display="block";elements.pages[0].appendChild(active_element);active_index=0}location.href=currentHash=hashPrefix+active_element.id;pageHistory.push(active_element.id);setTimeout(hide_address_bar,500);setTimeout(checkLocation,0);checkTimer=setInterval(checkLocation,300)}function preloadImages(){var a=document.createElement("div");a.id="preloader";document.body.appendChild(a)}function init_data_loaded(a){catalog=a;current_title_x=set_title_and_get_x(0,get_name(catalog),current_button_width);elements.titles[0].style.webkitTransform=get_header_transform_for_x(current_title_x);elements.pages[0].appendChild(create_list_with_elements(get_items(catalog)));active_index=0;active_element=catalog}function get_data_in_file(d,c,b){var a=new XMLHttpRequest();a.onreadystatechange=function(){if(a.readyState==4){c(a.responseXML.documentElement,b)}};a.open("GET",ROOT_DIRECTORY+d,true);a.send()}function get_items(a){var b=[];for(var c=a.firstChild;c;c=c.nextSibling){if(c.nodeType==1){b.push(c)}}return b}function create_list_with_elements(e){var b=document.createElement("ul");for(var d=0;d<e.length;d++){var c=e[d];var a=document.createElement("li");a._index=d;a.className=c.localName;a.textContent=get_name(c);if(c.localName=="group"){a.addEventListener("touchstart",touch_started,false);a.addEventListener("touchmove",touch_moved,false);a.addEventListener("touchend",element_selected,false)}b.appendChild(a)}return b}function get_name(a){return a.getAttribute("name")}function set_button_label_and_get_width(c,a){var b=elements.buttons[c];b.textContent=a;return b.offsetWidth}var BUTTON_MARGIN_LEFT=5;var BUTTON_MARGIN_RIGHT=10;function set_title_and_get_x(f,c,h){var g=elements.titles[f];var e=screen_width-BUTTON_MARGIN_LEFT-h-(BUTTON_MARGIN_RIGHT*2);g.style.maxWidth=to_px(e);g.textContent=c;var d=g.offsetWidth;var b=BUTTON_MARGIN_LEFT+h+BUTTON_MARGIN_RIGHT;var a=(screen_width-d)/2;if(d>e||a<b){a=b}return a}var transitions_in_progress=false;var transitions_going_forward=false;function transition_to_new_element(s,j){transitions_in_progress=true;transitions_going_forward=j;var h=active_index;var q=(active_index==1)?0:1;Transitions.DEFAULTS.properties=["opacity","-webkit-transform"];if(navigationMode!="page"){elements.buttons[q].style.display="block"}elements.pages[q].style.display="block";var a=null;var o=false;var u=false;var d;var p="";var v;var t;if(navigationMode=="xml"){var i=get_items(s);a=create_list_with_elements(i);s=i[0].parentNode;o=(!j||active_element!==catalog);u=(j||s!==catalog);d=(s!==catalog)?get_name(s.parentNode):"";p=(j)?get_name(active_element):d;v=set_button_label_and_get_width(q,p);t=set_title_and_get_x(q,get_name(s),(u)?v:0)}else{if(navigationMode=="list"){o=(!j||active_element.id!="Home");u=(j||s.id!="Home");d=(s.id!="Home")?s.title:"";if(j){p=active_element.title}else{var k=0;k=pageHistory.length-1;var f=document.getElementById(pageHistory[k]);if(f){p=f.title}}v=set_button_label_and_get_width(q,p);t=set_title_and_get_x(q,s.title,(u)?v:0)}else{v=0;t=0}}var w=new Transitions();if(navigationMode!="page"){var n=(j)?current_title_x:(-v-BUTTON_MARGIN_LEFT);if(u){w.add({element:elements.buttons[q],from:[0,get_header_transform_for_x(n)],to:[1,get_header_transform_for_x(BUTTON_MARGIN_LEFT)]})}var c=(j)?(-current_button_width-BUTTON_MARGIN_LEFT):t;if(o){w.add({element:elements.buttons[h],to:[0,get_header_transform_for_x(c)]})}var g=(j)?screen_width:BUTTON_MARGIN_LEFT;w.add({element:elements.titles[q],from:[0,get_header_transform_for_x(g)],to:[1,get_header_transform_for_x(t)]});var m=(j)?BUTTON_MARGIN_LEFT:screen_width;w.add({element:elements.titles[h],to:[0,get_header_transform_for_x(m)]})}var l=0;var r=(j)?-screen_width:screen_width;var b=(j)?screen_width:-screen_width;var e=0;Transitions.DEFAULTS.properties=["-webkit-transform"];if(navigationMode=="page"){Transitions.DEFAULTS.properties=["opacity","-webkit-transform"];w.add({element:elements.pages[h],from:[1,get_page_transform_for_x(0)],to:[0,get_page_transform_for_x(0)]});w.add({element:elements.pages[q],from:[0,get_page_transform_for_x(0)],to:[1,get_page_transform_for_x(0)]});Transitions.DEFAULTS.properties=["-webkit-transform"];w.add({element:elements.pages[h],from:[get_page_transform_for_x(l)],to:[get_page_transform_for_x(r)]})}else{w.add({element:elements.pages[h],from:[get_page_transform_for_x(l)],to:[get_page_transform_for_x(r)]});w.add({element:elements.pages[q],from:[get_page_transform_for_x(b)],to:[get_page_transform_for_x(e)]})}if(navigationMode=="xml"){elements.pages[q].textContent="";elements.pages[q].appendChild(a)}else{elements.pages[q].textContent="";elements.pages[q].appendChild(s.cloneNode(true))}current_button_width=v;current_title_x=t;location.href=currentHash=hashPrefix+s.id;pageHistory.push(s.id);active_index=q;active_element=s;clearInterval(checkTimer);w.apply()}function transition_ended(b){transitions_in_progress=false;var a=(active_index==1)?0:1;if(navigationMode!="page"){if(active_element.id=="Home"){elements.buttons[active_index].style.display="none"}elements.buttons[a].style.display="none"}elements.pages[a].style.display="none";checkTimer=setInterval(checkLocation,300)}function listTouchHandler(c){var b=findParent(c.target,"a");if(b){function a(){b.removeAttribute("selected")}setTimeout(hide_address_bar,0);if(b.href&&b.hash&&b.hash!="#"){b.setAttribute("selected","true");var d=document.getElementById(b.hash.substr(1)).cloneNode(true);d.style.display="block";transition_to_new_element(d,true);setTimeout(a,500)}else{if(!b.target){location.href=b.href}else{return}}c.preventDefault()}}function element_selected(b){if(moved_after_touch||transitions_in_progress){return}var a=get_items(active_element)[b.currentTarget._index];if(a.childNodes.length==0){get_data_in_file(a.getAttribute("href"),element_selected_data_loaded,[a,b])}else{b.preventDefault();transition_to_new_element(a,true)}}function element_selected_data_loaded(c,d){var a=d[0];new_element=catalog.ownerDocument.importNode(c,true);a.parentNode.replaceChild(new_element,a);var b=d[1];b.preventDefault();transition_to_new_element(new_element,true)}function go_back(){if(transitions_in_progress){return}if(navigationMode=="xml"){event.preventDefault();transition_to_new_element(active_element.parentNode,false)}else{history.back()}}var moved_after_touch=false;function touch_started(a){moved_after_touch=false}function touch_moved(a){moved_after_touch=true}function orientation_changed(){is_portrait=(window.orientation==0||window.orientation==null);document.body.className=is_portrait?"portrait":"landscape";screen_width=is_portrait?320:480;if(active_element!=null){var b=(active_index==0)?1:0;var a=(active_element.id!="Home");if(navigationMode!="page"){if(!a){elements.buttons[active_index].style.webkitTransitionProperty="none";elements.buttons[active_index].style.webkitTransform=get_header_transform_for_x(screen_width)}else{current_button_width=elements.buttons[active_index].offsetWidth}elements.buttons[b].style.webkitTransitionProperty="none";elements.buttons[b].style.webkitTransform=get_header_transform_for_x(screen_width);current_title_x=set_title_and_get_x(active_index,elements.titles[active_index].textContent,current_button_width);elements.titles[active_index].style.webkitTransitionProperty="none";elements.titles[active_index].style.webkitTransform=get_header_transform_for_x(current_title_x)}elements.pages[b].style.webkitTransitionProperty="none";elements.pages[b].style.webkitTransform=get_page_transform_for_x(screen_width)}window.setTimeout(function(){window.scrollTo(0,1)},0)}function checkLocation(){if(location.hash!=currentHash){var b=location.hash.substr(hashPrefix.length);var d=document.getElementById(b);if(d){var c=pageHistory.indexOf(b);var a=(c==-1);if(!a){pageHistory.splice(c,pageHistory.length)}d=d.cloneNode(true);transition_to_new_element(d,a)}}}function hide_address_bar(){window.scrollTo(0,1)}function get_header_transform_for_x(a){return"translate("+a+"px, 5px)"}function get_page_transform_for_x(a){return"translateX("+a+"px)"}function get_page_transform_for_xy(a,b){return"translate("+a+"px,"+b+"px)"}function to_px(a){return a+"px"}function findParent(b,a){while(b&&(b.nodeType!=1||b.localName.toLowerCase()!=a)){b=b.parentNode}return b}window.addEventListener("load",init,false);window.addEventListener("click",listTouchHandler,true);