/* 
 * One Planet Tech API
 * 
 * Version: 1.0
 * Author: James Watts
 * Update: 01/08/2009
 * 
 */

OPT = {

  // OPT.get({id: 'test'}).innerHTML = 'hello world';

  get: function() {
    var args = arguments[0] || {};
    if(args.id) {
      if(document.getElementById) {
        return document.getElementById(args.id);
      }
      else if(document.all) {
        return document.all[args.id];
      }
      else if(document.layers) {
        return document.layers[args.id];
      }
    }
    else if(args.tag) {
      return document.getElementsByTagName(args.tag);
    }
    else if(args.className) {
      var obj  = [];
      var x    = 0;
      var body = document.getElementsByTagName('body')[0].length;
      for(i = 0; i < body; i++) {
        if(body[i].className == args.className) { obj[x++] = body[i]; }
      }
      return obj;
    }
    else if(args.attr) {
      args.value = (typeof(args.value) != 'undefined')? args.value : '';
      var obj    = [];
      var x      = 0;
      var body   = document.getElementsByTagName('body')[0].length;
      for(i = 0; i < body; i++) {
        if(body[i][args.attr] == args.value) { obj[x++] = body[i]; }
      }
      return obj;
    } else {
      return false;
    }
  },
  drag: function() {
  
    // OPT.get({id: 'test'}).onmousedown = function() { OPT.drag({id: 'test'}); };
  
    var args = arguments[0] || {};
    if(typeof(args.id) == 'undefined') {
      return false;
    }
    var obj = document.getElementById(args.id);
    obj.style.position = 'aboslute';
    obj.onmousemove = function(e) {
      var mouse = e || window.event;
      this.style.left = mouse.clientX + 'px';
      this.style.top = mouse.clientY + 'px';
    }
    return true;
  },
  drop: function() {
  
    // OPT.get({id: 'test'}).onmouseup = function() { OPT.drop({id: 'test'}); };
  
    var args = arguments[0] || {};
    if(typeof(args.id) == 'undefined') {
      return false;
    }
    var obj = document.getElementById(args.id);
    obj.onmousemove = null;
  }
};

/* 
 * Joomla API
 * 
 * Version: 1.0
 * Extends: OPT
 * Author: James Watts
 * Update: 01/08/2009
 * 
 */

OPT.joomla = {
  setCookie: function() {
    var args   = arguments[0] || {};
    var cookie = args.cookie || 'language';
    switch(cookie) {
      case 'language':
        var language    = args.language || 'en';
        var date        = new Date();
        var expires     = date.setTime(date.getTime()+(1*24*60*60*1000));
        document.cookie = 'jfcookie[lang]=' + language + '; expires=' + expires + '; path=/';
        return true;
        break;
      default:
        return false;
        break;
    }
  },
  getCookie: function() {
    var args   = arguments[0] || {};
    var cookie = args.cookie || 'language';
    switch(cookie) {
      case 'user':
        return parseInt(document.cookie.substring(document.cookie.indexOf('activeProfile=')+14, document.cookie.indexOf('activeProfile=')+19));
        break;
      case 'language':
        return document.cookie.substring(document.cookie.indexOf('jfcookie[lang]=')+15, document.cookie.indexOf('jfcookie[lang]=')+17);
        break;
      default:
        return false;
        break;
    }
  }
};
/* 
 * Newsletter API
 * 
 * Version: 1.0
 * Extends: OPT
 * Author: James Watts
 * Update: 01/08/2009
 */

