function getProfileDetails(){
	var includeTD = document.getElementById("includeTD");
	includeTD.style.display = "";
	
	var editProfile = function(req){
		includeTD.innerHTML = req.responseText;
	}
	
	AjaxRequest.post({
						'url':'/app/controllers/freelancer/freelancerController.php?action=editProfile',
						'onSuccess':editProfile});
}

function viewProfile(){
	var includeTD = document.getElementById("includeTD");
	includeTD.style.display = "";
	
	var viewProfile = function(req){
		includeTD.innerHTML = req.responseText;
	}
	
	AjaxRequest.post({
						'url':'/app/controllers/freelancer/freelancerController.php',
						'onSuccess':viewProfile});
}

function onSubmitForm(formName){
	var thisForm 			= document.forms[formName];
	var uEmail				= trim(thisForm.email.value);
	var uFirstName 			= trim(thisForm.firstName.value);
	var uLastName 			= trim(thisForm.lastName.value);
	var uPassword			= trim(thisForm.password.value);
	var uConfPassword		= trim(thisForm.confPassword.value);
	var uZip				= trim(thisForm.zip.value);
	var uCity				= trim(thisForm.city.value);
	var uState				= thisForm.state.value;
	var uCountry			= thisForm.country.value;
	
	divId = 'msgDiv';
	
	document.getElementById(divId).innerHTML = '';
	if(uFirstName == ""){
		addMessage(divId, missingFirstName);
	}else if(isAlphabetical(uFirstName)){
		addMessage(divId, invalidFirstName);
	}
	if(uLastName == ""){
		addMessage(divId, missingLastName);
	}else if(isAlphabetical(uLastName)){
		addMessage(divId, invalidLastName);
	}
	if(uConfPassword != uPassword){
		addMessage(divId, passwordMismatch);
	}else if(uPassword.length > 0 && (checkMinimumLength(uPassword, minimumPasswordLength) == false)){
		addMessage(divId, passwordLengthError);
	}
	if(uCity != ""){
		if(isAlphaNumeric(uCity)){
			addMessage(divId, invalidCity);
		}
	}
	if(uZip != ""){
		if(isAlphaNumeric(uZip)){
			addMessage(divId, invalidZip);
		}else if((checkMinimumLength(uZip, minimumZipLength) == false) || (checkMinimumLength(uZip, maximumZipLength+1) == true)){
			addMessage(divId, zipLengthError);
		}
	}
	
	var includeTD = document.getElementById("includeTD");
	
	var viewProfile = function(req){
		includeTD.innerHTML = req.responseText;
	}
	
	var parameters = { 
						"firstName":uFirstName,
						"lastName":uLastName,
						"state":uState,
						"city":uCity,
						"country":uCountry,
						"zip":uZip,
						"password":uPassword,
						"confPassword":uConfPassword
					   };
	if(formName=='editForm')
	{
		if(document.getElementById(divId).innerHTML==""){
			AjaxRequest.post({
								'url':'/app/controllers/freelancer/freelancerController.php?action=updateProfile',
								'parameters': parameters,
								'onSuccess':viewProfile,
								'onError': function(req){ alert('An error occurred while saving changes!');}
							});
		}
	}
}


function getResume()
{
	var includeTD = document.getElementById("includeTD");
	var viewProfile = function(req){
		includeTD.innerHTML = req.responseText;
		if(document.getElementById("tempYearsArrayParent") != null){
			document.getElementById("yearsArrayParent").value = document.getElementById("tempYearsArrayParent").value;
			document.getElementById("specialityArrayParent").value = document.getElementById("tempSpecialityArrayParent").value;
			document.getElementById("subExpertiseArrayParent").value = document.getElementById("tempSubExpertiseArrayParent").value;  
		}
	}

	AjaxRequest.post({
					'url':'/app/controllers/freelancer/freelancerController.php?action=getResume',
					'onSuccess':viewProfile,
					'onError': function(req){ alert('An error occurred while saving changes!');}
					});

}

