<?php
require_once('JI/DB.php');

header('Content-type: application/x-javascript');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (3600 * 24)) . ' GMT');

$apikey = (isset($_GET['Domain_Name_API_Key']) ? preg_replace('/[^a-z\d]/', '', trim($_GET['Domain_Name_API_Key'])) : null);
$design_name = (isset($_GET['Design_Name']) ? trim($_GET['Design_Name']) : "");
$domain_name = (isset($_GET['Domain_Name']) ? trim($_GET['Domain_Name']) : "");

$domain_name = str_replace( "'", "", $domain_name );
$domain_name = str_replace( "+", "", $domain_name );
$domain_name = str_replace( "\%20", "", $domain_name );

$select = "
  SELECT TOP 1 DN_Domain_Name
  FROM Domain_Names
  WHERE DN_API_Key = '".$apikey."'
    AND DN_API_Enabled = 'Yes'
";

$select_html = "
   SELECT TOP 1 Domain_Names_CIFs_HTML_Output.DN_CIF_HO_HTML_Browser_Output
   FROM Domain_Names_CIFs_HTML_Output
   INNER JOIN Domain_Names_CIFs_Master
   ON Domain_Names_CIFs_HTML_Output.DN_CIF_HO_Design_Name_ID = Domain_Names_CIFs_Master.DN_CIF_Master_ID
   WHERE (((Domain_Names_CIFs_Master.DN_CIF_Master_Domain_Name)= '".$domain_name."' )
   AND ((Domain_Names_CIFs_Master.DN_CIF_Master_Design_Name)= '".$design_name."' )); ";

if ( ! $apikey )
{
  ?>

  document.write("I'm sorry, we cannot render the form without an API Key.");

  <?php
  exit(1);
}

if ( ! JI_DB::connect() or ! JI_DB::setDatabase('Content_Web_Sites') )
{
  ?>

  document.write("I'm sorry, we experienced a database connection error.");

  <?php
  exit(1);
}

/* For now, don't check the API Key
if ( ! $row = JI_DB::select($select) )
{
  ?>

  document.write("I'm sorry, there seems to be a misconfiguration of the input form.");

  <?php
  exit(1);
}

if ( !( $row['DN_Domain_Name'] == $domain_name ) )
{
  ?>

  document.write("I'm sorry, there seems to be a domain name mismatch: <?php echo $row['DN_Domain_Name'] ?> != <?php echo $domain_name ?>.");

  <?php
  exit(1);
}
*/

if ( ! $row1 = JI_DB::select($select_html) )
{
  ?>

  document.write("I'm sorry, we don't have a form for this domain.");

  <?php
  exit(1);
}


//$website = $row['DN_Domain_Name'];
$website = $domain_name;

$js = $row1['DN_CIF_HO_HTML_Browser_Output'];

// pick one of the headline groups at random
// match on "ji_group_number_(.*?)"
preg_match_all("\"ji_group_number_(.*?)\"",$js, $matches);
$group_count = count($matches[0]);

// select group number based on current time in seconds
$seconds = date("s", time());
$group_number = (($seconds % $group_count) + 1 );

$style = "<style type=\"text/css\">";
for ($i = 1; $i <= $group_count; $i++) {
  // hide everything
  $style .= "#ji_group_number_".$i." { display: none; } ";
}
// display the randomly selected headline group
$style .= "#ji_group_number_".$group_number." { display: block; } ";
$style .= "</style>";

?>
var isMSIE = /*@cc_on!@*/false;
document.write('<style type="text/css">@import url("http://www.clientinputform.com/css/ji_cif.css");</style>');
document.write('<?php echo $style ?>');

// --- Returns an array of elements of a certain class name ---
var getElementsByClassName = function (className, tag, elm){
  if (document.getElementsByClassName) {
    getElementsByClassName = function (className, tag, elm) {
      elm = elm || document;
      var elements = elm.getElementsByClassName(className),
        nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
        returnElements = [],
        current;
      for(var i=0, il=elements.length; i<il; i+=1){
        current = elements[i];
        if(!nodeName || nodeName.test(current.nodeName)) {
          returnElements.push(current);
        }
      }
      return returnElements;
    };
  }
  else if (document.evaluate) {
    getElementsByClassName = function (className, tag, elm) {
      tag = tag || "*";
      elm = elm || document;
      var classes = className.split(" "),
        classesToCheck = "",
        xhtmlNamespace = "http://www.w3.org/1999/xhtml",
        namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
        returnElements = [],
        elements,
        node;
      for(var j=0, jl=classes.length; j<jl; j+=1){
        classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
      }
      try  {
        elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
      }
      catch (e) {
        elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
      }
      while ((node = elements.iterateNext())) {
        returnElements.push(node);
      }
      return returnElements;
    };
  }
  else {
    getElementsByClassName = function (className, tag, elm) {
      tag = tag || "*";
      elm = elm || document;
      var classes = className.split(" "),
        classesToCheck = [],
        elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
        current,
        returnElements = [],
        match;
      for(var k=0, kl=classes.length; k<kl; k+=1){
        classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
      }
      for(var l=0, ll=elements.length; l<ll; l+=1){
        current = elements[l];
        match = false;
        for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
          match = classesToCheck[m].test(current.className);
          if (!match) {
            break;
          }
        }
        if (match) {
          returnElements.push(current);
        }
      }
      return returnElements;
    };
  }
  return getElementsByClassName(className, tag, elm);
};

