/**
 * @author Marc Luria
 */


function Gaylord(){
	this.imgsrcs = new Array();
	this.alts	 = new Array();
	this.offers  = new Array();
}


var gaylord = new Gaylord();
 
var fps = 10;

function getElementByClassNameId(classname, tag, elemid, num){
	var elem = document.getElementById(elemid);
	return getElementByClassName(classname, tag, elem, num);
}


function getElementsByClassName(classname, tag, elemid){
	var elem = document.getElementById(elemid);
	var elems = elem.getElementsByTagName(tag);
	var list = new Array();
	for (var i = 0; i < elems.length; i++) {
		var ele = elems[i];
		if (ele.className == classname) {
			list.push(ele);
		}
	} 
	return list;
}



function getElementByClassName(classname, tag, elem,num){
	var elems = elem.getElementsByTagName(tag);
	var counter = 0;
	for (var i = 0; i < elems.length; i++) {
		var ele = elems[i];
		if (ele.className == classname) {
			if (counter == num) 
				return ele;
			counter++;
		}
	} 
	return null;
}

function getfirstimage() {
//	var images = document.getElementsByClassName("main_image","div","wrapper2");
//	var firstimage = images[0];
   return getElementByClassNameId("main_image","div","wrapper2",0);
}

function getinfobox() {
	var firstimage = getfirstimage();
//	var infoboxes = firstimage.getElementsByClassName("trans_box2");
    return 	getElementByClassName("trans_box2","div",firstimage,firstimage.imagenumber);
//	return infoboxes[firstimage.imagenumber];	
}

function creatediv(id,elem) {
	var newdiv = document.createElement('div');
	newdiv.id = id;
	elem.appendChild(newdiv);
	return newdiv;
}



function createimageref(parentdiv,imagesrc,alt,num) {
	//             	 <a href="#"><img src="images/img_icon1.gif" alt="img_icon1.gif"/></a>
	
	var newref = document.createElement('a');
	newref.href = "#";
	imagesrc = imagesrc.textBefore(".jpg");
	newref.innerHTML =  "<img src='" + imagesrc +  "-icon.gif' alt='" + alt + "'/>";
	parentdiv.appendChild(newref);
	newref.onmousedown = changeimage;
	newref.imagenumber = num;
	return newref;
}

function changeimage() {
	var firstimage = getfirstimage();
	var imgs = firstimage.getElementsByTagName("img");
	var img = imgs[0];
	var num = this.imagenumber;
	img.src = gaylord.imgsrcs[num];
	img.alt = gaylord.alts[num];
	var infobox = getinfobox();
	infobox.style.display = "none";
	firstimage.imagenumber = num;	// this changes the current infobox
	infobox = getinfobox();
	infobox.style.display = "block";
	infobox.style.top = "-48px";
	setupslider();
}

function doimages(){
	var images = getElementsByClassName("main_image","div","wrapper2");
    var firstimage = getfirstimage();
    firstimage.imagenumber = 0;
    var buttons = creatediv("buttons_cont", firstimage);
    // var rightbutton = creatediv("right_button", firstimage);
    // rightbutton.innerHTML = buttonHTML;
	//             <a  class="shev_right">&nbsp;</a>
	createa("shev_right",firstimage,"&nbsp;");
    for (var i = 0; i < images.length; i++) {
        var image = images[i];
        var imgs = image.getElementsByTagName("img");
        var img = imgs[0];
        gaylord.imgsrcs.push(img.src);
        createimageref(buttons, img.src, img.alt, i);
		/*var infoboxes = image.getElementsByClassName("trans_box2");
		var infobox = infoboxes[0]; */
		
		var infobox = getElementByClassName("trans_box2","div",image,0);
        var h1elem = infobox.getElementsByTagName("h1")[0];
		//             	 <a  href="#"class="close">&nbsp;</a>
		var closeref = createa("close",infobox,"&nbsp","#",h1elem);
		closeref.onmousedown = closeinfobox;
		var openref = createa("open",infobox,"&nbsp;","#");
		openref.onmousedown = showinfobox;
		setFirstClass(infobox,"open","a","hidden");
		

/*      
                    <a href="#" class="open">&nbsp;</a>

   var newref = document.createElement('a');
        newref.onmousedown = closeinfobox;
        newref.className = "close";
        newref.innerHTML = "x";
        newref.href = "#";
        infobox.insertBefore(newref, h1elem); */
		
		//             <a  class="shev_right">&nbsp;</a>
		
        if (i > 0) {
            image.style.display = "none";
            img.src = "";
            firstimage.insertBefore(infobox, buttons);
            infobox.style.display = "none";
        }
		
    }
}

function createa(className,parent,text,href,before) {
	var newref = document.createElement('a');
	newref.className = className;
	newref.innerHTML = text;
	if (href != undefined) {
		newref.href = href;
	}
	if (before == undefined) {
		parent.appendChild(newref);
	}
	else {
		parent.insertBefore(newref,before);
	}
	return newref;
}



function fade(img, time, dir)
{
  img = document.getElementById(img) ;
  var steps = time * fps;
  if (typeof img.style.opacity != 'undefined' ) {
  	    var otype = 'w3c';
  }
  else if (typeof img.filters == 'object')
  {
    otype = (img.filters.length > 0
        && typeof img.filters.alpha == 'object'
        && typeof img.filters.alpha.opacity == 'number')
        ? 'ie' : 'none';
  }
  else {otype = 'none'; }
  if (otype != 'none')
  {
    if (dir == 'out') { dofade(steps, img, 1, false, otype) ; }
    else { dofade(steps, img, 0, true, otype) ; }
  }
}

