 /**
 * arena/myvote.js
 *
 * Dependencies
 * - YUI
 *
 * @author Nikhil Chitnis (nchitnis) <nikhil.chitnis@xoriant.com>
 **/

YAHOO.namespace('gaia.app.Arena');
YAHOO.gaia.app.Arena.Myvote = function() {
    this._settings = null;
    this._settingsDT = null;
    this._ajaxRequest= null;
   
}

function initMyvoteTitle(settings) {
	
    Myvote = new YAHOO.gaia.app.Arena.Myvote();
    Myvote.initTitle(settings);
}

function initMyvoteDescTags(settingsDT) {
	
    Myvote = new YAHOO.gaia.app.Arena.Myvote();
    Myvote.initDescTags(settingsDT);
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function nl2br(stringToTrim) {
	return stringToTrim.replace(/\n/g,"<br />");
}
function br2nl(stringToTrim) {
	return stringToTrim.replace(/<br \/>/g,"\n");
}
function stripHTML(stringtoReplace){
	var re= /<\S[^><]*>/g;
	stringtoReplace = stringtoReplace.replace(re, "");
	return stringtoReplace;
}
function validatetitle(title, errorDiv) {
	if(!title) {
		//alert('Title Cannot Be Null');
		document.getElementById(errorDiv).innerHTML = 'Title Cannot Be Null';
		return false;
	}
	if(title.length>30) {
		//alert('Title Cannot Be More Than 30 Characters.');
		document.getElementById(errorDiv).innerHTML = 'Title Cannot Be More Than 30 Characters.';
		return false;
	}
	return true;
}
function validatedesc(desc) {
	if(desc.length>500) {
		alert('Description Cannot Be More Than 500 Characters.');
		return false;
	}
	return true;
}
function validatetag(tag) {
	return true;
}
function convertSearch(tags) {
	if(!trim(tags)) {
		return '';
	} else {
		var stag = new Array();
		sresult = '';
		stag = tags.split(',');
		for(i=0;i<stag.length;i++) {
			stagRes = trim(stag[i]);
			stagRes = stagRes.replace(/ /g,"");
			sresult += "<a href='/arena/searches/?val="+stagRes+"&searchby=all'>"+stagRes+"</a>, ";
		}
		sresult = sresult.substr(0,(sresult.length-2));
		return sresult;
	}
}
function convertSearchWithoutLink(tags) {
	if(!trim(tags)) {		
		return '';
	} else {
		var stag = new Array();
		sresult = '';
		stag = tags.split(',');
		for(i=0;i<stag.length;i++) {
			stagRes = trim(stag[i]);
			stagRes = stagRes.replace(/ /g,"");
			//chktag = checktaglength(stagRes);
			//if(!chktag) return false;
			sresult += stagRes+", ";
		}
		sresult = sresult.substr(0,(sresult.length-2));
		return sresult;
	}
}
function checktaglength(tag) {
	if(tag.length<4 || tag.length>40) {
		alert('Each Tag Length Should be greater than 4 characters and less than 40 characters. ');
		return false;
	}
	return true;
}
YAHOO.gaia.app.Arena.Myvote.prototype.initTitle = function(settings) {
	  this._settings = {
	  	//variables for Editing Title
		 editTitleLink		: YAHOO.util.Dom.get(settings.editTitleLink),
		 titleLabelDiv		: YAHOO.util.Dom.get(settings.titleLabelDiv),
		 saveTitleLink		: YAHOO.util.Dom.get(settings.saveTitleLink),
		 cancelTitleLink	: YAHOO.util.Dom.get(settings.cancelTitleLink),
		 editTitleDiv		: YAHOO.util.Dom.get(settings.editTitleDiv),
		 titleLabel			: settings.titleLabel,
		 titleText			: YAHOO.util.Dom.get(settings.titleText),
		 URL				: settings.URL,
		 titleError			: settings.titleError
	};
	//YAHOO.util.Event.addListener(this._settings.editTitleLink, "click", this._makeEditTitleForm,this,true);	
	YAHOO.util.Event.addListener(this._settings.editTitleLink, "click", this._showEditTitleDiv,this,true);	
	YAHOO.util.Event.addListener(this._settings.saveTitleLink, "click", this._hideEditTitleDiv, this, true);
	YAHOO.util.Event.addListener(this._settings.cancelTitleLink, "click", this._hideEditTitleDivForCancel, this, true);
}

YAHOO.gaia.app.Arena.Myvote.prototype._showEditTitleDiv = function(e, elem_id){
	// Show input div and hide label div

	var divToHide = YAHOO.util.Dom.get('titleLabelDiv');
	var divToShow = YAHOO.util.Dom.get('editTitleDiv');
	var titleLabel = YAHOO.util.Dom.get('titleLabel'); // added
	
	YAHOO.util.Dom.removeClass(divToHide, 'show');
	YAHOO.util.Dom.addClass(divToHide, 'hide');

	YAHOO.util.Dom.removeClass(divToShow, 'hide');
	YAHOO.util.Dom.addClass(divToShow, 'show');
	
	newVal = trim(titleLabel.innerHTML);
	//this._settings.titleText.value = this._settings.titleLabel;
	this._settings.titleText.value = newVal; //added
}


YAHOO.gaia.app.Arena.Myvote.prototype._hideEditTitleDiv = function(e,elem_id) {
	// Hide input div and show label div	
	var divToHide = YAHOO.util.Dom.get('editTitleDiv');
	var divToShow = YAHOO.util.Dom.get('titleLabelDiv');
	var titleLabel = YAHOO.util.Dom.get('titleLabel');
	var titleText = YAHOO.util.Dom.get('titleText');
	temp = trim(titleLabel.innerHTML);
	titleLabel.innerHTML = trim(this._settings.titleText.value);
	//validTitle = validatetitle(titleLabel.innerHTML, this._settings.titleError);
	//if(!validTitle) {
		//titleLabel.innerHTML = trim(temp);
		//return false;
	//} else {		
		
	//}	
	titleLabel.innerHTML = trim(this._settings.titleText.value);	
	var args = [this._settings.titleError, trim(temp)]; 
	var AjaxObject = {

		handleSuccess:function(o){
			// This member handles the success response
			// and passes the response object o to AjaxObject's
			// processResult member.			
			//alert(o.responseText);
			thePosts = eval( '(' + o.responseText + ')' );
			if(o.responseText==1) {		
				YAHOO.util.Dom.removeClass(divToHide, 'show');
				YAHOO.util.Dom.addClass(divToHide, 'hide');
			
				YAHOO.util.Dom.removeClass(divToShow, 'hide');
				YAHOO.util.Dom.addClass(divToShow, 'show');	
			} else {		
				titleLabel.innerHTML = trim(o.argument[1]);
				document.getElementById(o.argument[0]).innerHTML = thePosts;
			}
		},
	
		handleFailure:function(o){
			alert('failed');
			// Failure handler
		},
	
		startRequest:function(sURL, key, title) {
		   YAHOO.util.Connect.asyncRequest('POST', sURL, callback, "col=title&"+key+"="+encodeURIComponent(title));
		}
	
	};
	
	/*
	 * Define the callback object for success and failure
	 * handlers as well as object scope.
	 */
	var callback =
	{
		success:AjaxObject.handleSuccess,
		failure:AjaxObject.handleFailure,
		argument: args,
		scope: AjaxObject
	};
	
	// Start the transaction.
	AjaxObject.startRequest(this._settings.URL, 'title', titleLabel.innerHTML);
}

YAHOO.gaia.app.Arena.Myvote.prototype._hideEditTitleDivForCancel = function(e,elem_id) {

	// Hide input div and show label div
	var divToHide = YAHOO.util.Dom.get('editTitleDiv');
	var divToShow = YAHOO.util.Dom.get('titleLabelDiv');
	var titleLabel = YAHOO.util.Dom.get('titleLabel');
	var titleText = YAHOO.util.Dom.get('titleText');
	YAHOO.util.Dom.removeClass(divToHide, 'show');
	YAHOO.util.Dom.addClass(divToHide, 'hide');

	YAHOO.util.Dom.removeClass(divToShow, 'hide');
	YAHOO.util.Dom.addClass(divToShow, 'show');
	
}

YAHOO.gaia.app.Arena.Myvote.prototype.initDescTags = function(settingsDT) {
	  this._settingsDT = {
	  	//variables for Editing Description
		descriptionTitleLink	: YAHOO.util.Dom.get(settingsDT.descriptionTitleLink),
		saveDescriptionLink		: YAHOO.util.Dom.get(settingsDT.saveDescriptionLink),
		cancelDescriptionLink	: YAHOO.util.Dom.get(settingsDT.cancelDescriptionLink),
		descLabel				: settingsDT.descLabel,
		descriptionText			: YAHOO.util.Dom.get(settingsDT.descriptionText),
		tagsTitleLink			: YAHOO.util.Dom.get(settingsDT.tagsTitleLink),
		saveTagsLink			: YAHOO.util.Dom.get(settingsDT.saveTagsLink),
		cancelTagsLink			: YAHOO.util.Dom.get(settingsDT.cancelTagsLink),
		tagLabel				: settingsDT.tagLabel,
		tagsText				: YAHOO.util.Dom.get(settingsDT.tagsText),
		 URL					: settingsDT.URL,
		tagError				: settingsDT.tagError,
		descError				: settingsDT.descError
	};

	YAHOO.util.Event.addListener(this._settingsDT.descriptionTitleLink, "click", this._showEditDescriptionDiv,this,true);	
	YAHOO.util.Event.addListener(this._settingsDT.saveDescriptionLink, "click", this._hideEditDescriptionDiv, this, true);
	YAHOO.util.Event.addListener(this._settingsDT.cancelDescriptionLink, "click", this._hideEditDescriptionDivForCancel, this, true);

	YAHOO.util.Event.addListener(this._settingsDT.tagsTitleLink, "click", this._showEditTagsDiv,this,true);	
	YAHOO.util.Event.addListener(this._settingsDT.saveTagsLink, "click", this._hideEditTagsDiv, this, true);
	YAHOO.util.Event.addListener(this._settingsDT.cancelTagsLink, "click", this._hideEditTagsDivForCancel, this, true);
}

YAHOO.gaia.app.Arena.Myvote.prototype._showEditDescriptionDiv = function(e, elem_id){
	// Show input div and hide label div
	var divToHide = YAHOO.util.Dom.get('descriptionLabeldiv');
	var divToShow = YAHOO.util.Dom.get('editDescriptionDiv');
	var titleLabel = YAHOO.util.Dom.get('descSpan'); // added
	
	YAHOO.util.Dom.removeClass(divToHide, 'show');
	YAHOO.util.Dom.addClass(divToHide, 'hide');

	YAHOO.util.Dom.removeClass(divToShow, 'hide');
	YAHOO.util.Dom.addClass(divToShow, 'show');
	
	newVal = trim(titleLabel.innerHTML);
	this._settingsDT.descriptionText.value = newVal; //added
}

YAHOO.gaia.app.Arena.Myvote.prototype._hideEditDescriptionDiv = function(e,elem_id) {

	// Hide input div and show label div	
	var divToHide = YAHOO.util.Dom.get('editDescriptionDiv');
	var divToShow = YAHOO.util.Dom.get('descriptionLabeldiv');
	var titleLabel = YAHOO.util.Dom.get('descSpan');
	var titleText = YAHOO.util.Dom.get('descriptionText');
	temp = trim(titleLabel.innerHTML);
	titleLabel.innerHTML = trim(titleText.value);
	//validDesc = validatedesc(titleLabel.innerHTML);
	//if(!validDesc) {
		//titleLabel.innerHTML = trim(temp);
		//return false;
	//} else {		
		
	//}
	titleLabel.innerHTML = titleText.value;
	var args = [this._settingsDT.descError, trim(temp)]; 
	var AjaxDescObject = {

		handleSuccess:function(o){
			// This member handles the success response
			// and passes the response object o to AjaxObject's
			// processResult member.
			thePosts = eval( '(' + o.responseText + ')' );	
			if(o.responseText==1) {				
				YAHOO.util.Dom.removeClass(divToHide, 'show');
				YAHOO.util.Dom.addClass(divToHide, 'hide');
			
				YAHOO.util.Dom.removeClass(divToShow, 'hide');
				YAHOO.util.Dom.addClass(divToShow, 'show');
			} else {		
				titleLabel.innerHTML = trim(o.argument[1]);
				document.getElementById(o.argument[0]).innerHTML = thePosts;
			}
		},
	
		handleFailure:function(o){
			alert('failed');
			// Failure handler
		},
	
		startRequest:function(sURL, key, title) {
		   YAHOO.util.Connect.asyncRequest('POST', sURL, callback, "col=description&"+key+"="+encodeURIComponent(title));
		}
	
	};
	
	/*
	 * Define the callback object for success and failure
	 * handlers as well as object scope.
	 */
	var callback =
	{
		success:AjaxDescObject.handleSuccess,
		failure:AjaxDescObject.handleFailure,
		argument: args,
		scope: AjaxDescObject
	};
	
	// Start the transaction.
	AjaxDescObject.startRequest(this._settingsDT.URL, 'description', titleLabel.innerHTML);
}

YAHOO.gaia.app.Arena.Myvote.prototype._hideEditDescriptionDivForCancel = function(e,elem_id) {

	// Hide input div and show label div	
	var divToHide = YAHOO.util.Dom.get('editDescriptionDiv');
	var divToShow = YAHOO.util.Dom.get('descriptionLabeldiv');
	var titleLabel = YAHOO.util.Dom.get('descSpan');
	var titleText = YAHOO.util.Dom.get('descriptionText');

	YAHOO.util.Dom.removeClass(divToHide, 'show');
	YAHOO.util.Dom.addClass(divToHide, 'hide');

	YAHOO.util.Dom.removeClass(divToShow, 'hide');
	YAHOO.util.Dom.addClass(divToShow, 'show');
	
}

YAHOO.gaia.app.Arena.Myvote.prototype._showEditTagsDiv = function(e, elem_id){
	// Show input div and hide label div
	
	var divToHide = YAHOO.util.Dom.get('tagsLabeldiv');
	var divToShow = YAHOO.util.Dom.get('editTagsDiv');
	var titleLabel = YAHOO.util.Dom.get('tagsSpan'); // added
	
	YAHOO.util.Dom.removeClass(divToHide, 'show');
	YAHOO.util.Dom.addClass(divToHide, 'hide');

	YAHOO.util.Dom.removeClass(divToShow, 'hide');
	YAHOO.util.Dom.addClass(divToShow, 'show');
	
	newVal = trim(titleLabel.innerHTML);
	newVal = stripHTML(newVal);
	this._settingsDT.tagsText.value = newVal; //added
}

YAHOO.gaia.app.Arena.Myvote.prototype._hideEditTagsDiv = function(e,elem_id) {

	// Hide input div and show label div	
	var divToHide = YAHOO.util.Dom.get('editTagsDiv');
	var divToShow = YAHOO.util.Dom.get('tagsLabeldiv');
	var titleLabel = YAHOO.util.Dom.get('tagsSpan');
	var titleText = YAHOO.util.Dom.get('tagsText');
	temp = trim(titleLabel.innerHTML);
	titleLabel.innerHTML = trim(titleText.value);
	//validTag = validatetag(titleLabel.innerHTML);
	//if(!validTag) {
		//titleLabel.innerHTML = trim(temp);
		//return false;
	//} else {		
		
	//}
	sresultwithoutlink = convertSearchWithoutLink(this._settingsDT.tagsText.value);
	sresult = convertSearch(this._settingsDT.tagsText.value);
	if(!sresultwithoutlink && trim(titleText.value)) {
		titleLabel.innerHTML = trim(temp);
		return false;
	}
	if(sresult) {
		titleLabel.innerHTML = sresult;
	}
	var args = [this._settingsDT.tagError, trim(temp)]; 
	var AjaxDescObject = {

		handleSuccess:function(o){
			// This member handles the success response
			// and passes the response object o to AjaxObject's
			// processResult member.			
			//alert(o.responseText);
			thePosts = eval( '(' + o.responseText + ')' );
			if(thePosts==1) {	
				document.getElementById(o.argument[0]).innerHTML = '';
				YAHOO.util.Dom.removeClass(divToHide, 'show');
				YAHOO.util.Dom.addClass(divToHide, 'hide');
			
				YAHOO.util.Dom.removeClass(divToShow, 'hide');
				YAHOO.util.Dom.addClass(divToShow, 'show');
			} else {		
				titleLabel.innerHTML = trim(o.argument[1]);
				document.getElementById(o.argument[0]).innerHTML = thePosts; //o.responseText;
			}
		},
	
		handleFailure:function(o){
			alert('failed');
			// Failure handler
		},
	
		startRequest:function(sURL, key, title) {
			YAHOO.util.Connect.asyncRequest('POST', sURL, callback, "col=keywords&"+key+"="+encodeURIComponent(title));
		}
	
	};
	
	/*
	 * Define the callback object for success and failure
	 * handlers as well as object scope.
	 */
	var callback =
	{
		success:AjaxDescObject.handleSuccess,
		failure:AjaxDescObject.handleFailure,
		argument: args,
		scope: AjaxDescObject
	};
	
	// Start the transaction.
	AjaxDescObject.startRequest(this._settingsDT.URL, 'keywords', sresultwithoutlink);
}

YAHOO.gaia.app.Arena.Myvote.prototype._hideEditTagsDivForCancel = function(e,elem_id) {

	// Hide input div and show label div	
	var tagError = YAHOO.util.Dom.get('tagError');
	tagError.innerHTML = '';
	var divToHide = YAHOO.util.Dom.get('editTagsDiv');
	var divToShow = YAHOO.util.Dom.get('tagsLabeldiv');
	var titleLabel = YAHOO.util.Dom.get('tagsSpan');
	var titleText = YAHOO.util.Dom.get('tagsText');

	YAHOO.util.Dom.removeClass(divToHide, 'show');
	YAHOO.util.Dom.addClass(divToHide, 'hide');

	YAHOO.util.Dom.removeClass(divToShow, 'hide');
	YAHOO.util.Dom.addClass(divToShow, 'show');
	
}


/*YAHOO.gaia.app.Arena.Myvote.prototype._makeEditTitleForm = function(e,elem_id) {
	alert('Hey Niks u r here again ;)!!!');

	YAHOO.util.Event.removeListener(this._settings.editTitleLink, "click");
	YAHOO.util.Event.addListener(this._settings.editTitleLink, "click", this._hideEditTitleForm,this,true);*/
	/*this._settings.sharedropdiv.innerHTML = "";
	var elem = new YAHOO.util.Element(this._settings.sharedropdiv);
	elem.setStyle('z-index', 2);
	elem.setStyle('opacity',1);
	var share_div = document.createElement('div');
	share_div.id = "shareContainer";  
	this._settings.sharedropdiv.appendChild(share_div);
	var share_form = document.createElement('form');
	share_form.setAttribute('name','shareForm');
	share_form.setAttribute('id','share_form');
	share_form.setAttribute('method','POST');
	share_form.setAttribute('action','#');
	share_div.appendChild(share_form);
	var fieldset1 = document.createElement('fieldset');
	share_form.appendChild(fieldset1);
	var label1 = document.createElement('label');
	fieldset1.appendChild(label1);
	var txt1 = 'Link to submission:';
	var txt1node = document.createTextNode(txt1);
	label1.appendChild(txt1node);
	var input1 = document.createElement('input');
	input1.id="send_url";
	input1.name = "url";
	input1.type = "text";
	input1.value = this._settings.shareURL;
	input1.readOnly= true;
	fieldset1.appendChild(input1);  
	
	
	var fieldset2 = document.createElement('fieldset');
	share_form.appendChild(fieldset2);
	var label2 = document.createElement('label');
	fieldset2.appendChild(label2);
	var txt2 = 'Send PM(enter username)';
	var txt2node = document.createTextNode(txt2);
	label2.appendChild(txt2node);
	var input2 = document.createElement('input');
	input2.id="send_to";
	input2.type = "text";
	fieldset2.appendChild(input2); 
	
	
	var button1 = document.createElement('input');
	share_form.appendChild(button1);
	button1.type = 'submit';
	button1.name = 'submitComment';
	button1.value = 'Send';
	YAHOO.util.Dom.addClass(button1, 'btn-submit');
	YAHOO.util.Event.addListener(button1, "click", this._doAjaxSendMessage,this,true); */ 
/*}

YAHOO.gaia.app.Arena.Myvote.prototype._hideEditTitleForm = function(e,elem_id) {
	//alert("test");
	var elem = new YAHOO.util.Element(this._settings.editTitleLink);
	elem.setStyle('z-index', -1);
	YAHOO.util.Event.removeListener(this._settings.editTitleLink, "click");
	YAHOO.util.Event.addListener(this._settings.editTitleLink, "click", this._displayEditTitleForm,this,true);
}

YAHOO.gaia.app.Arena.Myvote.prototype._displayEditTitleForm = function(e,elem_id) {
	var elem = new YAHOO.util.Element(this._settings.sharedropdiv);
	elem.setStyle('z-index', 2);
	
	YAHOO.util.Event.removeListener(this._settings.sharedroplink, "click");
	YAHOO.util.Event.addListener(this._settings.sharedroplink, "click", this._collapseShareDropDown,this,true);
}
*/

