/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
	Author		: Ch.Raja Shekar
	Description : Javascript code for campaignmail list
	Date		: jan-14-2010
	Updates		:
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 

var LIGHT_SCREEN = '_lightscreen';

function subscriber_elements( name )
{
	var el = document.forms[( trim(name) == '' ? 'form_subscribers' : name)];
	if(el) el = el.subscriber ;
	
	return el;	
}
function select_subscribers( select, name )
{
	var row = subscriber_elements(name);
	if(!row) return ;
	for(var index = 0; index < row.length; index++)	
		row[index].checked = (select == true);
}

function row_elements( name )
{
	var el = document.forms[( trim(name) == '' ? 'frm_exportcsv' : name)];
	if(el) el = el.export_col ;
	
	return el;	
}

function select_all( select, name )
{
	var row = row_elements(name);
	if(!row) return ;
	for(var index = 0; index < row.length; index++)	
		row[index].checked = (select == true);
}

function show_export_settings(name, show)
{
	var el = document.forms[( trim(name) == '' ? 'frm_exportcsv' : name)];
	if(el) el.style.display = (trim(show) == '' ? (show == false ? 'none' :'block' ) : 'block' );
}

function nonNull( text)
{
	return !( text == "" || text == null  || text == 'undefined' )
}
function trim( text ) 
{
	if(nonNull(text))
		return text.replace(/^\s+|\s+$/g,"");
	else return '';
}

function get_subscriber_row( id )
{
	var sub = (nonNull(id) ? id.toString() : '');
	if(sub == '') return ;
	
	var subs = { emailid:'email', name:'name', 'firstname':'fist', lastname:'last', twittername:'tw', address1:'ad', address2:'ad2', city:'ci', state:'state', country:'country', zip:'zi', homephone:'hp', cellphone:'cp'};

	var el = document.getElementById('subscriber_emailid_' + sub);
	if(el) subs.emailid = el.innerHTML;
	el = document.getElementById('subscriber_name_'+sub);
	if(el) subs.name = el.innerHTML;
	el = document.getElementById('subscriber_firstname_'+id);
	if(el) subs.firstname = el.innerHTML;
	el = document.getElementById('subscriber_lastname_'+id);
	if(el) subs.lastname = el.innerHTML;
	el = document.getElementById('subscriber_twittername_'+id);
	if(el) subs.twittername = el.innerHTML;
	el = document.getElementById('subscriber_address1_'+id);
	if(el) subs.address1 = el.innerHTML;
	el = document.getElementById('subscriber_address2_'+id);
	if(el) subs.address2 = el.innerHTML;
	el = document.getElementById('subscriber_city_'+id);
	if(el) subs.city = el.innerHTML;
	el = document.getElementById('subscriber_state_'+id);
	if(el) subs.state = el.innerHTML;
	el = document.getElementById('subscriber_country_'+id);
	if(el) subs.country = el.innerHTML;
	el = document.getElementById('subscriber_zip_'+id);
	if(el) subs.zip = el.innerHTML;
	el = document.getElementById('subscriber_homephone_'+id);
	if(el) subs.homephone = el.innerHTML;
	el = document.getElementById('subscriber_cellphone_'+id);
	if(el) subs.cellphone = el.innerHTML;

	return subs;
}

function popup_subscriber_form( id )
{
	var form = document.forms['form_subscriber_row'];
	if(!form) return ;

	var subs = get_subscriber_row(id);
	
	form.firstname.value = (subs ? subs.firstname : '');
	form.lastname.value = (subs ? subs.lastname : '');
	form.emailid.value = (subs ? subs.emailid : '');
	form.twittername.value = (subs ? subs.twittername : '');
	form.address1.value = (subs ? subs.address1 : '');
	form.address2.value = (subs ? subs.address2 : '');
	form.city.value = (subs ? subs.city : '');
	form.state.value = (subs ? subs.state : '');
	form.country.value = (subs ? subs.country : '');
	form.zip.value = (subs ? subs.zip : '');
	form.homephone.value = (subs ? subs.homephone : '');
	form.cellphone.value = (subs ? subs.cellphone : '');

	var link = document.getElementById('subscriber_query');
	if(link) link.innerHTML = ( subs ? 'Update' : 'Create');

	form.setAttribute('sid', (subs ?  id : ''));
	//form.style.display = 'block';
	popup_element( form );
	if(form.firstname) form.firstname.focus();
}

function close_subscriber_form( )
{
	var form = document.forms['form_subscriber_row'];
	if(form) close_element( form );
}

