window.addEvent('load', function() {

	var logBoxTar = $('loginBox');
	var logBtnTar = $$('.login');
	
	
	if (logBtnTar) {
		for (n = 0; n < logBtnTar.length; n++){
			var t = logBtnTar[n];
			$(t).addEvent('click', function(){
				var tTop = this.getTop();
				var tLeft = this.getLeft();
				if (tTop < 400) { 
					tTop = tTop + 130;
					tLeft = tLeft - 195;
				}
				logBoxTar.setStyle('display', 'block');
				logBoxTar.setStyle('left', tLeft);
				logBoxTar.setStyle('top', tTop);
			});
		}
		makeClosers();
	}

	/* general popup placer */
	function getProjectPopup(tVar, pid){
    	xhReq.onreadystatechange = function() {
      		if (xhReq.readyState == 4) {
        		onShowproject(xhReq.responseText, xhReq, tVar);
      		}
    	}
		xhReq.open("GET", "/node/"+pid+"/popup", true);
		xhReq.send(null);
    	return xhReq;
	}
	
	function onShowproject(serverResponse, xhReq, tVar){
    	if (xhReq.readyState != 4)  { return; }
    	var Cell = document.getElementById("projectPopups");
    	Cell.innerHTML=serverResponse;
    	var pID = "projectPopups";
    	popMagic(tVar,pID,1);
	}


	function popMagic(t,c,p){
		makeClosers();
		var t = $(t);
		var c = $(c);
		var tTop = t.getTop();
		var tLeft = t.getLeft();
		c.setStyle('display', 'block');
		if(!p){	
			c.setStyle('left', tLeft-50);
			c.setStyle('top', tTop);
		} else {
			// is project popup
			c.setStyle('top', tTop+24);
			c.setStyle('left', tLeft);
			setPopStyle(c,t);
		}
		makeStars(); // this is a test to fix popup stars
	}
	
	function setPopStyle(c,t){
		var fade = new Fx.Style(c, 'opacity', {wait:false});
		fade.set(0);
		fade.start(1);
		t.addEvent('mouseleave', function(){
			fade.start(0);
		});

		c.addEvent('mouseleave', function(){
			fade.start(0);
		});
		
		c.addEvent('mouseenter', function(){
			fade.stop();
			fade.set(1);
		});
		
		$('cl-proj-pop').addEvent('click', function(){
			fade.stop();
			fade.set(0);
		});
	}
	
	/* general popup closer */
	
	function makeClosers(){	
		var closeGen = $$('.closePop');
		for (n = 0; n < closeGen.length; n++){
			var t = closeGen[n];
			$(t).addEvent('click', function(){
				this.tarMC = this.getParent();
				this.tarMC.setStyle('display', 'none');
			});
		}
	}
	
	/* error popup */
	
	var popGen = $('errframe');
	
	function errorPop(titleVar,msg){
	
		// populate popup
		var titTar = popGen.getElements('h4');
		var conTar = $('errContent');
		
		titTar.setText(titleVar);
		conTar.setHTML(msg);
		
		// postion popup
		var wDiff = popGen.getStyle('width')*.5;
		var tLeft = (Window.getWidth()*.5);
		popGen.setStyle('display', 'block');
		popGen.setStyle('left', tLeft-wDiff);
		popGen.setStyle('top', Window.getScrollTop()+20);
	}
	
	/* slider infotron */
		
	function slideMachine(dirVar,itemArray,sFun,pageVar) {
		var itemShown = itemArray[5];
		var itemCount = itemArray[4];
		var itemCollection = itemArray[3];
		var prevVar = itemArray[1];
		var nextVar = itemArray[2];
				
		if ((itemShown+dirVar)>=1 && (itemShown+dirVar)<=itemCount){
			itemArray[5] = itemShown+dirVar;
			itemShown = itemArray[5];
			sFun.toElement(itemCollection[itemShown-1]);
			
			if (pageVar){
				pageVar.setText('page '+itemShown+' of '+itemCount);
			}
			
			if (itemShown == itemCount){
				nextVar.setStyle('display','none');
			} else if (itemShown == 1) {
				prevVar.setStyle('display','none');
			} else {
				prevVar.setStyle('display','block');
				nextVar.setStyle('display','block');
			}
		}
	}

	/* feature applications */	
		
	if ($('feat-wrapper')){
		var featSlider = $('feat-wrapper');
		var prevBtn = $('prevApp');
		var nextBtn = $('nextApp');
		var appItems = $('feat-apps').getChildren();
		var appCount = appItems.length;
		var randInt = $random(0,appCount-2);
		var appNum = 1;
		var appHeight = appItems[0].getStyle('height');
		var appArray = new Array(featSlider,prevBtn,nextBtn,appItems,appCount,appNum,appHeight);	
		var scrollApps = new Fx.Scroll(featSlider, {
			wait: false,
			duration: 750,
			offset: {'x': 0, 'y': 0},
			transition: Fx.Transitions.Quad.easeInOut
		});
		prevBtn.addEvent('click', function(){
			slideMachine(-1, appArray, scrollApps);
		});
		nextBtn.addEvent('click', function(){
			slideMachine(1, appArray, scrollApps);
		});
		slideMachine(randInt, appArray, scrollApps);
	}
	
	/* GET PROJECT ID */

	function getPid(pVar){
		var pAry = new Array();
		var pAry1 = new Array();
		pAry = pVar.split('/');
		pAry1 = pAry[3].split('-');
		if(isNaN(pAry1[0])){
			pID = pAry[3];
		}else{
			pID = pAry1[0];
		}
		return pID;
	}
	
	/* SMALL PROJECT POPUPS */
	
	var pLinks = $$('.p-link');
	if (pLinks[0] !==  undefined) {
		for (n = 0; n < pLinks.length; n++){
			var t = pLinks[n];
			var tmpId = "ppUp"+n;
			$(t).setProperty('id', tmpId);
			$(t).addEvent('mouseover', function(){
				var tVar = this.getProperty('id');
				var tHr = this.getProperty('href');
				tHr = getPid(tHr);
				getProjectPopup(tVar, tHr);
			});
		}
	}
	
	/* TOGGLE LINKS - ARROWS */
	
	var toggLinks = $$('.tog');
	if (toggLinks[0] !== undefined) {
		for (var n = 0; n < toggLinks.length; n++){
			var t = toggLinks[n];
			$(t).addEvent('click', function(e){
				this.toggleClass('tog-close');
				var tID = this.getParent().getParent().getParent();
				var tArray = tID.getChildren();
				var tTogg = tArray[1];
				
				if (tTogg.getStyle('display') == 'block') {
					tTogg.setStyle('display', 'none');
				} else {
					tTogg.setStyle('display', 'block');
				}
				
			});
		}		
	}
	

	
	/* SHOW / HIDE PROJECT DETAILS */
	
	
	/*if ($('app-more')) {
		var v = $('app-more');
		var s = v.getFirst();
		var t = $('app-clip');
		var f = t.getStyle('height');
		var sm = 300;
		
		t.setStyles({
		   height: sm
			});
		
		var grow = t.effects({duration: 1000, transition: Fx.Transitions.Sine.easeInOut});
	 
		v.addEvent('click', function(){
			var tst = t.getStyle('height');
			if (tst < f) {
				grow.start({'height': [tst, f]});
				s.setText('- Show Less Details');
			} else {
				grow.start({'height': [tst, sm]});
				s.setText('+ Show More Details');
			}
		});
	}*/
	
	var showDetails = $('app-more');
	
	if (showDetails) {
		var tarDetails = $('project-advanced');
		var detSlider = new Fx.Slide(tarDetails, {duration: 500});
		detSlider.hide();
		var toggVar = 0;
		showDetails.addEvent('click', function(){
			if (toggVar == 0) {
				toggVar = 1;
				detSlider.slideIn();
				showDetails.addClass('less');
			} else {
				toggVar = 0;
				detSlider.slideOut();
				showDetails.removeClass('less');
			}
		})
	}
	/*Show Description : Naresh */	
	var showDetails = $('desc-more');
	
	if (showDetails) {
		var tarDetails = $('desc-advanced');
		var detSlider = new Fx.Slide(tarDetails, {duration: 500});
		detSlider.hide();
		var toggVar = 0;
		showDetails.addEvent('click', function(){
			if (toggVar == 0) {
				toggVar = 1;
				detSlider.slideIn();
				showDetails.addClass('less');
			} else {
				toggVar = 0;
				detSlider.slideOut();
				showDetails.removeClass('less');
			}
		})
	}
	
	
	/* QUESTION WIDGET */
	
	var qTxtEntry = $('rquestiontxt');
	
	if (qTxtEntry) {
		var startTxt = "Have a question? Ask the community!";
		qTxtEntry.setProperty('value',startTxt);
		qTxtEntry.addEvent('focus', function(){
			var hank = this.getProperty('value').toString();
			if(hank == startTxt){
				this.setProperty('value',' ');
			}
		});
	}
	
	
	/* STAR RATING */
	var starRater = $$('.star');
	
	if (starRater){
		makeStars()
	} /* end if (starRater) */
	
	function makeStars(){
		starRater = $$('.star');
		starRater.each(function(element,i){
			var myStyles = ['nostar', 'onestar', 'twostar', 'threestar', 'fourstar', 'fivestar'];
			element.addEvent('mouseover', function(){
				var uid = isUserSignedIn();
				if(uid<1){
					exit;
				}
				myStyles.each(function(myStyle){
					if(element.getParent().hasClass(myStyle)){
						element.getParent().removeClass(myStyle)
					}
				});
				myStyles.each(function(myStyle, index){
					if(index == element.id){
						element.getParent().toggleClass(myStyle);
					}
				});
	
			});
			element.addEvent('click', function(){
				myStyles.each(function(myStyle, index){
					var uid = isUserSignedIn();
					if(uid<1){
						//alert("Please Sign in to OStatic to rate this.");
						exit;
					}
					if(index == element.id){
						var pAry = new Array();
				        pAry = element.getParent().id.split('-');
        				var nid = pAry[1];
						var vote = element.id;
						getStarRating(nid, vote);
						exit;
					}
				});
	
			});

		});	
	}
	
	function getStarRating(nid, vote){
		xhReq.onreadystatechange = function() {
			if (xhReq.readyState == 4) {
				onStarRating(xhReq.responseText, xhReq, nid);
			}
		}
		xhReq.open("GET", "/voting/flash/"+nid+"/"+vote, true);
		xhReq.send(null);
		return xhReq;
	}
 
	function onStarRating(serverResponse, xhReq3, tVar){
   		if (xhReq3.readyState != 4)  { return; }
		var Cell = document.getElementById('rtpid-'+tVar);
    	Cell.innerHTML=serverResponse;
	}
	
	
	
	
	/* TABS */
	

	function findTabs(){		
		var tabMenus = $$('.tab-menu');
		var tabSets = new Array();
		var tabItems = $$('.tab-items').getChildren();
		if (tabMenus){
		
			function togTabs(tSet) {
				for (var t = 0; t < tSet.length; t++) {
					tSet[t].removeClass('on');
					tabItems[0][t].removeClass('on');
				}
			}
			
			function setTabs(indx){
				var tSet = tabSets[indx];
				for (var t = 0; t < tSet.length; t++) {
					tSet[t].indx = t;
					tSet[t].addEvent('click', function(e){
						togTabs(tSet);
						this.toggleClass('on');
						tabItems[0][this.indx].toggleClass('on');
					});
				}
			}
			
			for (var n = 0; n < tabMenus.length; n++){
				var tmp = tabMenus[n];
				var tt = tmp.getChildren();
				tabSets.include(tt);
				setTabs(n);
			}
		}
	}
	
	findTabs();
	
	/* WIDGET EMBED CODE */

	var openCode = $$('.open-code');
	
	if (openCode){
		openCode.each(function(element,i){
			tarVar = element.getParent().getLast();
			element.mySlide = new Fx.Slide(tarVar);
			element.mySlide.hide();
			element.addEvent('click', function(e){
				e = new Event(e);
				element.mySlide.toggle();
				e.stop();
			});
		});
	}
	
	/* ADD ITEM FORM */

	var openForm = $$('.show');
	
	if (openForm){
		openForm.each(function(element,i){
			tarVar = element.getParent().getLast();
			element.mySlide = new Fx.Slide(tarVar);
			element.mySlide.hide();
			element.addEvent('click', function(e){
				e = new Event(e);
				element.mySlide.toggle();
				e.stop();
			});
		});
	}
	
	/* SCREENSHOT PAGES */
		
	var screenElement = $('pro-screenshots');
	
	if (screenElement){
		var maskHeight = $('shots-mask').getStyle('height').toInt();
		var toMove = $('shots-wrapper');
		var pageList = toMove.getChildren();
		var controlsList = $('shots-pages');
		var movePages = toMove.effects({duration: 1000, transition: Fx.Transitions.Sine.easeInOut});
		makePagers(screenElement, maskHeight, toMove, pageList, controlsList, movePages);
	}

	/* ALTERNATIVES PAGES */
		
	var altsElement = $('pro-alternatives');
	
	if (altsElement){
		var maskHeight = $('alts-mask').getStyle('height').toInt();
		var toMove = $('alts-wrapper');
		var pageList = toMove.getChildren();
		var controlsList = $('alts-pages');
		var movePages = toMove.effects({duration: 1000, transition: Fx.Transitions.Sine.easeInOut});
		makePagers(altsElement, maskHeight, toMove, pageList, controlsList, movePages);
	}
	
	
	/* GENERAL PAGING MAKER */
	
	function makePagers(pageElement, maskHeight, toMove, pageList, controlsList, movePages){
	
		var indexVar = 0;
		
		pageList.each(function(element,i){
			if(controlsList!=null){
				controlsList.innerHTML += "<li>"+(i+1)+"</li>";
			}
		});
		if(controlsList!=null){
		var pageBtns = controlsList.getChildren();
		pageBtns[0].addClass('on');
		pageBtns.each(function(element,i){
			element.idVar = i;
			element.addEvent('click', function(event){
				movePages.stop();
				pageBtns[indexVar].removeClass('on');
				indexVar = this.idVar;
				pageBtns[indexVar].addClass('on');
				var yTar = maskHeight*indexVar;
				var curY = toMove.getStyle('marginTop');
				movePages.start({'marginTop': [curY, -yTar]});
			});
		});
		}
	}
	
	
	
	/*
	
	$('testBtn').addEvent('click', function(){
		errorPop("This is a test title","<p>this is a test of the emergency broadcast system. This is only a test. Isn't it wonderful when you can modularize javascript in this way. now you can easily generate an error box with a title and content. brilliant.</p><p>You can even inject a list into the error div like so:</p><ul><li>this is a test list item</li><li>this is a test list item</li><li>this is a test list item</li><li>this is a test list item</li><li>this is a test list item</li><li>this is a test list item</li><li>this is a test list item</li><li>this is a test list item</li></ul>");	
	});
	
	*/
	
	
	
	
});	

