// New Functions By Ali Hasan

// Window Property Functions
function thisWindow() {
	this._w = document.body.offsetWidth;
	this._h = document.body.offsetHeight;
}

function setWindow() {
	document.win = new thisWindow();
}

// Trim Functions
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

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

// Advanced Scripted Fade Controller: No need for getElementById
function imageObject(img,desc,ctrl) {
	var data = [
		{	"src":"../_img/proj_chineseDefender_1.jpg",
			"txt":"Equiping Local Leaders",
			"desc":"Providing legal representation to the poor and oppressed in China.",
			"url":"../what_we_do/programs.php"			
		},	
		{	"src":"../_img/proj_bondedLabor_1.jpg",
			"txt":"Engaging Global Partners",
			"desc":"Helping to free adults and children caught in illegal slavery in India.",			
			"url":"../what_we_do/programs.php"
		},	
		{	"src":"../_img/proj_muktiMarket_1.jpg",
			"txt":"Mobilizing Capital",
			"desc":"Establishing a market for products produced by victims of sex-trafficking.",			
			"url":"../what_we_do/programs.php"	
		},	
		{	"src":"../_img/proj_slumDweller_1.jpg",
			"txt":"Engaging Global Partners",
			"desc":"Proving decent housing to the slum-dwelling poor.",			
			"url":"../what_we_do/programs.php"
		},	
		{	"src":"../_img/proj_justiceResourceCenter_1.jpg",
			"txt":"Equiping Local Leaders",
			"desc":"Creating a one-stop resource center for all advocates of freedom and justice.",			
			"url":"../what_we_do/programs.php"
		},
		{	"src":"../_img/proj_justiceSewing_1.jpg",
			"txt":"Mobilizing Capital",
			"desc":"Proving decent housing to the slum-dwelling poor.",			
			"url":"../what_we_do/programs.php"
		}
	];

	// Reference to Self
	var that = this;
	
	// Document References
	var img = document.getElementById(img);
	var imgD = document.getElementById(desc);
	var imgCA = document.getElementById(ctrl+"a");
	var imgCB = document.getElementById(ctrl+"b");
	var imgCC = document.getElementById(ctrl+"c");	
		
	// Loop Variables
	var firstPass = true;
	var loopCondition = true;
	var loopPosition = 0;

	// Fade Variables
	var millisec = 500;
	var speed = Math.round(millisec / 100); 
	
	this.getData = function() { 
		return data;
	};

	// Prev Function
	this.prev = function() {
		if (loopPosition > 0) {
			loopPosition--;
		}
		else {
			loopPosition = data.length - 1;					
		}
		phaseImage(loopPosition);
	};
	imgCA.onclick = this.prev;

	// Next Function
	this.next = function() {
		if (loopPosition < data.length - 1) {
			loopPosition++;
		}
		else {
			loopPosition = 0;					
		}
		phaseImage(loopPosition);
	};
	imgCC.onclick = this.next;

	this.doLoop = function() {
		phaseImage(loopPosition);

		setTimeout(
			function() {
				if (loopPosition < data.length - 1) {
					loopPosition++;
				}
				else {
					loopPosition = 0;					
				}
				
				that.doLoop();
			}		   
		,8000); 
	};

	var changeImage = function(dataPoint) {
		var image = data[dataPoint];
		
		img.src = image.src;
		img.alt = image.txt + ": " + image.desc;
		img.onclick = function() {
				document.location.href = image.url;
			}
		imgD.innerHTML = image.txt;	
		imgCB.innerHTML = (dataPoint + 1) + "/" + data.length;
	};

	var phaseImage = function(dataPoint) {
		if (firstPass) {
			changeImage(dataPoint);			
			firstPass = false;
		}
		else {
			doFade(100,0);
			
			setTimeout(
				function() {				   
					changeImage(dataPoint);			
					doFade(0,100);			
				}
			,millisec);
		}
	};

	var changeOpacity = function (opacity) { 
		img.style.opacity = (opacity / 100); 
		img.style.MozOpacity = (opacity / 100); 
		img.style.KhtmlOpacity = (opacity / 100); 
		img.style.filter = "alpha(opacity=" + opacity + ")"; 
	}; 	

	var changeOpacityTimed = function (opacity,timer) { 
		setTimeout(
			function() {
				changeOpacity(opacity);
			}		   
		,(timer * speed)); 
	}; 

	var doFade = function(opacStart,opacEnd) {
		//determine the direction for the blending, if start and end are the same nothing happens 
		var timer = 0;
		if(opacStart > opacEnd) { 		
			for(i = opacStart; i >= opacEnd; i--) { 
				changeOpacityTimed(i,timer); 
				timer++; 
			} 
		} 
		else if(opacStart < opacEnd) { 
			for(i = opacStart; i <= opacEnd; i++) { 
				changeOpacityTimed(i,timer); 
				timer++; 
			} 
		} 
	};
}

//AJAX Functions
function fieldFocus(fld) {
	fld.focus();
  	fld.select();
}