// --- Determines if an object is empty ---
function isEmpty(object) {
  for(var i in object) { return false; }
  return true;
}

// --- Handles form submissions ---
function ji_cif_submit() {
  form = document.forms['ji_cif_form'];

  // clear existing error messages
  var error_divs = getElementsByClassName('ji_cif_error', null, form);
  var i;
  for (i in error_divs) {
    error_divs[i].parentNode.removeChild(error_divs[i]);
  }

  var referrer = document.referrer;
  referrer = referrer.replace( "http://", "" );
  var domain = document.domain;
  domain = domain.replace( "http://", "" );
  var url = document.URL;
  url = url.replace( "http://", "" );

  // add some fields
  add_field( form, "hidden", "group_number", "<?php echo $group_number ?>" );
  add_field( form, "hidden", "domain_name", "<?php echo $domain_name ?>" );
  add_field( form, "hidden", "design_name", "<?php echo $design_name ?>" );
  add_field( form, "hidden", "referring_url", referrer );

  add_field( form, "hidden", "search_engine", referrer );
  add_field( form, "hidden", "search_terms", referrer );

  add_field( form, "hidden", "url", url );
  add_field( form, "hidden", "traffic_source", domain );

  add_headlines( form );

  // gather form values and construct query string for transmission
  var data = '';
  for (e = 0; e < form.elements.length; e++) {
    if (form.elements[e].name != '') {
      data += (data == '') ? '?' : '&';
      if( form.elements[e].type == "checkbox" ) {
        if( form.elements[e].checked ) {
          data += form.elements[e].name + '=Yes';
        } else {
    data += form.elements[e].name + '=No';
        }
      } else {
        var value = form.elements[e].value;
        value = value.replace( /'/g, "&#039;" );
        value = value.replace( /!/g, "&#033;" );
        value = escape( value );
        data += form.elements[e].name + '=' + value;
      }
    }
  }

  var body = document.getElementsByTagName('body').item(0);

  // transmit
  var url = 'http://www.clientinputform.com/ji_cif.php' + data;
  var scriptTag = document.createElement('script');
  scriptTag.setAttribute('id', 'ji_cif_req');
  scriptTag.setAttribute('type', 'text/javascript');
  scriptTag.setAttribute('src', url);
  body.appendChild(scriptTag);
  return false;
}

function add_headlines( form ) {

  var visible_div = "ji_group_number_<?php echo $group_number ?>";
  var children = document.getElementById(visible_div).childNodes;
  var j = 1;
  for( var i=0; i<children.length; i++ ) {
    var child = children[i];
    if( child.innerHTML ) {
      add_field( form, "hidden", "ji_headline_" + j++, child.innerHTML );
    }
  }
}

function add_field( form, type, name, value ) {
  var el = document.createElement("input");
  el .setAttribute("type", type);
  el .setAttribute("name", name);
  el .setAttribute("id", name);
  el .setAttribute("value", value);
  form.appendChild(el );
}

function ji_cif_respond(response)
{
  // check for validation errors
  if ( ! isEmpty(response.errors))
  {
    // display error messages
    var key;
    for (key in response.errors) {
      error_div = document.createElement('div');
      error_div.className = 'ji_cif_error';
      error_div.innerHTML = response.errors[key];
      document.getElementById(key).appendChild(error_div);
    }

    return false;
  }

  ji_show_success();
}

function ji_show_success()
{
  var success_div = document.createElement('div');
  success_div.className = 'ji_cif_success';
  success_div.innerHTML = '<strong>Thank you.</strong><br/><br/>We will contact you within 24-48 hours.';

  document.getElementById('ji_cif').appendChild(success_div);
  document.getElementById('ji_cif').removeChild(document.forms['ji_cif_form']);
}

document.write('<?php echo $js ?>');