//** DD Drop Down Panel- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com
//** Oct 21st, 08'- Script created

function ddpanel(setting){
	setting.dir="up" //initial state of panel (up="contracted")
	if (setting.stateconfig.persiststate && ddpanel.getCookie(setting.ids[0])=="down"){
		setting.dir="down"
	}
	if (setting.dir=="up"){ //if "up", output CSS to hide panel contents
		document.write('<style type="text/css">\n')
		document.write('#'+setting.ids[1]+'{height:' + parseInt(setting.stateconfig.initial) + 'px; overflow:hidden}\n')
		document.write('</style>\n')
	}
	setting.stateconfig.initial=parseInt(setting.stateconfig.initial)
	this.setting=setting
	var thispanel=this
	if (window.addEventListener) //if non IE browsers, initialize panel window.onload
		ddpanel.addEvent(window, function(e){thispanel.initpanel(setting)}, "load")
	else //else if IE, add 100 millisec after window.onload before initializing
		ddpanel.addEvent(window, function(e){setTimeout(function(){thispanel.initpanel(setting)}, 100)}, "load")
	ddpanel.addEvent(window, function(e){thispanel.uninit(setting)}, "unload")
}

ddpanel.events_array=[] //object array to contain events created by script

ddpanel.addEvent=function(target, functionref, tasktype){
	var evtmodel=target.addEventListener? "w3c" : "ie"
	var evtaction=evtmodel=="w3c"? "addEventListener" : "attachEvent"
	var i=this.events_array.push({ //store event info in ddpanel.events_array[] and return current event's index within array
		target: target,
		tasktype: (evtmodel=="ie"? "on" : "")+tasktype,
		listener: evtmodel=="ie"? function(){return functionref.call(target, window.event)} : functionref
	})-1
	target[evtaction](this.events_array[i].tasktype, this.events_array[i].listener, evtmodel=="w3c"? false : null)
}

