/**
 * @author bhindmarch
 */

jQuery(function(){
	jQuery('#mainNav ul').superfish();
});

$(document).ready(function(){
	$('.rounded').corner();
	if (jQuery.browser.msie && parseInt(jQuery.browser.version) == 6) {
		var i =0; 
		$('#mainContent').css('width', '890px');
	}else $('#shortCuts ul li a').corner({tl: { radius: 6 },  tr: { radius: 6 },bl: false, br: false, antiAlias: true, autoPad: true});
	$('#footer').positionFooter();
	$("#s2uDialog").dialog({
		bgiframe: true,
		height: 140,
		modal: true,
		autoOpen: false
	});
	$.easing.elasout = function(x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; } 
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	};

	preloadImages();
	displayCountryOption();
	switch(pageID) {
		case 'home':
			getForumLatest();
		break;
	}
	
});




/**
 * 
 * @param {String} id The id of the image to change
 * @param {String} opt The suffix
 * 
 */
function roll(id, opt) {
	var img =document.getElementById(id);
	img.src =img.src.replace(/\-\w{2,3}\.(gif|jpg){1}$/gi, '-' + opt + '.$1');
}
function preloadImages() {
	var img; var src; var tmp =new Image();
	for(var i=0;i<document.images.length;i++) {
		img =document.images[i];
		if (img.id) {
			src =img.src.replace(/\-\w{2,3}\.(gif|jpg){1}$/gi, '-on' + '.$1');
			if(src!=img.src) tmp.src = src;
		}
	}
}

//homepage functions
function getForumLatest() {
	var a =newAJAX();
	a.onReturn('update', document.getElementById('forumContent'));
	a.fetch('/codebase/actions/pub.forum.html.php?');
}


//form function
function sendForm (n) {
	var f =document.forms[n];
	var fn;
	var required;
	var err =false;
	var reqList =f.reqs.value;
	var reqs =new Array();
	var val =false;
	if(reqList) reqs =reqList.split(', ');
	
	
	for(var i =0; i<reqs.length; i++) {
		val =eval('f.' + reqs[i] + '.value');
		if(!val) {
			err =true;
			document.getElementById('label-' + reqs[i]).className ='invalidEntry';
		}else document.getElementById('label-' + reqs[i]).className ='';
	}
	if(f.email.value) {
		var emailRegExp =/^[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z_+])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9}$/;
		if (f.email.value.search(emailRegExp)==-1) {
			err =true;
			document.getElementById('label-email').className ='invalidEntry';
		}
	}
	
	if(err) {
		document.getElementById(n + '-errorMsg').style.display ='block';
	}else {
		for (i = 0; i < f.elements.length; i++) 
			if (f.elements[i].type == 'button') {
				f.elements[i].disabled = true;
				f.elements[i].hideThis =f.elements[i].value;
				f.elements[i].value = 'Please wait';
			}
		var ajax =newAJAX();
		ajax.onReturn('eval', 'if($RESPONSE$==1){displayMessage("' + f.successNote.value + '");resetForm(\''+f.id+'\');} else displayMessage("' + f.failNote.value + '");');
		ajax.post(f.action, f);
	}
}

function resetForm(id) {
	var f =document.forms[id];
	var reqs =f.reqs.value;
	var successNote =f.successNote.value;
	var failNote =f.failNote.value;
	f.reset();
	f.reqs.value =reqs;
	f.successNote.value =successNote;
	f.failNote.value =failNote;
	for (i = 0; i < f.elements.length; i++) 
			if (f.elements[i].type == 'button') {
				f.elements[i].disabled = false;
				f.elements[i].value =f.elements[i].hideThis;
			}
}

function getCookieValue(n) {
	var cookies =document.cookie.split(';');
	var cookieTemp;
	var cookieName;
	var cookieValue;
	for(var i=0; i<cookies.length; i++) {
		cookieTemp =cookies[i].split('=');
		cookieName = cookieTemp[0].replace(/^\s+|\s+$/g, '');
		if(cookieName==n) {
			cookieValue =unescape(cookieTemp[1].replace(/^\s+|\s+$/g, '') );
			cookieValue =cookieValue.replace(/\+/g, ' ');
			break;
		}
	}
	return cookieValue;
}