function dofade(steps, img, value, targetvisibility, otype)
{
  value += (targetvisibility ? 1 : -1) / steps;
  if (targetvisibility ? value > 1 : value < 0)
      value = targetvisibility ? 1 : 0;
  setfade(img, value, otype) ;
  if (targetvisibility ? value < 1 : value > 0)
  {
    setTimeout(function()
    {
      dofade(steps, img, value, targetvisibility, otype) ;
    }, 100 / fps) ;
  }
}

function setfade(img, value, otype)
{
  switch(otype)
  {
    case 'ie':
      img.filters.alpha.opacity = value * 100; break;
	 default:
      img.style.opacity = (value == 1 ? 0.9999999 : value); break;
  } 
}

function addLoadListener(fn){
    if(typeof window.addEventListener !='undefined')    window.addEventListener('load',fn,false);
    else if(typeof document.addEventListener !='undefined')    document.addEventListener('load',fn,false);
    else if(typeof window.attachEvent !='undefined')    window.attachEvent('onload',fn);
    else{
        var oldfn=window.onload
        if(typeof window.onload !='function')    window.onload=fn;
        else    window.onload=function(){oldfn();fn();}
    }
}

function setupslider() {
		setTimeout(function(){
		  showoffer(22,119,-48);  
		}, 1000);
}

addLoadListener(function()
{
//  fade('before', 5, 'out') ;
//  fade('after', 5, 'in') ;
	doimages();
	setupslider();
}) ;

function gettop(div) {
	var start = div.style.top;
	start = start.textBefore("px");
	return start;	
}

function closeinfobox() {
	showoffer(11,-48,119,showinfoboxheader);
}

function showinfobox() {
	showoffer(5,77,119,showinfoboxafter);
}

function showinfoboxafter() {
    var infobox = getinfobox();
    setFirstTag(infobox, "h2", "block");
    setFirstTag(infobox, "p", "block");
    setFirstClass(infobox, "learn", "a","block");
    setFirstClass(infobox, "close", "a","block");
	setFirstClass(infobox,"open","a","hidden");
	slide(infobox,22,119,-48);
}

function showinfoboxheader(){
    /*
     <h1 style="visibility: visible;">
     <h2 style="visibility: visible;">
     <p>We have specials this weekend that could put you in this luxurious atrium. Come to the Palms with someone you love. </p>
     <a class="learn" href="#">Learn More</a>
     <a class="open" href="#"> </a>
     */
    var infobox = getinfobox();
    setFirstTag(infobox, "h2", "none");
    setFirstTag(infobox, "p", "none");
    setFirstClass(infobox, "learn", "a","none");
    setFirstClass(infobox, "close", "a","none");
	setFirstClass(infobox,"open","a","visible");
	slide(infobox,6,119,78);
 }

function getFirstTag(parent,tag) {
	var elems = parent.getElementsByTagName(tag);
	return elems[0];
}

function getFirstClass(parent,classname,tag) {
    return getElementByClassName(classname,tag,parent,0);
}

function setstyle(elem,value) {
	switch (value) {
		case "none": 	elem.style.display 	  = "none"; 	break;
		case "block": 	elem.style.display 	  = "block";	break;
		case "visible": elem.style.visibility = "visible"; 	break;
		case "hidden": 	elem.style.visibility = "hidden"; 	break;
	}
}

function setFirstTag(parent,tag,value) {
	var elem = getFirstTag(parent,tag);
	setstyle(elem,value);
}

function setFirstClass(parent,classname,tag,value) {
	var elem = getFirstClass(parent,classname,tag);
	setstyle(elem,value);
}


function showoffer(steps, end, start, callafter){
	var infobox = getinfobox();
	slide(infobox, steps, end, start, callafter);
}

function	slide(div, steps, end, start, callafter) {
	if (start != undefined) {
		div.style.top = start + "px";
	}
	var start = gettop(div);
	doslide(div,Math.ceil((end-start)/steps),end,callafter);
}

function doslide(div, amount, end,callafter){
	var current = Number(gettop(div));
	if (amount > 0 &&  current + amount >= end || amount < 0 &&  current + amount <= end) {
		div.style.top = end + "px";
		if (doslide.interval != undefined) {
			clearInterval(doslide.interval);
			doslide.interval = undefined;
		}
		if (callafter != undefined) {
			callafter.apply();
		}
	}
	else {
		var newamt = 0 + amount - - current;
		div.style.top = newamt + "px";
		if (doslide.interval == undefined) {
			doslide.interval = setInterval(function(){
				doslide(div, amount, end,callafter);
			}, 40);
		}
	}
}

String.prototype.textAfter = function(text){
    var length = text.length;
    if (length == 0) 
        return "";
    var pos = this.indexOf(text);
    if (pos == -1) 
        return "";
    if (pos + length >= this.length) 
        return "";
    var rem = this.substring(pos + length);
    return rem;
}

String.prototype.textBefore = function(text){
    var length = text.length;
    if (length == 0) 
        return "";
    var pos = this.indexOf(text);
    if (pos <= 0) 
        return "";
	return this.substring(0,pos);
}