function subscriber_row_query()
{
	var form = document.forms['form_subscriber_row'];
	if(!form) return ;

	var id = form.getAttribute('sid');

	var subs = {};
	
	if(form.firstname.value == '')
	{
		if(!confirm("Firstname is not entered.\nDo you want to proceed?")) return;	
		form.firstname.focus();
	}
	subs.firstname = form.firstname.value;

	if(form.lastname.value == '')
	{
		if(!confirm("Lastname is not entered.\nDo you want to proceed?")) return;	
		form.lastname.focus();
	}			
	subs.lastname = form.lastname.value;
	if(form.emailid.value == '')
	{
		alert('Email ID cannot be empty\nPlease enter your email id in the textbox');
		form.emailid.focus();
	}
	
	subs.emailid = form.emailid.value;
	subs.twittername = form.twittername.value;
	subs.address1 = form.address1.value;
	subs.address2 = form.address2.value;
	subs.city = form.city.value;
	subs.state = form.state.value;
	subs.country = form.country.value;
	subs.zip = form.zip.value;
	subs.homephone = form.homephone.value;
	subs.cellphone = form.cellphone.value;
	
	subs.q = (id > 0 ? qy.update : qy.add);

	jQuery.post(
		qy.url, 
		subs, 
		function(htm) 
		{
			show_subscribers();
			close_element(LIGHT_SCREEN);
			alert(htm);			
		}, 
		'html' );

	return;
	
}

function show_subscribers( page )
{
	if(!qy) 
	{
		alert('Javascript error');
		return ;
	}
	var form = document.forms['form_subscribers'];
	var criteria = (form ? (form.criteria ? form.criteria.value : '') : '');

	jQuery.post(
		qy.url, 
		{q: qy.view, page: page, criteria: criteria}, 
		function(htm) 
		{
			jQuery("#div_masterlist").html(htm);
			close_element(LIGHT_SCREEN);
		}, 
		'html' );
		
	return;
}
function unsubscribe( formname, id )
{
	if(!qy) 
	{
		alert('Javascript error');
		return ;
	}
	
	var selected = ( nonNull(id) ? parseInt(id) : 0) ;
	if( selected <= 0  )
	{
		var el = subscriber_elements( formname );
		if(!el) return ;
		
		
		for(var index = 0; index < el.length; index++)
		{
			if(el[index].checked)  selected += (selected != '' ? ',' : '') + el[index].value;
		}	
		if(selected == '') 
		{
			alert('No subscribers are selected to unsubscribe\nSelect subscribers you want to unsubscribed');
			return ;
		}
	}

	jQuery.post(
		qy.url, 
		{q: qy.unsubscribe, subs: selected}, 
		function(htm) 
		{
			show_subscribers();
			close_element(LIGHT_SCREEN);
			alert(htm);			
		}, 
		'html' );
	
	return;
}
			
function export_rows2csv( formname )
{
	if(!qy) 
	{
		alert('Javascript error');
		return ;
	}

	var el = row_elements(formname);

	if(!el) return ;
				
	var selected = '';
	for(var index = 0; index < el.length; index++)
	{
		if(el[index].checked)  selected += (selected != '' ? ',' : '') + el[index].value;
	}
	if(selected == '') 
	{
		alert('No columns are selected to export\nSelect columns you want to export');
		return ;
	}

	window.open(qy.url + '?q=' +qy.export2csv +'&cols='+ escape(selected),'_blank');
	return ;
}