OPT.newsletter = {
  URL      : 'http://www.optech-mail.com/form.php?form=',
  SID      : '',
  language : null,
  languages: {
    ES: ['Su direcci&oacute;n email', 'Introduzca c&oacute;digo', 'Subscribir', 'Introduzca su direccion de correo electronico', 'introduzca el codigo de seguridad', 'Debe aceptar las condiciones del servicio'],
    EN: ['Your email address', 'Enter code below', 'Subscribe', 'Please enter your email address', 'Please enter the security code shown', 'You must accept the terms and conditions of the service'],
    FR: ['', '', '', '', '', ''],
    DE: ['Ihre Emailadresse', 'Bitte Code eingeben', 'Melden Sie sich jetzt an', 'Bitte Ihre Emailadresse eingeben', 'Bitte Ihre Sicherheit Kennwort eingeben', 'Sie mussen akzeptieren die Bedingungen und Konditionen des Dienstes']	
  },
  setLanguage: function() {
    if(OPT.get({id: 'newsletterForm'})) {
      if(this.language != null) {
        var lang = this.language.toUpperCase();
      } else {
        if(OPT.joomla) {
          var lang = OPT.joomla.getCookie().toUpperCase();
        }
      }
      OPT.get({id: 'newsletterEmail'}).innerHTML = this.languages[lang][0];
      OPT.get({id: 'newsletterCode'}).innerHTML  = this.languages[lang][1];
      OPT.get({id: 'newsletterSubmit'}).value    = this.languages[lang][2];
    } else {
      alert('ERROR: Newsletter');
    }
  },
  
  // OPT.newsletter.setForm({id: 'newsletter', form: 3, method: 'get', target: '_blank'});
  
  setForm: function() {
    var args        = arguments[0] || {};
    if(typeof(args.id) == 'undefined') {
      return false;
    }
    var element     = document.getElementById(args.id);
    if(!element) {
      return false;
    }
    var form         = document.createElement('form');
    form.id          = 'newsletterForm';
    form.action      = this.URL + (args.form || 0);
    form.method      = args.method || 'post';
    form.target      = args.target || '_blank';
    form.onsubmit    = function() { return OPT.newsletter.validate(this); };
    var span1        = document.createElement('span');
    span1.id         = 'newsletterEmail';
    form.appendChild(span1);
    var input1       = document.createElement('input');
    input1.id        = 'email';
    input1.type      = 'text';
    input1.name      = 'email';
    input1.value     = '';
    form.appendChild(input1);
    var holder       = document.createElement('div');
    holder.id        = 'newsletterAddInputs';
    form.appendChild(holder);
    var input2       = document.createElement('input');
    input2.type      = 'hidden';
    input2.name      = 'format';
    input2.value     = 'h';
    form.appendChild(input2);
    var span2        = document.createElement('span');
    span2.id         = 'newsletterCode';
    form.appendChild(span2);
    var input3       = document.createElement('input');
    input3.id        = 'captcha';
    input3.type      = 'text';
    input3.name      = 'captcha';
    input3.value     = '';
    form.appendChild(input3);
    var div          = document.createElement('div');
    div.id           = 'newsletterCaptcha';
    form.appendChild(div);
    var input4       = document.createElement('input');
    input4.type      = 'submit';
    input4.id        = 'newsletterSubmit';
    input4.value     = '';
    form.appendChild(input4);
    element.appendChild(form);
    this.setLanguage();
    this.setCaptcha();
    return form;
  },
  
  // OPT.newsletter.addField({type: 'text', name: 'newField', id: 'newField', value: 'new', span: {id: 'mySpan', text: 'New Field:'}});
  
  addInput: function() {
    var args = arguments[0] || {};
    if(typeof(args.type) == 'undefined') {
      return false;
    }
    var form = document.getElementById('newsletterAddInputs');
    if(args.span) {
      var span       = document.createElement('span');
      span.id        = args.span.id || '';
      span.innerHTML = args.span.text || '';
      form.appendChild(span);
    }
    switch(args.type) {
      case 'text':
        var input   = document.createElement('input');
        input.type  = 'text';
        input.name  = args.name || '';
        input.id    = args.id || '';
        input.value = args.value || '';
        break;
      case 'checkbox':
        var input     = document.createElement('input');
        input.type    = 'checkbox';
        input.name    = args.name || '';
        input.id      = args.id || '';
        input.value   = args.value || '';
        input.checked = args.checked || false;
        break;
      case 'radio':
        var input     = document.createElement('input');
        input.type    = 'radio';
        input.name    = args.name || '';
        input.id      = args.id || '';
        input.value   = args.value || '';
        input.checked = args.checked || false;
        break;
      case 'select':
        var input  = document.createElement('select');
        input.name = args.name || '';
        input.id   = args.id || '';
        
        // months: for(var i = 1; i < 32; i++) { ... }
        
        if(args.method) {
          if(typeof(args.method) == 'function') {
            input = args.method(input);
          }
        } else {
          for(var option in args.options) {
            var item   = document.creatElement('option');
            item.text  = args.options[option].text;
            item.value = args.options[option].value;
            if(window.ActiveXObject) {
              input.add(item);
            } else {
              input.appendChild(item);
            }
          }
        }
        break;
    }
    form.appendChild(input);
    return input;
  },
  getRandomLetter: function() {
    return String.fromCharCode(this.getRandom({min: 65, max: 90}));
  },
  getRandom: function() {
    var args = arguments[0] || {};
  	return Math.floor((args.max-args.min+1)*Math.random()+args.min);
  },
  setSID: function() {
  	if(this.SID.length > 0) {
  		return this.SID;
  	}
  	var sidc = 0;
  	while(sidc < 32) {
  		this.SID = this.SID+this.getRandomLetter();
  		sidc++;
  	}
  	return this.SID;
  },
  checkMultiple: function() {
    var args  = arguments[0] || {};
    args.form = args.form || {};
    args.name = args.name || {};
  	for(var i = 0; i < args.form.length; i++) {
    	var obj = args.form.elements[i];
    	var id  = obj.id;
    	if(id) {
    		var fieldnamecheck = id.indexOf(args.name);
    		if(fieldnamecheck != -1) {
    			if(obj.checked) {
    				return true;
    			}
    		}
    	}
  	}
  	return false;
  },
  validate: function() {
    var args = arguments[0] || {};
    if(this.language != null) {
      var lang = this.language.toUpperCase();
    } else {
      if(OPT.joomla) {
        var lang = OPT.joomla.getCookie().toUpperCase();
      }
    }
    if(args.email.value == '') {
  		alert(this.languages[lang][3]);
  		args.email.focus();
  		return false;
  	}
  	if(typeof(args.accept) != 'undefined') {
      if(!args.accept.checked) {
    		alert(this.languages[lang][5]);
    		args.accept.focus();
    		return false;
  		}
  	}
  	if(args.captcha.value == '') {
  		alert(this.languages[lang][4]);
  		args.captcha.focus();
  		return false;
  	}
  	return true;
  },
  setCaptcha: function() {
    var url = 'http://www.optech-mail.com/admin/resources/form_designs/captcha/index.php?c=' + this.getRandom({min: 1, max: 1000}) + '&ss=' + this.setSID();
  	var img = document.createElement('img');
  	img.setAttribute('src', url);
  	img.setAttribute('alt', 'Captcha');
  	OPT.get({id: 'newsletterCaptcha'}).appendChild(img);
  }
};