ddpanel.removeEvent=function(target, functionref, tasktype){
	var evtmodel=target.removeEventListener? "w3c" : "ie"
	var evtaction=evtmodel=="w3c"? "removeEventListener" : "detachEvent"
	target[evtaction](tasktype, functionref, evtmodel=="w3c"? false : null)
}

ddpanel.getCookie=function(Name){ 
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
		return document.cookie.match(re)[0].split("=")[1] //return its value
	return null
}

ddpanel.setCookie=function(name, value){
	document.cookie = name+"=" + value + ";path=/"
}

ddpanel.addpointer=function(target, className, imagesrc){
	var pointer=document.createElement("img")
	pointer.src=imagesrc
	pointer.className=className
	pointer.style.borderWidth=0
	target.appendChild(pointer)
	return pointer
}

ddpanel.prototype={

togglepanel:function(dir){ //public function that toggles the panel's state. Optional dir parameter ("up" or "down") to explicitly set state.
	var setting=this.setting
	setting.dir=dir || ((setting.dir=="up")? "down" : "up")
	var pcontent=setting.pcontent, dir=setting.dir
	pcontent._currentheight=(dir=="down")? pcontent._actualheight : setting.stateconfig.initial
	pcontent.style.height=pcontent._currentheight+"px"
	if (setting.pointerimage.enabled){
		setting.arrow.src=setting.pointerimage.src[(setting.dir=="down")? 1 : 0]
		setting.arrow.style.visibility="visible"
	}
	ddpanel.setCookie(setting.ids[0], setting.dir)
},

togglepanelplus:function(dir){ //public function that toggles the panel's state w/ animation. Optional dir parameter ("up" or "down") to explicitly set state.
	var setting=this.setting
	setting.dir=dir || ((setting.dir=="up")? "down" : "up")
	if (setting.pointerimage.enabled)
		setting.arrow.style.visibility="hidden"
	clearTimeout(setting.revealtimer)
	this.revealcontent()
},

revealcontent:function(){
	var setting=this.setting
	var pcontent=setting.pcontent, curH=pcontent._currentheight, maxH=pcontent._actualheight, minH=setting.stateconfig.initial, steps=setting.animate.steps, dir=setting.dir
	if (dir=="down" && curH<maxH || dir=="up" && curH>minH){
		var newH = curH + (Math.round((maxH-curH)/steps)+1) * (dir=="up"? -1 : 1)
		newH=(dir=="down")? Math.min(maxH, newH) : Math.max(minH, newH)
		pcontent.style.height=newH+"px"
		pcontent._currentheight=newH
	}
	else{
		if (setting.pointerimage.enabled){
			setting.arrow.src=setting.pointerimage.src[(setting.dir=="down")? 1 : 0]
			setting.arrow.style.visibility="visible"
		}
		return
	}
	var thispanel=this
	setting.revealtimer=setTimeout(function(){thispanel.revealcontent()}, 10)
},

initpanel:function(){
	var setting=this.setting
	var pcontainer=setting.pcontainer=document.getElementById(setting.ids[0])
	var pcontent=setting.pcontent=document.getElementById(setting.ids[1])
	var tdiv=setting.tdiv=document.getElementById(setting.ids[2])
	pcontent.style.overflow="scroll"
	pcontent._actualheight=pcontent.scrollHeight
	setTimeout(function(){pcontent._actualheight=pcontent.scrollHeight}, 100)
	pcontent.style.overflow="hidden"
	pcontent._currentheight=(setting.dir=="down")? pcontent._actualheight : setting.stateconfig.initial
	var thispanel=this
	ddpanel.addEvent(tdiv, function(e){ //assign click behavior when toggle DIV tab is clicked on
		if (setting.animate.enabled)
			thispanel.togglepanelplus()
		else
			thispanel.togglepanel()
		if (e.preventDefault) e.preventDefault()
		return false
	}, "click")
	if (setting.pointerimage.enabled){
		var pointer1=new Image(), pointer2=new Image()
		pointer1.src=setting.pointerimage.src[0]
		pointer2.src=setting.pointerimage.src[1]
		setting.arrow=ddpanel.addpointer(tdiv.getElementsByTagName("span")[0], "pointerimage", setting.pointerimage.src[setting.dir=="down"? 1:0])
	}
	if (setting.closepanelonclick.enabled){ //assign click behavior when panel content is clicked on (links within panel or elements with class "closepanel"
			ddpanel.addEvent(pcontent, function(e){
				var target=e.srcElement || e.target
				if (/(^|\s+)closepanel($|\s+)/.test(target.className) || target.tagName=="A" || (target.parentNode && target.parentNode.tagName=="A")){
					thispanel.togglepanel("up")
				}
			}, "click")
	}
},

uninit:function(){
	var setting=this.setting
	if (setting.stateconfig.persiststate){
		ddpanel.setCookie(setting.ids[0], setting.dir)
	}
	for (prop in setting){
		setting[prop]=null
	}
}



} //end of ddpanel object


//initialize instance of DD Drop Down Panel:

var defaultpanel=new ddpanel({
	ids: ["mypanel", "mypanelcontent", "mypaneltab"], // id of main panel DIV, content DIV, and tab DIV
	stateconfig: {initial: "5px", persiststate: true}, // initial: initial reveal amount in pixels (ie: 5px)
	animate: {enabled: true, steps: 5}, //steps: number of animation steps. Int between 1-20. Smaller=faster.
	pointerimage: {enabled: true, src: ["", ""]}, //First parameter for down arrow second is for up arrow. Images Naresh
	closepanelonclick: {enabled: true} // close panel when links or elements with CSS class="closepanel" within container is clicked on?
})