function show_view_criteria( formName)
{
	if(!qy) 
	{
		alert('Javascript error');
		return ;
	}
	
	var form = document.forms['form_subscribers'];
	var criteria = [], text = '';
	
	if(form) if(form.criteria) text = form.criteria.value;
	text = text.split('|');
	for(var index = 0; index < text.length; index++)
	{
		var temp = text[index].split('=');
		if(temp.length > 1)	criteria[temp[0]] = temp[1];
	}

	form = document.forms[(trim(formName) == '' ? 'form_view_criteria' : formName)];
	if(!form) return ;

	if(form.emailid) form.emailid.value = trim(criteria['emailid']);
	if(form.name) form.name.value = trim(criteria['name']);
	if(form.firstname) form.firstname.value = trim(criteria['firstname']);
	if(form.lastname) form.lastname.value = trim(criteria['lastname']);
	if(form.city) form.city.value = trim(criteria['city']);
	if(form.zip) form.zip.value = trim(criteria['zip']);
	if(form.state) form.state.value = trim(criteria['state']);
	if(form.country) form.country.value = trim(criteria['country']);
	if(form.address1) form.address1.value = trim(criteria['address1']);
	if(form.address2) form.address2.value = trim(criteria['address2']);
	if(form.twittername) form.twittername.value = trim(criteria['twittername']);
	if(form.homephone) form.homephone.value = trim(criteria['homephone']);
	if(form.cellphone) form.cellphone.value = trim(criteria['cellphone']);

	var dat;
	if( nonNull(trim(criteria['fromdate'])))
	{ 
		dat = criteria['fromdate'].split('-');
		if(dat.length > 0 && form.fromday) form.fromday.value = parseInt(dat[0]);
		if(dat.length > 1 && form.frommonth) form.frommonth.value = parseInt(dat[1]);
		if(dat.length > 2 && form.fromyear) form.fromyear.value = parseInt(dat[2]);
	}

	if( nonNull(trim(criteria['todate'])))
	{ 
		dat = criteria['todate'].split('-');
		if(dat.length > 0 && form.today) form.today.value = parseInt(dat[0]);
		if(dat.length > 1 && form.tomonth) form.tomonth.value = parseInt(dat[1]);
		if(dat.length > 2 && form.toyear) form.toyear.value = parseInt(dat[2]);
	}
	
	form.style.display= 'block';
}

function submit_view_criteria( formName )
{
	if(!qy) 
	{
		alert('Javascript error');
		return ;
	}
	var form = document.forms[(trim(formName) == '' ? 'form_view_criteria' : formName)];
	if(!form) return ;
	
	var criteria = '', text = '', fromdate = '', todate = '', day=0, month=0, year=0;

	if((text = getElementValue(form.emailid)) != '') criteria += 'emailid=' + text + '|';
	if((text = getElementValue(form.name)) != '') criteria += 'name=' + text + '|';
	if((text = getElementValue(form.firstname)) != '') criteria += 'firstname=' + text + '|';
	if((text = getElementValue(form.lastname)) != '') criteria += 'lastname=' + text + '|';
	if((text = getElementValue(form.city)) != '') criteria += 'city=' + text + '|';
	if((text = getElementValue(form.zip)) != '') criteria += 'zip=' + text + '|';
	if((text = getElementValue(form.state)) != '') criteria += 'state=' + text + '|';
	if((text = getElementValue(form.country)) != '') criteria += 'country=' + text + '|';
	if((text = getElementValue(form.address1)) != '') criteria += 'address1=' + text + '|';
	if((text = getElementValue(form.address2)) != '') criteria += 'address2=' + text + '|';
	if((text = getElementValue(form.twittername)) != '') criteria += 'twittername=' + text + '|';
	if((text = getElementValue(form.homephone)) != '') criteria += 'homephone=' + text + '|';
	if((text = getElementValue(form.cellphone)) != '') criteria += 'cellphone=' + text + '|';

	if((text = getElementValue(form.fromday)) != '') day = parseInt(text);
	if((text = getElementValue(form.frommonth)) != '') month = parseInt(text);
	if((text = getElementValue(form.fromyear)) != '') year = parseInt(text);
	if(day > 0&& month > 0 && year > 0)
		fromdate = day + '-' + month + '-' + year;
	
	day = 0; 
	month = 0;
	year = 0;

	if((text = getElementValue(form.today)) != '') day = parseInt(text);
	if((text = getElementValue(form.tomonth)) != '') month = parseInt(text);
	if((text = getElementValue(form.toyear)) != '') year = parseInt(text);
	if(day > 0&& month > 0 && year > 0)
		todate = day + '-' + month + '-' + year;
	
	if( fromdate != '') criteria += 'fromdate=' + fromdate + '|';
	if( todate != '') criteria += 'todate=' + todate + '|';

	form = document.forms['form_subscribers'];
	if(form) 
	{
		if(form.criteria) 
		{
			form.criteria.value = criteria;
			show_subscribers();
		}
		else
			alert("Error is sending request\nPlease try after few seconds");
	}
	else
		alert("Error is sending request\nPlease try after few seconds");
}