function addContact(source,resultContainer) {
	var that = this; 
	var source = source;
	var fld_emailAddress = document.getElementById("emailAddress");
		fld_emailAddress.value = fld_emailAddress.value.replace(/^[ \t]+|[ \t]+$/g,"");
	var fld_firstName = document.getElementById("firstName");
		fld_firstName.value = fld_firstName.value.replace(/^[ \t]+|[ \t]+$/g,"");
	var fld_lastName = document.getElementById("lastName");
		fld_lastName.value = fld_lastName.value.replace(/^[ \t]+|[ \t]+$/g,"");
	var obj_postData = null;
	var resultContainer = document.getElementById(resultContainer);
	
	var handleSuccess = function(o) {
		resultContainer.innerHTML = "Thanks for signing up!";	
		resultContainer.className = "resultContainer_g";
		fld_emailAddress.value = "Email Address";		
		fld_firstName.value = "First Name";		
		fld_lastName.value = "Last Name";		
	};

	var handleFailure = function(o) {
		resultContainer.innerHTML = "Sorry, we had a problem saving your information.  Please try again later.";	
		resultContainer.className = "resultContainer_r";
		fld_firstName.focus();
		fld_firstName.select();		
	};

	var callBack = {
		success: handleSuccess,
		failure: handleFailure,
		scope: that
	};
	
	var startRequest = function(postData) {
		return YAHOO.util.Connect.asyncRequest('POST', '../_db/addContact.php', callBack, postData);  		
	}

	if ((fld_emailAddress.value !== "" && fld_emailAddress.value !== "Email Address") 
			&& (fld_firstName.value !== "" && fld_firstName.value !== "First Name") 
			&& (fld_lastName.value !== "" && fld_lastName.value !== "Last Name")) {
		if (fld_emailAddress.value.match(/.{1,}@.{1,}\..{1,}/) != null) {
			obj_postData = "emailAddress="+fld_emailAddress.value+"&firstName="+fld_firstName.value+"&lastName="+fld_lastName.value;
			var req_01 = startRequest(obj_postData);
			resultContainer.innerHTML = "Please wait...";	
			resultContainer.className = "resultContainer_r";
		}
		else {
			resultContainer.innerHTML = "Sorry, we had a problem recognizing your email address.";	
			resultContainer.className = "resultContainer_r";			
			fld_emailAddress.focus();
			fld_emailAddress.select();		
		}
	}
	else {
		resultContainer.innerHTML = "Please enter your first name, last name and email address.";	
		resultContainer.className = "resultContainer_r";			
		fld_firstName.focus();
		fld_firstName.select();
	}
}

// Functions By Nifty Corners

function NiftyCheck() {
	if(!document.getElementById || !document.createElement)
		return(false);
	var b=navigator.userAgent.toLowerCase();
	if(b.indexOf("msie 5")>0 && b.indexOf("opera")==-1)
		return(false);
	return(true);
}

function Rounded(selector,bk,color,size) {
	var i;
	var v=getElementsBySelector(selector);
	var l=v.length;
	for(i=0;i<l;i++) {
		AddTop(v[i],bk,color,size);
		AddBottom(v[i],bk,color,size);
	}
}

function RoundedTop(selector,bk,color,size) {
	var i;
	var v=getElementsBySelector(selector);
	for(i=0;i<v.length;i++)
		AddTop(v[i],bk,color,size);
}

function RoundedBottom(selector,bk,color,size) {
	var i;
	var v=getElementsBySelector(selector);
	for(i=0;i<v.length;i++)
		AddBottom(v[i],bk,color,size);
}

function AddTop(el,bk,color,size) {
	var i;
	var d=document.createElement("b");
	var cn="r";
	var lim=4;
	if(size && size=="small"){ cn="rs"; lim=2}
	d.className="rtop";
	d.style.backgroundColor=bk;
	for(i=1;i<=lim;i++){
		var x=document.createElement("b");
		x.className=cn + i;
		x.style.backgroundColor=color;
		d.appendChild(x);
	}
	el.insertBefore(d,el.firstChild);
}

function AddBottom(el,bk,color,size) {
	var i;
	var d=document.createElement("b");
	var cn="r";
	var lim=4;
	if(size && size=="small"){ cn="rs"; lim=2}
	d.className="rbottom";
	d.style.backgroundColor=bk;
	for(i=lim;i>0;i--){
		var x=document.createElement("b");
		x.className=cn + i;
		x.style.backgroundColor=color;
		d.appendChild(x);
	}
	el.appendChild(d,el.firstChild);
}

function getElementsBySelector(selector){
	var i;
	var s=[];
	var selid="";
	var selclass="";
	var tag=selector;
	var objlist=[];
	if(selector.indexOf(" ")>0){  //descendant selector like "tag#id tag"
		s=selector.split(" ");
		var fs=s[0].split("#");
		if(fs.length==1) return(objlist);
		return(document.getElementById(fs[1]).getElementsByTagName(s[1]));
	}
	if(selector.indexOf("#")>0){ //id selector like "tag#id"
		s=selector.split("#");
		tag=s[0];
		selid=s[1];
	}
	if(selid!=""){
		objlist.push(document.getElementById(selid));
		return(objlist);
	}
	if(selector.indexOf(".")>0){  //class selector like "tag.class"
		s=selector.split(".");
		tag=s[0];
		selclass=s[1];
	}
	var v=document.getElementsByTagName(tag);  // tag selector like "tag"
	if(selclass=="")
		return(v);
	for(i=0;i<v.length;i++){
		if(v[i].className==selclass){
			objlist.push(v[i]);
		}
	}
	return(objlist);
}