function saveResume(formName, showPreview)
{
	var thisForm 			= document.forms[formName];
	var summary				= thisForm.summary.value;
	var skillsInfo 			= thisForm.skillsInfo.value;
	var spDetails 			= document.getElementById('spDetailId').innerHTML;
	var travelWilling 		= thisForm.travelWilling.value;
	var passportAvailable	= thisForm.passportAvailable.value;

	var company				= document.getElementsByName("company");
	var assignment			= document.getElementsByName("assignmentDesc");
	var awards				= document.getElementsByName("awards");
	var languages			= document.getElementsByName("languages");
	var languagesOther		= thisForm.foreign_lang_other.value;

	var resumeAvailable		= thisForm.resumeAvailable.value;	
	var i=0;
	var companyArray = new Array();
	var assignmentArray = new Array();
	var awardsArray = new Array();
	var languagesArray = new Array();
	var errorArray = new Array();
	var msgDiv = document.getElementById("msgDiv");

	saveSpeciality('specialityForm'); // work-around for expertises/specialty list

	if (summary == "")
		errorArray[errorArray.length] = missingSummary;

	if ( document.getElementById("subExpertiseArrayParent").value == '' && document.getElementById("specialityArrayParent").value == '' )
		errorArray[errorArray.length] = missingExpertiseDetails;
	
	var isMissingCompanyAss = true;
	for(i=0;i<company.length;i++) {
		if((company[i].value != '' && assignment[i].value !='') || (company[i].value == '' && assignment[i].value =='')) {
				if(company[i].value != '' && assignment[i].value !=''){
					isMissingCompanyAss = false;
					companyArray[companyArray.length] = company[i].value;
					assignmentArray[assignmentArray.length] = assignment[i].value;
				}
		}
		else if(company.length > 1){
			if(company[i].value == '')
				errorArray[errorArray.length] ="'Company' cannot be left blank at row " +(i+1)+ " for 'Experience'.";
			 else
				errorArray[errorArray.length] ="'Assignment Description' cannot be left blank at row " + (i+1) + " for 'Experience'.";
		}
	}
	
	if(company[0].value != ''){
		if(assignment[0].value =='')
				errorArray[errorArray.length] ="'Assignment Description' cannot be left blank at row " + 1 + " for 'Experience'.";
		}else if(assignment[0].value != ''){
			if(company[0].value =='')
				errorArray[errorArray.length] ="'Company' cannot be left blank at row " + 1 + " for 'Experience'.";
	}

	if(true == isMissingCompanyAss){
		errorArray[errorArray.length] = missingCompanyAssignment;
	}
	
	for(i=0;i<awards.length;i++) {
		if(awards[i].value != '')
			awardsArray[i] = awards[i].value;
	}

	var compStr = companyArray.join('||');
	var assgnStr = assignmentArray.join('||');
	var awrdsStr = awardsArray.join('||');

	for(x=0;x<languages.length;x++) {
		if(languages[x].checked) {
			languagesArray[languagesArray.length] = languages[x].value;
		}
	}
	
	if (showPreview) {
		var postSave = function(req) {
			window.location.href='/freelancer/viewGeneratedProfile.php';
		}
	}
	else {
		var postSave = function(req) {
			msgDiv.innerHTML = req.responseText;
		}
	}
	
	if(errorArray.length == 0){
		var url = "/app/controllers/freelancer/freelancerController.php?action=saveResume";
		var	parameters = { 
						"summary":summary,
						"skillsInfo":skillsInfo,
						"travelWilling":travelWilling,
						"company":compStr,
						"assignment":assgnStr,
						"awards":awrdsStr,
						"languages":languagesArray,
						"languagesOther":languagesOther,
						"resumeAvailable":resumeAvailable,
						"passportAvailable":passportAvailable,
						"specialityArray":document.getElementById("specialityArrayParent").value,
						"yearsArray":document.getElementById("yearsArrayParent").value,
						"subExpertiseArray":document.getElementById("subExpertiseArrayParent").value};

		AjaxRequest.post({
						'url': url,
						'parameters': parameters,
						'onSuccess': postSave,
						'onError': function(req){ alert('An error occurred while saving changes!');}
					});
	}				
	else {
		document.getElementById("msgDiv").innerHTML ="";
		for(var i=0;i<errorArray.length;i++){
			document.getElementById("msgDiv").innerHTML += "<font color='red'><li>"+errorArray[i]+"</li></font>";
		}
	}
}