function displayCountryOption() {
	var localeString =new String(getCookieValue('localeData'));
	if(!localeString) localeString =new String('0|');
	localeInfo =localeString.split('|');
	if(localeInfo.length>1) {
		var countryName =localeInfo[1];
		$('#geoLocation').hide();
		$('#geoLocation').css('display','block');
		if(countryName=='United Kingdom'||countryName=='United States') countryName ='the ' + countryName;
		$('#geoLocationButton').html('<a href="http://www.study2u.com/select-country.html">Not in ' +countryName + '?</a>');
		$('#geoLocation').fadeIn('def');
	}
}


function displayMessage(s) {
	var n =document.getElementById('displayNote');
	changeContent(document.getElementById('displayNoteText'), s);
	document.getElementById('displayNote').style.display ='block';
	document.getElementById('displayNote').style.position ='absolute';
	document.getElementById('displayNote').style.width =300;
	
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	document.getElementById('displayNote').style.left =Math.round(myWidth/2) -150 + 'px';
	
	
	
	if(typeof(window.pageYOffset)=='number') n.style.top =((Math.round(myHeight/2)-50) + window.pageYOffset) + 'px';
	else if(document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) n.style.top =((Math.round(myHeight/2)-50) + document.body.scrollTop) + 'px';
	else if ( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) n.style.top =((Math.round(myHeight/2)-50) + document.documentElement.scrollTop) + 'px';

	setTimeout("document.getElementById('displayNote').style.display='none';", 6000)
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 

function newAJAX() {
	var ajax =new Object();
	ajax.fetch =function(url) {
		var x =getHTTPObject();
		var ret;
		x.open('GET', url + '&rand=' + randomNumber(), true);
		if(!window.ActiveXObject) x.onload =function() {ajax.done(x.responseText);}
		else x.onreadystatechange =function() {if (x.readyState==4) ajax.done(x.responseText);}
		x.send(null);
	}
	ajax.post =function(url, form) {
		var postData;
		var formDataArray =new Array();
		for (var i = 0; i < form.elements.length; i++) if(form.elements[i].name) {
			
			switch(form.elements[i].type) {
				
				case 'select-one':
					formDataArray.push(form.elements[i].name + '=' + encodeURI(form.elements[i].options[form.elements[i].selectedIndex].text));
					break;
				case 'checkbox':
				case 'radio':
					if(form.elements[i].checked) formDataArray.push(form.elements[i].name + '=' + encodeURI(form.elements[i].value));
					break;
				default: 
					formDataArray.push(form.elements[i].name + '=' + encodeURI(form.elements[i].value));
					break;
				
			}
			
		}
		postData =formDataArray.join('&');
		var x =getHTTPObject();	
		if(!window.ActiveXObject) x.onload =function() {ajax.done(x.responseText);}
		else x.onreadystatechange =function() {if (x.readyState==4) ajax.done(x.responseText);}
		x.open('POST', url + '&rand='+ randomNumber(), true);
		x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    x.setRequestHeader("Content-length", postData.length);
	    x.setRequestHeader("Connection", "close");
		x.send(postData);
	}
	
	ajax.onReturn =function(action, instruction) {this.action =action; this.instruction =instruction;}
	ajax.done =function(str) {
		var qs =str.split('&'); 
	       if(qs) {
				var item; var result = new Array();
	            for (var i=0;i<qs.length;i++) {if(qs[i].indexOf('=')){ item = qs[i].split("="); result[item[0]] = result[1];}}
				if(result['done']!=1 && result['done']) {alert('An error occured during a directive.'); return;}
	       }
		switch(this.action) {
			
			case 'hide':
				this.instruction.style.display ='none';
				break;
			case 'update':
				changeContent(this.instruction, str);
				break;
			
			case 'eval':
				var com =this.instruction.replace('$RESPONSE$', '\'' + str + '\'');
				eval(com);
				break;
		}
	}
	return ajax;
}

function changeContent(el,shtml) {
     if (el && typeof el.innerHTML != "undefined") el.innerHTML = shtml;
     return true;
}
function randomNumber() {return Math.round(Math.random() * 999999);}

function getHTTPObject() {
	var http_object;
	// MSIE Proprietary method
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			http_object = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				http_object = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) {
				http_object = false;
			}
		}
	@else
		xmlhttp = http_object;
	@end @*/
	// Mozilla and others method
	if (!http_object && typeof XMLHttpRequest != 'undefined') {
		try {http_object = new XMLHttpRequest();}
		catch (e) {http_object = false;}
	}
	return http_object;
}