/* Global and general support functions for cricket 1.0 */
function init_onload() {
  var form_mail = document.forms['form_mail'];
  var reg_form = document.forms['reg_form'];
  if (form_mail) {load_fm_listeners()};
  if (reg_form) {load_reg_listeners()};
  if (document.getElementById('requirement_text')) {
  	document.getElementById('requirements_text').innerHTML = requirements_text();
  }

}

//Form mail functionality -----------------------------------------------------------------------------------------------------------
/* load listeners and settings for form_mail */
function load_fm_listeners() {
  var f = document.forms['form_mail'];
    switch (navigator.userLanguage) {
      case 'sv' :
      mess = 'Det g&aring;r inte att skicka ditt mail eftersom:<br />'
	  	+ 'Du beh&ouml;ver v&auml;lja en mottagare<br />'
	  	+ 'Vi beh&ouml;ver en korrekt emailadress<br />'
		+ 'Du beh&ouml;ver ange ett &auml;mne<br />'
		+ 'Du beh&ouml;ver skriva ett meddelande<br />'
	  	+'<br />';
      break;
      default:
      mess = 'Your mail can not be delivered because:<br />'
                + 'Correct email address is required<br />'
		+ 'Subject is required<br />'
		+ 'Message is required<br />'
	  	+'<br />';
      break;
    }

  if (f) {f.onkeyup = function () {validate_form(this)};
          f.onchange = function () {validate_form(this)};
          }
  if (f.send) {f.send.onclick = function () {form_mess(f,mess)}};
  if (f.cancel) {f.cancel.onclick = function () {this.form.reset()}};
  if (f.users) {ajax.doPost('../support/public_ajax.asp','action=get_pro_contacts&pro_id='+pro.id,print_public_contacts);};
  if (f.user) {ajax.doPost('../support/public_ajax.asp','action=get_default_mail&pro_id='+pro.id,print_default_mail)};
  if (f.full_name) {f.full_name.focus()};
}

function requirements_text() {
	var e = document.forms[0].elements;
	switch (navigator.language) {
		case 'sv' :
		mess = 'F&ouml;r att kunna skicka mail m&aring;ste f&auml;lten &quot;'+get_label_text(e['full_name'])+'&quot;, &quot;'+get_label_text(e['email'])+'&quot;, &quot;'+get_label_text(e['subject'])+'&quot; och &quot;'+get_label_text(e['message'])+'&quot; vara ifyllda.';
		break;
		default :
		mess = 'The fields &quot;'+get_label_text(e['full_name'])+'&quot;, &quot;'+get_label_text(e['email'])+'&quot;, &quot;'+get_label_text(e['subject'])+'&quot; and &quot;'+get_label_text(e['message'])+'&quot; are required.'
	}
	return mess;
}

function get_label_text(who) {
	if (who) {
		var txt = who.previousSibling.previousSibling.innerHTML;
		return txt;
	}
}