function showResume(){
	document.getElementById("test").style.display = "block";
	document.getElementById("show").style.display = "none";
}

function setInnerHTML(source,target){
	document.getElementById(target).innerHTML = document.getElementById(source).value;
}

function setInnerHTMLByArray(targetId,sourceArray){
	var HTMLContent = "<table>";
	for(var i=0; i<sourceArray[0].length; i++){
		HTMLContent += "<tr>";
		for(var j=0; j<sourceArray.length; j++){
			HTMLContent += "<td>"+ sourceArray[j][i] +"</td>";
		}
		HTMLContent += "</tr>";	
	}HTMLContent += "</table>";
	document.getElementById("trId").innerHTML=HTMLContent;
}

//function to add a new row.
function addRow(tbodyID,deleteImageSrc,maxLimit,errorRowID){
var count = document.getElementById(tbodyID).rows.length;
	if(count <= maxLimit){
	
		var tbodyObj = document.getElementById(tbodyID);
		
		var lastRow = tbodyObj.rows[tbodyObj.rows.length-1];

		var newRow = lastRow.cloneNode(true);
		
		tbodyObj.appendChild(newRow);
		
		newRow = tbodyObj.rows[tbodyObj.rows.length-1];
		
		setDefaultValues(newRow);
		if(deleteImageSrc)
			changeAddImage(lastRow,tbodyID,deleteImageSrc);
	}
	else{
	if(errorRowID)
		document.getElementById(errorRowID).innerHTML += "No more additions can be made for " +tbodyID;
	else
		alert("No more additions can be made for " +tbodyID);
	}
}

//function to replace add icon with delete.
function changeAddImage(lastRow,tbodyID,deleteImageSrc){
	var rowElements = lastRow.cells;
	//we are assuming the delete image is last cell in the row
	if(rowElements[rowElements.length-1].childNodes[0].nodeName == 'IMG'){
		lastRow.cells[lastRow.cells.length-1].innerHTML = '<img src='+deleteImageSrc+' border=0 onclick ="javascript:deleteRow(\''+tbodyID+'\',this);" />';
	}
}

//function to set default values for elements.
function setDefaultValues(newRow){
	var rowElements = newRow.cells;
	for(i=0;i<rowElements.length;i++){
		for(j=0;j<rowElements[i].childNodes.length;j++){
			switch(rowElements[i].childNodes[j].nodeName){
				case 'IMG':
							break;
				case 'INPUT':
							switch(rowElements[i].childNodes[j].type){
								case 'text': 
											rowElements[i].childNodes[j].value='';
											break;
							}	
							break;
				case 'SELECT':
							rowElements[i].childNodes[j].selectedIndex=0;
							break;
				case 'TEXTAREA':
							rowElements[i].childNodes[j].value='';
							break;
						
			}
		}
	}
	
}

// function to delete rows.

function deleteRow(tableId,rowObj){
	var tableObj = document.getElementById(tableId);
	if(tableObj.rows.length>2){
		var rowIndex = rowObj.parentNode.parentNode.rowIndex;
		tableObj.deleteRow(rowIndex);
	}else{
		alert("Sorry, you can't delete all the rows.");
	}
}	

var spArray = new Array();	


/////////////////////////////////////////////////////////
// Functions for populating Specialties & Specialty form
/////////////////////////////////////////////////////////