function submit_import_form( formName)
{
	var form = document.forms[(trim(formName) == '' ? 'form_import' : formName)];
	if(!form) return ;
	if(!form.csv)
	{
		alert('Javascript error');
		return false;
	}
	if(form.csv.value == '')
	{
		alert("No csv file is set for upload\nSelect a csv file to upload");
		return false;
	}
	if(!is_file_type(form.csv.value, 'csv'))
	{
		alert("Set file is not a csv file\nSelect a csv file to upload");
		return false;
	}

	var imp = {};
	if((imp.email = validate_element(form.email, form.check_email, 'Email ID')) === false) { form.email.focus();	return false; }
	if((imp.name = validate_element(form.name, form.check_name, 'Name')) === false) { form.email.focus();	return false; }
	if((imp.firstname = validate_element(form.firstname, form.check_firstname, 'First name')) === false) { form.email.focus();	return false; }
	if((imp.lastname = validate_element(form.lastname,  form.check_lastname,'Last name')) === false) { form.email.focus();	return false; }
	if((imp.address1 = validate_element(form.address1, form.check_address1, 'Address 1')) === false) { form.email.focus();	return false; }
	if((imp.address2 = validate_element(form.address2, form.check_address2, 'Address 2')) === false) { form.email.focus();	return false; }
	if((imp.city = validate_element(form.city, form.check_city, 'City')) === false) { form.email.focus();	return false; }
	if((imp.state = validate_element(form.state, form.check_state, 'State')) === false) { form.email.focus();	return false; }
	if((imp.country = validate_element(form.country, form.check_country, 'Country')) === false) { form.email.focus();	return false; }
	if((imp.zip = validate_element(form.zip, form.check_zio, 'Zip')) === false) { form.email.focus();	return false; }
	if((imp.cellphone = validate_element(form.cellphone, form.check_cellphone, 'Cell Phone')) === false) { form.email.focus();	return false; }
	if((imp.homephone = validate_element(form.homephone, form.check_homephone, 'Home Phone')) === false) { form.email.focus();	return false; }
	if((imp.twittername = validate_element(form.twittername, form.check_twittername, 'Twitter name')) === false) { form.email.focus();	return false; }
	if((imp.createddate = validate_element(form.createddate, form.check_createddate, 'Created Date')) === false) { form.email.focus();	return false; }
	
	if(imp.email == 0 && imp.name ==0 && imp.firstname == 0 && imp.lastname == 0 && imp.address1==0 && imp.address2==0 && imp.city==0 && imp.state==0 && imp.country==0 && imp.zip==0 && imp.cellphone==0 && imp.homephone==0 && imp.twittername==0 && imp.createddate==0)
	{
		alert("No column is set to import\nSet Columns you want to import");
		return false;
	}

	form.submit();
}

function elementDisplayStatus( el, show )
{
	if(el)	el.style.display = ( show ? 'inline' : 'none');
}

function is_file_type(fileName, type)
{
	if(trim(type)=='') return true;
	if(trim(fileName) == '') return false;
	
	var regex = new RegExp(); 
	regex.compile("." + type +"$");
	return (regex.test(fileName) ? true: false);
}

function validate_element( el, elCheck , variable )
{
	if(el && elCheck)
	{
		if(elCheck.checked)
		{
			if(trim(el.value) == '')
			{
				alert( variable +" column is not set");
				return false;
			}
			else
			{
				if(parseInt(el.value) <= 0 )
				{
					alert( 'Invalid column is set for '+variable);
					return false;
				}
				else
					return parseInt(el.value);
			}
		}
		return 0;
	}
	return 0;
}
function getElementValue( el )
{
	return (el ? el.value : '');
}
function close_view_criteria( formName )
{
	var form = document.forms[(trim(formName) == '' ? 'form_view_criteria' : formName)];
	if(form) form.style.display= 'none';
}

function popup_element( el )
{
	if(!el || !document.body) return ;

	var ls = document.getElementById(LIGHT_SCREEN);
	if(!ls)
	{
		ls = document.createElement('div');
		ls.id = LIGHT_SCREEN;
		
		document.body.appendChild(ls);
	}
	if(!ls) return ;

	ls.style.zIndex = 5;
	ls.style.display = 'block';
	ls.style.position = 'absolute';
	ls.style.left = document.body.offsetLeft;
	ls.style.top = document.body.offsetTop;
	ls.style.width = ( document.body.scrollWidth > document.body.offsetWidth ? document.body.scrollWidth : document.body.offsetWidth + "px");
	ls.style.height = ( document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + "px");	
	
	el.style.zIndex = ls.style.zIndex + 5;
	el.style.display = 'block';
	el.style.position = 'absolute';
	el.style.top = '150px';
	el.style.left = document.body.offsetLeft + (( document.body.offsetWidth - el.offsetWidth )/2) + 'px';	
}

function close_element( el )
{
	var ls = document.getElementById(LIGHT_SCREEN);
	if(ls) ls.style.display = 'none';
	if(el) el.style.display = 'none';
}
