var $j=jQuery.noConflict(); 
var i, hashTab, hash, t, a, b, newHash, clickState, hashState, changeState, currentState;
var imageIndex = [];
$j.extend($j.expr[':'], {
	'containsi': function(elem, i, match, array) {
		return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
	}
});
var getHash = function() {
	x = location.hash;
    i = x.lastIndexOf(".");
	if (x.length) {
        if (i!=-1 && x.length >4) {
            i++;
            hashTab = parseInt(x.slice(i), 10)-1;
            i--;
            hash = x.slice(1,i).replace(/[-]/g, " ").toLowerCase();
        } else if (x.length >4){
            hashTab=-1;
            i--;
            hash = x.slice(1).replace(/[-]/g, " ").toLowerCase();
            } else {
                i++;
                hashTab = parseInt(x.slice(i), 10)-1;
                hash = -1;
            }
    } else {
    	hashTab=-1;
        hash=-1;
    }
};
var getCurrentState = function(){    
    b=$j("ul.tabbs li.active").index();
    t=$j("td.tabicon-active, td.tabicon").index(".tabicon-active");
    a=$j(".accordion-toggle, .accordion-toggle-after").index(".accordion-toggle-after");
    currentState=[b,t,a];
};
var getHashState = function(){
	getHash();
	b=hashTab;
    if ($j("td.tabicon, td.tabicon-active").length) {
        t=$j("td.tabicon, td.tabicon-active").index($j(".tabicon:containsi('"+ hash +"'),.tabicon-active:containsi('"+ hash +"')"));
    } else {
    	t= -1;
    }
    if ($j(".accordion-toggle, .accordion-toggle-after").length) {
        a=$j(".accordion-toggle, .accordion-toggle-after").index($j(".accordion-toggle:containsi('"+ hash +"'),.accordion-toggle-after:containsi('"+ hash +"')"));
    } else {
    	a= -1;
    }
    hashState=[b,t,a];
};
var stateToHash = function(z) {
	if (z[0] !=-1) {
    	b=z[0];
		b++;
		b="."+b;
    } else {
    	b="";
    }
	if (z[1]!=-1) {
    	t=$j("td.tabicon, td.tabicon-active").eq(z[1]).text().replace(/^\s+|\s+$/g,'').replace(/\s/g,"-").toLowerCase();
    } else {
    	t="";
    }
    if (z[2]!=-1) {
    	a=$j(".accordion-toggle, .accordion-toggle-after").eq(z[2]).text().replace(/^\s+|\s+$/g,'').replace(/\s/g,"-").toLowerCase();
    } else {
    	a="";
    }
    newHash = t+a+b;
};
var compareStates = function(x,z) {
    b = x[0]!=z[0];
    t = x[1]!=z[1];
    a = x[2]!=z[2];
    changeState = [b,t,a];
};
var hashUpdate = function(e) {
    if (e) {
		window.location.hash = e;
    } else {
		history.pushState({}, '', window.location.href.slice(0,window.location.href.indexOf("#")));
    }
};
var setState = function(hashState, currentState) {
    compareStates(hashState,currentState);
	var tabbs = $j("ul.tabbs li");
	var tabb =  $j("ul.tabb");
	var tabcontent = $j("div.tabcontent");
	var accordTogAft = $j(".accordion-toggle-after");
	var accordcontent = $j(".accordion-content");
    var tabiconActiveImg = $j("td.tabicon-active img");
    var tabiconAll = $j("td.tabicon img, td.tabicon-active img");
	if (changeState[0]==true){
		changeTab(tabbs,tabb,hashState[0]);
    }
	if (changeState[1]==true) {
        changeTabord(tabiconActiveImg,tabcontent,tabiconAll,hashState[1]);
		// checkChangeTab(tabbs,tabb,tabcontent,hashState[1],hashState);
    }
	if (changeState[2]==true) {
    	changeAccord(accordcontent,accordTogAft,hashState[2]);
		// if (accordcontent.eq(hashState[2]).children().hasClass("tabbed")){
			// checkChangeTab(tabbs,tabb,tabcontent,hashState[1],hashState);
		// }
    }
    currentState=hashState;
};
var setClickState = function(clickIndex,clickState,currentState) {
    var tabbs = $j("ul.tabbs li");
	var tabb =  $j("ul.tabb");
	var tabcontent = $j("div.tabcontent");
	var accordTogAft = $j(".accordion-toggle-after");
	var accordcontent = $j(".accordion-content");
    var tabiconActiveImg = $j("td.tabicon-active img");
    var tabiconAll = $j("td.tabicon img, td.tabicon-active img");
	if (clickState[0]==true && currentState[0]!=clickIndex){
    	changeTab(tabbs,tabb,clickIndex);
		currentState.splice(0,1,clickIndex);
	}
	if (clickState[1]==true) {
		if (currentState[1]!=clickIndex){
			if (accordcontent.length){
				hideAccord(accordcontent,accordTogAft);
				currentState.splice(2,1,-1);
			}
            changeTabord(tabiconActiveImg,tabcontent,tabiconAll,clickIndex);
			currentState.splice(1,1,clickIndex);
			checkChangeTab(tabbs,tabb,tabcontent,clickIndex,currentState);
        } else {
            var tabiconActiveImg = $j("td.tabicon-active img");
            hideTabord(tabiconActiveImg,tabcontent,tabbs,tabb);
			currentState.splice(0,1,-1);
			currentState.splice(1,1,-1);
        }
    }
    if (clickState[2]==true) {
		if (currentState[2]!=clickIndex){
			hideTabord(tabiconActiveImg,tabcontent);
			currentState.splice(1,1,-1);
            changeAccord(accordcontent,accordTogAft,clickIndex);
			currentState.splice(2,1,clickIndex);
			if (accordcontent.eq(clickIndex).children().hasClass("tabbed")){
				checkChangeTab(tabbs,tabb,accordcontent,clickIndex,currentState);
			}
		} else {
			hideAccord(accordcontent,accordTogAft);
			currentState.splice(2,1,-1);
			if (accordcontent.eq(clickIndex).children().hasClass("tabbed")){
				hideTab(tabbs,tabb);
				currentState.splice(0,1,-1);
			}
        }
    }
};
var changeTab = function(tabbs,tabb,clickIndex){
	if (clickIndex==-1){clickIndex=0}
	tabbs.removeClass();
	tabbs.eq(clickIndex).addClass("active");
	tabb.children("li").hide().removeClass();
	tabb.children("li").eq(clickIndex).addClass("active").show();
};
var hideTab = function(tabbs,tabb){
	tabbs.removeClass();
	tabb.children("li").removeClass().hide();
};
var changeAccord = function(accordcontent,accordTogAft,clickIndex){
	if (clickIndex!=-1){
		accordcontent.slideUp(200);
		accordTogAft.removeClass().addClass("accordion-toggle");
		accordcontent.eq(clickIndex).delay(300).slideDown(700)
		$j(".accordion-toggle").eq(clickIndex).removeClass().addClass("accordion-toggle-after");
	} else {
		hideAccord(accordcontent,accordTogAft);
	}
};
var changeTabord = function(tabiconActiveImg,tabcontent,tabiconAll,clickIndex){
	if (clickIndex!=-1){
		hideTabord(tabiconActiveImg,tabcontent);
		tabiconAll.eq(clickIndex).attr("src",tabiconAll.eq(clickIndex).attr("src").slice(0,-4)+"_active.png");
		$j("td.tabicon").eq(clickIndex).removeClass().addClass("tabicon-active");
		tabcontent.eq(clickIndex).delay(300).slideDown(700);
	} else {
		hideTabord(tabiconActiveImg,tabcontent);
	}
};
var checkChangeTab = function(tabbs,tabb,tabcontent,clickIndex,currentState){
	if (tabcontent.eq(clickIndex).children().hasClass("tabbed")){
			hideTab(tabbs,tabb);
			tabcontent.eq(clickIndex).children("div.tabbed").children("ul.tabbs").children(":first-child").addClass("active");
			i=tabbs.index($j("ul.tabbs li.active"));
			tabb.children("li").eq(i).addClass("active").show();
			currentState.splice(0,1,i);
		} else if (tabbs.length){
			hideTab(tabbs,tabb);
			currentState.splice(0,1,-1);
		}
};
var hideAccord = function(accordcontent,accordTogAft){
		accordcontent.slideUp(300);
		accordTogAft.removeClass().addClass("accordion-toggle");
};
var hideTabord = function(tabiconActiveImg,tabcontent){
	if (tabiconActiveImg.length){
		tabiconActiveImg.attr("src",tabiconActiveImg.attr("src").slice(0,-11)+".png");
		tabiconActiveImg.parent().removeClass().addClass("tabicon");
		tabcontent.slideUp(300);
    }
};
var getClickState = function(clicked){
	if (clicked.is("li")){
        clickIndex=$j("ul.tabbs li").index(clicked);
        clickState=[true,false,false];
    } else if (clicked.hasClass("tabicon") || clicked.hasClass("tabicon-active")){
        clickIndex=$j("td.tabicon-active, td.tabicon").index(clicked);
        clickState=[false,true,false];
    } else {
        clickIndex = $j(".accordion-toggle, .accordion-toggle-after").index(clicked);
        clickState=[false,false,true];
    }
};
var setAccordion = function(accord){
	$j.each(accord, function(i,x){
		$j(x).children("h4").addClass("accordion-toggle");
		$j(x).children("div").addClass("accordion-content");
	});
};
var setTabbed = function(tabbed){
	$j.each(tabbed, function(i,x){
		$j(x).children("ul:even").addClass("tabbs");
		$j(x).children("ul:odd").addClass("tabb");
	});
};
var setTabord = function(tabord){
	$j.each(tabord, function(i,x){
		$j(x).children("table").first().find("td").addClass("tabicon");
		$j(x).children("div").addClass("tabcontent");
	});
};
var setSlider = function(slider){
	slider.children(":even").addClass("bottomImage");
	slider.children(":odd").addClass("topImage").width("50%").height("100%");
};
var setInitialState = function(){
	getHashState();
	getCurrentState();
	if (hashState[0]+hashState[1]+hashState[2]==-3) {
		setState([0,-1,-1], currentState);
	} else {
		setState(hashState, currentState);
	}
};
var setSlideshow = function(x){
    $j(x).each(function(i,y){
        $j(y).children(":even").hide().addClass("slideshow-image").eq(0).addClass("active").show();
        $j(y).children(":odd").hide().addClass("slideshow-caption").eq(0).addClass("active").show();
        imageIndex.push(0);
    });
};
var setLayout = function(){
	var x;
	x = $j("div.tabord");
	if (x){
		setTabord(x);
	}
	x = $j("div.accordion");
	if (x){
		setAccordion(x);
	}
	x = $j("div.tabbed");
	if (x){
		setTabbed(x);
	}
	x = $j("div.read");
	if (x){
		setReadMore(x);
	}
	x = $j("div.slidebar");
	if (x){
		setSlider(x);
	}
	x = $j("div.slideshow");
	if (x){
		setSlideshow(x);
	}
	
};
var setReadMore = function(read){
	$j.each(read, function(i,x){
		$j(x).append("<p class='readless'><span style='color:#996007'>[Read less]</span></p>");
		$j(x).children().not(":first-child").css("display", "none");
		$j(x).children(":first-child").addClass("readmore-first").after("<p class='readmore'><span style='color:#996007'>[Read more]</span></p>");
	});
};
var readLess = function(read){
	read.children(":first-child").addClass("readmore-first");
	read.children().not(":nth-child(1)").not(":nth-child(2)").slideUp(200);
	read.children(1).css("display", "block"); 
};
var readMore = function(read){
	read.prev().removeClass();
	read.siblings().slideDown(200);
	read.css("display", "none");
};
var changeSlide = function(i,x){
	var slideImage = $j(x).children(":even");
    var slideCaption = $j(x).children(":odd");
    n=slideImage.length;
    k=imageIndex[i];
    j=k+1;
    if (j==n){ k=n-1; j=0;}
    slideImage.eq(k).css("z-index","0").removeClass("active").fadeOut(1000);
    slideImage.eq(j).css("z-index","999").addClass("active").fadeIn(1000);
    slideCaption.eq(k).css("z-index","0").removeClass("active").fadeOut(1000);
    slideCaption.eq(j).css("z-index","999").addClass("active").fadeIn(1000);
    imageIndex.splice(i,1,j);
};
$j(document).ready(function(){
	setLayout();
	setInitialState();
	$j(window).on('hashchange', function() {
		getHashState();
		setState(hashState, currentState);
    });
    $j("td.tabicon, td.tabicon-active, ul.tabbs li, .accordion-toggle, .accordion-toggle-after").click(function(){
		getClickState($j(this));
		setClickState(clickIndex, clickState, currentState);
		stateToHash(currentState);
		hashUpdate(newHash);
    });
	$j("p.readmore, p.readless").click(function(){
		if ($j(this).hasClass("readmore")){
			readMore($j(this));
		} else {
			readLess($j(this).parent());
		}
	});
	$j("div.slidebar").on("touchmove touchstart touchend mousemove", function (e) {
        var offset = $j(this).offset();
		var height = $j(this).height();
        var iTopWidth = (e.pageX - offset.left);
        $j(this).find(".topImage").width(iTopWidth).height(height);
    });
	setInterval (function(){
    $j("div.slideshow").each(function(i,x){
        changeSlide(i,x);
    });   
    }, 5000);
});