function callSubExpertise()
{
	var specialityArrayParent = (document.getElementById("specialityArrayParent").value).split(",");
	var yearsArrayParent = (document.getElementById("yearsArrayParent").value).split(",");
	var subExpertiseArrayParent = (document.getElementById("subExpertiseArrayParent").value).split(",");
	var parentExpArray = (document.getElementById("parentExpArray").value).split(",");
	var subExpertiseList = document.getElementsByName("subExpertiseArray");
	var spNameArray =  document.getElementsByName("expertiseName");
	
	if(subExpertiseArrayParent.length > 0){
		for(var i=0;i < subExpertiseArrayParent.length; i++){
			for(var j=0; j < subExpertiseList.length;j++){
				if(subExpertiseArrayParent[i] == subExpertiseList[j].value){
					subExpertiseList[j].checked = true;
				}
			}
		}
	}
	
	if(specialityArrayParent.length > 0){
		for(var i=0; i < specialityArrayParent.length; i++){
			for(var j=0; j < subExpertiseList.length;j++){
				if(specialityArrayParent[i] == subExpertiseList[j].value){
					subExpertiseList[j].checked = true;
					id = "years"+specialityArrayParent[i];
					document.getElementById(id).value = yearsArrayParent[i];
				}
			}
		}
	}

	for(var i=0; i < parentExpArray.length; i++){
		el = document.getElementById('blk'+parentExpArray[i]);
		img = document.getElementById('img'+parentExpArray[i]);
		if (el) {
			el.style.display = 'block';
			img.src = '/images/triangle-d.gif';
		}
	}
}


function saveSpeciality(formObj){
	var subExpertiseList		= document.getElementsByName("subExpertiseArray");	
	var subExpertiseArray 	= new Array();
	var specialityArray = new Array();
	var yearsArray 		= new Array();
	var errorArray 		= new Array();
	var spNameArray 	= document.getElementsByName("expertiseName");
	var text;
	
	for(i=0;i<spNameArray.length;i++) {
		spArray[spNameArray[i].id] = spNameArray[i].value;
	}
	
	document.getElementById("specialityNameArray").value = spArray;		
	var tempArray = new Array();
	tempArray = (document.getElementById("specialityNameArray").value).split(',');
	
	for(i=0;i<subExpertiseList.length;i++){
		if(subExpertiseList[i].checked){	
			text="years"+subExpertiseList[i].value; 
			var text1 = document.getElementById(text);
			if(text1 != null){
				specialityArray[specialityArray.length] = subExpertiseList[i].value;
				if(text1.value !='' && !(isNaN(text1.value))) {
					yearsArray[yearsArray.length] = text1.value;
				}
				else{
					yearsArray[yearsArray.length] = 1;
				}
			}
			else 
				subExpertiseArray[subExpertiseArray.length] =  subExpertiseList[i].value;
				
		}
	}

	if (errorArray.length == 0) {
		document.getElementById("specialityMapping").value = document.getElementById("specialityNameArray").value;
		document.getElementById("specialityArrayParent").value = specialityArray;
		document.getElementById("yearsArrayParent").value = yearsArray;
		document.getElementById("subExpertiseArrayParent").value = subExpertiseArray;
	}
	else{
		document.getElementById("msgDiv").innerHTML ="";
		for(var i=0;i<errorArray.length;i++){
			document.getElementById("msgDiv").innerHTML += "<font color='red' size='2'><li>"+errorArray[i]+"</li></font>";
		}
		scroll(0,0);
	}
}

function getSamplesAndURLs()
{
	var includeTD = document.getElementById("includeTD");
	includeTD.style.display = "";
	
	var viewProfile = function(req){
		includeTD.innerHTML = req.responseText;
	}
	
	AjaxRequest.post({
						'url':'/app/controllers/freelancer/freelancerController.php?action=getSamplesAndURLs',
						'onSuccess':viewProfile});

}

