﻿function $id(id) {
    return document.getElementById(id);
};
      
String.prototype.trim = function() {
    return this.replace(/(\s*$)|(^\s*)/g, "");
}


function slider(containerId) {
	var obj_div = document.getElementById(containerId);
	var pictures = obj_div.getElementsByTagName("img");
	var items = obj_div.getElementsByTagName("li");
	var picture_index = 1;
	var interval = 5000;
	var clearIntervalFn;
				
	function show(index) {
	    if (pictures[index].style.display == "block") {
	        return;
	    }
		for (var i = 0; i < pictures.length; i += 1) {
		    removeClass(items[i], "slide_current");
			pictures[i].style.display = "none";
		}
		addClass(items[index], "slide_current");
		//setOpacity(pictures[index], 0);
		pictures[index].style.display = "block";
		setAlpha(pictures[index], 1);
	};
	
	function auto() {
		show(picture_index);
		picture_index += 1;
		if (picture_index > pictures.length - 1) {
			picture_index = 0;
		}
	};
	
	this.setSlideInterval = function(ms) {
		interval = ms;
	};
	
	this.showPicture = function(index) {
		picture_index = parseInt(index, 10);
		show(picture_index);
		if (picture_index == pictures.length - 1) {
		    picture_index = 0;
		} else {
		    picture_index += 1;
		}
	};
				
	this.run = function() {
		clearIntervalFn = setInterval(auto, interval);
	};
	
	this.stop = function() {
		clearInterval(clearIntervalFn);
	};
}


function indexOfChildren(obj) {
	var temp = obj.parentNode.firstChild;
	var index = 0;
	while (temp !== obj) {
		index += temp.nodeType == 1? 1: 0;
		temp = temp.nextSibling;
	}
	return index;
}


function addClass(ele, names) {
    if (ele && names && typeof names === "string") {
        if (!ele.className) {
            ele.className = names;
        } else {
            var classNames = names.split(" ");
            var eClass = " " + ele.className + " ";
            var className = ele.className;
            for (var i = 0; i < classNames.length; i += 1) {
                if (eClass.indexOf(" " + classNames[i] + " ") < 0) {
                    className += " " + classNames[i];
                }
            }
            ele.className = className;
        }
    }
}

function removeClass(ele, names) {
    if(ele && names && typeof names === "string") {
        if (ele.className) {
            var classNames = names.split(" ");
            var className = " " + ele.className + " ";
            for (var i = 0; i < classNames.length; i += 1) {
                className = className.replace(" " + classNames[i] + " ", " ");
            }
            ele.className = className.trim();
        }
    }
}


var setOpacity = function(ele, rate) {
    if (ele.filters) {
        rate *= 100;
        ele.style.filter = "alpha(opacity=" + rate + ")";
    } else {
        ele.style.opacity = rate.toString();
    }
}

var setAlpha = function(ele, rate) {
    var start = 0.3;
    var i = 0, j = 10, t = 50;
    var k = (rate - start) / j, rate = start + k;
    setOpacity(ele, start);
    var intervalFn = setInterval(function() {
        if (i < j) {
            setOpacity(ele, rate);
            i += 1;
            rate += k;
        } else {
            clearInterval(intervalFn);
        }
    }, t);
}