function validate_email(str) {
  if (str.search(/^\w+((-\w+)|(.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) !=-1) {
    return true;
  } else {
    return false;
  }
}

function validate_length(str,length) {
  if (str.length>=length) {
    return true;
  } else {
    return false;
  }
}

function validate_user(val) {
var f = document.forms['form_mail'];
if (f.users) {
    if (val>0) {
      return true;
    } else {
      return false;
    }
  } else if (f.user) {
    return validate_email(f.user.value);
  } else {
    return false;
  }
}

function validate_phone(str) {
return true;
}

function validate_form(who) {
var val;
var f = document.forms['form_mail'];
var mail_ok = validate_email(who.elements['email'].value);
var subj_ok = validate_length(who.elements['subject'].value,2);
var mess_ok = validate_length(who.elements['message'].value,5);
if (who.elements['users']) {val = who.elements['users'].selectedIndex};
var user_ok = validate_user(val);
  if (mail_ok==true && subj_ok==true && mess_ok==true && user_ok==true) {
    //who.elements['send'].disabled = false;
    who.elements['send'].onclick = function () {send_form_mail(who)};
  } else {
    //who.elements['send'].disabled = true;
    switch (navigator.userLanguage) {
      case 'sv' :
      mess = 'Det g&aring;r inte att skicka ditt mail eftersom:<br />'
	  			+ ((!user_ok) ? 'Du beh&ouml;ver v&auml;lja en mottagare<br />':'')
	  			+ ((!mail_ok) ? 'Vi beh&ouml;ver en korrekt emailadress<br />':'')
				+ ((!subj_ok) ? 'Du beh&ouml;ver ange ett &auml;mne<br />':'')
				+ ((!mess_ok) ? 'Du beh&ouml;ver skriva ett meddelande<br />':'')
	  			+'<br />';
      break;
      default:
      mess = 'Your mail can not be delivered because:<br />'
                + ((!mail_ok) ? 'Correct email address is required<br />':'')
				+ ((!subj_ok) ? 'Subject is required<br />':'')
				+ ((!mess_ok) ? 'Message is required<br />':'')
	  			+'<br />';
      break;
    }
    who.elements['send'].onclick = function () {form_mess(f,mess)};
  }
}

function send_form_mail(who) {
var pro_id, send_to, reply_to, subject, content, html_start, html_end
var style = 'p {font-family:Arial, sans-serif;font-size:12px;color:#000000;}';

  html_start = '<html>\n<head>\n<style>\n';
  html_start += style;
  html_start +='\n</style>\n</head>\n<body>\n';
  html_end   = '\n</body>\n</html>';
  if (who.elements['users']) {
    send_to = who.elements['users'].options[who.elements['users'].selectedIndex].value;
  } else if (who.elements['user']) {
    send_to = who.elements['user'].value;
  }
  reply_to= who.elements['full_name'].value+' ('+who.elements['email'].value+')';
  subject = who.elements['subject'].value;

  content = html_start;
  content+= '<p>'+who.elements['message'].value.replace(/\n/gi,'<br />')+'</p>';
  content+= '<p><strong>Skickat av:</strong> '+who.elements['full_name'].value;
  content+= '<br /><strong>F&ouml;retag:</strong> '+who.elements['company'].value;
  content+= '<br /><strong>Telefon:</strong> '+who.elements['phone'].value;
  content+= '<br /><strong>E-mail:</strong> '+reply_to+'</p>';
  content+= '<p style="font-size:8px">This string is only included for support<br /><strong>Agent:</strong> '+navigator.userAgent+'</p>';
  content+= html_end;

  ajax.doPost('../support/public_ajax.asp','action=form_mail&pro_id='+pro.id+'&send_to='+send_to+'&reply_to='+reply_to+'&subject='+escape(subject)+'&content='+escape(content),response)
}

function response(str) {
  var f = document.forms[0];
  var fe = f.elements;
  f.reset();
  if (fe['send']) {
    //fe['send'].disabled = true;
    //fe['send'].onclick = '';
    switch (navigator.userLanguage) {
      case 'sv' :
      mess = 'Ditt mail &auml;r skickat till:<br />'+str+'<br />';
      break;
      default:
      mess = 'Your mail has been sent to:<br />'+str+'<br />';
      break;
    }
  }
  if (fe['register']) {
    fe['register'].disabled = true;
    fe['register'].onclick = '';
    switch (navigator.userLanguage) {
    case 'sv' :
    mess = 'Vi nu skickat ett email till <br />'+str+'<br />f&ouml;r att slutf&ouml;ra registreringen.';
    break;
    default:
    mess = 'We have sent an email to:<br />'+str+'<br />to complete the registration';
    break;
    }
  }

  form_mess(f,mess);
}



function form_mess(who,mess) {
  var resp = document.createElement('div');
  var conf = document.createElement('input');
  conf.setAttribute('type','button');
  conf.setAttribute('value','ok');
  resp.className = 'confirm';
  conf.onclick = function () {this.parentNode.parentNode.removeChild(this.parentNode)}
  resp.innerHTML = mess;
  resp.appendChild(conf);
  who.parentNode.appendChild(resp);
}

function print_public_contacts(str) {
var f = document.forms['form_mail'];
var users = f.users;
arr = str.split(';');
  for (i=0;i<arr.length;i++) {
  var tmp = arr[i].split(',');
  var email = html_decode(tmp[0]).split(';');
    users[i+1] = new Option(html_decode(tmp[1] +((tmp[2].length>0) ? ' - ' +tmp[2]:'')),html_decode(email[0]));
  }
  users.onchange = function () {
  validate_form(f);
  if (this.selectedIndex>0) {
  //alert(pro.id+' '+this.options[this.selectedIndex].value);
  ajax.doPost('../support/public_ajax.asp','action=get_contact_details&pro_id='+pro.id+'&email='+this.options[this.selectedIndex].value,print_contact_details);
  }
  }
};

function print_default_mail(str) {
  var f = document.forms[0];
  f.user.value = str;
}

function print_contact_details(str) {
  arr = str.split(',');
  var user_select = document.getElementById("user_select");
  if (document.getElementById('contact_details')) {
  user_select.removeChild(document.getElementById('contact_details'));
  }
  var contact_details = document.createElement('div');
  contact_details.setAttribute('id','contact_details');
  var detail_str = '<strong>'+html_decode(arr[0])+'</strong><br />'
                + ((arr[1].length>0) ? '<em>' + html_decode(arr[1])+'</em><br />':'')
                + ((arr[2].length>0) ? html_decode(arr[2])+'<br />':'')
                + ((arr[3].length>0) ? html_decode(arr[3])+'<br />':'')
                + ((arr[4].length>0) ? html_decode(arr[4])+'<br />':'')
				+ '<br />'+html_decode(arr[0])+'<br />'
  				+ ((arr[5].length>0) ? html_decode(arr[5])+'<br />':'')
				+ ((arr[6].length>0) ? html_decode(arr[6])+'<br />':'')
                + ((arr[7].length>0) ? html_decode(arr[7])+' '+html_decode(arr[8])+'<br />':'')
				+ ((arr[9].length>0) ? html_decode(arr[9])+'<br />':'');
  contact_details.innerHTML = '<p>'+detail_str+'</p>';
  user_select.appendChild(contact_details);
}



//-----------------------------------------------------------------------------------------------------------------------------------

//Register form ---------------------------------------------------------------------------------------------------------------------
function load_reg_listeners() {
  var f = document.forms[0];
  if (f) {
  f.onkeyup = function () {validate_reg_form(f)};
  f.onchange = function () {validate_reg_form(f)};
  };
  if (f.register) {f.register.disabled=true};
  if (f.cancel) {f.cancel.onclick = function () {this.form.reset()}};
  f.first_name.focus();
  if (f.user) {ajax.doPost('../support/public_ajax.asp','action=get_default_mail&pro_id='+pro.id,print_default_mail)};
  self.setTimeout("ajax.doPost('../support/public_ajax.asp','action=get_public_groups&pro_id='+pro.id,print_groups)",200);
}

function print_groups(str) {
  var f = document.forms[0];
  var fs = f.getElementsByTagName('fieldset')[0];
  var arr = str.split(';');
  //alert(arr.length);
  var groups, label
  if (arr.length==1) {
    var qs = split_qs(arr[0]);
    groups = create_input_elm('hidden','group_id',qs.group_id);
  } else if (arr.length>1) {
    groups = document.createElement('select');
    groups.setAttribute('name','group_id');
    groups.className = 'groups';
    for (i=0;i<arr.length;i++) {
    var qs = split_qs(arr[i]);
    groups[i] = new Option(qs.group_name,qs.group_id);
    }
  }
  fs.insertBefore(groups,fs.childNodes[1]);
}

function validate_reg_form(obj) {
  var fe = obj.elements;
  var fname_ok = validate_length(fe['first_name'].value,1);
  var lname_ok = validate_length(fe['last_name'].value,1);
  var email_ok = validate_email(fe['email'].value);
  var phone_ok = validate_phone(fe['phone'].value);
  if (fname_ok == true && lname_ok == true && email_ok == true && phone_ok == true) {
    fe['register'].disabled = false;
    fe['register'].onclick = function () { ajax_register_user(obj)};
  }
}

function ajax_register_user(obj) {
  var fe = obj.elements;
  var str = 'action=register_user&pro_id='+pro.id;
  for (i=0;i<fe.length;i++) {
    str += '&'+fe[i].name+'='+escape(fe[i].value);
  }
  ajax.doPost('../support/public_ajax.asp',str,response);
}
//-----------------------------------------------------------------------------------------------------------------------------------

function html_decode(str) {
  if (str && str.length>0) {
  str = str.replace(/\+/g,' ');
  str = unescape(str);
  return str;
  } else {
  return '';
  }
}

function ViewImg(str,pTitle,anch) {
  var ShowArr = str.split(',');
  var ShowImg = "";
//var GoAnch	= anch;

  for (var i=0;i<ShowArr.length;i++) {
    if (ShowImg.length < 0) {
      ShowImg + '<img src=http://cricket.qpc.se/support/ShowImg.asp?FileId='+ShowArr[i]+' ><div align=right><a href=# onClick=self.close();>Close</a></div><br />';
    } else {
      ShowImg = ShowImg + '<img src=http://cricket.qpc.se/support/ShowImg.asp?FileId='+ShowArr[i]+' ><div align=right><a href=# onClick=self.close();>Close window</a></div><br />';
    }
  }

  var newwin = window.open('','Show','width=560,height=380,top=20,left=20,scrollbars=1');
  newwin.document.write('<head><title>'+pTitle+'</title><link rel=stylesheet type=text/css href='+document.styleSheets[0].href+'></head><body bgcolor=#ffffff style=\"visibility:visible\"><table align=center width=520><tr><td>'+ShowImg+'</td></tr></body>');
  newwin.document.close();
  newwin.focus();
}

function split_qs(str) {
  var qs_var = new Object();
  str = str.replace(/\+/g,' ');
  var qs_arr = str.split('&');
  for (k=0;k<qs_arr.length;k++) {
    var qs_pos = qs_arr[k].indexOf('=');
    if (qs_pos==-1) continue;
    var qs_name = qs_arr[k].substring(0,qs_pos);
    var qs_valu = qs_arr[k].substring(qs_pos+1);
    qs_var[qs_name]=unescape(qs_valu);
  }
  return qs_var;
}

function create_input_elm(type,name,value,className) {
  var attr, elm
  attr = new Array('type','name','value','class');
  if (!arguments.length<2) {
  elm = document.createElement('input');
    for (i=0;i<arguments.length;i++) {
      elm.setAttribute(attr[i],arguments[i]);
    }
  }
  return elm;
}


//-----------------------------------------------------------------------------------------------------------------------------------
onload = init_onload;