function uploadFile()
{
	var includeTD = document.getElementById("includeTD");
	includeTD.style.display = "";
	
	
	var viewProfile = function(req){
		includeTD.innerHTML = req.responseText;
	}
	var parameters = { 
					   };
	
	AjaxRequest.post({
						'url':'/app/controllers/freelancer/freelancerController.php?action=getSamplesAndURLs',
						'onSuccess':viewProfile});

}

function getSubExpertiseForEmployer(parentId)
{	
	var div = "expertiseId"+(parentId);
	var includeTD = document.getElementById(div);
	includeTD.style.display = "";
	var editProfile = function(req){
		includeTD.innerHTML = req.responseText;
		 callSubExpertise();
	}
	var type = "";
	var searchId="";
	if (window.opener.document.getElementById("searchId")!=null)
		searchId = window.opener.document.getElementById("searchId").value;
	if(window.opener.document.getElementById("type")!=null && window.opener.document.getElementById("type").value == "searchFreelancer")
		type = "&type=searchFreelancer";
	else
		type = "&type=defaultSearch";
	var url = '/app/views/expertises/expertisesPopup.php?action=getSubExpertise'+type;
	var parameters = { 
						"parentId":parentId,
						"searchId":searchId
					   };
	AjaxRequest.post({
						'url':url,
						'parameters':parameters,
						'onSuccess':editProfile});
						
}

function callSubExpertiseForEmployer()
{
	for(var i=0;i<parentIdArray.length;i++){
		getSubExpertiseForEmployer(parentIdArray[i]);
	}
}
	
function setPageHeadingLabel(label){
	document.getElementById("pageHeadingLabel").innerHTML = label;
}


/**
 * Functions for handling avatars
 */
 
function $m(theVar)
{
	return document.getElementById(theVar)
}

function remove(theVar)
{
	var theParent = theVar.parentNode;
	theParent.removeChild(theVar);
}

function addEvent(obj, evType, fn)
{
	if(obj.addEventListener)
	    obj.addEventListener(evType, fn, true)
	if(obj.attachEvent)
	    obj.attachEvent("on"+evType, fn)
}

function removeEvent(obj, type, fn)
{
	if(obj.detachEvent){
		obj.detachEvent('on'+type, fn);
	}else{
		obj.removeEventListener(type, fn, false);
	}
}

function isWebKit()
{
	return RegExp(" AppleWebKit/").test(navigator.userAgent);
}

function uploadAvatar(form, userid) {
	var detectWebKit = isWebKit();

	var erro="";

	var iframe = document.createElement("iframe");
	iframe.setAttribute("id","ajax-temp");
	iframe.setAttribute("name","ajax-temp");
	iframe.setAttribute("width","0");
	iframe.setAttribute("height","0");
	iframe.setAttribute("border","0");
	iframe.setAttribute("style","width:0; height:0; border:none;");
	form.parentNode.appendChild(iframe);
	window.frames['ajax-temp'].name="ajax-temp";
	var doUpload = function(){
		removeEvent($m('ajax-temp'),"load", doUpload);
		var cross = "javascript: ";
		cross += "window.parent.$m('upload_area').innerHTML=document.body.innerHTML; void(0);";
		$m('ajax-temp').src = cross;
		if(detectWebKit){
        	remove($m('ajax-temp'));
        }else{
        	setTimeout(function(){ remove($m('ajax-temp'))}, 250);
        }
    }
	addEvent($m('ajax-temp'),"load", doUpload);
	form.setAttribute("target","ajax-temp");
	form.setAttribute("action",'/freelancer/avatar.php?filename=filename&userid='+userid);
	form.setAttribute("method","post");
	form.setAttribute("enctype","multipart/form-data");
	form.setAttribute("encoding","multipart/form-data");
	form.submit();
}

function remove_avatar(userid)
{
	var div = document.getElementById("upload_area");

	var swapImg = function(req){
		div.innerHTML = req.responseText;
	}
	
	AjaxRequest.post({'url':'/freelancer/avatar_remove.php',
					  'userid':userid,
					  'onSuccess':swapImg});
}

